Jump to content

Hit a different "Jaheira and the Druids" problem


Guest G-Mon

Recommended Posts

Okay, finally getting back into the Baldur's Gate series after a bunch of other distractions; felt like playing a monk from Candlekeep, so I fire up EasyTutu, roll her up, and before you know it, she's in Cloakwood, working on the aforementioned quest. After finally finding a way to get to Beador without meeting the f%*@!$& hamadryad (I hate monsters that use Dire Charm, and I have no reliable way around D.C. right now), I slug it out with the Shadow Druids...which somehow get off several Call Lightnings, even though I'm hitting them while they're still casting it (and they're far from the only offenders, but that's another annoyance for another day). Anyway, I finish them off, Jaheira starts her conversation, gets killed by those lightning bolts the druids called down (which I find kinda funny), and I'm stuck in cutscene mode (which is definitely NOT funny). (Interestingly, those bolts didn't always do damage, even before the scene started, and the insects the last or second-to-last druid sicced on Khalid before he {the druid, not Khalid} croaked weren't doing any damage during the cutscene.) Something to think about for the next version perhaps?

Link to comment

Version 12, beta 3.

 

I've since gotten past that encounter, though; I really just wanted to let you people know about the potential consequences of multiple druids unloading Call Lightnings your way. Although now I wonder how the engine would've handled CHARNAME getting killed while in cutscene mode.... (And no, I have no plans to retry the quest anytime soon; I really don't feel like dealing with the aforementioned druids and hamadryad all at the same time, at least without some reliable way to protect the party from both Dire Charm and Call Lightning.)

Link to comment

Version 14, which you can expect soon, fixes issues related to Jaheira's quest. I can't tell you if it fixes the problem of combat continuing into cutscenes, though. Hopefully, cm can weigh in on this.

 

Edit: I don't remember a hamadryad there... what's your WeiDU log look like?

Link to comment

The hamadryad I'm talking about is actually a bit of a ways to the east of the druids, but definitely within a screen or so of them--close enough to complicate that fight (like I said, I really don't feel like having to deal with both Dire Charm and numerous Call Lightnings). Anyway, since you asked, my WeiDU.log:

 

// Log of Currently Installed WeiDU Mods

// The top of the file is the 'oldest' mod

// ~TP2_File~ #language_number #component_number // [subcomponent Name -> ] Component Name

~SETUP-EASYTUTUHOTFIXES.TP2~ #0 #0 // EasyTutu Hotfixes: 05 February 2007 Release

~EASYTUTUDEGREENIFIER.TP2~ #0 #0 // EasyTutu Degreenifier

~SETUP-EASYTUTUNPCKITS.TP2~ #0 #0 // Assign a kit to Ajantis? -> Ajantis: Cavalier

~SETUP-EASYTUTUNPCKITS.TP2~ #0 #13 // Assign a kit to Faldorn? -> Faldorn: Avenger

~SETUP-EASYTUTUNPCKITS.TP2~ #0 #18 // Assign a kit to Garrick? -> Garrick: Skald

~SETUP-EASYTUTUNPCKITS.TP2~ #0 #29 // Assign a kit to Kivan? -> Kivan: Archer

~SETUP-EASYTUTUNPCKITS.TP2~ #0 #37 // Assign a kit to Safana? -> Safana: Swashbuckler

~SETUP-EASYTUTUNPCKITS.TP2~ #0 #39 // Assign a kit to Shar-Teel? -> Shar-Teel: Berserker

~SETUP-TUTUFIX.TP2~ #0 #2 // Restored BG1 Loadscreens

~SETUP-TUTUFIX.TP2~ #0 #3 // BG2 Ammo Stacks

~SETUP-TUTUFIX.TP2~ #0 #4 // Totemic Druid Spirit Summons are Balanced

~SETUP-TUTUFIX.TP2~ #0 #5 // BG1 Summoning Spells

~BG1NPC.TP2~ #0 #0 // The BG1 NPC Project: Required Modifications for v12

~BG1NPC.TP2~ #0 #1 // The BG1 NPC Project: Banters, Quests, and Interjections

~BG1NPC.TP2~ #0 #7 // The BG1 NPC Project: Add Non-Joinable NPC portraits to quests and dialogues

~BG1NPC.TP2~ #0 #45 // The BG1 NPC Project: NPCs can be sent to wait in an inn.

~BG1NPC.TP2~ #0 #55 // The BG1 NPC Project: Make Shar-Teel Unkillable until In Party

~BG1NPC.TP2~ #0 #200 // The BG1 NPC Project: Player-Initiated Dialogues

~BG1NPCMUSIC/BG1NPCMUSIC.TP2~ #0 #0 // The BG1 NPC Project Music Pack

~SETUP-INDINPC.TP2~ #0 #0 // Indira NPC for BG1Tutu

~SETUP-FINCHNPCV3.TP2~ #0 #0 // Finch NPC for Tutu v3.0

~SETUP-OVERSIGHT.TP2~ #0 #5 // Cleric Kits

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #130 // Force All Dialogue to Pause Game

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1060 // Breakable Iron Nonmagical Shields, Helms, and Armor

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1080 // Add Bags of Holding

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1090 // Exotic Item Pack

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1100 // Reveal City Maps When Entering Area

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1110 // Add Map Notes

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2170 // Cast Spells from Scrolls (and Other Items) at Character Level

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2210 // True Grand Mastery (Baldurdash)

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2220 // Change Magically Created Weapons to Zero Weight

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2230 // Make +x/+y Weapons Consistent

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3001 // Higher HP on Level Up -> NWN Style

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3030 // Easy Spell Learning -> 100% Learn Spells

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3200 // Sellable Staffs, Clubs, and Slings (Icelus)

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #4000 // Adjust Evil joinable NPC reaction rolls

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #4031 // Consistent Stats: Edwin -> Use BG2 Values

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #4041 // Consistent Stats: Jaheira -> Use BG2 Values

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #4050 // Change Jaheira to Neutral Good

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #4061 // Consistent Stats: Minsc -> Use BG2 Values

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #4071 // Consistent Stats: Viconia -> Use BG2 Values

~SETUP-EASYTUTUSPAWNRANDOMIZER.TP2~ #0 #4 // EasyTutu Spawn Randomizer -> Base Spawn Chance: 70%

~SETUP-EASYTUTUSPAWNRANDOMIZER.TP2~ #0 #9 // Respawn Interval Selection -> Respawn Interval: 2 game days

~SETUP-TUTUGUI.TP2~ #0 #0 // Baldurs Gate I GUI for Tutu

Link to comment

Thanks. Just wanted to rule out other tactical-enhancement mods like SCS and The Grey Clan.

 

I'll take a peek at Jaheira and the druids when I get home and see if there's a ClearAllActions() before the cutscene, which will put a stop to the call lightnings, anyway.

 

Don't blame BG1 NPC for the CL's, though. They're vanilla. Speaking of that, though, protection from electricity scrolls might help there, but that's a lot like metagaming. Then again, you already know about the hamadryad and the druids...

 

The one that always got me with the darned dryad was that she'd always DC the party tank. He'd cut a swath of destruction through the party, or we'd spend the whole time trying to run away from him, in 6 different directions. Maybe keep everybody back and nail her with a fireball?

 

Just wait until you get to the sirenes...

Link to comment

Dunno - we had better check those scripts. Miloch contributed some good work on those scripts (try rolling over Mercutio in Garrick's Quest with a low-level party, and the ghost of a famous Bard will be drinking soup from a nice matching set of six skulls...) and he may have gone a bit overboard (his versions of stuff were designed to be closer to PnP and not quite as tough as SCS, but definitely not the standard druid "I'll just stand here and whack at you with my big stick while you unload magic on my tail." It might actually be us, in which case we need to get at least two of those druids to be of lower level.

 

The hermadryad we can't do anything about. She may take an opportunity when it presents itself, and we don't touch her - painful stuff.

 

I will take a look at the script too, and between berelinde and myself (and anyone who ants to weigh in) we can probably back those off a bit. Or at least change the frequency... though I should say before folks start asking about combat scripting, BG1NPC has almost *none*. This is by design - almost all creatures use vanilla scripts. The only ones I know of are Miloch's, added to Jaheira's Quest characters and Garrick's Quest (the zombies are untouched, just the Ghist Bard, who is now not quite at Boss level but pretty close).

 

Personally, I use either the g series and Yovanoath's scripts, or SCS. I have never checked to see, but I am under the impression that those upgrades get our characters, too, except for specially scripted ones (Miloch's).

 

Shadow Druid script

 

IF
 HaveSpell(CLERIC_CURE_LIGHT_WOUNDS)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 HPPercentLT(Myself,80)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_CURE_LIGHT_WOUNDS)
END

IF
 !Allegiance(Myself,ENEMY)
THEN
 RESPONSE #100
NoAction()
END

IF
 HaveSpell(CLERIC_BARKSKIN)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_BARKSKIN)
END

IF
 !See([GOODCUTOFF.0.0.FIGHTER_DRUID])
 !See([GOODCUTOFF.0.0.DRUID_ALL])
 !See([GOODCUTOFF.0.0.MAGE_ALL])
 !See([GOODCUTOFF.0.0.CLERIC_ALL])
 !See([GOODCUTOFF.0.0.BARD_ALL])
 !See([GOODCUTOFF])
 False()
THEN
 RESPONSE #100
Continue()
END

IF
 HaveSpell(WIZARD_WEB)
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 Range(LastSeenBy(),15)
THEN
 RESPONSE #100
RunAwayFrom(LastSeenBy(),15)
END

IF
 HaveSpell(WIZARD_WEB)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREMAGE)
 !HasBounceEffects(LastSeenBy())
 !Range(LastSeenBy(),15)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),WIZARD_WEB)
END

IF
 HaveSpell(CLERIC_ARMOR_OF_FAITH)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_ARMOR_OF_FAITH)
END

IF
 HaveSpell(CLERIC_CALL_LIGHTNING)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_CALL_LIGHTNING)
END

IF
 HaveSpell(CLERIC_ENTANGLE)
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 Range(LastSeenBy(),15)
THEN
 RESPONSE #100
RunAwayFrom(LastSeenBy(),15)
END

IF
 HaveSpell(CLERIC_ENTANGLE)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
 !Range(LastSeenBy(),15)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_ENTANGLE)
END

IF
 HaveSpell(CLERIC_RESIST_FIRE)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_RESIST_FIRE)
END

IF
 HaveSpell(CLERIC_CHARM_PERSON)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(LastSeenBy(),STATE_CHARMED)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_CHARM_PERSON)
END

IF
 HaveSpell(WIZARD_CHROMATIC_ORB)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREMAGE)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),WIZARD_CHROMATIC_ORB)
END

IF
 HaveSpell(CLERIC_DOOM)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(LastSeenBy(),STATE_CONFUSED)
 !StateCheck(LastSeenBy(),STATE_PANIC)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_DOOM)
END

IF
 HaveSpell(CLERIC_SUMMON_INSECTS)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_SUMMON_INSECTS)
END

IF
 !GlobalGT("X#DSL","LOCALS",0)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
SetGlobal("X#DSL","LOCALS",1)
Spell(Myself,4633)
END

IF
 GlobalTimerNotExpired("X#DCA","LOCALS")
THEN
 RESPONSE #100
AttackOneRound(LastSeenBy())
END

IF
 !GlobalTimerNotExpired("X#DCA","LOCALS")
THEN
 RESPONSE #100
Attack(LastSeenBy())
END

IF
 AttackedBy([GOODCUTOFF],DEFAULT)
 !Allegiance(Myself,ENEMY)
THEN
 RESPONSE #100
Enemy()
END

IF
 AttackedBy([0],DEFAULT)
THEN
 RESPONSE #100
Attack(LastAttackerOf())
END

 

druid 8 (8th Level?)

IF
 StateCheck(Myself,STATE_POISONED)
 HaveSpell(CLERIC_SLOW_POISON)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_SLOW_POISON)
END

IF
 HaveSpell(CLERIC_CURE_SERIOUS_WOUNDS)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 HPPercentLT(Myself,70)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_CURE_SERIOUS_WOUNDS)
END

IF
 HaveSpell(CLERIC_CURE_LIGHT_WOUNDS)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 HPPercentLT(Myself,80)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_CURE_LIGHT_WOUNDS)
END

IF
 !Allegiance(Myself,ENEMY)
THEN
 RESPONSE #100
NoAction()
END

IF
 HaveSpell(CLERIC_IRONSKIN)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_IRONSKIN)
END

IF
 HaveSpell(CLERIC_BARKSKIN)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_BARKSKIN)
END

IF
 !See([GOODCUTOFF.0.0.FIGHTER_DRUID])
 !See([GOODCUTOFF.0.0.DRUID_ALL])
 !See([GOODCUTOFF.0.0.MAGE_ALL])
 !See([GOODCUTOFF.0.0.CLERIC_ALL])
 !See([GOODCUTOFF.0.0.BARD_ALL])
 !See([GOODCUTOFF])
 False()
THEN
 RESPONSE #100
Continue()
END

IF
 HaveSpell(CLERIC_INSECT_PLAGUE)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_INSECT_PLAGUE)
END

IF
 HaveSpell(WIZARD_WEB)
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 Range(LastSeenBy(),15)
THEN
 RESPONSE #100
RunAwayFrom(LastSeenBy(),15)
END

IF
 HaveSpell(WIZARD_WEB)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREMAGE)
 !HasBounceEffects(LastSeenBy())
 !Range(LastSeenBy(),15)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),WIZARD_WEB)
END

IF
 HaveSpell(CLERIC_ARMOR_OF_FAITH)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_ARMOR_OF_FAITH)
END

IF
 HaveSpell(CLERIC_CALL_LIGHTNING)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_CALL_LIGHTNING)
END

IF
 HaveSpell(CLERIC_ENTANGLE)
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 Range(LastSeenBy(),15)
THEN
 RESPONSE #100
RunAwayFrom(LastSeenBy(),15)
END

IF
 HaveSpell(CLERIC_ENTANGLE)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
 !Range(LastSeenBy(),15)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_ENTANGLE)
END

IF
 HaveSpell(CLERIC_RESIST_FIRE)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(Myself,CLERIC_RESIST_FIRE)
END

IF
 HaveSpell(WIZARD_LIGHTNING_BOLT)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREMAGE)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),WIZARD_LIGHTNING_BOLT)
END

IF
 HaveSpell(CLERIC_CHARM_PERSON)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(LastSeenBy(),STATE_CHARMED)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_CHARM_PERSON)
END

IF
 HaveSpell(CLERIC_POISON)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_POISON)
END

IF
 HaveSpell(WIZARD_CHROMATIC_ORB)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREMAGE)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),WIZARD_CHROMATIC_ORB)
END

IF
 HaveSpell(CLERIC_DOOM)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(LastSeenBy(),STATE_SLEEPING)
 !StateCheck(LastSeenBy(),STATE_HELPLESS)
 !StateCheck(LastSeenBy(),STATE_CONFUSED)
 !StateCheck(LastSeenBy(),STATE_PANIC)
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_DOOM)
END

IF
 HaveSpell(CLERIC_SUMMON_INSECTS)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 !HasBounceEffects(LastSeenBy())
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_SUMMON_INSECTS)
END

IF
 HaveSpell(CLERIC_CAUSE_SERIOUS_WOUNDS)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
 !StateCheck(Myself,STATE_SILENCED)
 !CheckStatGT(Myself,75,SPELLFAILUREPRIEST)
 AttackedBy([0],DEFAULT)
 Range(LastAttackerOf(),6)
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),CLERIC_CAUSE_SERIOUS_WOUNDS)
Attack(LastSeenBy())
END

IF
 !GlobalGT("X#DSL","LOCALS",0)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
SetGlobal("X#DSL","LOCALS",1)
Spell(Myself,4634)
END

IF
 HaveSpell(SALAMANDER_BREATHE_FIREBALL)
 !GlobalTimerNotExpired("X#DCA","LOCALS")
THEN
 RESPONSE #100
SetGlobalTimer("X#DCA","LOCALS",6)
Spell(LastSeenBy(),SALAMANDER_BREATHE_FIREBALL)
END

IF
 GlobalTimerNotExpired("X#DCA","LOCALS")
THEN
 RESPONSE #100
AttackOneRound(LastSeenBy())
END

IF
 !GlobalTimerNotExpired("X#DCA","LOCALS")
THEN
 RESPONSE #100
Attack(LastSeenBy())
END

IF
 AttackedBy([GOODCUTOFF],DEFAULT)
 !Allegiance(Myself,ENEMY)
THEN
 RESPONSE #100
Enemy()
END

IF
 AttackedBy([0],DEFAULT)
THEN
 RESPONSE #100
Attack(LastAttackerOf())
END
Link to comment

How many of those druids are there? Summon Insects, *twice*, and Insect Plague once? That's some serious, SoA-level firepower.

 

The Call Lightning is a pain, but with those other disruptive spells in effect, the party is in big trouble.

 

By the time the party gets to the ShadowDruid map, they're probably around 3-5 level. They don't have anywhere *near* the kind of firepower they need to combat that.

 

Unless it's a single high-powered caster with lower-level backup.

 

How many casters, and what levels?

Link to comment
Thanks. Just wanted to rule out other tactical-enhancement mods like SCS and The Grey Clan.

Had a feeling. I don't like such mods, anyway.

 

I'll take a peek at Jaheira and the druids when I get home and see if there's a ClearAllActions() before the cutscene, which will put a stop to the call lightnings, anyway.

Yeah, that oughtta do it.

 

Don't blame BG1 NPC for the CL's, though. They're vanilla. Speaking of that, though, protection from electricity scrolls might help there, but that's a lot like metagaming. Then again, you already know about the hamadryad and the druids...

I know CL's behavior is vanilla; it's just the number being sent my way that's really aggravating (and that hamadryad doesn't help much), and I usually don't have any ProElectricity scrolls by then (especially if I'm trying to quickly get through the first four chapters, like I am now).

 

The one that always got me with the darned dryad was that she'd always DC the party tank. He'd cut a swath of destruction through the party, or we'd spend the whole time trying to run away from him, in 6 different directions. Maybe keep everybody back and nail her with a fireball?

That gets me too. No mages (love to get one, but no room right now) and only one Oil of Fiery Burning, too. Finally got rid of her by shooting a Silence her way, waiting until she ran out of Dimension Doors, and shooting her full of arrows, darts, and sling bullets.

 

Just wait until you get to the sirenes...

Sirines are pretty bad about DC as well, but at least then I don't have to worry about several lightning bolts catching me after they're all dead.

Link to comment

I think it is four of the L6 dudes in the first encounter, and one or two L8s assisting Amaranthe in the second (that one cleaned my clock with a 6 person L4 party, but I just assume that most folks are more tied into advanced tactics than I am - I usually roleplay combat, too, so I choose as if I were each NPC, rather than if I were using a team... and I make them act as if they had their own prejudices, too. So Khalid protects Jaheira even when it is stupid, PC and Romance Partner tend to protect eachother, and no one protects Monbatron or Edwin or Xzar - they operate as if they are alone).

Link to comment

Four level 6 druids against a party of 6 levels 3-5? Sounds like it could be a slaughter. But I'm not known for my tactics, so I'll defer to those who are better able to judge that sort of thing.

 

What I am concerned about is the casting that continues *after* the start of the cutscene.

 

I had to blow away my install, so I haven't got a working version up at the moment, but would you please check to see if there is a ClearAllActions() at the start of it? Those guys shouldn't keep casting through a cutscene. While the PC and friends are unselectable, the enemy will still carry on, which means that the enemy will continue to pound the snot out of the party, but they can't even take a healing potion.

Link to comment

Code present:

/* Intro of Cutscene with Healing Beador */
IF %BGT_VAR%
Global("X#JaheiraHealsB","GLOBAL",2)
InParty(Myself)
!StateCheck(Myself,CD_STATE_NOTVALID)
CombatCounter(0)
!See([ENEMY])
THEN
RESPONSE #100
ClearAllActions()
SetGlobal("X#JaheiraHealsB","GLOBAL",3)
StartCutSceneMode()
StartCutScene("X#JABE1")
END

 

but this one needs revisiting in v14 release. We need to back down the script and retest.

 

Currently, removing the single Summon Insects block from 6. Leaving it in place for the "boss" encounter, 8. We need to retest this for v15.

Link to comment
How many of those druids are there? Summon Insects, *twice*, and Insect Plague once? That's some serious, SoA-level firepower.
*squint* I guess some of that scripting is mine. Though the original post wouldn't've encountered it as:
Version 12, beta 3.
predated the changes.

 

I always thought you'd have a full party and be fairly well along in levels by the time you got to Cloakwood. Now if you installed some mod component that allowed one to enter areas the game and grab some NPC that designers certainly didn't intend one to have access to right away, well one should be aware of the consequences of one's actions :). You really should be pretty advanced if you're going to go around tangling with archdruids (L13 by PnP definition I believe) and their minions.

 

Having said that, I just gave the NPC druids the spells they would have for their level, wisdom and kits. The scripts just enable them to cast those spells strictly by the book (i.e. no unlimited spells or more spells than they could technically have or above their levels). And only the level 8 druids get Insect Plague (a L5 spell), and that only once. Both the level 6 and L8 druids also get one Summon Insects, which is only a L3 spell. In return, they lost exclusive cleric spells like Hold Person, Flame Blade etc. As Avengers (Shadow Druids) they get a few spells as per the kit, probably not ones you'd even notice as they're among the last spells they'll use. Druids are fairly wimpy when you have a party of six snipers/tanks/mages or whatever stepping up to them, possibly sneaking or at any rate pelting them with arrows and blows so they can't get off any spells. The script does have some RunAway behaviour which I was going to axe, as it does funny things, as reported on some earlier posts on SHS.

 

So it's all by the rules, and fairly strict interpretations of those. But playability is king of course, so if they need nerfing, nerf them. But that decision shouldn't be based on a "I want to oPeN CLoAkWoOd in chApter 1 becAuse corAn is so coOol!!!" judgment :). I would recommend seeing what an actual party level would be by getting to this point and fulfilling all the previous requirements. I think some of the SHS playtesters ran this way and didn't report any problems, except with the RunAway stuff and the spear BAM that was off (which I thought I fixed).

 

As noted, the Call Lightning is vanilla BG behaviour. I think the only time I axed it was for indoor druids, if there are any of those in BG1NPC. Druids don't have a whole lot of spells to choose from, and it make sense they'd resort to nature spells like lightning if threatened outside, as annoying as that might be if you don't whack 'em in time. I guess I'm rambling but maybe cmorgan summed it up best:

his versions of stuff were designed to be closer to PnP and not quite as tough as SCS, but definitely not the standard druid "I'll just stand here and whack at you with my big stick while you unload magic on my tail."

The hamadryad's script is pretty ridiculous in vanilla BG1 or Tutu. As I recall, she gets unlimited dimension doors and a bunch of other stuff. I nerfed her somewhere or other (not in BG1NPC - possibly in my soon-to-not-be-released "Nympho" mod :)).

Link to comment

Darned good to see you, man -

 

so it looks like this encounter might be better tweaked by dropping numbers of opponnents. Re-reviewing the scripts, we do want to support roleplaying, which means *my* (not everyone's, not speaking for a group, just lil' ol' me) indicates a balanced party of 5 to 6 4th to 5th level players with a mixed party should have a challenge similar to that provided by Davaeorn and his minions. As with all BG1NPC encounters, they are as they are (no configuring of challenges), so no one of lower level should be trying to handle Garrick's or Jaheira's quests until after Nashkell Mines is cleared ("go forth, oh first level ones, and boldly attack that large Archmage over there... uh... ooops.... anyone got a mop?").

 

I will try a playtest as soon as I can!

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...