TolkienAcrossTheWater
Welcome, Guest. Please login or register.
September 10, 2010, 12:46:52 PM

Login with username, password and session length
Search:     Advanced search
Alternatives for BG2. More choices!
4265 Posts in 655 Topics by 78 Members
Latest Member: Poesodlencild
* Home Help Search Login Register
+  TolkienAcrossTheWater
|-+  General Discussion
| |-+  Tutorials, Hints, and Useful Stuff
| | |-+  Bhaal nightmares don't have to spoil the mood
« previous next »
Pages: [1] Go Down Print
Author Topic: Bhaal nightmares don't have to spoil the mood  (Read 278 times)
berelinde
Administrator
Champion
*****
Posts: 2400



WWW
« on: January 09, 2010, 12:46:09 PM »

You've had a long day, fighting the hordes of evil, or maybe just listening to Jaheira and Aerie bicker, and all you want is a little peace and quiet, and maybe a bit of a cuddle with your love interest. Well, the two of you have a nice little chat before you go to bed, and guess what. You have a nightmare. Yeah, you're well accustomed to having nightmares by now, but it really does kill the mood, ya know?

Or maybe you've got several potential love interests along. Don't bother denying it, I've seen your weidu log. Anyway, one of them suggests that it might be a fine night to look at the stars, so you go for a walk, alone. Well, you get back and try to get your head down for a bit of sleep, and next thing you know, another one wants a private word. How's a person supposed to get any rest?

Back when we were doing Romantic Encounters, we ran into a problem where a dream sequence was interfering with Laran's Saradush encounter... or maybe it was the other way around. Anyway, the solution was to simulate rest. This served two purposes. First, it prevented dreams fom spoiling the mood after significant nighttime talks, and second, it prevented rest banters from stacking. I don't remember who wrote this code anymore. I might have, but I doubt it. I wasn't terribly comfortable working with cutcenes, at that point.

I'd advise judicious use of all of this. Sometimes, the window of opportunity to get certain dreams is kind of small, and it isn't unreasonable to think that a character might have a rough night's sleep, even after an evening of torrid passion. Also, some NPCs have rest banters every single night, so if you're overusing these scripts, it might break somebody else's mod, or at least cause a few hiccups.

To cue any of these in game, you'd use your preferred method of starting a cutcene. I usually use
IF ~~ THEN BEGIN StateLabel
SAY @75
IF ~~ THEN DO ~ClearAllActions() StartCutSceneMode() StartCutScene("MyCut")~ EXIT
END
You can easily modify any of these to start a morning conversation by setting a global before the ClearAllActions(), replacing the EndCutSceneMode() with StartDialogueNoSet(Player1), and using the global you set as a trigger for your morning after talk.

b! is my prefix, though, so get your own. Smiley
Logged

berelinde
Administrator
Champion
*****
Posts: 2400



WWW
« Reply #1 on: January 09, 2010, 12:47:40 PM »

Use this one in combination with AreaType(CITY) if the party is staying at an inn.
// b!rest1.baf - INN - cutscene "rest" that runs after a night talk, preventing dreams or other rest banters from kicking in when the usual RestParty() events aren't wanted

IF
    True()
THEN
    RESPONSE #100
        CutSceneId(Player1)
        Rest()
        ActionOverride(Player2,Rest())
        ActionOverride(Player3,Rest())
        ActionOverride(Player4,Rest())
        ActionOverride(Player5,Rest())
        ActionOverride(Player6,Rest())
        StartMovie("RESTINN")
        MoveViewObject(Player1,INSTANT)
        Wait(1)
        EndCutSceneMode()
END
Logged

berelinde
Administrator
Champion
*****
Posts: 2400



WWW
« Reply #2 on: January 09, 2010, 12:49:15 PM »

Use this one in combination with AreaType(OUTDOOR) if the player is camping out.
// b!rest2.baf - CAMP - cutscene "rest" that runs after a night talk, preventing dreams or other rest banters from kicking in when the usual RestParty() events aren't wanted

IF
    True()
THEN
    RESPONSE #100
        CutSceneId(Player1)
        Rest()
        ActionOverride(Player2,Rest())
        ActionOverride(Player3,Rest())
        ActionOverride(Player4,Rest())
        ActionOverride(Player5,Rest())
        ActionOverride(Player6,Rest())
        StartMovie("RESTCAMP")
        MoveViewObject(Player1,INSTANT)
        Wait(1)
        EndCutSceneMode()
END
Logged

berelinde
Administrator
Champion
*****
Posts: 2400



WWW
« Reply #3 on: January 09, 2010, 12:51:47 PM »

Use this one in combination with AreaType(DUNGEON) !AreaCheck("AR4500") for dungeon rest banters.
// b!rest3.baf - DUNGEON - cutscene "rest" that runs after a night talk, preventing dreams or other rest banters from kicking in when the usual RestParty() events aren't wanted

IF
    True()
THEN
    RESPONSE #100
        CutSceneId(Player1)
        Rest()
        ActionOverride(Player2,Rest())
        ActionOverride(Player3,Rest())
        ActionOverride(Player4,Rest())
        ActionOverride(Player5,Rest())
        ActionOverride(Player6,Rest())
        StartMovie("RESTDUNG")
        MoveViewObject(Player1,INSTANT)
        Wait(1)
        EndCutSceneMode()
END
Logged

berelinde
Administrator
Champion
*****
Posts: 2400



WWW
« Reply #4 on: January 09, 2010, 12:55:47 PM »

And finally, this one works in the Pocket Plane. I'm advising caution here because I'm not sure if the Pocket Plane challenges are cued after certain game events, whether they're cued by physically traveling to the Pocket Plane, or whether they're cued by resting once you're there. It would be a real bummer to have to stay an extra night just because a challenge was missed. I *think* the challenges are cued by game events, and that the party is returned to the Pocket Plane to face the challenges after travel is initiated, but I would check, just to be safe.
// b!rest4.baf - POCKET PLANE - cutscene "rest" that runs after a night talk, preventing dreams or other rest banters from kicking in when the usual RestParty() events aren't wanted - be careful with this one!

IF
    True()
THEN
    RESPONSE #100
        CutSceneId(Player1)
        Rest()
        ActionOverride(Player2,Rest())
        ActionOverride(Player3,Rest())
        ActionOverride(Player4,Rest())
        ActionOverride(Player5,Rest())
        ActionOverride(Player6,Rest())
        StartMovie("POCKETZZ")
        MoveViewObject(Player1,INSTANT)
        Wait(1)
        EndCutSceneMode()
END
Logged

cmorgan
Gibberling
Champion
*****
Posts: 569


« Reply #5 on: January 25, 2010, 05:12:59 PM »

in c-aran.d
/* The "PG - 13"  Romantic Encounter Ending 47b, Female Romancing Male, No Nudity Or Graphic Depiction Of Naughty Stuff. Reclassified from 1275a, Classic Romance Tricks, "Fade To Black". */
IF ~~ a356
  SAY ~[ARAN] (Clothes fly into tangles of twisted cloth, and modesty is thrown to the wind and the stars.)~
  IF ~~ THEN DO ~ ClearAllActions() SetGlobal("c-aransexspar","GLOBAL",1) StartCutSceneMode() StartCutScene("ARANSLPO")~ EXIT
END

in ARANSLPO.baf
/* Berelinde's  CAMP cutscene  - "rest" that runs after a night talk, preventing dreams or other rest banters from kicking in when the usual RestParty() events aren't wanted */
IF
    True()
THEN
    RESPONSE #100
        CutSceneId(Player1)
        Rest()
        ActionOverride(Player2,Rest())
        ActionOverride(Player3,Rest())
        ActionOverride(Player4,Rest())
        ActionOverride(Player5,Rest())
        ActionOverride(Player6,Rest())
        StartMovie("RESTCAMP")
        MoveViewObject(Player1,INSTANT)
        Wait(1)
        EndCutSceneMode()
        StartDialogueNoSet("c-aran")
END

back in c-aran.d
/* Sparring: The Morning After Extra-Curicular Activity */

IF ~Global("c-aransexspar","GLOBAL",1)~ THEN BEGIN  a360
  SAY ~[ARAN] Hey, there, sleepyhead... wake up, eh?~
  ++ ~[PC] *yawn* Wh... What...~ DO ~SetGlobal("c-aransexspar","GLOBAL",2)~ + a361

Right?
Logged
berelinde
Administrator
Champion
*****
Posts: 2400



WWW
« Reply #6 on: January 25, 2010, 05:25:36 PM »

Right.
Logged

Pages: [1] Go Up Print 
« previous next »
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!