Jump to content

BG2EE and Multiple Strongholds bug


Ikki

Recommended Posts

The "Multiple Strongholds -> No Restrictions" break the Unseeing Eye quest : High Watcher Oisig never spawn if the PC is not a cleric

COPY_EXISTING ~ar0900.bcs~ ~override~
              ~ar0901.bcs~ ~override~
              ~ar0902.bcs~ ~override~
              ~ar0904.bcs~ ~override~
  DECOMPILE_AND_PATCH BEGIN
    REPLACE_TEXTUALLY ~\(Global("GaalSpoke","AR0900",1)\|Global("TelwynSpawn","GLOBAL",0)\|Global("SainSpawn","GLOBAL",0)\|Global("YarrylSpawn","GLOBAL",0)\)[ %TAB%%LNL%%MNL%%WNL%]+OR([56])[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,FIGHTER_CLERIC)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_MAGE)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_THIEF)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,FIGHTER_MAGE_CLERIC)\([%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_RANGER)\)?~
      ~\1~
    REPLACE_TEXTUALLY ~\(Global("TelwynSpawn","GLOBAL",0)\|Global("GaalSpoke","AR0900",1)\)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,FIGHTER_CLERIC)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC_MAGE)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC_THIEF)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,FIGHTER_MAGE_CLERIC)~
      ~False()~
  END

this code don't patch correctly ar0900.bcs on the EE.

 

the first REPLACE_TEXTUALLY do nothing and the second REPLACE_TEXTUALLY break the normal (non stronghold) apparition of High Watcher Oisig.

 

By the way why is this second REPLACE_TEXTUALLY necessary ? the Global("GaalSpoke","AR0900",1) should avoid the duplication of Oisig, without this False() "trigger"

 

PS that's the original code that need patching in the EE, it must be different from the classic BG2

 

 

IF
Global("GaalSpoke","AR0900",2)
Global("NeutralMask","AR0900",1)
Global("cd_beholder_dc_shenanigans","GLOBAL",0)
!Alignment(Player1,MASK_GENEUTRAL)
OR(6)
Class(Player1,CLERIC)
Class(Player1,FIGHTER_CLERIC)
Class(Player1,CLERIC_MAGE)
Class(Player1,CLERIC_THIEF)
Class(Player1,FIGHTER_MAGE_CLERIC)
Class(Player1,CLERIC_RANGER)
THEN
RESPONSE #100
SetGlobal("cd_beholder_dc_shenanigans","GLOBAL",1)
END

IF
Global("GaalSpoke","AR0900",1)
OR(2)
Alignment(Player1,MASK_GOOD)
Kit(Player1,GODLATHANDER)
OR(6)
Class(Player1,CLERIC)
Class(Player1,FIGHTER_CLERIC)
Class(Player1,CLERIC_MAGE)
Class(Player1,CLERIC_THIEF)
Class(Player1,FIGHTER_MAGE_CLERIC)
Class(Player1,CLERIC_RANGER)
!Kit(Player1,GODHELM)
!Kit(Player1,GODTALOS)
THEN
RESPONSE #100
Wait(2)
CreateCreature("bharval",[3077.1630],SW) // ~High Mornmaster Arval~
SetGlobal("GoodMask","AR0900",1)
SetGlobal("GaalSpoke","AR0900",2)
END

IF
Global("GaalSpoke","AR0900",1)
OR(4)
Alignment(Player1,LAWFUL_NEUTRAL)
Alignment(Player1,NEUTRAL)
Alignment(Player1,LAWFUL_EVIL)
Kit(Player1,GODHELM)
OR(6)
Class(Player1,CLERIC)
Class(Player1,FIGHTER_CLERIC)
Class(Player1,CLERIC_MAGE)
Class(Player1,CLERIC_THIEF)
Class(Player1,FIGHTER_MAGE_CLERIC)
Class(Player1,CLERIC_RANGER)
!Kit(Player1,GODLATHANDER)
!Kit(Player1,GODTALOS)
THEN
RESPONSE #100
Wait(2)
CreateCreature("bhoisig",[3077.1630],SW) // ~High Watcher Oisig~
SetGlobal("NeutralMask","AR0900",1)
SetGlobal("GaalSpoke","AR0900",2)
END

IF
Global("GaalSpoke","AR0900",1)
OR(4)
Alignment(Player1,CHAOTIC_NEUTRAL)
Alignment(Player1,NEUTRAL_EVIL)
Alignment(Player1,CHAOTIC_EVIL)
Kit(Player1,GODTALOS)
OR(6)
Class(Player1,CLERIC)
Class(Player1,FIGHTER_CLERIC)
Class(Player1,CLERIC_MAGE)
Class(Player1,CLERIC_THIEF)
Class(Player1,FIGHTER_MAGE_CLERIC)
Class(Player1,CLERIC_RANGER)
!Kit(Player1,GODLATHANDER)
!Kit(Player1,GODHELM)
THEN
RESPONSE #100
Wait(2)
CreateCreature("bhnalla",[3077.1630],SW) // ~Stormherald Nallabir~
SetGlobal("EvilMask","AR0900",1)
SetGlobal("GaalSpoke","AR0900",2)
END

IF
Global("GaalSpoke","AR0900",1)
!Class(Player1,CLERIC)
!Class(Player1,FIGHTER_CLERIC)
!Class(Player1,CLERIC_MAGE)
!Class(Player1,CLERIC_THIEF)
!Class(Player1,FIGHTER_MAGE_CLERIC)
!Class(Player1,CLERIC_RANGER)
THEN
RESPONSE #100
Wait(2)
CreateCreature("bhoisig",[3077.1630],SW) // ~High Watcher Oisig~
SetGlobal("NeutralMask","AR0900",1)
SetGlobal("GaalSpoke","AR0900",2)
END

 

Link to comment

Hi, Same bug here... High Watcher Osig does not spawn...

If I put vanilla ar0900.bcs file in override (or if I put the last block of vanilla ar0900.bcs in mine), he spawns but, after that, when I talk to him in Temple of Helm he does not speak to me about the Quest :(

 

Have someone found a workaround to this bug ?

Link to comment

here is fix:

In bg2_tweaks/setup-bg2_tweaks.tp2 replace component 1160 with this code:

 

 

BEGIN @116001 DESIGNATED 1160
GROUP @13
SUBCOMPONENT @116000 // multi strongholds
REQUIRE_PREDICATE GAME_IS ~soa tob bgt bg2ee eet~ @25

// this file does nothing, it just allows other mods to detect this component
COPY_EXISTING ~sw1h01.itm~ ~override/cdt01160.g3~

COMPILE ~bg2_tweaks/dlg/stronghold1.d~  // removes stronghold var
        ~bg2_tweaks/dlg/stronghold2a.d~ // allows choice for bard, ranger, druid strongholds

ACTION_IF GAME_IS ~bg2ee eet~ BEGIN
  COMPILE ~bg2_tweaks/dlg/stronghold2ee.d~  // removes class checks
END ELSE BEGIN
  COMPILE ~bg2_tweaks/dlg/stronghold2.d~  // removes class checks
END

COPY_EXISTING ~ar0900.bcs~ ~override~
              ~ar0901.bcs~ ~override~
              ~ar0902.bcs~ ~override~
              ~ar0904.bcs~ ~override~
  DECOMPILE_AND_PATCH BEGIN
    PATCH_IF GAME_IS ~bg2ee eet~ BEGIN
      REPLACE_TEXTUALLY ~OR(6)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,FIGHTER_CLERIC)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_MAGE)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_THIEF)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,FIGHTER_MAGE_CLERIC)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_RANGER)~
      ~~
      REPLACE_TEXTUALLY ~\(Global("TelwynSpawn","GLOBAL",0)\|Global("GaalSpoke","AR0900",1)\)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,FIGHTER_CLERIC)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC_MAGE)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC_THIEF)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,FIGHTER_MAGE_CLERIC)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC_RANGER)~
      ~False()~
    END ELSE BEGIN
      REPLACE_TEXTUALLY ~\(Global("GaalSpoke","AR0900",1)\|Global("TelwynSpawn","GLOBAL",0)\|Global("SainSpawn","GLOBAL",0)\|Global("YarrylSpawn","GLOBAL",0)\)[ %TAB%%LNL%%MNL%%WNL%]+OR([56])[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,FIGHTER_CLERIC)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_MAGE)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_THIEF)[%TAB% %LNL%%MNL%%WNL%]+Class(Player1,FIGHTER_MAGE_CLERIC)\([%TAB% %LNL%%MNL%%WNL%]+Class(Player1,CLERIC_RANGER)\)?~
      ~\1~
      REPLACE_TEXTUALLY ~\(Global("TelwynSpawn","GLOBAL",0)\|Global("GaalSpoke","AR0900",1)\)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,FIGHTER_CLERIC)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC_MAGE)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,CLERIC_THIEF)[ %TAB%%LNL%%MNL%%WNL%]+!Class(Player1,FIGHTER_MAGE_CLERIC)~
      ~False()~
    END
  END

 

 

 

and create new file: bg2_tweaks/dlg/stronghold2ee.d

it should contain this code:

 

 

// class checks altered to be always true; playerhasstronghold removed in other d file

REPLACE_TRIGGER_TEXT ~bharval~  ~Class(Player1,\([A-Z]+_\)*CLERIC\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~bhnalla~  ~Class(Player1,\([A-Z]+_\)*CLERIC\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~borinall~ ~Class(Player1,\([A-Z]+_\)*CLERIC\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~cechalle~ ~Class(Player1,DRUID\(_[A-Z]+\)?)~ ~True()~
REPLACE_TRIGGER_TEXT ~cechalle~ ~LevelLT(Player1,14)~ ~~
REPLACE_ACTION_TEXT  ~cechalle~ ~ReallyForceSpell(LastTalkedToBy,GREAT_DRUID_TITLE)~ ~~

REPLACE_TRIGGER_TEXT ~cefaldor~ ~Class(Player1,DRUID\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~druidad~  ~Class(Player1,DRUID\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~garren~   ~Class(Player1,PALADIN\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~haerda~   ~Class(Player1,BARD\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~hprelate~ ~Class(Player1,PALADIN\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~lavok~    ~Class(Player1,\([A-Z]+_\)*MAGE\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~nalia~    ~Class(Player1,FIGHTER\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~naliaj~   ~Class(Player1,FIGHTER\(_[A-Z]+\)*)~ ~True()~

REPLACE_TRIGGER_TEXT ~raelis~   ~Class(Player1,BARD\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~renal~    ~Class(Player1,\([A-Z]+_\)*THIEF\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~travin~   ~Class(Player1,\([A-Z]+_\)*CLERIC\(_[A-Z]+\)?)~ ~True()~

REPLACE_TRIGGER_TEXT ~uhmay01~  ~Class(Player1,RANGER\(_[A-Z]+\)?)~ ~True()~

// misc extra dialogue tweaks
REPLACE_STATE_TRIGGER bharval 0
~NumTimesTalkedTo(0)
Global("BeholderPlot","GLOBAL",0)~

REPLACE_STATE_TRIGGER BHNALLA 0
~NumTimesTalkedTo(0)
Global("BeholderPlot","GLOBAL",0)~

REPLACE_STATE_TRIGGER bhoisig 4
~ReputationGT(Player1,14)
OR(2)
Alignment(Player1,MASK_LAWFUL)
Alignment(Player1,NEUTRAL)
Global("BeholderPlot","GLOBAL",0)
Global("NoHelpBeholder","GLOBAL",0)
!Kit(Player1,GODLATHANDER)
Global("CDWorkingForLathander","GLOBAL",0)~

REPLACE_STATE_TRIGGER bhoisig 5
~InPartySlot(LastTalkedToBy,0)
ReputationLT(Player1,15)
OR(2)
Alignment(Player1,MASK_LAWFUL)
Alignment(Player1,NEUTRAL)
Global("BeholderPlot","GLOBAL",0)
Global("NoHelpBeholder","GLOBAL",0)
!Kit(Player1,GODLATHANDER)~

REPLACE_STATE_TRIGGER bhoisig 6
~Global("PlayerHasStronghold","GLOBAL",2)
InPartySlot(LastTalkedToBy,0)
ReputationGT(Player1,14)
Global("BeholderPlot","GLOBAL",0)
Global("NoHelpBeholder","GLOBAL",0)~

REPLACE_STATE_TRIGGER bhoisig 7
~Global("PlayerHasStronghold","GLOBAL",2)
InPartySlot(LastTalkedToBy,0)
ReputationLT(Player1,15)
Global("BeholderPlot","GLOBAL",0)
Global("NoHelpBeholder","GLOBAL",0)~

EXTEND_BOTTOM bhoisig 30
  IF ~~ THEN GOTO 31
END

REPLACE_STATE_TRIGGER bhoisig 42
~Global("BeholderPlot","GLOBAL",2)
Global("JoinHelm","GLOBAL",0)
Class(Player1,CLERIC_ALL)~

REPLACE_STATE_TRIGGER bhoisig 59
~Global("BeholderPlot","GLOBAL",2)
!Class(Player1,CLERIC_ALL)~

ADD_TRANS_ACTION demson
BEGIN 119 END
BEGIN END
~EraseJournalEntry(22917)~

 

 

Link to comment

Archived

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

×
×
  • Create New...