Skip to content

BG2 NPC Cameo in BG:EE

CoutelierCoutelier Member Posts: 1,282
edited August 2013 in General Modding
This past week I started learning how to mod Baldur’s Gate: Enhanced Edition, and this is the fruit of my labor so far.

One thing I thought would be ‘cool’ in BG:EE would be if some of the BG2 NPC’s made little cameos, so it’s what I’ve started working on… initially for my own personal pleasure, but I figured I might as well share So far, I’ve just started off with a cameo for Aerie, since she’s the easiest to justify. She mentions in BG2 that the circus went to Nashkel, and there’s a carnival there in BG1, so that’s where you’ll encounter her.

She’s not a joinable NPC, but if you’re nice to her she might help you a little bit. :) And don’t worry; she won’t say anything her wings. She doesn’t know or trust you well enough at this point.

You might need to follow these instructions to get mods to work with BG:EE.

Otherwise, download BG2CameoV04. Unrar to your game directory (For me its C:\Program Files (x86)\BeamDog\Games\00766\), and then double click the file ‘bgee_install_BG2Cameo_setup.bat’, and follow the instructions. To uninstall, just double click it again.
Post edited by Coutelier on

Comments

  • kulyokkulyok Member Posts: 33
    A fine idea. I wonder if Aerie will "recognize" you in BG2 after meeting you in BG1? Looks like you may have to make another mod for that. :) Or a full "Aerie for BG1", even.

    Looks like a fun NPC-related mod to have; have you considered asking for hosting at Misc Mods section at SHS or G3? Or getting a separate forum, if your mod is going to be big enough(various banters, other cameos and so on)?
  • kulyokkulyok Member Posts: 33
    That said, there are some evil notes I'm going to leave here:

    - you're fully replacing BENTHA.dlg, an already existing game file. I understand that you would like to modify it for Bentha to mention Aerie? You can also do it via I_C_T or EXTEND_BOTTOM+CHAIN(read Weidu Readme at Weidu.org for a tutorial) - it leaves the original dialogue file alone, but adds an extra state with your own dialogue. This way all other mods that interact with Bentha's dialogue are able to do so. In other words, adding to the dialogue is preferable to the rewriting. Code example:

    EXTEND_BOTTOM BENTHA 0
    ++ ~An elven girl asked us to help.~ EXTERN BENTHA mybentha
    END

    CHAIN BENTHA MYBENTHA
    ~You must mean Aerie. I fear she would have tried to fight Zordral herself... I had to be somewhat tough on her to convince her to get herself away to safety. I hope she understands. She's a good girl, but weighed down by a great sadness. She won't discuss it with myself, or Quayle out of respect for all the kindness he's already shown her. But she grows more and more restless by the day... sometime soon, he'll have to let go of her and let her find her own way...~
    = ~Oh, listen to me ramble. Please, take this as thanks.~
    DO ~SetGlobal("BENTHALIVES","GLOBAL",1) GiveItem("POTN09",LastTalkedToBy)
    EscapeArea()~ EXIT
    END

    (This is a matter of preference, but many modders use shorthand now when coding .d - it saves a lot of time. For example, you don't need to write ~~ THEN BEGIN or THEN REPLY)(dialogue tutorials at PPG or G3 may help). But, again, it's a matter of preference).

    - You're using a modding prefix JC, which is registered(I think) to another person: http://www.blackwyrmlair.net/prefixes/ I would recommend you to register another prefix here to avoid incompatibility: http://forums.blackwyrmlair.net/index.php?showtopic=113
  • CoutelierCoutelier Member Posts: 1,282
    edited July 2013
    kulyok said:

    That said, there are some evil notes I'm going to leave here:

    - you're fully replacing BENTHA.dlg, an already existing game file. I understand that you would like to modify it for Bentha to mention Aerie? You can also do it via I_C_T or EXTEND_BOTTOM+CHAIN(read Weidu Readme at Weidu.org for a tutorial) - it leaves the original dialogue file alone, but adds an extra state with your own dialogue. This way all other mods that interact with Bentha's dialogue are able to do so. In other words, adding to the dialogue is preferable to the rewriting. Code example:

    Thanks for that; as I mentioned I've just started, so I wasn't sure how to add to an already existing dialogue. I'll change it when at the first opportunity. As for prefixes... maybe I'll use 'B2' or something like that, then.

    I suppose I might not really need to include her portrait either, since all the BG2 portraits are in BG:EE; I just extracted it to create her original character file. She also has a pretty much full soundset, which I suppose isn't necessary (unless you cheat her into the party).

    I'm thinking about other cameos. I suppose you could encounter Keldorn and/or Anomen wandering the wilderness somewhere. Maybe even Mazzy as well... or maybe she could be visiting someone in Gullykin. I can't think of much reason Nalia or Jan would have to leave Amn though.

    For BG2, it can just be handled the way other reoccurring NPC's are handled; the vague 'don't I know you?/Aren't you dead?' type responses, and some equally vague acknowledgement and explanation. The only problem is, I doubt Aerie would ever be nasty about Khalid to Jaheira if she'd actually met him, which why I've not considered any banters with them. We'll have to assume they're outside whenever you talk to her... otherwise she'll have to find some other vulnerability of Jae's, which is tough.
    Post edited by Coutelier on
  • CoutelierCoutelier Member Posts: 1,282
    Oh, yes; there was another reason I had to change Bentha's dialogue file. When I very first tried the mod and And just checked that Zordral was dead, she became stuck just repeating her first Thank you dialogue over and over... so I went and added another.

    For some reason I didn't think of it at the time, but the game checks everything in the dialogue file in order, so all I had to do was move the Dead("ZORDRAL") banter to the end of the file. So I no longer need the 'BENTHALIVES' global when you talk to her. So it's a just a case of adding the extra reply to Bentha... (also have to fix Aerie's shop; if you've got a good reputation, she'll currently sell things for less than she buys them). :)
  • CoutelierCoutelier Member Posts: 1,282
    kulyok said:


    EXTEND_BOTTOM BENTHA 0
    ++ ~An elven girl asked us to help.~ EXTERN BENTHA mybentha
    END

    CHAIN BENTHA MYBENTHA
    ~You must mean Aerie. I fear she would have tried to fight Zordral herself... I had to be somewhat tough on her to convince her to get herself away to safety. I hope she understands. She's a good girl, but weighed down by a great sadness. She won't discuss it with myself, or Quayle out of respect for all the kindness he's already shown her. But she grows more and more restless by the day... sometime soon, he'll have to let go of her and let her find her own way...~
    = ~Oh, listen to me ramble. Please, take this as thanks.~
    DO ~SetGlobal("BENTHALIVES","GLOBAL",1) GiveItem("POTN09",LastTalkedToBy)
    EscapeArea()~ EXIT
    END

    Ehhh... I'm probably missing something simple because I'm tired, but I can't seem to get this to work. I think I might need to look at more examples from other mods. What d file should I put this in, and then what do I put in the tp2?

    I'm still a bit too pleased with myself that I got any of it to work at all, but now... so very tired... going to bed...

  • CamDawgCamDawg Member, Developer Posts: 3,438
    In the absence of weighted states, yes, the engine looks top-to-bottom in a dialogue file and uses the first true state it finds when dialogue is initiated. (And just to mess with you, the engine evaluates replies bottom-to-top.) You can force a state at the end of a dialogue to appear by either adding conditions to all of the existing state triggers ahead of it to make them false when you want yours to fire, or simply WEIGHT the states appropriately. WEIGHTing basically allows you to arbitrarily set a priority amongst the existing state triggers so that your new one is top of the stack, so to speak. If you look at most BG dialogues, you'll notice that the charmed dialogue has the lowest weight, allowing it to fire ahead of other states, despite typically being the last state trigger in a given dialogue.

    Dialogue code can be compiled anywhere. Don't make the mistake of thinking that one d file=one dialogue. d code is just like tp2 code--it's a set of instructions to modify dialogues. The code Kulyok posted simply needs to be dropped into a d file and compiled.

    I agree with Kulyok. I think this is a really intriguing idea.
  • CoutelierCoutelier Member Posts: 1,282
    edited July 2013
    CamDawg said:

    In the absence of weighted states, yes, the engine looks top-to-bottom in a dialogue file and uses the first true state it finds when dialogue is initiated. (And just to mess with you, the engine evaluates replies bottom-to-top.) You can force a state at the end of a dialogue to appear by either adding conditions to all of the existing state triggers ahead of it to make them false when you want yours to fire, or simply WEIGHT the states appropriately. WEIGHTing basically allows you to arbitrarily set a priority amongst the existing state triggers so that your new one is top of the stack, so to speak. If you look at most BG dialogues, you'll notice that the charmed dialogue has the lowest weight, allowing it to fire ahead of other states, despite typically being the last state trigger in a given dialogue.

    Dialogue code can be compiled anywhere. Don't make the mistake of thinking that one d file=one dialogue. d code is just like tp2 code--it's a set of instructions to modify dialogues. The code Kulyok posted simply needs to be dropped into a d file and compiled.

    I agree with Kulyok. I think this is a really intriguing idea.

    Well, right now Aerie seems to be working like she should without the need to set any globals in Bentha's dialogue; she'll first check if Bentha's dead, then Zordral, and then if he's dead it will activate a global used for dialogues placed inbetween. But I'll keep all that in mind should any dialogues I write start to get a lot more complicated. The problem I'm having now is when I try to use Kulyok's code to try and add a reply about Aerie to Bentha, and a few other variants I've tried as well, it comes up with PARSE and syntax errors when I try to install.
  • kulyokkulyok Member Posts: 33
    Morning! Parse errors are the bane of any modder, beginning or no. :)
    Hmm, it may be the capitalization error. Try replacing

    CHAIN BENTHA MYBENTHA with
    CHAIN BENTHA mybentha

    Other than that, if you dump this code to a completely new txt file, call it, say, mybentha.d, and add this line to your .tp2 file:
    compile mybentha.d
    and not compile the other benta's dialogue file then it is supposed to work.
  • CoutelierCoutelier Member Posts: 1,282
    kulyok said:

    Morning! Parse errors are the bane of any modder, beginning or no. :)
    Hmm, it may be the capitalization error. Try replacing

    CHAIN BENTHA MYBENTHA with
    CHAIN BENTHA mybentha

    Other than that, if you dump this code to a completely new txt file, call it, say, mybentha.d, and add this line to your .tp2 file:
    compile mybentha.d
    and not compile the other benta's dialogue file then it is supposed to work.

    Still no luck. If I copy your code and put into a file 'mybentha.d', and compile that, it comes up with: PARSE ERROR at line 10 column 1-3, Near Text: END, syntax error...

    I've tried a few variants as well, different file names, like formatting it the same way as the other dialogues I know work (with THEN REPLY and THEN DO etc), but so far all the same result.
  • kulyokkulyok Member Posts: 33
    Uh oh. All right, let's try this:

    EXTEND_BOTTOM BENTHA 0
    ++ ~An elven girl asked us to help.~ EXTERN BENTHA mybentha
    END

    CHAIN BENTHA mybentha
    ~You must mean Aerie. I fear she would have tried to fight Zordral herself... I had to be somewhat tough on her to convince her to get herself away to safety. I hope she understands. She's a good girl, but weighed down by a great sadness. She won't discuss it with myself, or Quayle out of respect for all the kindness he's already shown her. But she grows more and more restless by the day... sometime soon, he'll have to let go of her and let her find her own way...~
    == BENTHA ~Oh, listen to me ramble. Please, take this as thanks.~
    DO ~SetGlobal("BENTHALIVES","GLOBAL",1) GiveItem("POTN09",LastTalkedToBy) EscapeArea()~
    EXIT

    If this doesn't work, I'll be... I'll be... well, I think we'll all scream together. :)
  • kulyokkulyok Member Posts: 33
    And here are two links about some dialogue syntax:
    http://forums.pocketplane.net/index.php/topic,25198.0.html (basically, you can write every PC-NPC dialogue this way)
    http://forums.pocketplane.net/index.php/topic,25814.0.html (NPC-NPC dialogue, though Weidu Readme explains CHAINS better)
  • CoutelierCoutelier Member Posts: 1,282
    edited August 2013
    Oh... yep... there's no need to scream. That seems to have done it. :) It's made a copy of BENTHA.dlg in the override folder, and it seems to be working in game. I'm just going to tweak a few other little things.
  • CoutelierCoutelier Member Posts: 1,282
    Changed it to v0.1, BG2CameoV01, which simply implements the changes suggested by Kulyok. I also registered the prefix 'B2', so I've renamed all the files accordingly.

    Also, as I mentioned it shouldn't be necessary at all to include Aerie's portrait in the download as all the BG2 portraits are in BG:EE (even though they're hidden in character creation). So, I haven't. I also removed her spell disruption sound so she doesn't keep saying it over and over.

    Set her buying and selling prices back to normal; she'll still identify items and heal you for free (although I removed raise dead from her list of services).
  • CoutelierCoutelier Member Posts: 1,282
    edited August 2013
    BG2CameoV02.

    This one simply adds a little bit more dialogue and reply options to Aerie. The next step, some time in the week when I have a bit more time, will be to try and add interjections and get her to have conversations with other NPC's in the party when you talk to her.
  • CoutelierCoutelier Member Posts: 1,282
    BG2CameoV03.

    In this update, when you talk to Aerie for the second time in her tent, you can now offer to do an errand for her to make her start to trust you more, enough that she might tell you her backstory (and maybe give you something else as well).

    I’ve also successfully added an interjection from Imoen when you first run into Aerie, and another chat between Im and Aer inside the tent. So now, all I really want to do with Aerie is add more chats with other NPC’s. Quayle, obviously. I’ve had some ideas of what to write for him, and Branwen, Dorn, Minsc and Dynaheir… but it’s always open to ideas and suggestions.

    After that, I’ll be pretty much done with Aerie, so I’ll start thinking about other possible cameos as well. I’ve had a couple of ideas for encountering Mazzy and her still alive old adventuring party. But again, suggestions are welcome.
  • CoutelierCoutelier Member Posts: 1,282
    BG2CameoV04.

    You now get a small amount of XP for completing Aerie’s ‘quest’.

    In her tent, Aerie now has chats with Imoen, Neera, Rasaad, Minsc, Dorn, Branwen, Dynaheir, and of course, Quayle.

    As I said before, there’s not a whole lot more I really planned to do with Aerie. Tidy up a bit, more replies for the PC, and more chats with other NPC’s if I think of them (as mentioned before, other ideas and suggestions are welcome too).

    So now, I’ll start thinking more about others. I said I’d had some ideas about Mazzy and her party, and I think it would only be fair to add Anomen somewhere (since he is a romance, and now, thanks to this, the only one who has no presence at all in BG1).

  • ShinShin Member Posts: 2,345
    Mazzy sounds like a good call, and a great mod idea over all. I'll definitely try it/them on my next BG1 playthrough.
  • kulyokkulyok Member Posts: 33
    Here's something I think you might be interested in:
    http://forums.gibberlings3.net/index.php?showtopic=25528

    Jastey's putting together a BG1 version of Romantic Encounters. It includes innocent talks, flirting, as well as some more adult content and dirty talk, both with new characters and already existing ones.

    Since Aerie's a love interest from BG1, her cameo may fit into BG1 RE project nicely, if you're interested. We've got an active workroom and quite a few contributions by five authors already.
  • CoutelierCoutelier Member Posts: 1,282
    kulyok said:

    Here's something I think you might be interested in:
    http://forums.gibberlings3.net/index.php?showtopic=25528

    Jastey's putting together a BG1 version of Romantic Encounters. It includes innocent talks, flirting, as well as some more adult content and dirty talk, both with new characters and already existing ones.

    Since Aerie's a love interest from BG1, her cameo may fit into BG1 RE project nicely, if you're interested. We've got an active workroom and quite a few contributions by five authors already.

    I don't know; I think trying to flirt too much with Aerie at this point would just scare her off entirely. After fetching her boots for her, maybe she wouldn't mind you saying nice things and her saying nice firendly things back, but anymore and I think she'd immediately suspect you're one of those men (or indeed women) that Uncle Quayle warned her about. Others might have other ideas though.

    I should get back to it though. Got to properly plan out Mazzy, then see if I can actually make my plans work.

  • ShinShin Member Posts: 2,345
    Having tried this now I'll just say (again) great idea and a very nice little mod. Good characterization of Aerie, Imoen and by reference also of Quayle. How are the plans for a Mazzy mod coming along?
  • booinyoureyesbooinyoureyes Member Posts: 6,164
    I like this idea, but you know what would be just as cool? BG1 npcs in BG2 for cameos

    The Darkest Day mod added some BG1 NPCs as characters, and did a decent job. I don't necessarily want them to be joinable, but some cameos would be cool. I thought what they added was really appropriate and well done in terms of where the npcs were found/what they were doing.

    This is what TDD added
    1. Xzar and Monty: Big loss. Such cool characters. You can take an alternate path in the Harpers quest with that mod :) Very appropriate cameo
    2. Kivan was in Imnesvale, which is obviously perfect for him
    3. Shar-Teel was in the jail at the Government District... also extremely appropriate!
    4. Yeslick: in the Temple District of course
    5. Kagain was in the Gate District... this is the one I disagree with. I'd prefer if he opened up a new shop in Waukeen's Promenade. If you ask him to join he should say things like "Are you some kind of moron? Why would I wanna walk around the countryside lookin fer trouble? Theres no money in it" And he would give you no discount... ever

    What I'd like to see
    1. Branwen either in the Temple District as one other mod did or hunting for Umar in the hills
    2. A different ending for Ajantis, who also had a mod. That one was a bit overly-complicated though. I'd prefer a more elegant solution to preventing his death (Keldorn uses True Sight). I'd also him actually as some sort of trainer in the Order of the Radiant Heart (he WAS Keldorn's squire after all) Maybe he is an old rival/friend/hated enemy of Anomen when they were both training as knights. Maybe if Anomen goes chaotic he will hunt him down and challenge him to a duel?
    3. Xan: the impossible to please critic in the Five Flagons Inn. "your performance is... so hollow" during a dramatic scene "you're all doomed"
    4. Alora should be her awesome cheerful self, pickpocketing witless merchants in Trademeet and getting the law off her tale by cheering them up with her bubbly self
    5. Eldoth and Skie
    I like the idea of former prissy noblegirl Skie now living as a random bar made at the Copper Coronet. She would act like she doesn't recognize you at first for two reasons:
    a. she's embarassed that she is no longer so high status after running off to have a fling with her bad boy Colin Farrel with magic missiles and
    b. she's on the run from Eldoth after stealing his loot after a heist. They had a big fight, he was his usual dastardly self, and she took off. But later she hears that eldoth is in Amn looking for her, and hires you to take him out.
    Meanwhile Eldoth finds you and asks you for help tracking her down and perhaps killing her for betraying you. When they both meet however (whichever route you take) they both decide that this was a ll a silly misunderstanding and they fall in "love again" while charname facepalms himself and Minsc comments on how Boo thinks they make such a cute couple.
  • CoutelierCoutelier Member Posts: 1,282
    Shin said:

    Having tried this now I'll just say (again) great idea and a very nice little mod. Good characterization of Aerie, Imoen and by reference also of Quayle. How are the plans for a Mazzy mod coming along?

    Well, part of what spurred me was the chance of introducing some characters ahead of time. But then BG2:EE was announced sooner than I expected, so I'm afraid I put my plans on hold. I may get back to it... here's a spoiler in case I do:

    I was going to place Mazzy and her old adventuring party near or in one of the dungeons. Most likely Firewine, and maybe they could have been persuaded to help out by clearing out some of the Kobolds in that area.
  • ShinShin Member Posts: 2,345
    @Coutelier Not a bad idea. Mazzy would certainly make what is imo otherwise one of the worst places in BG1 a lot more interesting.
  • booinyoureyesbooinyoureyes Member Posts: 6,164
    Coutelier said:

    Shin said:

    Having tried this now I'll just say (again) great idea and a very nice little mod. Good characterization of Aerie, Imoen and by reference also of Quayle. How are the plans for a Mazzy mod coming along?

    Well, part of what spurred me was the chance of introducing some characters ahead of time. But then BG2:EE was announced sooner than I expected, so I'm afraid I put my plans on hold. I may get back to it... here's a spoiler in case I do:

    I was going to place Mazzy and her old adventuring party near or in one of the dungeons. Most likely Firewine, and maybe they could have been persuaded to help out by clearing out some of the Kobolds in that area.
    I second what @Shin said. This is a wonderful idea. Especially if you expand on Patrick. A cool scene would be some jerk knight mocking her for not being a "true" paladin
Sign In or Register to comment.