The BG1 NPC Project Documentation: Kagain's Quest Walkthrough

A Gibberlings Three Mod
Authors: The BG1 NPC Project team.

Overview

Kagain's Quest starts from two points, but involves Bandits, Murder, and Mayhem. It is realtively short, but has an added payoff when you get to Baldur's Gate.  It can be both initiated and completed with or without Kagain, thoug obviously there is more dialogue and it makes more of a story if Kagain is in the party at least until the basic portion of the quest is completed.

Walkthrough

SPOILER ALERT: To read sections that contain spoiler information, select/highlight the invisible text or hover your mouse over it.

The starting point is either at Kagain's shop in area FW3353 (part of  http://www.dudleyville.com/bg1/ar3300.htm ) or in the wilderness to the east of the road in the Coast Way  http://www.dudleyville.com/bg1/ar2800.htm  .

If the Player meets Kagain and Kagain joins the party  first, Initial state 0 A_T_A SetGlobal KagainCaravan=10, if he joins the party Set KagainCaravan=10 X#KagainCaravan=1,  then go find some caravans in trouble to your north.

The party with Kagain enters  FW2800, and Kagain chimes in about checking out the East route. You run into bandits that have just killed everyone in Kagain's caravan. He is NOT amused. After appropriate... discussion, Kagain wipes his axe and sees about joining. You find a fibula (fancy word for a broach that identifies household members of nobility), and you can kick Kagain out or party on with him.

script actions are: _KAGAIN.BCS If 1 SDNS, Set X#KagainCaravan,GLOBAL,2 dialogue to 3
Player1 meets Bandit (static area spawn), X#TalkedEddard=0 (forced fight, pick up Silvershield's pin) regardless of Kagain's status, then X#KagainCaravan=3 X#TalkedEddard=1
If Kagain is InParty, Eddard Dead, CC(0), !S(E), X#KagainCaravan=3, X#TalkedEddard=1, then Set X#TalkedEddard=2 SDNS
If Kagain joins, set X#KagainCaravan=4, area script sets KACASH, final dialogue gives gold based on global and terminates with X#KagainCaravan=5
Responding to giving party money, X#KagainCaravan=5
If he is turned down, he leaves as originally scripted (EscapeArea())
Party exits quest either way with item to return to SS Estate, X#KagainCaravan=5, X#TalkedEddard=2

If Player1 and the party explore the Coast Way fully before meeting Kagain, they may run into the bandits first. They are bandits. Kill them.  You can skip meeting Kagain completely, and continue on until you are in Baldur's Gate, or you can go pick up Kagain now. In his shop, you have some new responses, talking about the caravan you saw. It is dependent on globals, not the fibula you picked up from Eddard's body, but you want to go back and get that item if you want to trigger the Baldur's Gate interaction -- that one works off of the party having the item.  Have Kagain join, or not -- his primary part of the quest was resolved even before he joined up.

Script actions are: Player1 meets Bandit (static area spawn), X#TalkedEddard=0 (forced fight, pick up Silvershield's pin) regardless of Kagain's status, then X#KagainCaravan=3 X#TalkedEddard=1
Player meets Kagain with init condition X#KagainCaravan,GLOBAL,3 X#TalkedEddard,GLOBAL,1
/* making sure the quest can't happen if Eddard is already dead */
EXTEND_BOTTOM ~_KAGAIN~ 2
IF ~Global("X#KagainCaravan","GLOBAL",3) Global("X#TalkedEddard","GLOBAL",1)~ THEN REPLY ~Well there sure is trouble on the roads. We battled a bandit group that had just killed everyone in a caravan up North. Any chance this pin was from one of yours?~ GOTO X#KagBandResolvAlone
END

APPEND ~_KAGAIN~

IF ~~ THEN BEGIN X#KagBandResolvAlone
SAY ~Well, this is Silvershield's son's marker. Dead, y'say? That was one of my caravans. Guess I'm in a lot of trouble now. With him dead, I'll be a wanted dwarf. Well, since my reputation is now mud, how 'bout I help you gain revenge on those scum bags? P'rhaps you can put in a word for me with the Silvershields. Whadda ya say?~
IF ~~ THEN REPLY ~We don't want you around, so hit the road.~ JOURNAL ~Entar Silvershield's son was killed. We might take the pin back to his family, when we get to Baldurs Gate.~ DO ~SetGlobal("X#KagainCaravan","GLOBAL",4)~ GOTO X#KAQUDISMISS
IF ~~ THEN REPLY ~Sure, we could use your skills.~ JOURNAL ~Entar Silvershield's son was killed. We might take the pin back to his family, when we get to Baldurs Gate.~ DO ~SetGlobal("X#KagainCaravan","GLOBAL",4)~ GOTO X#KAQUREWARDALONE
END

IF ~~ THEN BEGIN X#KAQUREWARDALONE
SAY ~Now 'bout that hiring thing I promised. Here, have some gold, but I expect my share of the booty from ya. I am poor now.~
IF ~~ THEN DO ~GivePartyGold(50) SetGlobal("X#KagainCaravan","GLOBAL",5) SetGlobal("X#TalkedEddard","GLOBAL",2)~ EXIT
END

IF ~~ THEN BEGIN X#KAQUDISMISS
SAY ~Stupid chumps, your loss.~
IF ~~ THEN DO ~SetGlobal("X#KagainCaravan","GLOBAL",5) SetGlobal("X#TalkedEddard","GLOBAL",2) EscapeArea()~ EXIT
END

Either way, the Party exits the major portion of the quest  with the fibula to  return to the Silvershields Estate in Baldurs Gate; Globals set at  X#KagainCaravan=5, X#TalkedEddard=2.

When you get to the Silvershield's Estate in Baldur's Gate, Kagain really has no business with any of it (he doesn't say a line). The most dialogue is if you have Skie and Eldoth in the party before talking to Lady Silvershield. It is definitely worth trying out this interaction once. If the party has the fibula, the guard will have a new option to send the party directly to Lady Silvershield upstairs. If you have come to rescue Skie and have Eldoth in the party, get her and then talk to step-mommy-dearest. If you don't have Eldoth and would prefer not to slaughter the Silvershield Household, just go upstairs to Lady Silvershield and talk to her, then leave.

That should take care of the quest!

The code:
EXTEND_BOTTOM _BRILLA 0
+ ~PartyHasItem("X#SILSH")~ + ~Madam, I bring grave news. In my travels I came across a raided caravan... and a body of a young man, dressed in Silvershield's colors. The bandits who killed him had this clasp.~ + BrillaEddardDeath
END

CHAIN ~_BRILLA~ BrillaEddardDeath
~Then Eddard is dead? That's grievous news. Give me that pin - I shall keep it in memory of my dear, dear step-son... ~
== ~_BSKIE~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~No... no... Why have not you told me, <CHARNAME>? M-m-y brother... o, no!~
== ~_BRILLA~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~Hush, girl.~
== ~_BRILLA~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~Wha... Skie? What are you doing?~
== ~_SKIEJ~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~I.. I'm just er... popping out. Heh...~
== ~_BRILLA~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~Hmph, dressed like a sewer rat, and with your pack on your shoulders? Hardly, dear - You're running away, aren't you? ~
== ~_SKIEJ~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~I... yes. I'm leaving. Er... will you tell my father?~
== ~_BRILLA~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~Hmmm... tell him? Why, of course not! This is indeed a delightful turn of events...~
== ~_SKIEJ~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~Wha..?~
== ~_BRILLA~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~My dear, you are but a pampered little rich girl. You whine when you break a *nail*. Do you really think you'll be able to survive in the big bad world? A finer example of goblin bait I've never seen.~
= ~And when you do eventually fall by the road side, just like your brother, *I* will be the one sitting on top of the Silvershield fortune.~
== ~_BRILLA~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID) InParty("eldoth")~ THEN ~Now you run along - though... maybe you could leave your friend, hmm? *smiles at Eldoth* ~
== ~_SKIEJ~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID)~ THEN ~ You... You BITCH!~
== ~_SKIEJ~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID) InParty("eldoth")~ THEN ~Stay away from my Eldoth!~
== ~_ELDOTJ~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID) InParty("eldoth")~ THEN ~Now, now, my dearest. We can hardly hope to keep your... um... departure a secret, can we? Even from someone so self-absorbed as your father? Let us, then, mount upon the wings of Love and fly where they will take us. *Hugs Skie and winks at Brilla over her shoulder.*~
== ~_BRILLA~ IF ~InParty("skie") !Dead("skie") !StateCheck("skie",CD_STATE_NOTVALID) InParty("eldoth")~ THEN ~Tee-hee! If I ever need a humorist to brighten a dull evening, I know now where to apply. Take good care, sweetie! *Skie snarls and drags Eldoth from the room.*~
END
IF ~~ THEN DO ~IF ~~ THEN DO ~TakePartyItem("X#SILSH")
DestroyItem("X#SILSH"))
AddexperienceParty(3000)
ActionOverride("brilla",EscapeArea())~
EXIT

EXTEND_BOTTOM ~_HOUSG3~ 0
IF ~PartyHasItem("X#SILSH")~ THEN REPLY ~We bring news for Lord and Lady Silvershield. We believe that we have found news of their son. Any chance this pin is one of yours?~ GOTO X#SilverGuardPass
END

APPEND ~_HOUSG3~
IF ~~ THEN BEGIN X#SilverGuardPass
SAY ~I see you have the household Sigil. Please go to meet Lady Silvershield directly. You can find her upstairs.~
IF ~~ THEN EXIT
END
END

Exit stage right. The end.