Jump to content

Search the Community

Showing results for tags 'flirts'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General Discussion
    • G3 News and Announcements
    • Infinity Engine Modding News
    • General Mod Discussion
    • Fan Fiction
    • Noobermeet
  • Tools & Resources
    • DLTCEP
    • GemRB
    • The Gibberlings Three Debugging Suite for BG2
    • IESDP Updates and Info
    • Modding How-Tos and Tutorials
    • Modding Q&A
    • Multi-Install Tool
    • Widescreen Mod
  • Released Projects
    • Miscellaneous Released Mods
    • Ajantis
    • Alternatives
    • Amber
    • Angelo
    • Auren Aseph
    • BG1 NPC Project
    • Baldur's Gate Mini Quests and Encounters
    • The Beaurin Legacy
    • BG2 Fixpack - General Discussion
    • Calin
    • The Calling
    • Cirerrek's AI Scripts
    • Coran's Friendship Mod
    • Crossmod Banter Pack
    • Divine Remix
    • Enhanced Edition Trilogy
    • Evandra
    • Full Plate & Packing Steel
    • Garrick's Infatuation
    • Gavin
    • The Gibberlings Three Anniversary Mod
    • Icewind Dale Mod Roundup
    • Icewind Dale in Baldur's Gate II
    • Item Randomiser
    • Item Revisions
    • IWD2 NPC Project
    • IWDification
    • Keeping Yoshimo
    • Kivan and Deheriana Companions for BG2
    • Level One NPCs
    • Mur'Neth
    • NPC Kitpack
    • NPC Strongholds
    • NPC Tweak for BG2
    • Oversight
    • Romantic Encounters (BG)
    • Romantic Encounters (BG2)
    • Sarah
    • Song and Silence
    • Spell Revisions
    • Sword and Fist
    • Sword Coast Stratagems
    • Tweaks Anthology Forum
    • Tyris Flare
    • Vynd
    • Wheels of Prophecy
  • Unreleased Projects
    • Aklon
    • Baldur's Gate: Shadow Hand TC
    • Aran Whitehand
    • Delainy
    • IWD Tutu
    • Kit Revisions
    • Inactive Projects
  • NWN2 Modding
    • Miscellaneous Released Mods
    • Romance Pack for the NWN2 OC-MotB
  • Mod Workrooms

Categories

  • NPCs
  • Quests and Others
  • Tweaks & Fixes
  • Items/Kits/Spells
  • Portrait Packs
  • Mini Mods
  • Tools
  • In Progress

Categories

  • Fixes
  • Items
  • Kits
  • NPCs
  • Quests
  • Spells
  • Tweaks
  • Other
  • Tools

Product Groups

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Discord


Website URL


Skype


AIM


MSN


ICQ


Yahoo


Jabber


Location


Interests


Mods Worked On

Found 9 results

  1. berelinde

    Garrick's Infatuation

    Version b20140925

    63,007 downloads

    Garrick's Infatuation for BGEE, EasyTutu, BG Tutu, or BGT allows Gorion's foster daughter to explore a closer acquaintance with her very first biographer through a series of 25 conversations. The flirtation is available to females of any race, class, or alignment and it begins shortly after Garrick is recruited. The mod is intended for the Baldur's Gate segment of the saga and is fully compatible with the BG1 NPC Project, though the latter is not required. Learn more about the mod View the Readme Visit the Forum
  2. "Garrick's Infatuation" allows Gorion's foster daughter to explore a closer acquaintance with her very first biographer through a series of 25 conversations. The flirtation is available to females of any race, class, or alignment and it begins shortly after Garrick is recruited. The mod is intended for the Baldur's Gate segment of the saga and is fully compatible with the BG1 NPC Project, though the latter is not required. At present, the EasyTutu, BG Tutu, or the BGT conversion is required. This mod is designed to work with Baldur's Gate Tutu, EasyTutu, or Baldur's Gate Trilogy, with or without the Tales of the Sword Coast expansion. It should be fully compatible with all other WeiDU mods. The mod is currently available for Windows. Once beta-testing is concluded, Mac OSX and Linux versions will become available. Q: Are there romance requirements? A: There is a gender requirement. Garrick prefers ladies. Q: Do any of the dialogues require specific conditions (at an inn, etc.)? A: No. Q: Can I play it on vanilla Baldur's Gate? A: Not yet. Eventually, that feature will be implemented, but the timers will need to change. Q: No music? A: It's a beta. Version 1 will have music. Q: Are there romance conflicts with any other NPCs? A: No. It's flirtation, nothing more. Q: Who should I talk to about bugs? A: Er... an exterminator? Use the bug-report thread. Domi wrote the mod, but berelinde is maintaining it. Q: I have other questions. A: That isn't a question. But if there's something you want to know, ask here.
  3. The Gibberlings Three Garrick's Infatuation for EasyTutu, BG Tutu, or BGT allows Gorion's foster daughter to explore a closer acquaintance with her very first biographer through a series of 25 conversations. The flirtation is available to females of any race, class, or alignment and it begins shortly after Garrick is recruited. The mod is intended for the Baldur's Gate segment of the saga and is fully compatible with the BG1 NPC Project, though the latter is not required. Mod by Domi Relevant links: Download the Beta Visit the Forum View the Project Page
  4. The Gibberlings Three The Neverwinter Nights II OC Romance Pack updates to v4! Celebrate the Gibberlings Three's 2011 Anniversary with your friends from Neverwinter and Mulsantir. The Romance Pack for the Neverwinter Nights 2 Official Campaign and Mask of the Betrayer Expansion adds romance and flirts to your NWN2 game. It offers flirts for Bishop, Casavir, Elanee, Neeshka, Sand, Gann, and Safiya; full romantic tracks for Bishop and Casavir; and a Castle Wall scene for Bishop and Neeshka. It also features romantic epilogues for the four OC characters in the Mask of the Betrayer Expansion (MotB) portion of the game. New for version 4: Flirt with Sand! Happy Birthday, Gibberlings3! Relevant links: Download the NWN2 OC Romance Pack Visit the Forum View the Project Page
  5. The Gibberlings Three The Neverwinter Nights II OC Romance Pack updates to v4! Celebrate the Gibberlings Three's 2011 Anniversary with your friends from Neverwinter and Mulsantir. The Romance Pack for the Neverwinter Nights 2 Official Campaign and Mask of the Betrayer Expansion adds romance and flirts to your NWN2 game. It offers flirts for Bishop, Casavir, Elanee, Neeshka, Sand, Gann, and Safiya; full romantic tracks for Bishop and Casavir; and a Castle Wall scene for Bishop and Neeshka. It also features romantic epilogues for the four OC characters in the Mask of the Betrayer Expansion (MotB) portion of the game. New for version 4: Flirt with Sand! Happy Birthday, Gibberlings3! Relevant links: Download the NWN2 OC Romance Pack Visit the Forum View the Project Page
  6. No time to type much; will fill in more details later. Short course: Timers are set for FTs, LTs, NPC-Initiated flirts. Staggering content so they don't bunch up is relatively simple... until you give players choices on how long the timers work. Unsolvable problem in the long run, as starting/stopping flirts, starting/stopping romances, and talks that require specific conditions to fire will all throw them off, and the engine itelf seems to like to randomly wait much longer than the actual established timer (observation only, not proven). But, a partial solution, coded and installed in Aran's latest pre-Beta stuff: set everything up using OUTER_SET depending on the player choice. in c-aran.baf CODE /* ROMANCE TALKS */ /* * Romance Match and Initiation (He is not picky...) * One new thing here - Aran is ok if a friend switches genders - * but not so much on the romance side. So, we add a blocking variable * to make sure nothing progresses while that silly Girdle is in place. * He can have some special lines to play during the FT sequence on that. */ IF Global("c-aranmatch","GLOBAL",0) // Not evaluated Gender(Player1,FEMALE) // Player1 is female InParty(Myself) // Aran is here !StateCheck(Myself,CD_STATE_NOTVALID) // Aran is ok !StateCheck(Player1,CD_STATE_NOTVALID) // Player1 is ok !HasItemEquiped("belt05",Player1) // Girdle of sex change not on Player1 THEN RESPONSE #100 // 100% of the time SetGlobal("c-aranmatch","GLOBAL",1) // Matched SetGlobal("c-aranrom","GLOBAL",1) // Aran is interested END /* Berelinde: Please consider staggering your flirts and your dialogues. Flirts are nice when they break up long stretches between LTs. * cmorgan: OK, great idea - let's make it really complicated, and base the first timer on the player's choice of overall speed of progress... */ IF Global("c-aranmatch","GLOBAL",1) // Matched Global("c-aransetupromtimers","GLOBAL",0) // Not evaluated GlobalGT("c-aranfriendbg2","GLOBAL",5) // FT 3 has played Gender(Player1,FEMALE) // Player1 is female InParty(Myself) // Aran is here !StateCheck(Myself,CD_STATE_NOTVALID) // Aran is ok !StateCheck(Player1,CD_STATE_NOTVALID) // Player1 is ok !HasItemEquiped("belt05",Player1) // Girdle of sex change not on Player1 THEN RESPONSE #100 SetGlobal("c-aransetupromtimers","GLOBAL",1) RealSetGlobalTimer("c-aranromtimer","GLOBAL",%choseninitialrom%) // Minimum Real Time until first LT RealSetGlobalTimer("c-aranflirttimer","GLOBAL",%choseninitialflirt%) // Tee up flirt timer END in setup-aranw.tp2 CODE OUTER_FOR( aran_timer_choice = 0; ~%aran_timer_choice%~ STRING_COMPARE_REGEXP ~^[12]$~; )BEGIN PRINT ~Set Talk and Flirt Timers [1] Install Default Timers [2] Customize Timers Please type 1 or 2 and press enter.~ ACTION_READLN aran_timer_choice END // of O_F ACTION_IF ("aran_timer_choice" = 1) THEN BEGIN /* .ids patching with player choice: set talk timers */ APPEND ~gtimes.ids~ ~3600 ARAN_FTT~ APPEND ~gtimes.ids~ ~3600 ARAN_LTT~ APPEND ~gtimes.ids~ ~3600 ARAN_FLIRT~ PRINT ~Speed: minimum 1 hour real time between dialogues (Default, recommended)~ OUTER_SET choseninitialrom = 2400 PRINT ~Initial Lovetalk offset by 40 minutes~ OUTER_SET choseninitialflirt = 1200 PRINT ~Initial NPC-Initiated Flirt offset by 20 minutes~ PRINT ~So if you are in a romance with him and never stop the romance, after the lovetalks start (after friendship talk 3), the timer sequence will start hourly FT, NPC Flirt 20 minutes later, and RT 20 minutes after that, then 20 minutes later the next FT fires. Please note that the timers are not exact, and variations within the game may mean bursts of activity followed by long waits.~ END ACTION_IF ("aran_timer_choice" = 2) THEN BEGIN PRINT ~Select Aran's Talk timers:~ PRINT ~Please choose one of the following: [1] approximately 1 hour real time minimum between friendship dialogues (recommended, default) [2] approximately 15 minutes real time minimum between friendship dialogues [3] approximately 30 minutes real time minimum between friendship dialogues [4] approximately 45 minutes real time minimum between friendship dialogues [5] approximately 1 hour 30 minutes real time minimum friendship between dialogues [6] approximately 2 hours real time minimum between friendshipdialogues~ OUTER_SPRINT ~friendshiptimer~ ~placeholder_value~ OUTER_WHILE (!(IS_AN_INT ~friendshiptimer~) OR (~friendshiptimer~ > 0x6) OR (~friendshiptimer~ < 0x1)) BEGIN PRINT ~Please type 1, 2, 3, 4, 5 or 6 and press enter.~ ACTION_READLN ~friendshiptimer~ END ACTION_IF ("friendshiptimer" = 1) THEN BEGIN APPEND ~gtimes.ids~ ~3600 ARAN_FTT~ APPEND ~gtimes.ids~ ~3600 ARAN_LTT~ APPEND ~gtimes.ids~ ~3600 ARAN_FLIRT~ PRINT ~Speed: minimum 1 hour real time between dialogues (Default, recommended)~ OUTER_SET choseninitialrom = 2400 PRINT ~Initial Lovetalk offset by 40 minutes~ OUTER_SET choseninitialflirt = 1200 PRINT ~Initial NPC-Initiated Flirt offset by 20 minutes~ PRINT ~So if you are in a romance with him and never stop the romance, after the lovetalks start (after friendship talk 3), the timer sequence will start hourly FT, NPC Flirt 20 minutes later, and RT 20 minutes after that, then 20 minutes later the next FT fires. Please note that the timers are not exact, and variations within the game may mean bursts of activity followed by long waits.~ END ACTION_IF ("friendshiptimer" = 2) THEN BEGIN APPEND ~gtimes.ids~ ~900 ARAN_FTT~ APPEND ~gtimes.ids~ ~900 ARAN_LTT~ APPEND ~gtimes.ids~ ~900 ARAN_FLIRT~ PRINT ~Speed: minimum 15 minutes real time between dialogues~ OUTER_SET choseninitialrom = 600 PRINT ~Initial Lovetalk offset by 10 minutes~ OUTER_SET choseninitialflirt = 300 PRINT ~Initial NPC-Initiated Flirt offset by 5 minutes~ PRINT ~So if you are in a romance with him and never stop the romance, after the lovetalks start (after friendship talk 3), the timer sequence will start 15 minute FT, NPC-initiated Flirt 5 minutes later, and RT 5 minutes after that, then 5 minutes later the next FT. Please note that the timers are not exact, and variations within the game may mean bursts of activity followed by long waits... especially when you run out of timered content!~ END ACTION_IF ("friendshiptimer" = 3) THEN BEGIN APPEND ~gtimes.ids~ ~1800 ARAN_FTT~ APPEND ~gtimes.ids~ ~1800 ARAN_LTT~ APPEND ~gtimes.ids~ ~1800 ARAN_FLIRT~ PRINT ~Speed: minimum 30 minutes real time between dialogues~ OUTER_SET choseninitialrom = 1200 PRINT ~Initial Lovetalk offset by 20 minutes~ OUTER_SET choseninitialflirt = 600 PRINT ~Initial NPC-Initiated Flirt offset by 10 minutes~ PRINT ~So if you are in a romance with him and never stop the romance, after the lovetalks start (after friendship talk 3), the timer sequence will start 30 minute FT, NPC-initiated Flirt 10 minutes later, and RT 10 minutes after that, then 10 minutes later the next FT. Please note that the timers are not exact, and variations within the game may mean bursts of activity followed by long waits... especially when you run out of timered content!~ END ACTION_IF ("friendshiptimer" = 4) THEN BEGIN APPEND ~gtimes.ids~ ~2700 ARAN_FTT~ APPEND ~gtimes.ids~ ~2700 ARAN_LTT~ APPEND ~gtimes.ids~ ~2700 ARAN_FLIRT~ PRINT ~Speed: minimum 45 minutes real time between dialogues~ OUTER_SET choseninitialrom = 1800 PRINT ~Initial Lovetalk offset by 30 minutes~ OUTER_SET choseninitialflirt = 900 PRINT ~Initial NPC-Initiated Flirt offset by 15 minutes~ PRINT ~So if you are in a romance with him and never stop the romance, after the lovetalks start (after friendship talk 3), the timer sequence will start 45 minute FT, NPC-initiated Flirt 15 minutes later, and RT 15 minutes after that, then 15 minutes later the next FT. Please note that the timers are not exact, and variations within the game may mean bursts of activity followed by long waits... especially when you run out of timered content!~ END ACTION_IF ("friendshiptimer" = 5) THEN BEGIN APPEND ~gtimes.ids~ ~5400 ARAN_FTT~ APPEND ~gtimes.ids~ ~5400 ARAN_LTT~ APPEND ~gtimes.ids~ ~5400 ARAN_FLIRT~ PRINT ~Speed: minimum 1 hour 30 minutes real time between dialogues~ OUTER_SET choseninitialrom = 3600 PRINT ~Initial Lovetalk offset by 60 minutes~ OUTER_SET choseninitialflirt = 1800 PRINT ~Initial NPC-Initiated Flirt offset by 30 minutes~ PRINT ~So if you are in a romance with him and never stop the romance, after the lovetalks start (after friendship talk 3), the timer sequence will start 90 minute FT, NPC-initiated Flirt 30 minutes later, and RT 30 minutes after that, then 30 minutes later the next FT. Please note that the timers are not exact, and variations within the game may mean bursts of activity followed by long waits... especially when you run out of timered content!~ END ACTION_IF ("friendshiptimer" = 6) THEN BEGIN APPEND ~gtimes.ids~ ~7200 ARAN_FTT~ APPEND ~gtimes.ids~ ~7200 ARAN_LTT~ APPEND ~gtimes.ids~ ~7200 ARAN_FLIRT~ PRINT ~Speed: minimum 2 hours real time between dialogues~ OUTER_SET choseninitialrom = 4800 PRINT ~Initial Lovetalk offset by 80 minutes~ OUTER_SET choseninitialflirt = 2400 PRINT ~Initial NPC-Initiated Flirt offset by 40 minutes~ PRINT ~So if you are in a romance with him and never stop the romance, after the lovetalks start (after friendship talk 3), the timer sequence will start 120 minute FT, NPC-initiated Flirt 40 minutes later, and RT 40 minutes after that, then 40 minutes later the next FT. Please note that the timers are not exact, and variations within the game may mean bursts of activity followed by long waits... especially when you run out of timered content!~ END END and when compiling the two scripts that have blocks like this in the .tp2, farther down, use CODE COMPILE EVALUATE_BUFFER ~aranw/baf/c-aran.baf~ // override script ACTION_IF FILE_EXISTS_IN_GAME ~ar6111.are~ THEN BEGIN // ToB dialog file PRINT ~Installing ToB scripts...~ COMPILE EVALUATE_BUFFER ~aranw/baf/c-arn25.baf~ // joined ToB script The result of timer choices are hidden in the PRINT stuff, detailed out for anyone who looks at the .DEBUG file.
  7. cmorgan

    Underdark PID and Flirts

    WARNING. This thread contains swearing, poor depiction of prurient actions, reference to anatomy, and even a bawdy song. Do not read this thread if any of that offends you. You can also skip it is derivitave writing, poor spelling, and a high number of typos offends you, but I would much rather have you help me root those things out than skip the whole thing Underdark. A Pain in a Modder's Bottom. The entire Chaper 5 sequence is hard to work out. A player could be right there at very low level having raced for Imoen in Spellhold, they could be at very high level and 99% finished a romance (or two), and there is the whole "hey, how do I account for the Drow appearance being on, off, or ignored?". Then there is the lovely idea that some players will want to flirt and talk, but most normal denizens of Faerun see Underdark as a place of hell on earth, so to speak. Drow and Koa Toa and other strange beasties are the stuff of nightmares, and this is their home. Not many people say "Hey, all this danger and rot around us is kind of exciting - let's get it on!", unless they are about to become Slasher Victim #217, Second Class, Screaming, Death By Chainsaw. Or perhaps Girl Who Shows Bra And Therefore Dies In A Fountain Of Blood™. There are lots of ways of dealing with this, from NPCs that are specifically Underdark - Only, to the Flirtpack's single response "Not now honey, that mushroom over there is looking at us and trying to figure out how to kill us", to Edwin's Flirts which embrace the Drow appearence and script it with CODE + ~G("EdwinRomanceActive", 2) G("PlayerLooksLikeDrow", 1) Global("ERDrow", "LOCALS", 0)~ + ~Ask Edwin how he likes being a Drow.~ DO ~SetGlobal("ERDrow", "LOCALS", 1) ActionOverride(Player1, SetDialog("ERPlayer"))~ + Drow1 So, let's play around with Aran and his reactions to Underdark. On the one hand, if it is a female <CHARNAME> and she says "come here, big boy", he is going to want to grab her and make lots of little <CHARNAME>s, or at least try to. On the other hand, she currently looks like a Drow. And like any decent Faerunian human, the only good Drow in existence is drizzt, and most folks think he is just a myth, or a lie - without a disguse, he can't walk more than a few paces without being accosted - at least in most of the early books. And if <CHARNAME> is a dude, the flirts are left out, and things become easier - a disguise is a disguise. But there needs to be some kind of reaction because when your best bud looks like the enemy and is in enemy uniform, it is dark, smoky, and spooky, lit occasionally by phosphorus glow, etc... can you say "friendly fire"? So, a stab at building some interesting stuff into the Underdark. By now, most of the dialog code should be easy to read, after all the walkthroughs - nothing particularly new or interesting code-wise here, other than playing with some LOCALS and an occasional fun jaunt into hijack-states-land. We can save the Friendship Talks specific to Underdark for another day. here is the second or third pass at the PID (including Underdark-specific flirts).
  8. There are a few states not fully fleshed out left over in the PID "I am in an inn and have decided to try to talk to ARAN" - sample code: /* female in an inn, cyclical */ IF ~Gender(Player1,FEMALE) RealGlobalTimerExpired("c-aranflirttimer","GLOBAL") Global("c-innflirts","GLOBAL",0) OR(12) AreaCheck("AR0313") AreaCheck("AR0406") AreaCheck("AR0509") AreaCheck("AR0522") AreaCheck("AR0704") AreaCheck("AR1105") AreaCheck("AR1602") AreaCheck("AR2010") AreaCheck("AR0709") AreaCheck("AR0513") AreaCheck("AR0021") AreaCheck("AR1602")~ THEN BEGIN a762 SAY ~[PC] (The musicians have struck up a lively dance tune, and Aran is sitting at the bar.)~ ++ ~[PC] (You go over to him.)~ DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-innflirts","GLOBAL",1) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",500)~ + a796 ++ ~[PC] (You decide you have had enough him for right now, and carry on about your business.)~ EXIT ++ ~[PC] (You take the opportunity to check through his belongings.)~ DO ~SetGlobal("c-araninncheck","GLOBAL",1)~ + c_aran_lettercheck_f ++ ~[PC] (You sit quietly, observing him, but not making eye contact.)~ DO ~IncrementGlobal("c-pcstalker","LOCALS",1)~ EXIT ++ ~[PC] (You flirt shamelessly with several patrons, occasionally glancing over at him.)~ DO ~IncrementGlobal("c-pcstalker","LOCALS",1)~ EXIT END /* Inn #1 */ IF ~~ a796 SAY ~[ARAN] Aye now, you are a sight for sore eyes.~ ++ ~[PC] So you like this dress? I was getting a bit tired of wearing the same functional clothing all the time.~ + a797 ++ ~[PC] I should have known you would be here. I suppose you have already chosen your evening's entertainment?~ + a799 ++ ~[PC] Dance with me.~ + a807 ++ ~[PC] Like I care what you think.~ + a811 ++ ~[PC] (Walk over and grab his chin, kissing him solidly on the lips).~ + a805 + ~RandomNum(2,1)~ + ~[PC] I want a bath. Do you know where they are?~ + a1808 + ~RandomNum(2,2)~ + ~[PC] Teach me to scribe something new.~ + a2057 + ~RandomNum(2,1)~ + ~[PC] I want a bath, and some time to relax. Come on, show me where they are around here.~ + c_2_aran_bathflirt + ~RandomNum(2,2)~ + ~[PC] Teach me to scribe something new.~ + a2057 END There are three of these, and they cycle with a timer, so the first PID attempt in an inn gets one and then the timer blocks it and regular PID happens. This gives the PC a shot at partying a bit or not, as she or he sees fit. They cycle - every thrid time, a set of two random things become available - either the "teach me to scribe" or In this case, it is the female "teach me to scribe something new" state that gets the full treatment. So, the good news is that if a player wants to repeat the same kinds of interaction, they get 3 different cycle sets, each with a random pair of entries, each with several possible outcomes - by the time we follow this all the way, you could replay the same state a very large number of times and get different interactions each time. This is actually an exercise in futility from a design standpoint. The reason folks stick with the "Looping Lovetalk" or branches that have A > [123] > B [123] > C EXIT is that creating this level of detail is hugely difficult and time consuming, can obscure the plot/point of the discussion, and can delay completion of the mod for a long, long time. In this case, since I am having fun pushing all sorts of boundaries and playing with ideas, I can go ahead and do it - but I don't have to have a huge storyline or plot develop. In a Companion mod, the whole story is the interaction between the PC and his/her companion. Outside events have some impact, of course. This week's work, untested, and un-typo hunted, and un-spellchecked. The main alpha file has had the first bathing scene integrated and state-labeled, installed, and decompiled for recheck - but not tested. WARNING. NC-17. I don't think anything posted here beats daytime soap operas, but just in case, you have been warned. 5 states are pulled ( /* Inn Flirts: [PC] "Teach me to scribe something new" - Starts with PC and Aran on chair, PC on his lap */ // state hidden in Adult land - not written yet: c_take_it_off // state hidden in Adult land: bath1 // state hidden in Adult land: bath2 // state hidden in Adult land: - not written yet: possible encounter set by: Global("c-aranREinn","GLOBAL",1) // state hidden in Adult land: - not written yet: possible encounter set by: Global("c-aranREmoon","GLOBAL",1) IF ~~ a2057 /* Idea from Berelinde's Gavin BG2 - check for armor. Must make sure it can't e accessed from the PC responses where PC is showing off a dress, so needs some tidying before integration. */ SAY ~[ARAN] Aye, there be a bit more to it than first appears, eh? Here, let me help. Now, take th' quill, like this... dip it here. No, not that far down. We want naught in th' way o' splatter, just a fine line's worth. Good. Now, let me take your hand... an' then it be a circular motion, like this...~ = ~[ARAN] (His breath whispers warmth on your neck as he leans against your back, guiding your hand over the rough parchment.)~ IF ~OR(20) HasItemEquiped("chan01","c-aran") HasItemEquiped("chan02","c-aran") HasItemEquiped("chan03","c-aran") HasItemEquiped("chan04","c-aran") HasItemEquiped("chan05","c-aran") HasItemEquiped("chan06","c-aran") HasItemEquiped("chan07","c-aran") HasItemEquiped("chan08","c-aran") HasItemEquiped("chan09","c-aran") HasItemEquiped("chan10","c-aran") HasItemEquiped("chan11","c-aran") HasItemEquiped("chan12","c-aran") HasItemEquiped("chan13","c-aran") HasItemEquiped("chan14","c-aran") HasItemEquiped("chan15","c-aran") HasItemEquiped("chan16","c-aran") HasItemEquiped("chan17","c-aran") HasItemEquiped("chan18","c-aran") HasItemEquiped("dwchan01","c-aran") HasItemEquiped("dwchan02","c-aran") RandomNum(3,1)~ THEN GOTO c_1_aran_armor_noaccess_thigh IF ~OR(20) HasItemEquiped("chan01","c-aran") HasItemEquiped("chan02","c-aran") HasItemEquiped("chan03","c-aran") HasItemEquiped("chan04","c-aran") HasItemEquiped("chan05","c-aran") HasItemEquiped("chan06","c-aran") HasItemEquiped("chan07","c-aran") HasItemEquiped("chan08","c-aran") HasItemEquiped("chan09","c-aran") HasItemEquiped("chan10","c-aran") HasItemEquiped("chan11","c-aran") HasItemEquiped("chan12","c-aran") HasItemEquiped("chan13","c-aran") HasItemEquiped("chan14","c-aran") HasItemEquiped("chan15","c-aran") HasItemEquiped("chan16","c-aran") HasItemEquiped("chan17","c-aran") HasItemEquiped("chan18","c-aran") HasItemEquiped("dwchan01","c-aran") HasItemEquiped("dwchan02","c-aran") RandomNum(3,2)~ THEN GOTO c_2_aran_armor_noaccess_thigh IF ~OR(20) HasItemEquiped("chan01","c-aran") HasItemEquiped("chan02","c-aran") HasItemEquiped("chan03","c-aran") HasItemEquiped("chan04","c-aran") HasItemEquiped("chan05","c-aran") HasItemEquiped("chan06","c-aran") HasItemEquiped("chan07","c-aran") HasItemEquiped("chan08","c-aran") HasItemEquiped("chan09","c-aran") HasItemEquiped("chan10","c-aran") HasItemEquiped("chan11","c-aran") HasItemEquiped("chan12","c-aran") HasItemEquiped("chan13","c-aran") HasItemEquiped("chan14","c-aran") HasItemEquiped("chan15","c-aran") HasItemEquiped("chan16","c-aran") HasItemEquiped("chan17","c-aran") HasItemEquiped("chan18","c-aran") HasItemEquiped("dwchan01","c-aran") HasItemEquiped("dwchan02","c-aran") RandomNum(3,3)~ THEN GOTO c_3_aran_armor_noaccess_thigh IF ~!HasItemEquiped("chan01","c-aran") !HasItemEquiped("chan02","c-aran") !HasItemEquiped("chan03","c-aran") !HasItemEquiped("chan04","c-aran") !HasItemEquiped("chan05","c-aran") !HasItemEquiped("chan06","c-aran") !HasItemEquiped("chan07","c-aran") !HasItemEquiped("chan08","c-aran") !HasItemEquiped("chan09","c-aran") !HasItemEquiped("chan10","c-aran") !HasItemEquiped("chan11","c-aran") !HasItemEquiped("chan12","c-aran") !HasItemEquiped("chan13","c-aran") !HasItemEquiped("chan14","c-aran") !HasItemEquiped("chan15","c-aran") !HasItemEquiped("chan16","c-aran") !HasItemEquiped("chan17","c-aran") !HasItemEquiped("chan18","c-aran") !HasItemEquiped("dwchan01","c-aran") !HasItemEquiped("dwchan02","c-aran") RandomNum(3,1)~ THEN GOTO c_1_aran_robe_access_thigh IF ~!HasItemEquiped("chan01","c-aran") !HasItemEquiped("chan02","c-aran") !HasItemEquiped("chan03","c-aran") !HasItemEquiped("chan04","c-aran") !HasItemEquiped("chan05","c-aran") !HasItemEquiped("chan06","c-aran") !HasItemEquiped("chan07","c-aran") !HasItemEquiped("chan08","c-aran") !HasItemEquiped("chan09","c-aran") !HasItemEquiped("chan10","c-aran") !HasItemEquiped("chan11","c-aran") !HasItemEquiped("chan12","c-aran") !HasItemEquiped("chan13","c-aran") !HasItemEquiped("chan14","c-aran") !HasItemEquiped("chan15","c-aran") !HasItemEquiped("chan16","c-aran") !HasItemEquiped("chan17","c-aran") !HasItemEquiped("chan18","c-aran") !HasItemEquiped("dwchan01","c-aran") !HasItemEquiped("dwchan02","c-aran") RandomNum(3,2)~ THEN GOTO c_2_aran_robe_access_thigh IF ~!HasItemEquiped("chan01","c-aran") !HasItemEquiped("chan02","c-aran") !HasItemEquiped("chan03","c-aran") !HasItemEquiped("chan04","c-aran") !HasItemEquiped("chan05","c-aran") !HasItemEquiped("chan06","c-aran") !HasItemEquiped("chan07","c-aran") !HasItemEquiped("chan08","c-aran") !HasItemEquiped("chan09","c-aran") !HasItemEquiped("chan10","c-aran") !HasItemEquiped("chan11","c-aran") !HasItemEquiped("chan12","c-aran") !HasItemEquiped("chan13","c-aran") !HasItemEquiped("chan14","c-aran") !HasItemEquiped("chan15","c-aran") !HasItemEquiped("chan16","c-aran") !HasItemEquiped("chan17","c-aran") !HasItemEquiped("chan18","c-aran") !HasItemEquiped("dwchan01","c-aran") !HasItemEquiped("dwchan02","c-aran") RandomNum(3,3)~ THEN GOTO c_3_aran_robe_access_thigh END IF ~~ c_1_aran_robe_access_thigh SAY ~[ARAN] (His other hand seems much more interested in other pursuits, as it gently parts your robe higher than the knee, and begins exploring.)~ ++ ~[PC] (You lean your head back against his shoulder, moving the quill gently across the page as his fingertips trace a copy of your motions on your inner thigh.)~ + c_trace_access ++ ~[PC] (You firmly move his hand to your waist, and hold it there while the quill scratches along the parchment.)~ + c_pc_access_denied ++ ~[PC] Aran. Your hand. Move it or lose it.~ + c_move_it_lose_it ++ ~[PC] (You shift slightly and cover his hand with yours, guiding his motions.)~ + c_pc_access_granted ++ ~[PC] Hey, that tickles... and I think you should stop.~ + c_stop_flirt + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] Aran... I think I would like a tutoring session. Someplace a little more private.~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] Aran... I think I would like a tutoring session. Someplace a little more private.~ + c_pc_arranges_another_meeting END IF ~~ c_2_aran_robe_access_thigh SAY ~[ARAN] (His other hand absently strokes your waist, running idle fingers up and down your hip.)~ ++ ~[PC] (You shift slightly on his lap, your robe parting to reveal most of your leg.)~ + c_trace_access ++ ~[PC] (You firmly move his hand to your waist, and hold it there while the quill scratches along the parchment.)~ + c_pc_access_denied + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] Aran... I think I would like a tutoring session. Someplace a little more private.~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] Aran... I think I would like a tutoring session. Someplace a little more private.~ + c_pc_arranges_another_meeting ++ ~[PC] Aran. Your hand. Move it or lose it.~ + c_move_it_lose_it ++ ~[PC] (You shift slightly and cover his hand with yours, holding his arm close around you in a gentle hug.)~ + c_task_under_hand ++ ~[PC] Hey, that tickles... and I think you should stop.~ + c_stop_flirt END IF ~~ c_3_aran_robe_access_thigh SAY ~[ARAN] (His other hand absently rests gently on your shoulder. By the warmth of his breath you can tell his eyes are not on the page, but very definitely looking down your front...)~ + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] Aran... I think I need a bit of private tutoring.~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] Aran... I think I need a bit of private tutoring.~ + c_pc_arranges_another_meeting ++ ~[PC] (You lean your head back against his shoulder, moving the quill gently across the page and nestling deeper into his lap.)~ + c_shoulder_access ++ ~[PC] (You firmly adjust your robe to preserve modesty, and hold it there while the quill scratches along the parchment.)~ + c_pc_access_denied ++ ~[PC] Aran. Pay attention to the work, not the scenery.~ + c_cough_and_redirect ++ ~[PC] (You shift slightly, and idly rub your hands along the outside of his leg, right below where your legs rest comfortably on him.)~ + c_pc_outside_leg ++ ~[PC] Hey, that tickles... and I think you should stop.~ + c_stop_flirt END IF ~~ c_1_aran_armor_noaccess_thigh SAY ~[ARAN] (His other hand seems much more interested in other pursuits, as it gently begins exploring your thigh. Fortunately or unfortunately, the armor makes this more an exercise in futility on his part, and he begins idly toying with your belt.)~ ++ ~[PC] (You lean your head back against his shoulder, moving the quill gently across the page as his steady hand guides your scribing.)~ + c_cough_and_redirect ++ ~[PC] (You firmly move his free hand to your waist, while the quill scratches along the parchment. You sit comfortably wrapped in his arm.)~ + c_cough_and_redirect ++ ~[PC] Well, that was three minutes of my life wasted.~ + c_stop_flirt + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] You could get that belt off if we were all alone, you know.~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] You could get that belt off if we were all alone, you know.~ + c_pc_arranges_another_meeting + ~OR(3) Class(Player1,CLERIC_ALL) Class(Player1,MAGE_ALL) Class(Player1,SORCERER)~ + ~[PC] You do realize I lied, right? I can scribe very well all by muself.~ + c_this_is_much_better END IF ~~ c_2_aran_armor_noaccess_thigh SAY ~[ARAN] (Your armor protects you from the daring explorations of his other hand, but Aran's persistence pays off. Your belt loosens slightly under his ministrations.)~ ++ ~[PC] (You lean your head back against his shoulder, moving the quill gently across the page as his steady hand guides your scribing.)~ + c_cough_and_redirect ++ ~[PC] (You firmly move his free hand to your waist, while the quill scratches along the parchment. You sit comfortably wrapped in his arm.)~ + c_cough_and_redirect ++ ~[PC] Hey, back off, sellsword. If I wanted my armor loosened, I would have done it myself.~ + c_stop_flirt + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] Aran... I think I would like a tutoring session. Someplace a little more private.~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] Aran... I think I would like a tutoring session. Someplace a little more private.~ + c_pc_arranges_another_meeting + ~OR(3) Class(Player1,CLERIC_ALL) Class(Player1,MAGE_ALL) Class(Player1,SORCERER)~ + ~[PC] You do realize I lied, right? I can scribe very well all by muself.~ + c_this_is_much_better END IF ~~ c_3_aran_armor_noaccess_thigh SAY ~[ARAN] (His free arm sneaks around your waist, holding you tighly. Your armor protects you from the pressure of his grip, but you can feel his intensity as your arm drops to cover his.)~ ++ ~[PC] (You lean your head back against his shoulder, moving the quill gently across the page as his steady hand guides your scribing.)~ + c_cough_and_redirect + ~Global("c-aranbathf1","LOCALS",1) Global("c-aranbathf2","LOCALS",1)~ + ~[PC] Oh, I am smearing the ink. Perhaps we should go get a bath and wash it all off.~ + c_new_nobath + ~!Global("c-aranbathf1","LOCALS",1) Global("c-aranbathf2","LOCALS",1)~ + ~[PC] Oh, I am smearing the ink. Perhaps we should go get a bath and wash it all off.~ + c_new_nobath + ~Global("c-aranbathf1","LOCALS",1) !Global("c-aranbathf2","LOCALS",1)~ + ~[PC] Oh, I am smearing the ink. Perhaps we should go get a bath and wash it all off.~ + // hidden in Adult land: bath2 + ~!Global("c-aranbathf1","LOCALS",1) !Global("c-aranbathf2","LOCALS",1)~ + ~[PC] Oh, I am smearing the ink. Perhaps we should go get a bath and wash it all off.~ + a1808 // hidden in Adult land: bath1 ++ ~[PC] Hey, back off, sellsword. If I wanted my armor loosened, I would have done it myself.~ + c_stop_flirt + ~OR(3) Class(Player1,CLERIC_ALL) Class(Player1,MAGE_ALL) Class(Player1,SORCERER)~ + ~[PC] You do realize I lied, right? I can scribe very well all by muself.~ + c_this_is_much_better + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] This is niice. But I think I want us to have a little more privacy.~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] This is niice. But I think I want us to have a little more privacy.~ + c_pc_arranges_another_meeting END IF ~~ c_new_nobath SAY ~[ARAN] Aye, there is a right fine idea. Come on, I have just th' place...~ = ~[ARAN] (He guides you to your room, trading a few copper coins for a hot washbasin as he passes the innkeeper. A small lantern flares, sending highlights and shadow across the ink smears along your wrist and armor. He pauses amid preparations, looking up with a grin...)~ = ~[ARAN] I guess th' question be, do you want me to help wash this while all that armor be on, or off?~ ++ ~[PC] (The sound of metal hitting the floor echoes in your ears as you undo each lace and belt slowly, savoring his reaction.) Does this answer your question?~ + // hidden in Adult land: c_take_it_off ++ ~[PC] Just wash the ink off of the armor, Aran. No amorous advances, thank you.~ + c_just_business ++ ~[PC] You know, you talk too much, and you take way to many liberties. You should leave. Now.~ + a1963 /* c-aranshutup57 */ ++ ~[PC] Do you ever think about anything but sex?~ + c_am_i_male END IF ~~ c_am_i_male SAY ~[ARAN] Last time I checked, I was male. Does that answer th' question?~ ++ ~[PC] Yes. (The sound of metal hitting the floor echoes in your ears as you undo each lace and belt protecting you slowly, savoring his reaction.)~ + // hidden in Adult land: c_take_it_off ++ ~[PC] Just wash the ink off of the armor, Aran. No amorous advances, thank you.~ + c_just_business ++ ~[PC] You know, you talk too much, and you take way to many liberties. You should leave. Now.~ + IF ~~ a1962 /* c-aranshutup56 */ ++ ~[PC] Last time I checked, I was female. And we ladies appreaciate a more refined approach, rather than having a dog sniff around constantly trying to bed us.~ + c_ok_ok END IF ~~ c_shoulder_access SAY ~[ARAN] (His breath quickens against your skin, and his distraction wavers enough that the line you are drawing together begins to wander.)~ ++ ~[PC] So, do you like what you see?~ + c_cough_and_redirect + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] You could offer me a drink, you kow. In my room. Upstairs. If... if you wanted to.~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] You could offer me a drink, you kow. In my room. Upstairs. If... if you wanted to.~ + c_pc_arranges_another_meeting + ~OR(3) Class(Player1,CLERIC_ALL) Class(Player1,MAGE_ALL) Class(Player1,SORCERER)~ + ~[PC] You do realize I lied, right? I can scribe very well all by muself.~ + c_this_is_much_better ++ ~[PC] Hey, your breath. That tickles... and I think you should stop.~ + c_stop_flirt ++ ~[PC] I was being sarcastic. Keep your eyes on the page. This is not a show put on for your benefit.~ + c_stop_flirt ++ ~[PC] Cut it out. (Drive your fingernails sharply into the back of his hand.)~ + pc_offended_scratch END IF ~~ pc_offended_scratch SAY ~[ARAN] Cyric's Crutch! That blighted well hurt. Hey, are we goin' to work on your scribin', or are you goin' to sit on my lap an' find ways to cause me pain?~ ++ ~[PC] Keep your eyes and your hands where they belong, and I am happy to have a friendly lesson. Next time your eyes wander, I will use a dagger instead of my fingernails.~ + c_cough_and_redirect ++ ~[PC] Sorry, did that hurt? What about this?~ + c_pc_chin_hit + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] I say we cut through all of this silly pretending, and we find out exactly how much pain you can handle. In private.~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] I say we cut through all of this silly pretending, and we find out exactly how much pain you can handle. In private.~ + c_pc_arranges_another_meeting ++ ~[PC] Sorry... that was not quite what I intended to have happen.~ + c_accidents_will_happen ++ ~[PC] Now that is entertaining. Look at the poor little boy, all sullen and crying for his mommy. What is the matter, can't you take a little scratch?~ + c_that_is_dangerous END IF ~~ c_pc_chin_hit SAY ~[ARAN] BANE'S BLOOD! I think I bit my lip on that one... warn a lad when you be about to straighten up, eh? Up, off, get up, an' let me get somethin' to stop th' bleedin'.~ ++ ~[PC] It serves you right for being frisky when all I wanted was a friendly lesson.~ + a1933 /* c-aranshutup27 */ ++ ~[PC] Oh, you poor poor thing... let me kiss it better.~ + c_thank_you ++ ~[PC] Oh, you poor poor thing... let me make it all better. A good slap across the face will distract you, like this...~ + c_bugger_off_that_hurt ++ ~[PC] (Giggle helplessly as he stands up, rolling you onto the floor.) + c_help_up ++ ~[PC] Sorry... that was not quite what I intended to have happen.~ + c_accidents_will_happen END IF ~~ c_pc_outside_leg SAY ~[ARAN] Hey, now, this be a mite bit public, an' you seem to be inetrested in things o' a more personal nature.~ ++ ~[PC] No one can see anything, Aran. Just relax and help me concentrate on the task at hand.~ c_task_under_hand ++ ~[PC] You know, the way your muscles jump under my fingertips... it feels good.~ + c_a_little_too_good ++ ~[PC] I... hey,. friends can just cuddle, right? I mean.... there is no harm in just working together. I mean, petting your leg like this is no more than petting a dog, right?~ + c_whatever_you_say_girl + ~OR(3) Class(Player1,CLERIC_ALL) Class(Player1,MAGE_ALL) Class(Player1,SORCERER)~ + ~[PC] You do realize I lied, right? I can scribe very well all by muself.~ + c_this_is_much_better ++ ~[PC] Hey. I do what I want, but you can't. I didn't say you could touch me like that. Cut it out. (Drive your fingernails sharply into the back of his hand.)~ + pc_offended_scratch ++ ~[PC] Sorry. I will stop.~ + c_now_i_didnt_say_that END IF ~~ c_task_under_hand SAY ~[ARAN] I'd blighted well be able to concentrate better if your hand weren't so warm. Somehow, this be less than relaxin'.~ ++ ~[PC] I... hey, friends can just cuddle, right? I mean.... there is no harm in just working together. I mean, petting your leg like this is no more than petting a dog, right?~ + c_lucky_dog ++ ~[PC] This is good. Well, this far is good, and no more.~ + c_finis_calm ++ ~[PC] I am having trouble concentrating, too. But this is nice.~ + c_finis_calm ++ ~[PC] You could kiss my neck. I wouldn't mind.~ + c_kiss_my_neck ++ ~[PC] I don't want you relaxed. I want you to be confused, bewildered, off-balance, and firmly under my spell.~ + c_mission_accomplished END IF ~~ c_whatever_you_say_girl SAY ~[ARAN] Friends do a mite bit more than that at times, too. But somehow I get th' feelin' this is leadin' down a path you have some doubts on. That be my cue to stop, eh?~ ++ ~[PC] Why are you running away from me? I just am not sure I know what I want.~ + c_that_is_dangerous ++ ~[PC] You are such a coward. you could press the issue, and you might find I was interested in more than just sitting on your lap.~ + c_that_is_dangerous ++ ~[PC] I didn't say you could leave.~ + c_that_is_dangerous ++ ~[PC] You are right. You should stop. I should stop.~ + c_that_is_dangerous ++ ~[PC] Are you still here? Sorry. I was distracted by that handsome young thing over there. Get out of here, quickly, and I might just be able to convince him I am free for the evening.~ + c_that_is_dangerous END IF ~~ c_trace_access SAY ~[ARAN] You feel like velvet, you know. Only a mite bit warmer, an' just a little bit like th' feelin' when a lightnin' bolt arcs close by. Excitin'. I can hear your breath movin' faster, too.~ ++ ~[PC] It is a pity we have so many clothes in the way, or this could feel so much better...~ + c_pc_forward ++ ~[PC] Stop talking. You are making me blush. You know how awkward I feel about all this. You could just touch me, and not talk about it.~ + c_this_is_much_better ++ ~[PC] You know, the way your muscles jump under my fingertips... it feels good.~ + c_a_little_too_good ++ ~[PC] Forward is good. Well, this far forward, and no more.~ + c_finis_calm ++ ~[PC] Hey. I do what I want when I want, but you can't. I didn't say you could touch me like that. Cut it out. (Drive your fingernails sharply into the back of his hand.)~ + pc_offended_scratch END IF ~~ c_kiss_my_neck SAY ~[ARAN] I think I just did. An' there... yep, I did it again. I can feel your pulse race a mite bit, too. Or am I wrong?~ ++ ~[PC] Shut up and kiss me.~ + c_mam_yes_mam ++ ~[PC] Completely wrong. My pulse is not racing, and I am definitely not kissing your cheek right now. And the whole caressing your hands as they run along my body... not happening.~ + c_never_had_so_much_fun ++ ~[PC] Actually, it is kind of just... icky. Stop.~ + c_move_it_lose_it ++ ~[PC] The speeding up of my breath has more to do with me getting angry than excited. You are frustrating me, in so many ways. I think I have had enough of this.~ + c_that_is_dangerous + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] Aran... do you want to go somewhere? Somewhere private?~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] Aran... do you want to go somewhere? Somewhere private?~ + c_pc_arranges_another_meeting END IF ~~ c_help_up SAY ~[ARAN] Here, have a hand up, eh? All that gigglin' makes th' pain a bit more worthwhile. Your eyes sparkle when you laugh, you know. You want somethin' from the bar?~ ++ ~[PC] Actually, I was hoping you would take me in your arms, lead me back over into that dark corner over there, and we could practice some scribing with our lips.~ + c_go_makeout ++ ~[PC] I think I have had enough excitement for now. You go on, though. And put something cold on that lip, before it swells!~ + c_good_idea_there ++ ~[PC] No, I want you to be confused, bewildered, off-balance, and firmly under my spell.~ + c_mission_accomplished ++ ~[PC] It might be nice if someone were to dance with me.~ + c_go_makeout END IF ~~ c_pc_access_granted SAY ~[ARAN] Mayhap I be a bit forward, but you smell right nice, all cuddlin' up wi' me. This feels good.~ ++ ~[PC] Yes, it does. It is a pity we have so many clothes in the way, or this could feel so much better...~ + c_pc_forward + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] Aran... do you want to go somewhere? Somewhere private?~ + c_pc_arranges_meeting + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] Aran... do you want to go somewhere? Somewhere private?~ + c_pc_arranges_another_meeting ++ ~[PC] It might be nice if someone were to take a little walk with me, and perhaps warm my lips up a little. They feels so cold right now.~ + c_go_makeout ++ ~[PC] You know, the way your muscles jump under my fingertips... it feels good.~ + c_a_little_too_good ++ ~[PC] Forward is good. Well, this far forward, and no more.~ + c_finis_calm END IF ~~ c_pc_arranges_meeting SAY ~[ARAN] Now what be your meanin', here? What did you want?~ ++ ~[PC] I said I wanted a private tutoring sesion. I would love to play with your quill.~ + c_pickup_line ++ ~[PC] I was hoping you would ask me to your room to see your sketches.~ c_pickup_line ++ ~[PC] I asked for help scribing, someplace where I could feel more comfortable. ~ + c_not_pickup_line ++ ~[PC] Err... I said I wanted a private tutoring session in penmanship?~ + c_not_pickup_line ++ ~[PC] I asked you to teach me, not make eyes at me, or try to touch me, or anything else. But on second thought, I don't know if being alone with you is such a good idea. You might get the wrong idea. I should say, you will definitely get the wrong idea.~ + c_move_it_lose_it END IF ~~ c_pc_arranges_another_meeting SAY ~[ARAN] I know that look. You get that hungry look in your eyes right before... err... well, I know that look. If you be meanin' what I think you be meanin', I am ready an' willin'.~ ++ ~[PC] I said I wanted a private tutoring sesion. I would love to play with your quill.~ + c_pickup_line ++ ~[PC] I was hoping you would ask me to your room to see your sketches.~ c_pickup_line ++ ~[PC] I was asking for help scribing, someplace where I could feel more comfortable. ~ + c_not_pickup_line ++ ~[PC] Err... I said I wanted a private tutoring session in penmanship? What look are you talking about?~ + c_not_pickup_line ++ ~[PC] I asked you to teach me, not make eyes at me, or try to touch me, or anything else. But on second thought, I don't know if being alone with you is such a good idea. You might get the wrong idea. I should say, you will definitely get the wrong idea.~ + c_move_it_lose_it END c_pickup_line SAY ~[ARAN] Now that be a pickup line if I ever did here one. I am only happy to oblige. Just tell me when an' where, an' I will do my best to please you.~ ++ ~[PC] Ooooh, goody. Meet me at the gates of hell, when it freezes solid.~ + c_that_is_dangerous ++ ~[PC] I could happen to leave my door unlatched tonight...~ + DO ~SetGlobal("c-aranREinn","GLOBAL",1)~ + c_go_makeout ++ ~[PC] I was thinking of taking a walk outside this evening, in the moonlight. Perhaps we could walk together.~ + DO ~SetGlobal("c-aranREmoon","GLOBAL",1)~ + c_go_makeout ++ ~[PC] Right now. Right here. I can't wait.~ + c_pda_not_good ++ ~[PC] Oh, great. I forgot I was supposed to... I can't do this. I am sorry. I was about to make an excuse, but you deserve the truth. I just can't do this with you.~ + c_that_is_dangerous END IF ~~ c_not_pickup_line SAY ~[ARAN] Now, I must o' heard somethin' wrong, or jumped to some conclusion or other, on account o' I thought you were givin' me th' go ahead to get right personal wi' you.~ ++ ~[PC] You heard wrong.~ + c_that_is_dangerous ++ ~[PC] You heard correctly, but I changed my mind.~ + c_that_is_dangerous ++ ~[PC] Look, I am not good at all of this. I just don't know what I want.~ + c_that_is_dangerous ++ ~[PC] Aran, I want romance, not someopne who tris to jump me every chance he gets.~ + c_that_is_dangerous ++ ~[PC] You should stop listening to my words, and start watching my reactions. I think I lowered my head to one side, smiled, and batted my eyelashes at you. And my hand resting on your arm should tell you I am saying one thing and meaning another.~ + c_set_up_encounter END IF ~~ c_now_i_didnt_say_that SAY ~[ARAN] Now, I didn't say that. I like it just fine. I was just wonderin' what your intentions be, an' all.~ ++ ~[PC] Why, are you committed to a 'no touching before I am married' rule?~ ++ ~[PC] I don't intend anything. I am just sitting here with my good friend Aran. Friends do that, don't they?~ + c_whatever_you_say_girl ++ ~[PC] I intend you to be confused, bewildered, off-balance, and firmly under my spell.~ + c_mission_accomplished END IF ~~ c_pda_not_good SAY ~[ARAN] I think th' public doesn't need that kind o' entertainment. But we can be upstairs in two seconds flat, an' by th' gods I will carry you if you slow down or falter one bit.~ IF ~~ THEN DO ~SetGlobal("c-aranREinn","GLOBAL",1)~ EXIT END IF ~~ c_that_is_dangerous SAY ~[ARAN] You know, you have some troubles wi' th' whole male an' female thing, I think. Gods know I do, too. But wi' you... if I make a mistake, in word or behavior, I don't rightly know if you will be fine wi' it, or if you will just smash me like a blighted eggshell. You don't realize just how powerful you are. Or how dangerous to my whole soul. You surely confuse me.~ = ~[ARAN] I think I needs best be gettin' a good drink. Or a solid splash o' ice-cold water. Or both. I will see you later, <CHARNAME>.~ IF ~~ THEN EXIT END IF ~~ c_good_idea_there SAY ~[ARAN] You havbe a right fine idea, there. Mayhap a bit o' somethin' from th' bar will ease my sufferin'!~ IF ~~ THEN EXIT END IF ~~ c_just_business SAY ~[ARAN] Grumbar's Clay Fist, I have never had som much trouble readin' when it be business an' when it be pleasure. You got me thinkin' all sorts o' things, an' I can't rightly get my head on straight. Sorry about that. Just business, I get it. Mayhap someday I will figure you out. But I'm not rightly goin' to hold my breath on that one.~ IF ~~ THEN EXIT END IF ~~ c_stop_flirt SAY ~[ARAN] Right. Hey, you be a mite bit heavy on my lap, an' mayhap I need a bit more to drink. Why don't I go get somethin' nice for both o' us, an' you keep practicin' here? I'll go get us somethin'.~ IF ~~ THEN EXIT END IF ~~ c_ok_ok SAY ~[ARAN] Shar's Kiss... well, I be right sorry I said anythin'. Here, let me help wi' some o' this washin' an' then I will clear out right quick.~ = ~[ARAN] There. All cleaned up, as much as can be done. No harm, no foul. Sorry I misread you. I'll head back downstairs.~ END IF ~~ c_this_is_much_better SAY ~[ARAN] Aye, I do know. But where be th' fun in that. Workin' together, my chin on your shoulder, now that be a fine way to scribe.~ IF ~~ THEN GOTO c_finis_calm END IF ~~ c_pc_access_denied SAY ~[ARAN] Mayhap I be a bit too forward at times. Sorry. This does feel nice, though.~ IF ~~ THEN GOTO c_finis_calm END IF ~~ c_move_it_lose_it SAY ~[ARAN] Ma'am, yes ma'am! Sorry, I done read you wrong again. I'll just concentrate on helpin' you scribe. ~ IF ~~ THEN GOTO c_finis_calm END IF ~~ c_mission_accomplished SAY ~[ARAN] Well, m'Lady, mission accomplished. You can add happy, interested, aroused, an' thoroughly uncomfortable to that list if you want, too. But I'd best be helpin' you wi' scribin', on account o' we might be attractin' a few looks here an' there.~ IF ~~ THEN GOTO c_finis_calm END IF ~~ c_lucky_dog SAY ~[ARAN] An' here I thought my wayward charm was workin' its magic, an' sparkin' wi' you. Serves me right. But I do say I'm right fine wi' this. I'd consider myself on hells of a lucky dog if you were just to sit wi' me like this for a bit.~ IF ~~ THEN GOTO c_finis_calm END IF ~~ c_finis_calm SAY ~[ARAN] (You work together for a time, his strong hands guiding yours over copywork again and again, shaping and moving words and figures, until at last the ink is spent.)~ IF ~~ THEN EXIT END IF ~~ c_accidents_will_happen SAY ~[ARAN] Accidents do happen, they do. Right now, though, I think I might be a bit better off if you practice a bit. An' me, I... well, I think I needs best be gettin' a good drink. Or a solid splash o' ice-cold water. Or both.~ IF ~~ THEN EXIT END IF ~~ c_thank_you SAY ~[ARAN] Well, thank you right kindly. It were a mite bit small for so large a healin' touch, but I do appreciate it. I think I needs best be gettin' a good drink, or mayhap a bit o' cold water to slow th' swellin'. Hey, no gigglin'!~ IF ~~ THEN EXIT END IF ~~ c_go_makeout SAY ~[ARAN] It would be rude not to oblige, m'lady. I think I can assist you wi' that.~ IF ~~ THEN EXIT END IF ~~ c_never_had_so_much_fun SAY ~[ARAN] I never did have so much fun doin' absolutely nothin'. Just be careful, eh? On account o' you are completely intoxicatin'.~ IF ~~ THEN EXIT END IF ~~ c_bugger_off_that_hurt SAY ~[ARAN] Shar's Spite an' Spit, you do like harmin' a lad, don't you. Fine. I got better things to be doin' than this.~ IF ~~ THEN DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobal("c-aranflirtstop","GLOBAL",1) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c_cough_and_redirect SAY ~[ARAN] *cough* Oh, now, what did I be talkin' about? Right, I do remember. That line was just fine. Now you need to just practice a bit. An' me, I... well, I think I needs best be gettin' a good drink. Or a solid splash o' ice-cold water. Or both.~ IF ~~ THEN EXIT END The good news is this is fun. The bad news is this level of nested detail is bloody well killing me - I need to actively seek ways of rewrapping things into more linear dialog, or the mod will be finished in 2050. I think there si a compromise way of doing some of this, by creating some 'filter states' using CHAIN and variables to make things that are similar in nature pass through without running down every last permutation directly. Like the swordfight materials, I think the 'make-out session" and RE-style things can be safely manipulated this way.
  9. Ah, the Flirtpack - feel the love. In my opinion, a really good addition to your BG2 game, if you are pursuing an in-game romance. From a roleplaying perspective, why does the player have to initiate everything? If the attraction is mutual, why wouldn't the NPC in question try a little to let you know that you might just be a candidate for the position of That Special Someone? Completely useless for powergamers and folks who want to play quests without the distractions of additional banter. Also not the best addition for folks who want to keep to the "early teen years" rating (though the 10 - 14 year olds I teach know more about hooking up than one would ever want to believe). But Aran is designed as a Companion Mod, so he should probably flirt a little bit. Or alot, as the case may be. WARNING: Soap Opera Style Innuendo And Language Present. If You Have To Ask If You Are Old Enough To Read This, You Aren't. So, let's hit source material for code. We are going to work with traified code, where the language that the player sees had been replaced with translation references, so that we are not unduly influenced by his text. Traified code sets up this: SAY ~Oh, you big strong man, you~ = SAY @142 For a full rundown on traification (creation of translator files from hardcoded .d files so that different languages can be used by the same code) see [ url= get the weidu docs anchor and insert here ]this documentation[ /url ] JCompton's FlirtPack, setup-npcflirt.tp2 EXTEND_TOP ~aerie.bcs~ ~npcflirt\aeriesoainitflirt.baf~ JCompton's FlirtPack, aeriesoainitflirt.baf IF Global("FWAerieFlirtsStart","LOCALS",0) GlobalGT("Lovetalk","LOCALS",8) OR(2) Global("AerieRomanceActive","GLOBAL",2) Global("AerieRomanceActive","GLOBAL",1) THEN RESPONSE #100 SetGlobal("FWAerieFlirtsStart","LOCALS",1) RealSetGlobalTimer("FWAerieFlirt","LOCALS",300) END IF RealGlobalTimerExpired("FWAerieFlirt","LOCALS") Global("FWAerieStartFlirtSOA","GLOBAL",0) G("FWDisableFlirts",0) InParty(Myself) !StateCheck(Player1,STATE_SLEEPING) G("SleptAerie",0) !Global("LoveTalk","LOCALS",19) !Global("LoveTalk","LOCALS",27) OR(2) Global("AerieRomanceActive","GLOBAL",2) Global("AerieRomanceActive","GLOBAL",1) See(Player1) CombatCounter(0) !See([ENEMY]) !Range([NEUTRAL],10) !AreaCheck("AR2100") !AreaCheck("AR2101") !AreaCheck("AR2102") !AreaCheck("AR2200") !AreaCheck("AR2201") !AreaCheck("AR2202") !AreaCheck("AR2203") !AreaCheck("AR2204") !AreaCheck("AR2205") !AreaCheck("AR2206") !AreaCheck("AR2207") !AreaCheck("AR2208") !AreaCheck("AR2209") !AreaCheck("AR2210") !AreaCheck("AR2400") !AreaCheck("AR2401") !AreaCheck("AR2402") THEN RESPONSE #100 SetGlobal("FWAerieStartFlirtSOA","GLOBAL",1) StartDialogueNoSet(Player1) Wait(1) END IF RealGlobalTimerExpired("FWAerieFlirt","LOCALS") Global("FWAerieStartFlirtSOA","GLOBAL",1) THEN RESPONSE #100 SetGlobal("FWAerieStartFlirtSOA","GLOBAL",0) RealSetGlobalTimer("FWAerieFlirt","LOCALS",2700) END IF RealGlobalTimerExpired("FWAerieFlirt","LOCALS") !CombatCounter(0) THEN RESPONSE #100 RealSetGlobalTimer("FWAerieFlirt","LOCALS",150) END So what is he doing here? In a general sense, he is setting up Aerie's script aerie.bcs with a set of commands that will cause the equivalent of a "PID" or "Force-Talk" at prearranged times. He has a few things that have become as close to canonical in mod authoring as can be had within such a disparate group of rugged individualists: In the first block, he checks for a potential or active Aerie romance, and sets a timer for progress. Notice it also doesn't start until the 4th lovetalk, so the player isn't tackled by Nympomaniac Aerie before they have gotten to know eachother a bit... In the second block, AreaCheck screening out of any places where flirting would be really silly: PC: "Heya, oh Drow-Disguised Aran... you look hot tonight" ARAN:"Sune's Sultry Sandals, girl, you want to blow our cover? Eh... well... didn't mean no... shouldn't o' used "blow" an' "cover", in th' same sentence. Damn your bright eyes, stop laughin' like that, you will call in th' entire Underdark!" Same block, G("FWDisableFlirts",0) checked as a screening variable so that if a player finds the flirts not to their liking they can shut them off. A snippet of the related .d file JCompton's FlirtPack, aeriesoaflirt.d // Active=1 initiated flirts APPEND AERIEJ IF ~Global("FWDisableFlirts","GLOBAL",0) Global("FWAerieStartFlirtSOA","GLOBAL",1) See(Player1) !StateCheck(Player1,STATE_SLEEPING) CombatCounter(0) Global("AerieRomanceActive","GLOBAL",1) !AreaCheck("AR2100") !AreaCheck("AR2101") !AreaCheck("AR2102") !AreaCheck("AR2200") !AreaCheck("AR2201") !AreaCheck("AR2202") !AreaCheck("AR2203") !AreaCheck("AR2204") !AreaCheck("AR2205") !AreaCheck("AR2206") !AreaCheck("AR2207") !AreaCheck("AR2208") !AreaCheck("AR2209") !AreaCheck("AR2210") !AreaCheck("AR2400") !AreaCheck("AR2401") !AreaCheck("AR2402")~ THEN BEGIN aerieinitflirtbase1 SAY @0 IF ~~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aeriethanks IF ~RandomNum(10,1)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aerieshuffle IF ~RandomNum(10,2)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aeriestandclose IF ~RandomNum(10,3)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aerieeyeing IF ~RandomNum(10,4)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aerieshoulder IF ~RandomNum(10,5)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aeriecircus IF ~RandomNum(10,6)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aeriesonice IF ~RandomNum(10,7)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aerielistening IF ~RandomNum(10,8)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aerienowonder IF ~RandomNum(10,9) AreaType(OUTDOOR)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aeriepointstars IF ~RandomNum(10,10) ReputationGT(Player1,15)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aerienice2people IF ~RandomNum(10,10) ReputationLT(Player1,8)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO aeriemean2people IF ~HPLT(Player1,15)~ THEN DO ~IncrementGlobal("FWAerieRandFlirt","LOCALS",1)~ GOTO lowhp1 END IF ~~ aerienice2people SAY @590 IF ~~ EXIT END IF ~~ aeriemean2people SAY @591 = @592 IF ~~ EXIT END IF ~~ lowhp1 SAY @589 IF ~~ THEN DO ~ReallyForceSpell(PLAYER1,CLERIC_CURE_MEDIUM_WOUNDS)~ EXIT END IF ~~ aeriethanks SAY @586 IF ~~ THEN EXIT END IF ~~ aeriepointstars SAY @585 IF ~~ EXIT END IF ~~ THEN BEGIN aerielistening SAY @400 = @401 IF ~~ THEN EXIT END IF ~~ THEN BEGIN aerienowonder SAY @402 = @403 IF ~~ THEN EXIT END and a little later on, ones created for the player to initiate: // PC-initiated flirts: Active=1 IF ~Global("FWDisableFlirts","GLOBAL",0) IsGabber(Player1) CombatCounter(0) GlobalGT("Lovetalk","LOCALS",8) !Global("LoveTalk","LOCALS",19) !Global("LoveTalk","LOCALS",27) Global("AerieRomanceActive","GLOBAL",1) !AreaCheck("AR2100") !AreaCheck("AR2101") !AreaCheck("AR2102") !AreaCheck("AR2200") !AreaCheck("AR2201") !AreaCheck("AR2202") !AreaCheck("AR2203") !AreaCheck("AR2204") !AreaCheck("AR2205") !AreaCheck("AR2206") !AreaCheck("AR2207") !AreaCheck("AR2208") !AreaCheck("AR2209") !AreaCheck("AR2210") !AreaCheck("AR2400") !AreaCheck("AR2401") !AreaCheck("AR2402")~ THEN BEGIN aerieflirtbase1 SAY @18 = @20 IF ~RandomNum(4,1)~ THEN REPLY @19 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO prettyaerie1 IF ~RandomNum(4,2)~ THEN REPLY @19 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO prettyaerie1 IF ~RandomNum(4,3)~ THEN REPLY @19 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO prettyaerie2 IF ~RandomNum(4,4)~ THEN REPLY @19 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO prettyaerie3 IF ~RandomNum(4,1)~ THEN REPLY @25 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO nuzzle1 IF ~RandomNum(4,2)~ THEN REPLY @25 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO nuzzle1 IF ~RandomNum(4,3)~ THEN REPLY @25 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO nuzzle2 IF ~RandomNum(4,4)~ THEN REPLY @25 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO nuzzle2 IF ~RandomNum(4,1)~ THEN REPLY @501 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO hug1 IF ~RandomNum(4,2)~ THEN REPLY @501 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO hug2 IF ~RandomNum(4,3)~ THEN REPLY @501 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO hug3 IF ~RandomNum(4,4)~ THEN REPLY @501 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO hug4 IF ~G("FWAerieBadTouch",0)~ THEN REPLY @29 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO badtouch1 IF ~G("FWAerieBadTouch",1)~ THEN REPLY @29 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO badtouch2 IF ~RandomNum(4,1)~ THEN REPLY @33 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO aerierobe1 IF ~RandomNum(4,2)~ THEN REPLY @33 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO aerierobe2 IF ~RandomNum(4,3)~ THEN REPLY @33 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO aerierobe3 IF ~RandomNum(4,4)~ THEN REPLY @33 DO ~IncrementGlobal("FWAerieFlirt","GLOBAL",1)~ GOTO aerierobe1 <<etc., etc.>> These bring in another set of ideas which have become pseudo-canonical in mod authoring: FLIRTS NOT TALKS. Initiation from the NPC = line, silent transition to a new state, response, exit. From the PC = line, player chooses an action, NPC gives response, exit. Otherwise, they are LoveTalks or Banters With Benefits. Use of IncrementGlobal() to track the number of flirts. Other mods, like berelinde's Gavin, Jastey's Ajantis, and a whole raft of other mods that track the PC responses (both positive and negative) have expanded that idea using IncrementGlobal("myGlobal","GLOBAL",1) and IncrementGlobal("myGlobal","GLOBAL",-1) to track player responses as seen from Use of RandomNum(#,#) to generate varied responses to the same basic action/dialog path taken by the player. Use of a "toggle" to turn a specific state on and then off again via script. NOTE: The Flirt Pack uses BioWare style toggles, standard for several years of i.e. modding, setting them active and then inactive via script. Modern usage is usually the safer "toggle on in script, toggle off and set timer in dialog". There are positives and negatives for both ways of doing this, but the current "industry standard" says that the best way to ensure that everything you have done in your own mod works correctly is to use dialog to close the variable as mauch as possible. So why don't we just do exactly what JCompton did, copying the code, and swapping in new values? I mean, why mess with success? Well, basically, that is what we are doing. But we can't just crib the code wholesale; for one thing, the package was coded before every NPC and their brother had PIDs. Look carefully at the player initiated flirts, and you see a conditionally modified PID. With IsGabber(Plaayer1) and then a second condition, JCompton switches in a new equivalent of a PID based on the globals and situation; for another look at this, look up the way Ajantis' PID is set up by Jastey in BG1NPC based on romance/no-romance conditions. So we would have hassles with Aran's PID. For our usage, we will borrow most of these ideas and reformat them into two separate sets of materials, one accessed as part of the PID made as a decision led from a single state, and the NPC-initiated flirts set up as an independent group of talks on thier own modifiable timer. For existing examples of that kind of work, here is an example from berelinde's code development in Gavin (the BG content, as the BG2 content is not yet available): IF InParty(Myself) TimeOfDay(DUSK) AreaType(OUTDOOR) Global("B!GavinDuskFlirt","GLOBAL",0) See(Player1) !See([ENEMY]) CombatCounter(0) !Global("B!DisableFlirts","GLOBAL",1) !Global("B!GavinQuietLover","GLOBAL",1) Global("B!GavinRomanceMatch","GLOBAL",1) !Global("B!GavinWoman","GLOBAL",1) //Gavin won't conduct his romance while he's female !StateCheck("B!GAVIN",CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal("B!GavinDuskFlirt","GLOBAL",1) PlaySong(0) PlaySound("BGAV_SS") StartDialogNoSet(Player1) END firing the related .d, CHAIN IF ~Global("B!GavinDuskFlirt","GLOBAL",1)~ THEN ~B!GAVINJ~ BGavinDuskFlirt ~You know, <CHARNAME>, there was a time, not long ago, when the approach of evening would fill me with dread. I would watch the sun sinking on the horizon, and I would not see the beauty of the sunset, but the mockery of the dawn. There was no promise of a new day, just the cold emptiness of night.~ = ~I never realized how beautiful the sunset could be.~ DO ~SetGlobal("B!GavinDuskFlirt","GLOBAL",2)~ EXIT Here we see some modern flirt components: PlaySong(0) and PlaySound("myWAV") to stop background music and play a romance-related sound cue Highly tailored conditions for some flirts, so that they respond directly to the game situation (TimeOfDay, AreaType, added conditional blockers for waering a Girdle of Gender Change, etc.) Slightly longer flirts, with more speech than action (in this case). Let's use most of these ideas, both Old Skool and Modern. First up, let's set up Aran a good batch of what Friends® character Joey would call "Heya, how YOU doin'" materials. Playing With Ideas First up, an addition of two swap in/swap out lines to ~C-ARANJ~ to be integrated into a few friend talks and love talks, but mostly into the PID: /* Stop or Restart Flirting Duo */ IF ~Global("c-aranflirtstop","GLOBAL",0) OR(2) Global("c-aranromance","GLOBAL",1) Global("c-aranromance","GLOBAL",2)~ THEN REPLY ~[PC] You have to stop coming up to me and flirting. I do not want that behavior to continue.~ + c-aranrestopflirts IF ~Global("c-aranflirtstop","GLOBAL",1) OR(2) Global("c-aranromance","GLOBAL",1) Global("c-aranromance","GLOBAL",2)~ THEN REPLY ~[PC] You do not pay attention to me the way you used to, Aran. I miss your company.~ + c-aranrestartflirts /* Restart Flirting Duo Finished */ IF ~~ c-aranrestopflirts SAY ~[ARAN] Tymora's against me today, I see. She's a fickle one, that one. Right. Business only. Got it.~ IF ~~ THEN DO ~SetGlobal("c-aranflirtstop","GLOBAL",1)~ EXIT END IF ~~ c-aranrestartflirts SAY ~[ARAN] Sune's... well, I'd be a liar if I said I wasn't thinkin' about it. Can't figure if you want me to express appreciation, or not. Women. Naught but trouble, they are.~ IF ~~ THEN DO ~SetGlobal("c-aranflirtstop","GLOBAL",0)~ EXIT END These will allow a player eligible or in the romance to start and stop Aran initiating flirting. we could go back and make these more interesting, but let's move on for now. Instead of relying on lots of conditions and checks in the J-File, we will set up most of the action via script. We set up four blocks in the BCS. We are also going to steal an idea from Lord Ernie and Bri's Tashia, and create a blocking variable that will send things off if PC and Aran are in a fight, using c-aranfight. We also want a bunch of these - some players like flirting, others don't. But on Mega Installs, things tend to run out, or repeat. So let's put a whole bunch of random entries, to spice thins up a little. Unless they are incredibly flirt-happy, no person will see all those in one game; but that is even better, as Aran will suprise folks if someone actually tries him a second time. Reminder - area list for BG2 The first block on C-ARAN.BCS, setting up when Aran feels like he can try his hand at a flirt or two: /* Set Up Flirting After 3 FTs + 3 LTs */ IF Global("c-aranpcflirtstart","GLOBAL",0) GlobalGT("c-aranfriendbg2","GLOBAL",6) GlobalGT("c-aranrombg2","GLOBAL",6) OR(2) Global("c-aranromance","GLOBAL",1) Global("c-aranromance","GLOBAL",2) THEN RESPONSE #100 SetGlobal("c-aranpcflirtstart","GLOBAL",1) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT) END and if things get going pretty well on the flirting front, advance the PDAs... /* Player likes to flirt, 12 interactions by either Aran or PC without shutting him down */ IF Global("c-aranpcflirtstart","GLOBAL",1) OR(2) Global("c-aranromance","GLOBAL",1) Global("c-aranromance","GLOBAL",2) GlobalGT("c-aranflirt","GLOBAL",12) THEN RESPONSE #100 SetGlobal("c-aranpcflirtstart","GLOBAL",2) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT) END Now the first set of flirts, lightweight, unsure of PDAs (Public Display Of Affection) /* Lightweight Flirts */ IF Global("c-aranpcflirtstart","GLOBAL",1) RealGlobalTimerExpired("c-aranflirttimer","GLOBAL") Global("c-aranflirtstop","GLOBAL",0) Global("c-aranfight","GLOBAL",0) OR(2) Global("c-aranromance","GLOBAL",1) Global("c-aranromance","GLOBAL",2) See(Player1) !StateCheck(Player1,CD_STATE_NOTVALID) !StateCheck("c-aran",CD_STATE_NOTVALID) CombatCounter(0) !AreaCheck("AR2100") // Underdark !AreaCheck("AR2101") // Beholder Cave in Underdark !AreaCheck("AR2102") // Adalon's Cave !AreaCheck("AR2200") // Ust Natha !AreaCheck("AR2201") // Temple in Ust Natha !AreaCheck("AR2202") // Inn in Ust Natha 1st Floor !AreaCheck("AR2203") // Inn in Ust Natha; 2nd Floor !AreaCheck("AR2204") // House in Ust Natha !AreaCheck("AR2205") // House in Ust Natha !AreaCheck("AR2206") // Qilue's House in Ust Natha !AreaCheck("AR2207") // Deirex's Tower in Ust Natha !AreaCheck("AR2208") // Jarlaxle's House wherever !AreaCheck("AR2209") // Jae'llat's House !AreaCheck("AR2210") // Deirex's Cave !AreaCheck("AR2400") // Mind Flayers in Underdark !AreaCheck("AR2401") // Cave Between Underdark and Exit from Underdark !AreaCheck("AR2402") // Kuo Toa in Underdark THEN RESPONSE #100 SetGlobal("c-aranlightflirt","GLOBAL",1) PlaySong(0) PlaySound("c-aranlt") StartDialogNoSet(Player1) END and the resulting toggled "light flirts" APPEND ~C-ARANJ~ IF ~Global("c-aranlightflirt","GLOBAL",1)~ THEN BEGIN c-aranflirtswithpc1 SAY ~(Aran's weatherbeaten face turns towards you, and he moves close by your side.)~ /* Random Light Flirts */ IF ~RandomNum(20,1)~ THEN GOTO c-aranflirt1hale IF ~RandomNum(20,2)~ THEN GOTO c-aranflirt1hearty IF ~RandomNum(20,3)~ THEN GOTO c-aranflirt1eyes IF ~RandomNum(20,4)~ THEN GOTO c-aranflirt1face IF ~RandomNum(20,5)~ THEN GOTO c-aranflirt1bust IF ~RandomNum(20,6)~ THEN GOTO c-aranflirt1legs IF ~RandomNum(20,7)~ THEN GOTO c-aranflirt1touch IF ~RandomNum(20,8)~ THEN GOTO c-aranflirt1joke IF ~RandomNum(20,9)~ THEN GOTO c-aranflirt1look IF ~RandomNum(20,10)~ THEN GOTO c-aranflirt1blush IF ~RandomNum(20,11)~ THEN GOTO c-aranflirt1ink IF ~RandomNum(20,12)~ THEN GOTO c-aranflirt1writing IF ~RandomNum(20,13)~ THEN GOTO c-aranflirt1tease1 IF ~RandomNum(20,14)~ THEN GOTO c-aranflirt1tease2 IF ~RandomNum(20,15)~ THEN GOTO c-aranflirt1tease3 IF ~RandomNum(20,16)~ THEN GOTO c-aranflirt1tease4 IF ~RandomNum(20,17)~ THEN GOTO c-aranflirt1tease5 IF ~RandomNum(20,18)~ THEN GOTO c-aranflirt1tease6 IF ~RandomNum(20,19)~ THEN GOTO c-aranflirt1tease7 IF ~RandomNum(20,20)~ THEN GOTO c-aranflirt1tease8 IF ~HPPercentLT(Player1,50)~ THEN GOTO c-aranflirt1heal END IF ~~ c-aranflirt1hale SAY ~[ARAN] (You notice Aran's gaze lingering on you. He grins...) Aye, there are some sights always worth seein', you know.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1hearty SAY ~[ARAN] <CHARNAME>, you are a fine figure o' a woman. Let me know if I can help out some way, eh?~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1eyes SAY ~[ARAN] I'm just checkin'. Your eyes are a damn sight finer than I ever did see.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1face SAY ~[ARAN] (His gaze lingers on your form, until he realizes that you are watching him...)~ = ~[ARAN] (and his eyes snap up to meet yours as his face flushes a dusky red.)~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1bust SAY ~[ARAN] There, now, you got a strap caught... hold on...~ = ~[ARAN] errr... well, perhaps you'd better move it yourself. I don't want to get slapped for my trouble, touchin' you there.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1legs SAY ~[ARAN] Sune's Bounty, you have legs what... hey... was I speakin' out loud? Sorry. Shuttin' up an' gettin' back to business.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1touch SAY ~[ARAN] (He hesitates, then lightly rests his hand on your shoulder for a moment.)~ = ~[ARAN] Aye, I do believe we are doin' passibly well.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1joke1 SAY ~[ARAN] So, what do ye call a male Drow without a girlfriend?~ = ~[ARAN] Homeless!~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1look SAY ~[ARAN] I'd be drinkin' to your beauty, <CHARNAME>. Problem is, there's not enough Rashemi firewine in th' whole of Amn to do you justice.~ = ~[ARAN] I'd sure like to try, though.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1blush SAY ~[ARAN] (His eyes trace your neck, and drop lower...)~ = ~[ARAN] I had somethin' to say, I really did. Just can't remember exactly what right now.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1ink SAY ~[ARAN] A drop o' ink may make a thousand men think. But one look at you, an' I can't think o' writin' anythin' at all.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1writing SAY ~[ARAN] I'm no bard, to be writin' poems. I work mostly balance sheets an' contracts. All I can say is, you are as pretty as an iron tight trade bond, wi' a 30 percent profit.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1tease1 SAY ~[ARAN] Just seein' what a big bad Bhaalspawn looks like when she's got a smudge o' food on her left cheek.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1tease2 SAY ~[ARAN] This is some adventure, eh? Most folks don't get past th' grand adventure o' "hey darlin', what's for dinner?", an yet here we all are wonderin' what's goin' to have *us* for dinner.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1tease3 SAY ~[ARAN] Right now, I bet you are askin' yourself what to do. My advice is get some darned good food, a bottle o' wine, an' perhaps a quick washup... don't mean no offense, but that last critter we took down left a trail o' blood or slime or somethin' right across your left sleeve there.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1tease4 SAY ~[ARAN] I'd pull your hair an' tease you, but I figure you'd take offense. So just pretend to be apprentice-age, an' I just pulled your hair. Wait a sec... Candlekeep, right? Never mind. You probably had your head in some book. Probably never kissed no boy nohow.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1tease5 SAY ~[ARAN] What a blighted great place to be fightin' for our lives at every turn. So do you come here often? How's the food? Know any available converts o' Sune? You thinkin' o' convertin'?~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1tease6 SAY ~[ARAN] You know, I think I hate you. Reasonably good lookin', pretty confident, commandin' all these powers, on your way to th' top... yep. Reminds me I ought to get off my sorry arse an' do some work for a change. Definitely hate you.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1tease7 SAY ~[ARAN] Say, have you seen a woman around here, about *so* high, about *so* for a figure, an' generally more dangerous an' beautiful than your average dragon? Oh, there you are, <CHARNAME>!~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1tease8 SAY ~[ARAN] I need to stand here more often. I look right good bein' your sword an' shield, so to speak.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END /* Low HP hijack of flirts early flirts */ IF ~~ c-aranflirt1heal SAY ~[ARAN] <CHARNAME>, you are hurt. Let me take a look at that, will you?~ IF ~RandomNum(5,1)~ THEN GOTO c-aranflirt1heal1 IF ~RandomNum(5,2)~ THEN GOTO c-aranflirt1heal2 IF ~RandomNum(5,3)~ THEN GOTO c-aranflirt1heal3 IF ~RandomNum(5,4)~ THEN GOTO c-aranflirt1heal4 IF ~RandomNum(5,5)~ THEN GOTO c-aranflirt1heal5 END IF ~~ c-aranflirt1heal1 SAY ~[ARAN] (Aran's rough hands are warm and gentle as he brushes them across your calves, seaching for damage)~ = ~[ARAN] Bloody hells, <CHARNAME>. I'm supposed to be protectin' you from this.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranheavyflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1heal2 SAY ~[ARAN] (Aran hesitates, careful not to touch you as he looks for damage)~ = ~[ARAN] Clangedden's Hammer, you are hurt right proper, you are. I'd massage you a mite, to reduce the stiffness, but not wi' those bruises.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranheavyflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1heal3 SAY ~[ARAN] (Aran's hands move across your shoulders, but his eyes catch yours and he stops suddenly.)~ = ~[ARAN] Selune herself is not so beautiful. Even wi' all this damage, I'm too distracted to think straight. We need to get you healed right quick...~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranheavyflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1heal4 SAY ~[ARAN] (His face draws close to your knees as he kneels and checks for cuts and bruises. His breath is warm and close.)~ = ~[ARAN] I'd be a sight happier inspectin' for damage without all this clothin' in the way... ~ = ~[ARAN] (Aran's face turns scarlet.) *Ahem*. Right, then... hand me that strip o' bandage until we get you some real healin'.~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranheavyflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END IF ~~ c-aranflirt1heal5 SAY ~[ARAN] (Aran's hands move close along your ribcage, his fingers gently but insistently probing.)~ = ~[ARAN] (Suddenly slipping through a torn section of clothing, his hand is close, warm, and intimate on your skin, rough but tender.)~ = ~[ARAN] I'm sorry. Didn't mean to be so forward. Just checkin' what's hurt, an all. I could kiss some o' that better, I think...~ IF ~~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranheavyflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT END Now on to the second set of flirts, more sure of PDAs (Public Display Of Affection). (In another few days, because they need some revision. And some completion.)
×