Jump to content

A dual-classed Fighter -> Druid can never become a Grand Druid


Recommended Posts

This issue was recently reported on a German BG2 forum. If you examine CECHALLE.DLG you'll find the following triggers which determine whether the protagonist is eligible for the Grand Druid challenge:

 

Class(Player1,DRUID_ALL)
LevelGT(Player1,13)
Global("GreatDruid","GLOBAL",0)
!Global("GaveTitle","LOCALS",1)

 

As you can see, the triggers don't take into account the second class at all, so a dual-classed Fighter(9)/Druid(14) can never become Grand Druid and get the stronghold. The easiest solution would be to replace:

 

LevelGT(Player1,13)]

 

with:

 

OR(2)
 CheckstatGT(Player1,13,LEVEL)
 CheckstatGT(Player1,13,LEVEL2)

 

However, this might also allow a Fighter(14)/Druid(1) to become Grand Druid. :band: OTOH, I think that may have already been possible in the unmodded game.

Link to comment

Note that this does not affect the stronghold, only the cosmetic 'Grand Druid' title. We discussed this way back around alpha 2, but I'm certainly open to having another round on it. Though yes, if a dual-classed character has 14 druid levels and they're not getting a chance to get the title, that needs to be fixed.

Link to comment
Note that this does not affect the stronghold, only the cosmetic 'Grand Druid' title.

 

Ahh, it's been a while since I played a Druid PC, I forgot that those two issues are separate. Anyway, thread title edited. :band:

 

Still, perhaps it might be good to fix this anyway, since a dual-classed Fighter(9) -> Druid(14+) PC will always answer that he's "not ready yet" even if he has more than 14 Druid levels.

Link to comment
Ahh, it's been a while since I played a Druid PC, I forgot that those two issues are separate.

If you read the linked thread, so did I. :band:

 

And yeah, multi- and dual-classed druids are getting hosed. A multi-class figter-druid, a fighter dualled to druid, or a druid dualled to fighter are classed as fighter-druids and store their druid level as the second level. Level, LevelGT, and LevelLT only check the first level value. cechalle state 2 reponses are currently

  1. Not a druid
  2. Any druid, LevelGT 13 (this means level 14 fighter/level 1 druids qualify)
  3. False
  4. False
  5. False
  6. False
  7. False
  8. Druid, LevelLT 13 (this means level 1 fighter/level 14 druids fail to qualify)
  9. Already received title

The transitions here are already screwy so I don't mind nuking the state a la BD:

 

// un-hose multi- and dual-classed druids qualifying for great druid title
REPLACE CECHALLE 
 IF ~~ THEN BEGIN 2 SAY #8697
   IF ~!Class(Player1,DRUID_ALL)~ THEN REPLY #55514 EXIT
   IF ~Class(Player1,DRUID_ALL)
       !Class(Player1,FIGHTER_DRUID)
       LevelGT(Player1,13)
       Global("GreatDruid","GLOBAL",0)
       !Global("GaveTitle","LOCALS",1)~ THEN REPLY #55515 DO ~ClearAllActions()
                                                              StartCutSceneMode()
                                                              StartCutScene("Cut63a")~ EXIT
   IF ~Class(Player1,FIGHTER_DRUID)
       CheckStatGT(Player1,13,LEVEL2)
       Global("GreatDruid","GLOBAL",0)
       !Global("GaveTitle","LOCALS",1)~ THEN REPLY #55515 DO ~ClearAllActions()
                                                              StartCutSceneMode()
                                                              StartCutScene("Cut63a")~ EXIT
   IF ~Class(Player1,DRUID_ALL)
       !Class(Player1,FIGHTER_DRUID)
       LevelLT(Player1,14)
       Global("GreatDruid","GLOBAL",0)
       !Global("GaveTitle","LOCALS",1)~ THEN REPLY #58673 EXIT
   IF ~Class(Player1,FIGHTER_DRUID)
       CheckStatLT(Player1,14,LEVEL2)
       Global("GreatDruid","GLOBAL",0)
       !Global("GaveTitle","LOCALS",1)~ THEN REPLY #58673 EXIT
   IF ~Global("GaveTitle","LOCALS",1)~ THEN REPLY #62151 GOTO 16
 END
END

Link to comment

I think a batter choice is:

Duplicate state3 response #1 for dual/multi druids

change

Class(Player1,DRUID_ALL)
LevelGT(Player1,13)
Global("GreatDruid","GLOBAL",0)
!Global("GaveTitle","LOCALS",1)

to refer to Class(Player1,DRUID).

 

Add a new response

Class(Player1,FIGHTER_DRUID)
Level2GT(Player1,13)
Global("GreatDruid","GLOBAL",0)
!Global("GaveTitle","LOCALS",1)

 

The Check for response #7

Class(Player1,DRUID_ALL)
LevelLT(Player1,14)
Global("GreatDruid","GLOBAL",0)
!Global("GaveTitle","LOCALS",1)

is also problematical, change that to Class(Player1,DRUID), too.

 

Duplicate that with a test block

Class(Player1,FIGHTER_DRUID)
Level2LT(Player1,14)
Global("GreatDruid","GLOBAL",0)
!Global("GaveTitle","LOCALS",1)

 

Question... Which level is level1, and which is level2 in a Druid->Fighter dualclass? Isn't the first class always level1? If that's the case, then this is broken for druid->fighter dual (say, druid 9->Fighter, in order to get ironskins)

 

Edit: Answer, after testing: No, Druid is Level2 in that case.

Link to comment

You're proposing the same thing as I, except I'm using DRUID_ALL + !FIGHTER_DRUID and you're using DRUID. Same effect.

 

Any fighter-druid, whether it's a multi- or a dual- (either direction) is classed a fighter-druid and stores the fighter level as class level 1 and druid as class level 2. I'm pretty sure levels on spell headers always reference the level of the casting class.

Link to comment

Archived

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

×
×
  • Create New...