Jump to content

Just a request


Recommended Posts

Hi y'all! So I have a little request for the BG1 NPC project, now I don't even know if you guys can pull this off since I'm as much as an expert on modding as this smiley here: :cool:

Now I always thought that the kickouts from Baldur's gate always were a bit... dull. Especially if you have been traveling with a certain character for a whole while and you're just like:

I'mma kick you out now

(insert possible but I thought we were, or, Do you really want to, here)

Let's meet up somewhere, stay right here, no I don't.

 

I always thought that was a bit anti-climactic and found this to be a great option to really roleplay your character. Just an example:

 

Imoen: What?! Why would you... we were friends remember? *You see a tear coming out of the eyes of Imoen*

1. Imoen, we've been friends for so long... but I think it's time we move on... for the sake of us both.

2. OH STOP WHINING YOU PANSY! You've done nothing more but talk about adventuring but ones you do it you just suck at it!

3. Imoen, this man/woman will be of great help to me for the time being, I do not wish for you to leave forever. Only for a little while... we have to say goodbye... for now.

4. *Rolls eyes* fine. You can stay as long as you get better at your job.

5. Did you honestly think I was serious?! HAH! Now we're even! That'll teach ya to throw away all those books in candlekeep! MY BOOKS!

 

I know I'm just as good as writing as this smiley here: :) but it's just an example and a suggestion.

Link to comment

Looks like a great suggestion roleplaying-wise, but bad convenience-wise. If someone implemented this, then me, the player, would feel really guilty upon kicking Imoen or Viconia out(I already can't do it to Edwin in game dialogue - the line when he gives you all his coin and leaves is heartbreaking, I had to delete that save and that game entirely), and it would leave a bitter taste for the rest of the game. Given that Imoen is forced upon you in the beginning of the game and quite a few players want to try new parties(with Skie, Safana, Tiax, Coran or other late-game characters), quite a few players will be forced to sit through this guilt scene, and to me, this ain't good - the game is there for us, players, to feel comfortable, warm and loved(with the exception of some torture scenes, or some emo mods of mine for the player to feel all tragic, betrayed and misunderstood - but that's okay, because the player usually *knows* what he's signing up for. In BG1 NPC, leaving dialogues are compulsory).

 

That's only my opinion, though.

Link to comment
Looks like a great suggestion roleplaying-wise, but bad convenience-wise. If someone implemented this, then me, the player, would feel really guilty upon kicking Imoen or Viconia out(I already can't do it to Edwin in game dialogue - the line when he gives you all his coin and leaves is heartbreaking, I had to delete that save and that game entirely), and it would leave a bitter taste for the rest of the game. Given that Imoen is forced upon you in the beginning of the game and quite a few players want to try new parties(with Skie, Safana, Tiax, Coran or other late-game characters), quite a few players will be forced to sit through this guilt scene, and to me, this ain't good - the game is there for us, players, to feel comfortable, warm and loved(with the exception of some torture scenes, or some emo mods of mine for the player to feel all tragic, betrayed and misunderstood - but that's okay, because the player usually *knows* what he's signing up for. In BG1 NPC, leaving dialogues are compulsory).

 

That's only my opinion, though.

As I already stated I'm not a good writer. There could also be hopeful kickouts, for example Imoen again:

 

Imoen: You're kicking me out? But... but...

 

1. Imoen, we fought together long and hard. But we'll see each other again. I'm not gonna leave you forever to walk Faerun alone!

 

*You see a smile apearing on Imoen's face* You promise?

 

1. Promise! Next time we meet... our grand adventure will continue!

 

Something like that.

Link to comment

Cool idea - especially as the regular ones are relatively bland.

 

Implementation is a little awkward, as there are several mods that can influence the kickout materials, but doable -

 

This would be an interesting add- on. It can't go into BG1NPC as BG1NPC content closed up for good a few years ago, and this would not be a bugfix or restoring content. But it could be a really interesting mod, and one that goes beyond BG content. The BG2 kick-outs have the same problems; I could see something that addressed this globally for canonical NPCs in both BG and BG2, and perhaps even in crossmod for regular things.

 

So, anapproach for Imoen, assuming a clean install of EasyTutu:, to give you a lead on how you could play with the idea, or if someone wants to do it, would follow this kind of thing (though i am taking the easy way out and playing with the "rejoining" stuff instead of the "kicking her out" materials which would mean code prospecting)

 

// creator  : DLTCEP_enhanced_WeiDU (version 22900)
// argument : _IMOENP.DLG
// game		 : .
// source	 : ./override/_IMOENP.DLG
// dialog	 : ./DIALOG.TLK
// dialogF  : (none)

BEGIN ~_IMOENP~

IF ~Global("KickedOut","LOCALS",1)
~ THEN BEGIN 0 // from:
 SAY ~You old rumjake fool!  I knew you'd be back!  Let's get back to traveling the good road, eh?~ /* #87117 */
 IF ~~ THEN REPLY ~Sorry kiddo, but I don't need your company just yet.~ /* #87118 */ GOTO 1
 IF ~~ THEN REPLY ~Sorry to have kept you waiting.  Lets get going.~ /* #87119 */ GOTO 2
END

IF ~~ THEN BEGIN 1 // from: 0.0
 SAY ~Oh fine!  I'll just pester about around here until you realize you can't live without little Imoen.  You know you will.~ /* #87120 */
 IF ~~ THEN EXIT
END

IF ~~ THEN BEGIN 2 // from: 0.1
 SAY ~You bet!  We'll nick ourselves a whole purse o' fun before the night is through!~ /* #87121 */
 IF ~~ THEN DO ~JoinParty()
SetGlobal("KickedOut","LOCALS",0)
~ EXIT
END

IF ~HappinessLT(Myself,0)
~ THEN BEGIN 3 // from:
 SAY ~Well good!  You've changed since we were friends anyway.  Not nearly as much fun now.  Should have stayed in Candlekeep, instead of wasting time with you gully pennies.~ /* #87122 */
 IF ~~ THEN DO ~LeaveParty()
EscapeArea()
~ EXIT
END

IF ~Global("KickedOut","LOCALS",0)
~ THEN BEGIN 4 // from:
 SAY ~Just... just like that?  But we are friends and everything!  Been friends for years!  I guess... I guess I'll just wait 'till you need me again, because you will!  Just wait and see!~ /* #87123 */
 IF ~~ THEN DO ~SetGlobal("KickedOut","LOCALS",1)
~ EXIT
END

 

The file only changes if folks have installed the 'wait at an inn" component:

 

// creator  : DLTCEP_enhanced_WeiDU (version 22900)
// argument : _IMOENP.DLG
// game		 : .
// source	 : ./override/_IMOENP.DLG
// dialog	 : ./DIALOG.TLK
// dialogF  : (none)

BEGIN ~_IMOENP~

IF ~Global("KickedOut","LOCALS",1)
~ THEN BEGIN 0 // from:
 SAY ~You old rumjake fool!  I knew you'd be back!  Let's get back to traveling the good road, eh?~ /* #87117 */
 IF ~~ THEN REPLY ~Sorry kiddo, but I don't need your company just yet.~ /* #87118 */ GOTO 1
 IF ~~ THEN REPLY ~Sorry to have kept you waiting.  Lets get going.~ /* #87119 */ GOTO 2
END

IF ~~ THEN BEGIN 1 // from: 0.0
 SAY ~Oh fine!  I'll just pester about around here until you realize you can't live without little Imoen.  You know you will.~ /* #87120 */
 IF ~~ THEN EXIT
END

IF ~~ THEN BEGIN 2 // from: 0.1
 SAY ~You bet!  We'll nick ourselves a whole purse o' fun before the night is through!~ /* #87121 */
 IF ~~ THEN DO ~ActionOverride("imoen",JoinParty())
SetGlobal("KickedOut","LOCALS",0)
~ EXIT
END

IF ~HappinessLT(Myself,0)
~ THEN BEGIN 3 // from:
 SAY ~Well good!  You've changed since we were friends anyway.  Not nearly as much fun now.  Should have stayed in Candlekeep, instead of wasting time with you gully pennies.~ /* #87122 */
 IF ~~ THEN DO ~SetGlobal("IHATEYOUALL","LOCALS",0)
ChangeAIScript("",DEFAULT)
LeaveParty()

EscapeArea()
~ EXIT
END

IF ~Global("KickedOut","LOCALS",0)
~ THEN BEGIN 4 // from:
 SAY ~Just... just like that?  But we are friends and everything!  Been friends for years!  I guess... I guess I'll just wait 'till you need me again, because you will!  Just wait and see!~ /* #87123 */
 IF ~False()
~ THEN DO ~SetGlobal("KickedOut","LOCALS",1)
~ EXIT
 IF ~!AreaCheck("FW5100")
!AreaCheck("FW5101")
!AreaCheck("FW5102")
!AreaCheck("FW5103")
!AreaCheck("FW5401")
!AreaCheck("FW5402")
!AreaCheck("FW5403")
!AreaCheck("FW5404")
!AreaCheck("FW5405")
!AreaCheck("FW1900")
!AreaCheck("FW1901")
!AreaCheck("FW1903")
!AreaCheck("FW3900")
!AreaCheck("FW3901")
!AreaCheck("FW4500")
!AreaCheck("FW5201")
!AreaCheck("FW3500")
!AreaCheck("FW1603")
!AreaCheck("FW4501")
!AreaCheck("FW3601")
!AreaCheck("FW1401")
!AreaCheck("FW2101")
!AreaCheck("FW1801")
!AreaCheck("FW1802")
!AreaCheck("FW1803")
!AreaCheck("FW1804")
!AreaCheck("FW2615")
!AreaCheck("FW2619")
!AreaCheck("FW5506")
!AreaCheck("FW0500")
!AreaCheck("FW0501")
!AreaCheck("FW0502")
!AreaCheck("FW0503")
!AreaCheck("FW0504")
!AreaCheck("FW0505")
!AreaCheck("FW0506")
!AreaCheck("FW0507")
!AreaCheck("FW0508")
!AreaCheck("FW0509")
!AreaCheck("FW0510")
!AreaCheck("FW0511")
!AreaCheck("FW0512")
!AreaCheck("FW0513")
!AreaCheck("FW0514")
!AreaCheck("FW0515")
!AreaCheck("FW0516")
!AreaCheck("FW1002")
!AreaCheck("FW1003")
!AreaCheck("FW1008")
!AreaCheck("FW1009")
!AreaCheck("FW1500")
!AreaCheck("FW2000")
!AreaCheck("FW2012")
!AreaCheck("FW1501")
!AreaCheck("FW1502")
!AreaCheck("FW1503")
!AreaCheck("FW1504")
!AreaCheck("FW1505")
!AreaCheck("FW0400")
!AreaCheck("FW0606")
!AreaCheck("FW0607")
!AreaCheck("FW0608")
!AreaCheck("FW1113")
!AreaCheck("FW1114")
!AreaCheck("FW1201")
!AreaCheck("FW1202")
!AreaCheck("FW1207")
!AreaCheck("FW0721")
!AreaCheck("FW0611")
!AreaCheck("FW0621")
!AreaCheck("FW0123")
!AreaCheck("FW0125")
!AreaCheck("FW0126")
!AreaCheck("FW0137")
!AreaCheck("FW0138")
!AreaCheck("FW0139")
!AreaCheck("FW0140")
!AreaCheck("FW0141")
!AreaCheck("FW0142")
!AreaCheck("FW0146")
!AreaCheck("FW0161")
!AreaCheck("FW0224")
!AreaCheck("FW0225")
!AreaCheck("FW0226")
~ THEN REPLY ~Imoen, I do not want to part ways with you forever. Just wait for me here. I will return for you when I need your help again.~ /* #113728 */ GOTO 6
 IF ~OR(84)
AreaCheck("FW5100")
AreaCheck("FW5101")
AreaCheck("FW5102")
AreaCheck("FW5103")
AreaCheck("FW5401")
AreaCheck("FW5402")
AreaCheck("FW5403")
AreaCheck("FW5404")
AreaCheck("FW5405")
AreaCheck("FW1900")
AreaCheck("FW1901")
AreaCheck("FW1903")
AreaCheck("FW3900")
AreaCheck("FW3901")
AreaCheck("FW4500")
AreaCheck("FW5201")
AreaCheck("FW3500")
AreaCheck("FW1603")
AreaCheck("FW4501")
AreaCheck("FW3601")
AreaCheck("FW1401")
AreaCheck("FW2101")
AreaCheck("FW1801")
AreaCheck("FW1802")
AreaCheck("FW1803")
AreaCheck("FW1804")
AreaCheck("FW2615")
AreaCheck("FW2619")
AreaCheck("FW5506")
AreaCheck("FW0500")
AreaCheck("FW0501")
AreaCheck("FW0502")
AreaCheck("FW0503")
AreaCheck("FW0504")
AreaCheck("FW0505")
AreaCheck("FW0506")
AreaCheck("FW0507")
AreaCheck("FW0508")
AreaCheck("FW0509")
AreaCheck("FW0510")
AreaCheck("FW0511")
AreaCheck("FW0512")
AreaCheck("FW0513")
AreaCheck("FW0514")
AreaCheck("FW0515")
AreaCheck("FW0516")
AreaCheck("FW1002")
AreaCheck("FW1003")
AreaCheck("FW1008")
AreaCheck("FW1009")
AreaCheck("FW1500")
AreaCheck("FW2000")
AreaCheck("FW2012")
AreaCheck("FW1501")
AreaCheck("FW1502")
AreaCheck("FW1503")
AreaCheck("FW1504")
AreaCheck("FW1505")
AreaCheck("FW0400")
AreaCheck("FW0606")
AreaCheck("FW0607")
AreaCheck("FW0608")
AreaCheck("FW1113")
AreaCheck("FW1114")
AreaCheck("FW1201")
AreaCheck("FW1202")
AreaCheck("FW1207")
AreaCheck("FW0721")
AreaCheck("FW0611")
AreaCheck("FW0621")
AreaCheck("FW0123")
AreaCheck("FW0125")
AreaCheck("FW0126")
AreaCheck("FW0137")
AreaCheck("FW0138")
AreaCheck("FW0139")
AreaCheck("FW0140")
AreaCheck("FW0141")
AreaCheck("FW0142")
AreaCheck("FW0146")
AreaCheck("FW0161")
AreaCheck("FW0224")
AreaCheck("FW0225")
AreaCheck("FW0226")
~ THEN REPLY ~Imoen, I do not want to part ways with you forever. Just wait for me here. I will return for you when I need your help again.~ /* #113728 */ GOTO 8
 IF ~Global("Drawbridge","GLOBAL",1)
~ THEN REPLY ~Our paths have to separate right now, but they will cross again one of these days. I might seek your help again soon. Let us set up a meeting place somewhere in the city of Baldur's Gate.~ /* #113562 */ GOTO 10
 IF ~~ THEN REPLY ~Our paths have to separate right now, but they will cross again one of these days. I might seek your help again soon. Let us set up a meeting place somewhere along the Sword Coast.~ /* #113563 */ GOTO 9
 IF ~~ THEN REPLY ~On second thought, Imoen, I want you to stay with the group.~ /* #113729 */ GOTO 5
END

IF ~~ THEN BEGIN 5 // from: 8.1 4.5
 SAY ~You bet! We'll nick ourselves a whole purse o' fun before the night is through!~ /* #113730 */
 IF ~~ THEN DO ~SetGlobal("KickedOut","LOCALS",0)
JoinParty()
~ EXIT
END

IF ~~ THEN BEGIN 6 // from: 4.1
 SAY ~Of course, <CHARNAME>! You bet I'll wait for you. Just don't take too long. Pretty pleeease?~ /* #113731 */
 IF ~~ THEN DO ~SetGlobal("KickedOut","LOCALS",1)
~ EXIT
END

IF ~~ THEN BEGIN 7 // from: 8.0
 SAY ~Well, good! You've changed since we were friends anyway. Not nearly as much fun now. Should have stayed in Candlekeep, instead of wasting time with you gully pennies.~ /* #113732 */
 IF ~~ THEN DO ~LeaveParty()
EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 8 // from: 4.2
 SAY ~You aren't going to abandon me here, are you? I cannot stay in this place all alone.~ /* #113733 */
 IF ~~ THEN REPLY ~Farewell then.~ /* #113571 */ GOTO 7
 IF ~~ THEN REPLY ~On second thought, I want you to stay with the group.~ /* #113572 */ GOTO 5
 IF ~OR(59)
AreaCheck("FW5100")
AreaCheck("FW5101")
AreaCheck("FW5102")
AreaCheck("FW5103")
AreaCheck("FW5401")
AreaCheck("FW5402")
AreaCheck("FW5403")
AreaCheck("FW5404")
AreaCheck("FW5405")
AreaCheck("FW1900")
AreaCheck("FW1901")
AreaCheck("FW1903")
AreaCheck("FW3900")
AreaCheck("FW3901")
AreaCheck("FW4500")
AreaCheck("FW5201")
AreaCheck("FW3500")
AreaCheck("FW1603")
AreaCheck("FW4501")
AreaCheck("FW3601")
AreaCheck("FW1401")
AreaCheck("FW2101")
AreaCheck("FW1801")
AreaCheck("FW1802")
AreaCheck("FW1803")
AreaCheck("FW1804")
AreaCheck("FW2615")
AreaCheck("FW2619")
AreaCheck("FW5506")
AreaCheck("FW0500")
AreaCheck("FW0501")
AreaCheck("FW0502")
AreaCheck("FW0503")
AreaCheck("FW0504")
AreaCheck("FW0505")
AreaCheck("FW0506")
AreaCheck("FW0507")
AreaCheck("FW0508")
AreaCheck("FW0509")
AreaCheck("FW0510")
AreaCheck("FW0511")
AreaCheck("FW0512")
AreaCheck("FW0513")
AreaCheck("FW0514")
AreaCheck("FW0515")
AreaCheck("FW0516")
AreaCheck("FW1002")
AreaCheck("FW1003")
AreaCheck("FW1008")
AreaCheck("FW1009")
AreaCheck("FW1500")
AreaCheck("FW2000")
AreaCheck("FW2012")
AreaCheck("FW1501")
AreaCheck("FW1502")
AreaCheck("FW1503")
AreaCheck("FW1504")
AreaCheck("FW1505")
AreaCheck("FW0400")
~ THEN REPLY ~Oh, I trust in your outstanding skills of survival. When you are out of here, go to the safe haven of your choice and wait for me there.~ /* #113573 */ GOTO 9
 IF ~OR(25)
AreaCheck("FW0606")
AreaCheck("FW0607")
AreaCheck("FW0608")
AreaCheck("FW1113")
AreaCheck("FW1114")
AreaCheck("FW1201")
AreaCheck("FW1202")
AreaCheck("FW1207")
AreaCheck("FW0721")
AreaCheck("FW0611")
AreaCheck("FW0621")
AreaCheck("FW0123")
AreaCheck("FW0125")
AreaCheck("FW0126")
AreaCheck("FW0137")
AreaCheck("FW0138")
AreaCheck("FW0139")
AreaCheck("FW0140")
AreaCheck("FW0141")
AreaCheck("FW0142")
AreaCheck("FW0146")
AreaCheck("FW0161")
AreaCheck("FW0224")
AreaCheck("FW0225")
AreaCheck("FW0226")
~ THEN REPLY ~Oh, I trust in your outstanding skills of survival. When you are out of here, go to the safe haven of your choice and wait for me there.~ /* #113573 */ GOTO 10
END

IF ~~ THEN BEGIN 9 // from: 8.2 4.4
 SAY ~All right, no problem here. I'll wait for you at the Friendly Arm Inn. Don't take too long though. (laughs) I'll miss you and all that stuff...~ /* #113734 */
 IF ~~ THEN DO ~SetGlobal("KickedOut","LOCALS",1)
EscapeAreaMove("FW2302",894,659,0)
~ EXIT
END

IF ~~ THEN BEGIN 10 // from: 8.3 4.3
 SAY ~All right, no problem here. I'll wait for you in the Elfsong tavern. Don't take too long though. (laughs) I'll miss you and all that stuff...~ /* #113735 */
 IF ~~ THEN DO ~SetGlobal("KickedOut","LOCALS",1)
EscapeAreaMove("FW0705",630,270,12)
~ EXIT
END

A quick extension of Imoen's "rumjake fool" rejoining (I think E_B takes multiple entries but I can't remember right now - if it doesn't, just layer them on one at a time instead of as a block like I did below)

 

EXTEND_BOTTOM _IMOENP 0
IF ~~ THEN REPLY ~Imoen, I know you want to tag along, but I think you need to go practice some more with that spellbook. The last thing I need right now is to explain to Hull why I suddenly have a pet chicken who sounds just like you... ~ +  c-imoenextend1
IF ~GlobalGT("Chapter","GLOBAL",3)~ THEN REPLY ~I should have kicked your sorry bottom out back before we started Mulahey's mines! This was the best vacation from a pestering little sister I could ever have had!~ +  c-imoenextend1
IF ~~ THEN REPLY ~Hey, I missed you. Come on, here are things to re-appropriate, people to pester, and a whole world to explore. ~ +  c-imoenextend2
END

APPEND _IMOENP

IF ~~ THEN BEGIN c-imoenextend1
 SAY ~Oh fine!  I'll just pester about around here until you realize you can't live without little Imoen.  You know you will.~
 IF ~~ THEN EXIT
END

IF ~~ THEN BEGIN c-imoenextend1
 SAY ~You bet!  We'll nick ourselves a whole purse o' fun before the night is through!~ /* #87121 */
 IF ~~ THEN DO ~ActionOverride("imoen",JoinParty()) SetGlobal("KickedOut","LOCALS",0)~ EXIT
END

END

Link to comment
Yeah, sounds cool. Very nice. (Except that, erm, PC never comes back. Um, at least mine doesn't).

In that case, here is a suggestion :

 

PC: "Imoen, look at this star in the sky..."

Imoen: *looks up "Oh, where?"

PC: *breaks her neck* "Good riddance."

Khalid: "<CHARNAME> Oh, what did you...?"

PC: "Don't worry, Khalid, you're next."

 

You won't feel guilty about leaving her alone since she will be in a better world.

Link to comment

Archived

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

×
×
  • Create New...