Author Topic: A number of fixes regarding the Baldur's Gate Thieves  (Read 1699 times)

Roana

  • Guest
A number of fixes regarding the Baldur's Gate Thieves
« on: January 20, 2005, 05:31:56 AM »
To the Thieves in Baldurs Gate:

All Thieves have not their right Scripts. These are:

THIEF.CRE
THIEFF.CRE
THIEFG.CRE
THIEFM.CRE

They should have:

THIEF.CRE
THIEFF.CRE
THIEFM.CRE

Class -> THIEF4.BCS
Default -> THIEF.BCS

THIEFG.CRE

Class -> THIEF4.BCS
General -> THIEF.BCS, because I have written a little Script to theses Guards of their own, they have as Default Script:

IF
   Global("SaidPassword","GLOBAL",1)
   Global("Dialogset","LOCALS",0)
THEN
   RESPONSE #100
      SetDialog("Thiefm")
      SetGlobal("Dialogset","LOCALS",1)
END


Also there are Faults in the THIEF.BCS that I have correctet. The Script should be as below:

IF
   Heard([ANYONE],1)
   Allegiance(Myself,NEUTRAL)
THEN
   RESPONSE #100
      Shout(1)
      Enemy()
END

IF
   Heard([ANYONE],2)
   Allegiance(Myself,NEUTRAL)
THEN
   RESPONSE #100
      Shout(2)
      EscapeArea()
END

IF
   Heard("Resar",3)
   !Global("NarlenMove","GLOBAL",7)
   !Global("NarlenMove","GLOBAL",8)
   !Global("NarlenMove","GLOBAL",9)
   Allegiance(Myself,NEUTRAL)
THEN
   RESPONSE #100
      Shout(2)
      EscapeArea()
END

IF
   AttackedBy([GOODCUTOFF],DEFAULT)
   Allegiance(Myself,NEUTRAL)
THEN
   RESPONSE #100
      Shout(1)
      SetGlobal("AttackedThieves","GLOBAL",1)
      Enemy()
      Continue()
END

IF
   Global("AttackedThieves","GLOBAL",1)
   Allegiance(Myself,NEUTRAL)
THEN
   RESPONSE #100
      Enemy()
      Continue()
END


The THIEFG.CRE has a corrupt DLG file, that, if convertet to Tutu will not work in the right way, because of the WeiDU converting behaviour.

I have written this new, so that the secret password now should work also with a conversion to Tutu :-):

// creator  : weidu (version 133)
// argument : THIEFG.DLG
// game     : .
// source   : ./override/THIEFG.DLG
// dialog   : ./dialog.tlk
// dialogF  : ./dialogf.tlk

BEGIN ~THIEFG~ 752 // non-zero flags may indicate non-pausing dialogue

IF ~NumTimesTalkedTo(0)
Global("SaidPassword","GLOBAL",0)
~ THEN BEGIN 0 // from:
  SAY #752 /* ~~ */
  IF ~Global("KnownPassword","GLOBAL",0)~ THEN REPLY #756 /* ~~ */ GOTO 1
  IF ~~ THEN REPLY #758 /* ~~ */ GOTO 2
END

IF ~~ THEN BEGIN 1 // from: 0.0
  SAY #2433 /* ~~ */
  IF ~~ THEN DO ~SetNumTimesTalkedTo(0)~ EXIT
END

IF ~~ THEN BEGIN 2 // from: 0.1
  SAY #2434 /* ~~ */
  IF ~~ THEN REPLY #16655 /* ~~ */ GOTO 3
  IF ~~ THEN REPLY #16656 /* ~~ */ GOTO 3
  IF ~~ THEN REPLY #16657 /* ~~ */ GOTO 3
  IF ~~ THEN REPLY #16658 /* ~~ */ GOTO 4
  IF ~~ THEN REPLY #16659 /* ~~ */ GOTO 3
  IF ~~ THEN REPLY #16660 /* ~~ */ GOTO 3
  IF ~~ THEN REPLY #16661 /* ~~ */ GOTO 3
END

IF ~~ THEN BEGIN 3 // from: 2.6 2.5 2.4 2.2 2.1 2.0
  SAY #2776 /* ~~ */
  IF ~~ THEN DO ~SetNumTimesTalkedTo(0)~ EXIT
END

IF ~~ THEN BEGIN 4 // from: 2.3
  SAY #2777 /* ~~ */
  IF ~~ THEN DO ~SetGlobal("SaidPassword","GLOBAL",1)
SetDialog("Thiefm")~ EXIT
END


According to this, I have had to make some changes in the NIKLOS.DLG to set the right trigger (and correct some faults in it by the way). With the following Dialogfile, I guess Niklos will work as mentioned (although I didn't have testet it yet, because I have no Savegame there in handy at the moment):

// creator  : weidu (version 133)
// argument : NIKLOS.DLG
// game     : .
// source   : ./override/NIKLOS.DLG
// dialog   : ./dialog.tlk
// dialogF  : ./dialogf.tlk

BEGIN ~NIKLOS~ 2761 // non-zero flags may indicate non-pausing dialogue
//////////////////////////////////////////////////
// WARNING: this file contains non-trivial WEIGHTs
//////////////////////////////////////////////////

IF WEIGHT #2 /* Triggers after states #: 5 9 even though they appear after this state */
~NumTimesTalkedTo(0)~ THEN BEGIN 0 // from:
  SAY #2761 /* ~~ */
  IF ~~ THEN GOTO 1
END

IF ~~ THEN BEGIN 1 // from: 0.0
  SAY #2762 /* ~~ */
  IF ~~ THEN REPLY #2763 /* ~~ */ DO ~GivePartyGold(50)
SetGlobal("GiveGold","LOCALS",1)~ GOTO 3
  IF ~~ THEN REPLY #2764 /* ~~ */ DO ~GivePartyGold(50)
SetGlobal("GiveGold","LOCALS",1)~ GOTO 8
  IF ~~ THEN REPLY #2765 /* ~~ */ DO ~GivePartyGold(50)
SetGlobal("GiveGold","LOCALS",1)~ GOTO 2
END

IF ~~ THEN BEGIN 2 // from: 1.2
  SAY #2766 /* ~~ */
  IF ~~ THEN REPLY #2780 /* ~~ */ GOTO 8
  IF ~~ THEN REPLY #2781 /* ~~ */ GOTO 3
  IF ~~ THEN REPLY #2782 /* ~~ */ GOTO 8
END

IF ~~ THEN BEGIN 3 // from: 2.1 1.0
  SAY #2767 /* ~~ */
  IF ~~ THEN DO ~SetGlobal("NiklosRefused","GLOBAL",1)~ JOURNAL #9976 /* ~~ */ EXIT
END

IF WEIGHT #4 /* Triggers after states #: 5 9 10 even though they appear after this state */
~Global("TalkedToAlatos","GLOBAL",0)
Global("ShowWay","LOCALS",1)
Global("GiveGold","LOCALS",1)~ THEN BEGIN 4 // from:
  SAY #2768 /* ~~ */
  IF ~~ THEN DO ~EscapeAreaDestroy(5)~ EXIT
END

IF WEIGHT #1 /* Triggers after states #: 9 even though they appear after this state */
~Global("NiklosRefused","GLOBAL",1)
Global("GiveGold","LOCALS",1)~ THEN BEGIN 5 // from:
  SAY #2769 /* ~~ */
  IF ~~ THEN REPLY #2770 /* ~~ */ GOTO 8
  IF ~~ THEN REPLY #2771 /* ~~ */ GOTO 7
  IF ~~ THEN REPLY #2772 /* ~~ */ GOTO 6
END

IF ~~ THEN BEGIN 6 // from: 5.2
  SAY #2773 /* ~~ */
  IF ~~ THEN DO ~TakePartyGold(50)
EscapeAreaDestroy(5)~ EXIT
END

IF ~~ THEN BEGIN 7 // from: 5.1
  SAY #2774 /* ~~ */
  IF ~~ THEN DO ~TakePartyGold(50)
EscapeAreaDestroy(5)~ EXIT
END

IF ~~ THEN BEGIN 8 // from: 5.0 2.2 2.0 1.1
  SAY #2775 /* ~~ */
  IF ~~ THEN DO ~SetGlobal("KnownPassword","GLOBAL",1)
SetGlobal("ShowWay","LOCALS",1)
MoveToPoint([1439.1313])
OpenDoor("DOOR0151")
MoveToPoint([1456.1262])~ JOURNAL #9977 /* ~~ */ EXIT
END

IF WEIGHT #0 ~StateCheck(Myself,STATE_CHARMED)
~ THEN BEGIN 9 // from:
  SAY #6473 /* ~~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #3 ~Global("Chapter","GLOBAL",7)
~ THEN BEGIN 10 // from:
  SAY #4300 /* ~~ */
  IF ~~ THEN DO ~EscapeAreaDestroy(5)~ EXIT
END

IF WEIGHT #5 ~Global("AttackedThieves","GLOBAL",1)~ THEN BEGIN 11 // from:
  SAY #9070 /* ~~ */
  IF ~~ THEN DO ~EscapeAreaDestroy(5)~ EXIT
END


Also I have made a few corrections in the THIEFM.DLG (removed many unsused Trigger and Actions, repaired the Random-trigger):

// creator  : weidu (version 133)
// argument : THIEFM.DLG
// game     : .
// source   : ./override/THIEFM.DLG
// dialog   : ./dialog.tlk
// dialogF  : ./dialogf.tlk

BEGIN ~THIEFM~ 14170 // non-zero flags may indicate non-pausing dialogue
//////////////////////////////////////////////////
// WARNING: this file contains non-trivial WEIGHTs
//////////////////////////////////////////////////

IF WEIGHT #0 ~RandomNum(7,1)
~ THEN BEGIN 0 // from:
  SAY #14170 /* ~~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #1 ~RandomNum(7,2)~ THEN BEGIN 1 // from:
  SAY #14190 /* ~~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #2 ~RandomNum(7,3)
~ THEN BEGIN 2 // from:
  SAY #14191 /* ~~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #3 ~RandomNum(7,4)
~ THEN BEGIN 3 // from:
  SAY #14192 /* ~~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #4 ~RandomNum(7,5)
~ THEN BEGIN 4 // from:
  SAY #14193 /* ~~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #6 /* Triggers after states #: 6 even though they appear after this state */
~RandomNum(7,7)
~ THEN BEGIN 5 // from:
  SAY #14194 /* ~~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #5 ~RandomNum(7,6)~ THEN BEGIN 6 // from:
  SAY #14195 /* ~~ */
  IF ~~ THEN EXIT
END


The same I have done in the THIEFF.DLG:

// creator  : weidu (version 133)
// argument : THIEFF.DLG
// game     : .
// source   : ./override/THIEFF.DLG
// dialog   : ./dialog.tlk
// dialogF  : ./dialogf.tlk

BEGIN ~THIEFF~ 14196 // non-zero flags may indicate non-pausing dialogue

IF ~RandomNum(5,1)
~ THEN BEGIN 0 // from:
  SAY #14196 /* ~~ */
  IF ~~ THEN EXIT
END

IF ~RandomNum(5,2)
~ THEN BEGIN 1 // from:
  SAY #14392 /* ~~ */
  IF ~~ THEN EXIT
END

IF ~RandomNum(5,3)~ THEN BEGIN 2 // from:
  SAY #14393 /* ~~ */
  IF ~~ THEN EXIT
END

IF ~RandomNum(5,4)~ THEN BEGIN 3 // from:
  SAY #14394 /* ~~ */
  IF ~~ THEN EXIT
END

IF ~RandomNum(5,5)
~ THEN BEGIN 4 // from:
  SAY #14631 /* ~~ */
  IF ~~ THEN EXIT
END


To work Niklos in the right way in Chapter 7, I have corrected the AR0153.BCS and by the way removed Alatos, because all Thieves tell you, that he has hidden himself and he has nothing more to say in Chapter 7:

IF
   Global("DukeThanks","GLOBAL",0)
   Global("InactiveDoor","GLOBAL",0)
THEN
   RESPONSE #100
      SetGlobal("InactiveDoor","GLOBAL",1)
      TriggerActivation("Door0146",FALSE)
END

IF
   Global("Chapter","GLOBAL",7)
   Exists("Alatos")
   !Dead("Alatos") // Alatos "Rabenmal" Thuibuld - Alatos
   Global("RemoveAlatos","AR0153",0)
THEN
   RESPONSE #100
      ActionOverride("Alatos",DestroySelf())
      SetGlobal("RemoveAlatos","AR0153",1)
END

IF
   Global("DukeThanks","GLOBAL",0)
   Global("Chapter","GLOBAL",7)
   !Exists("Niklos")
   !Dead("Niklos") // Niklos
   Global("SpawnNiklos","GLOBAL",0)
THEN
   RESPONSE #100
      CreateCreature("Niklos",[630.335],0) // Niklos
      SetGlobal("SpawnNiklos","GLOBAL",1)
END

IF
   Global("DukeThanks","GLOBAL",1)
   !Exists("DENKOD")
   !Dead("DENKOD") // Denkod - Denkod.
THEN
   RESPONSE #100
      CreateCreature("DENKOD",[881.430],0) // Denkod - Denkod.
      TriggerActivation("Door0146",TRUE)
END

IF
   Global("NarlenMove","GLOBAL",3)
   !Exists("Narlen")
   !Dead("Narlen") // Narlen Darkwalk
THEN
   RESPONSE #100
      CreateCreature("NARLEN",[660.366],0) // Narlen Darkwalk
      ActionOverride("Narlen",SetNumTimesTalkedTo(1))
END

IF
   Global("NarlenMove","GLOBAL",5)
   !Exists("Narlen")
   !Dead("Narlen") // Narlen Darkwalk
THEN
   RESPONSE #100
      CreateCreature("NARLEN",[660.366],0) // Narlen Darkwalk
      ActionOverride("Narlen",SetNumTimesTalkedTo(1))
END


Also I have designed and assigned new little Scripts for the Areas AR0150, AR0151 and AR0152, where the thiefguards are asking for the password, so that the Player now can really only go into the thievesguild with the right password (or by the dukes):


AR0150.BCS:

IF
   Global("SaidPassword","GLOBAL",0)
   Global("InactiveDoor","AR0150",0)
THEN
   RESPONSE #100
      SetGlobal("InactiveDoor","AR0150",1)
      TriggerActivation("Door0153",FALSE)
END

IF
   Global("SaidPassword","GLOBAL",1)
   Global("InactiveDoor","AR0150",1)
THEN
   RESPONSE #100
      SetGlobal("InactiveDoor","AR0150",2)
      TriggerActivation("Door0153",TRUE)
END


AR0151.BCS:

IF
   Global("SaidPassword","GLOBAL",0)
   Global("InactiveDoor","AR0151",0)
THEN
   RESPONSE #100
      SetGlobal("InactiveDoor","AR0151",1)
      TriggerActivation("Door0153",FALSE)
END

IF
   Global("SaidPassword","GLOBAL",1)
   Global("InactiveDoor","AR0151",1)
THEN
   RESPONSE #100
      SetGlobal("InactiveDoor","AR0151",2)
      TriggerActivation("Door0153",TRUE)
END


AR0152.BCS:

IF
   Global("SaidPassword","GLOBAL",0)
   Global("InactiveDoor","AR0152",0)
THEN
   RESPONSE #100
      SetGlobal("InactiveDoor","AR0152",1)
      TriggerActivation("Door0153",FALSE)
END

IF
   Global("SaidPassword","GLOBAL",1)
   Global("InactiveDoor","AR0152",1)
THEN
   RESPONSE #100
      SetGlobal("InactiveDoor","AR0152",2)
      TriggerActivation("Door0153",TRUE)
END


Oh and - I have correctet the AR0800.BCS, because the Creature, that it should create, "BERSCH", does not exist in the game, and now the Area will destroy "Niklos" for me at the right moment correspondending to my changes in the Niklos.DLG file.


The correctet AR0800.BCS:

IF
   Global("EnteredBaldursGate","GLOBAL",0)
THEN
   RESPONSE #100
      StartMovie("BGENTER")
      SetGlobal("EnteredBaldursGate","GLOBAL",1)
END

IF
   OnCreation()
   !Exists("Husam2")
   !Dead("Husam2") // Husam
   !Dead("Husam") // Husam
   GlobalGT("HusamMove","GLOBAL",0)
   GlobalLT("HusamMove","GLOBAL",5)
THEN
   RESPONSE #100
      CreateCreature("Husam2",[3393.1397],0) // Husam
END

IF
   Global("TalkedToAlatos","GLOBAL",1)
THEN
   RESPONSE #100
      ActionOverride("Niklos",DestroySelf())
END

IF
   Global("Chapter","GLOBAL",7)
   Global("Capture800","GLOBAL",0)
   Global("DukeThanks","GLOBAL",0)
THEN
   RESPONSE #100
      SetGlobal("Capture800","GLOBAL",1)
      CreateCreature("FFHUNT",[2312.1520],0) // Mietling der Flammenden Faust
      CreateCreature("FFHUNT",[2312.1520],0) // Mietling der Flammenden Faust
END

IF
   Global("RededgeMove","GLOBAL",1)
   !Exists("Rededge")
   !Dead("Rededge")
THEN
   RESPONSE #100
      CreateCreature("REDEDG",[1399.1611],0) // Rededge
      ActionOverride("Rededge",Enemy())
END

IF
   Global("Chapter","GLOBAL",7)
   Global("SpawnDelthyr","GLOBAL",0)
THEN
   RESPONSE #100
      SetGlobal("SpawnDelthyr","GLOBAL",1)
      CreateCreature("DELTHY",[1484.1680],0) // Delthyr
END

IF
   GlobalTimerExpired("Delthyr","GLOBAL")
   Global("TalkedToDelthyr","GLOBAL",1)
   Global("SpawnDelthyr","GLOBAL",1)
THEN
   RESPONSE #100
      SetGlobal("SpawnDelthyr","GLOBAL",2)
      CreateCreature("DELTHY",[1484.1680],0) // Delthyr
      ActionOverride("Delthyr",SetNumTimesTalkedTo(1))
END

IF
   TimeGT(20)
   Exists("Rededge")
THEN
   RESPONSE #100
      Activate("Rededge")
END

IF
   TimeLT(4)
   Exists("Rededge")
THEN
   RESPONSE #100
      Activate("Rededge")
END

IF
   TimeGT(4)
   TimeLT(20)
   Exists("Rededge")
THEN
   RESPONSE #100
      Deactivate("Rededge")
END

IF
   Global("TamokoMove","GLOBAL",0)
   Global("Chapter","GLOBAL",7)
   !Exists("Tamoko")
   !Dead("Tamoko") // Tamoko
THEN
   RESPONSE #100
      CreateCreature("TAMOKO",[1122.2074],0) // Tamoko
END


Hope this helps to make the Thieves quests more playable in Tutu (although I have not installed Tutu yet, because I am learning Area-Editing now, to repair a corrupt Area in TotSC, wich I want to play through: a dungeon under the Ice Isle, which (as I suppose) has been removed from the developers. The .WED is unreadable by NI, but I have a readable .TIS, a readable .ARE, a readable .MOS for it. I hope, I will be able to make this Area work for me :-))

If you use these changes and find every bugs in them, I haven't seen, feel free to e-mail me at melora1@gmx.de

Well and - if my posts here are too long for you, please anyone can say it here. I will then post only, what I have done and e-mail it to someone if asked.

Well, back to my Aera-Editing-Tutorial now *sigh* :-)

Regards and have fun in playing and modding my favorite game for years :-).



 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
What color is grass?:
What is the seventh word in this sentence?:
What is five minus two (use the full word)?: