Jump to content

Search the Community

Showing results for tags 'aran whitehand'.



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
    • Ascension
    • 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
    • Glam's NPC Pack
    • Icewind Dale Mod Roundup
    • Icewind Dale in Baldur's Gate II
    • Imoen 4 Ever
    • 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
    • Wheels of Prophecy
    • Yoshimo's Remorse
  • Unreleased Projects
    • Aklon
    • Balduran's Seatower
    • Baldur's Gate: Shadow Hand TC
    • Aran Whitehand
    • Delainy
    • IWD Tutu
    • Kit Revisions
    • Inactive Projects
  • NWN2 Modding
  • 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 76 results

  1. One fun thing about RP that BG2 blows completely out of the water is equipment choice, level, and relative wealth. Well, OK, so there are many areas where it differs from a P&P AD&D game, but there are lots of mods out there to fix some of this... but for Aran, let's give the players some choice. From a RP perspective, it is silly for a L7 fighter to not have a decent magical weapon, good armor, and perhaps even some supplies. I have never been a mercenary, but I would assume that they are like musicians in one respect - a horn player will eat nothing but crackers for days/weeks/months/years before giving up his horn. After all, how are you going to work your way out of debt if you have a garbage old beat-up single Conn, and everyone else is showing up with pro equipment, well maintained and well rehearsed in its strengths and weaknesses in relation to your playing style? And that is not a matter of life and death, like a good shield or sword might be. So we can mess about with helping Aran have gear. We can even let players decide: Is Aran down-and-out poor, having sold off his best gear? Is Aran treasure-poor but equipped with decent L7 equipment? Is Aran equipped with the best equipment possible, because I am going to dual-class him and take his gear so I can be L33T and overpowered, at least up until I run into the first SCSII-enhanced gibberling? Heck, we can take that one step farther. We can set up those four choices of stats with appropriate proficiencies, and give players choice over what gear he has. That could be modified by what RP option was chosen about his relative equipment wealth; if he is poor and down-and-out, he might have a regular mundane long sword, but if he is average that will be a +1 long sword, and if he has been successful he may be starving but he won't stop gripping the pommel of that +2 long sword until he is forced to. OK, lots of fun - lots of choice; that brings up two additional considerations. Q. Why not give the player full choice of everything? A. I've watched Nythrun, and I'm no Nythrun. Between eric, miloch, and Nythrun, Level1NPCs will eventually allow people to completely respec Aran any way they want. I'm counting on that - why else would I be adding dialog options that check to see if Aran is CLERIC_ALL, or MAGE_ALL, or KIT:HEARTWARDER_OF_SUNE and such? Plus, there is a defining of character that can take place. If Aran is setting up to Dual to Cleric, my take is that he would be messing around with many different cleric-able weapons, but not specializing in any of them. After all, his primary start is sword and board, and he is not driven to excel in one specific focused area. Aran as a Kensai? Have you heard him talk? The level of precision and self-control necessary for Bushido does not seem likely to be something Aran would be able to handle. So from a RP standpoint, keeping within character, I can set up some baselines that fit his personality, confident that eventually folks will get to L1NPC him into that magical Kensai->Mage dual class for their power-gaming run. Q. What about the confusing raft of choices? I just want to play - worse, I have a BWP install, and I don't understand all the custom install templates. Why can't I just install him and be done with it? A. Good point. BWP has solved user input at install through scripting, but it can be a huge job to understand what is going on. So, a 'default' configuration needs to be available, so the user does not have to make tons of choices if they don't want to. OK, so on to implementing this mess of choices. MARCO-ME (ok, ok, pun intended. Macrame. Feeble humor, but that's what I got.) Before we get started on implementing this, though, let's mess around with a fancy thing called DEFINE_PATCH_MACRO. Say I have 4 or 5 .cres (or even more) that have the same stuff done to them, with very minor variations. The regular way is to declare everything out front - 5, or 6 variations on CODE /* Area C-AW01 Entry Point - Bouncer on Promenade */ COPY_EXISTING ~kpgrd01.cre~ ~override/c-aw01ep.cre~ SAY NAME1 ~Manson~ SAY NAME2 ~Manson~ REMOVE_CRE_ITEM ~rndtre02~ WRITE_LONG INITIAL_MEETING (BNOT 0x0) WRITE_LONG DIALOGUE_HOSTILE (BNOT 0x0) WRITE_LONG MORALE (BNOT 0x0) WRITE_LONG HAPPY (BNOT 0x0) WRITE_LONG UNHAPPY_ANNOYED (BNOT 0x0) WRITE_LONG UNHAPPY_SERIOUS (BNOT 0x0) WRITE_LONG UNHAPPY_BREAKING (BNOT 0x0) WRITE_LONG LEADER (BNOT 0x0) WRITE_LONG TIRED (BNOT 0x0) WRITE_LONG BORED (BNOT 0x0) WRITE_LONG BATTLE_CRY1 (BNOT 0x0) WRITE_LONG BATTLE_CRY2 (BNOT 0x0) WRITE_LONG BATTLE_CRY3 (BNOT 0x0) WRITE_LONG BATTLE_CRY4 (BNOT 0x0) WRITE_LONG BATTLE_CRY5 (BNOT 0x0) WRITE_LONG HURT (BNOT 0x0) WRITE_LONG AREA_FOREST (BNOT 0x0) WRITE_LONG AREA_CITY (BNOT 0x0) WRITE_LONG AREA_DUNGEON (BNOT 0x0) WRITE_LONG AREA_DAY (BNOT 0x0) WRITE_LONG AREA_NIGHT (BNOT 0x0) WRITE_LONG SELECT_COMMON1 (BNOT 0x0) WRITE_LONG SELECT_COMMON2 (BNOT 0x0) WRITE_LONG SELECT_COMMON3 (BNOT 0x0) WRITE_LONG SELECT_COMMON4 (BNOT 0x0) WRITE_LONG SELECT_COMMON5 (BNOT 0x0) WRITE_LONG SELECT_COMMON6 (BNOT 0x0) WRITE_LONG SELECT_ACTION1 (BNOT 0x0) WRITE_LONG SELECT_ACTION2 (BNOT 0x0) WRITE_LONG SELECT_ACTION3 (BNOT 0x0) WRITE_LONG SELECT_ACTION4 (BNOT 0x0) WRITE_LONG SELECT_ACTION5 (BNOT 0x0) WRITE_LONG SELECT_ACTION6 (BNOT 0x0) WRITE_LONG SELECT_ACTION7 (BNOT 0x0) WRITE_LONG SELECT_RARE1 (BNOT 0x0) WRITE_LONG SELECT_RARE2 (BNOT 0x0) WRITE_LONG CRITICAL_HIT (BNOT 0x0) WRITE_LONG CRITICAL_MISS (BNOT 0x0) WRITE_LONG TARGET_IMMUNE (BNOT 0x0) WRITE_LONG INVENTORY_FULL (BNOT 0x0) WRITE_LONG PICKED_POCKET (BNOT 0x0) WRITE_LONG HIDDEN_IN_SHADOWS (BNOT 0x0) WRITE_LONG SPELL_DISRUPTED (BNOT 0x0) WRITE_LONG SET_A_TRAP (BNOT 0x0) WRITE_LONG BIO (BNOT 0x0) WRITE_EVALUATED_ASCII 0x34 ~%DEST_RES%~ #8 /* small portrait */ WRITE_ASCII 0x248 ~None~ #8 /* override AI script */ WRITE_ASCII 0x250 ~None~ #8 /* disable class AI script */ WRITE_ASCII 0x258 ~None~ #8 /* disable race AI script */ WRITE_ASCII 0x260 ~None~ #8 /* disable general AI script */ WRITE_ASCII 0x268 ~None~ #8 /* disable default AI script */ WRITE_EVALUATED_ASCII 0x2cc ~%DEST_RES%~ #8 /* dialogue */ WRITE_EVALUATED_ASCII 0x280 ~%DEST_RES%~ #32 /* death variable */ But what if I could work this out with just one line, instead of everything? I can... CODE COPY_EXISTING ~kpgrd01.cre~ ~override/c-aw01ep.cre~ /* Area C-AW01 Entry Point - Bouncer on Promenade */ SAY NAME1 ~Manson~ SAY NAME2 ~Manson~ REMOVE_CRE_ITEM ~rndtre02~ LAUNCH_PATCH_MACRO ~support_cre_cleanup~ ... if I set up what I want to happen in a macro, like this... CODE DEFINE_PATCH_MACRO ~support_cre_cleanup~ BEGIN WRITE_LONG INITIAL_MEETING (BNOT 0x0) WRITE_LONG DIALOGUE_HOSTILE (BNOT 0x0) WRITE_LONG MORALE (BNOT 0x0) WRITE_LONG HAPPY (BNOT 0x0) WRITE_LONG UNHAPPY_ANNOYED (BNOT 0x0) WRITE_LONG UNHAPPY_SERIOUS (BNOT 0x0) WRITE_LONG UNHAPPY_BREAKING (BNOT 0x0) WRITE_LONG LEADER (BNOT 0x0) WRITE_LONG TIRED (BNOT 0x0) WRITE_LONG BORED (BNOT 0x0) WRITE_LONG BATTLE_CRY1 (BNOT 0x0) WRITE_LONG BATTLE_CRY2 (BNOT 0x0) WRITE_LONG BATTLE_CRY3 (BNOT 0x0) WRITE_LONG BATTLE_CRY4 (BNOT 0x0) WRITE_LONG BATTLE_CRY5 (BNOT 0x0) WRITE_LONG HURT (BNOT 0x0) WRITE_LONG AREA_FOREST (BNOT 0x0) WRITE_LONG AREA_CITY (BNOT 0x0) WRITE_LONG AREA_DUNGEON (BNOT 0x0) WRITE_LONG AREA_DAY (BNOT 0x0) WRITE_LONG AREA_NIGHT (BNOT 0x0) WRITE_LONG SELECT_COMMON1 (BNOT 0x0) WRITE_LONG SELECT_COMMON2 (BNOT 0x0) WRITE_LONG SELECT_COMMON3 (BNOT 0x0) WRITE_LONG SELECT_COMMON4 (BNOT 0x0) WRITE_LONG SELECT_COMMON5 (BNOT 0x0) WRITE_LONG SELECT_COMMON6 (BNOT 0x0) WRITE_LONG SELECT_ACTION1 (BNOT 0x0) WRITE_LONG SELECT_ACTION2 (BNOT 0x0) WRITE_LONG SELECT_ACTION3 (BNOT 0x0) WRITE_LONG SELECT_ACTION4 (BNOT 0x0) WRITE_LONG SELECT_ACTION5 (BNOT 0x0) WRITE_LONG SELECT_ACTION6 (BNOT 0x0) WRITE_LONG SELECT_ACTION7 (BNOT 0x0) WRITE_LONG SELECT_RARE1 (BNOT 0x0) WRITE_LONG SELECT_RARE2 (BNOT 0x0) WRITE_LONG CRITICAL_HIT (BNOT 0x0) WRITE_LONG CRITICAL_MISS (BNOT 0x0) WRITE_LONG TARGET_IMMUNE (BNOT 0x0) WRITE_LONG INVENTORY_FULL (BNOT 0x0) WRITE_LONG PICKED_POCKET (BNOT 0x0) WRITE_LONG HIDDEN_IN_SHADOWS (BNOT 0x0) WRITE_LONG SPELL_DISRUPTED (BNOT 0x0) WRITE_LONG SET_A_TRAP (BNOT 0x0) WRITE_LONG BIO (BNOT 0x0) WRITE_EVALUATED_ASCII 0x34 ~%DEST_RES%~ #8 /* small portrait */ WRITE_ASCII 0x248 ~None~ #8 /* override AI script */ WRITE_ASCII 0x250 ~None~ #8 /* disable class AI script */ WRITE_ASCII 0x258 ~None~ #8 /* disable race AI script */ WRITE_ASCII 0x260 ~None~ #8 /* disable general AI script */ WRITE_ASCII 0x268 ~None~ #8 /* disable default AI script */ WRITE_EVALUATED_ASCII 0x2cc ~%DEST_RES%~ #8 /* dialogue */ WRITE_EVALUATED_ASCII 0x280 ~%DEST_RES%~ #32 /* death variable */ END Easy, huh? With this predefined snippet of code I can slap most of the .cre silent, set the portrait and dialog and dv and anything else I want to the name of the .cre, disabled the scripts I don't want - everything in one swoop. DEFINE_PATCH_MACRO basically says "here is a list of things I want to do within a patching operation". Putting it at the top of your mod or component means later on, instead of writing it all out or copying and pasting blocks, you can refer to it buy using LAUNCH_PATCH_MACRO. Now, how can we leverage this a bit more, to make life easier? We have to come up with a way to set some of the choices above to "variables", so we can... duh... vary them. We actually already have, because we have leveraged the bigg's WeiDU variables, %DEST_RES%, which equals the name of the resource being worked on by the code at the moment (See Mike1072's post below for a clearer explanation of this). Let's play with this idea for Aran. First off, we want 4 basic choices, as we have said before - Tinker, Tailor, Soldier, Spy (Dual-Classable stats for Ftr->Mage, Ftr->Cleric, Fighter, Ftr->Thief). We would also like to be able to choose some basic equipment and armor, and perhaps roleplay the level of gear he has. We also need a "yeah, whatever - stop messing about and just install the damned NPC and let's get on with it" option. But we can make it much more far-reaching than that. We can let the user choose some of the input.
  2. WARNING: some mature content might leak in - I'm having trouble screening out what is and isn't, so there may occasionally be RL swearwords or soem stuff. And I print the word "sex". That means it may or may not be cool for young kids in your household. Just a friendly reminder, just in case. The followup posts in this thread go for the "pre-joined, just summoned, but we have to catch up the NPC and Player" ToB initial dialog. I borrowed standard BioWare™ naming conventions, so C-ARN25A. But before that, as I am short on time (and my lunch time is rapidly disappearing), two preliminary constructs to play with. /* Added ToB "PID Started by another NPC" calls. In ToB, I am sticking with the Canonical BioWare™ and a standard "IsGabber/<TOKEN>" block to cover any of the others, but Sarevok might be fun to play with: */ CHAIN ~C-ARN25J~ a2676 ~[ARAN] What do you want, Sarevok?~ == C-ARN25J IF ~Global("c-aransarspar","GLOBAL",0)~ THEN ~[ARAN] I'd be right happy to lend you a dagger. You could slit your gods-blighted throat, an' make us all a great deal happier.~ == C-ARN25J IF ~Global("c-aransarspar","GLOBAL",1)~ THEN ~[ARAN] You have no ability to make children, right? On account o' I think Faerun has blighted well had enough wi' just one o' you.~ == C-ARN25J IF ~Global("c-aransarspar","GLOBAL",2)~ THEN ~[ARAN] I want nothin' out o' you but breathin'. Strike that... I meant to say, I want you to quit breathin'.~ == C-ARN25J IF ~Global("c-aransarspar","GLOBAL",3)~ THEN ~[ARAN] Why don't you die already, an' go take over some nice corner o' th' nine hells, like a good little bastard? Wait... done forgot. You tried that, an' failed.~ == C-ARN25J IF ~Global("c-aransarspar","GLOBAL",4)~ THEN ~[ARAN] You got yourself a strikin' face, there. Hold still, an' I'd be right happy to strike it. Mayhap I might even stop after a bit.~ == C-ARN25J IF ~Global("c-aransarspar","GLOBAL",5)~ THEN ~[ARAN] Look, you stinkin' power-hungry evil bastard, I only put up wi' you on account o' <CHARNAME>'s wishes. Don't sleep too sound, or I might forget what <PRO_HESHE> done said, an' rid us all o' your unnatural presence.~ == SAREV25J IF ~Global("c-aransarspar","GLOBAL",0)~ THEN ~[sAREVOK] You would be more amusing, sellsword, if you were not so weak.~ DO ~SetGlobal("c-aransarspar","GLOBAL",1)~ == SAREV25J IF ~Global("c-aransarspar","GLOBAL",1)~ THEN ~[sAREVOK] The barking of stray dogs does not bother me, sellsword.~ DO ~SetGlobal("c-aransarspar","GLOBAL",2)~ == SAREV25J IF ~Global("c-aransarspar","GLOBAL",2)~ THEN ~[sAREVOK] Ah, the breaking of wind. The sellsword must be talking again.~ DO ~SetGlobal("c-aransarspar","GLOBAL",3)~ == SAREV25J IF ~Global("c-aransarspar","GLOBAL",3)~ THEN ~[sAREVOK] If you wish to act in <CHARNAME>'s best interest, fall on your sword now. Take care not to place it near your head, though, as it might not do enough damage on so hard a rock as that.~ DO ~SetGlobal("c-aransarspar","GLOBAL",4)~ == SAREV25J IF ~Global("c-aransarspar","GLOBAL",4)~ THEN ~[sAREVOK] Ah, the mewling of an infant who realizes he will never be a powerful force to be reckoned with.~ DO ~SetGlobal("c-aransarspar","GLOBAL",5)~ == SAREV25J IF ~Global("c-aransarspar","GLOBAL",5)~ THEN ~[sAREVOK] I merely wished to see if you had become more inventive in your invective. Sadly, you have the wit of a dull dagger.~ EXIT /* OK, then came the little matter of ToB Joining dialog, and how to set things for Romance. For male PCs, this really doesn't matter. Aran can pick up and run with it. But for female PCs, the same problem Berelinde had with going between BG1 and BG2 with Gavin gets into play here. We have three "Fate Spirit" summons for female PC's, allowing declaration of "friend", "lover", and "former lover", setting the romance variable to 0, 2, or 3. But with the in-depth content in play in BG2, it makes it difficult to follow further whether they have had an on-again off-again relationship, or what they have done together. Plus... I might just back that off to two - and let players 'configure' Aran, the way Mass Effect 2 does for non-saved-game-import games. I don't know if this is better served by having someone else have the conversation, but since I can't be sure that it isn't just PC and Aran going it alone, it seems like i am stuck with either a "Dear Diary" talking object approach, where PC talks to herself (which I am not so fond of) and PC directly checking and controlling Aran through dialog. There is another consideration - testing. Basically, after each opportunity to flirt or lovetalk or whatever, I want an easy way of determining the status of the relationship without always having to type in the CLUAConsole (because I sink at typing). And a very common player post is about how to set or change the romance variables, or check on them. So, an opportunity that is more in-depth than the standard PID "breakup, flirt, no flirt" options... something that during joining, rejoining, and regular play the player can use to check on (and perhaps change) the status. If playtesters dislike it, we can always drop it - it does mean that a player can "change history" on the fly the way it is currently coded. That might be useful for testing, but might not be so cool in play. Copies go in pre-joined ToB, Joined ToB, Post-Joined ToB, Post-Joined SoA, and Joined SoA. Initiating links could loop in anywhere, but this probably is best set up as a PID option "status check". Still to integrate: c-aranfirstsex = 1 : self-identified no experience (no need to look for whether or not RE content, etc. is in play - leaves the option for play as a manipulative PC "Oh, I have never done this before" is something that could be said many many ways) idea presented by Autumn Bard - mirrors some of the close tracking of progress in Berelinde's Gavin and Jastey's Ajantis. c-aransex = 0 : no intimacy c-aransex = 1 : kissing c-aransex = 2 : touching + kissing c-aransex = 3 : heavy innuendo touching ("petting") c-aransex = 4 : full physical intimacy So, a dialog for checking ++ ~[PC] Before we go any further, Aran... what do you think our "relationship" is?~ + tob_a2699 */ /* Aran... what do you think our "relationship" is? Resetting for players for ToB, but might double as a recheck via PID on both SoA and ToB. Useful for testing, anyways. */ CHAIN C-ARN25A a2694 ~[ARAN] Well now, let me think a bit... our relationship. Put a lad on th' spot, eh?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) !Global("c-aranfight","GLOBAL",0)~ THEN ~[ARAN] Currently, we be fightin' mad at eachother, or so it seems.~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) !Global("c-silencearan","GLOBAL",0)~ THEN ~[ARAN] You done told me to quit makin' all sorts o' random comments.~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) !Global("c-aanoconflict","GLOBAL",0)~ THEN ~[ARAN] You done told me I should be leavin' Anomen alone an' not fightin' wi' him.~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",0) Global("c-apcdeclaresellsword","GLOBAL",0)~ THEN ~[ARAN] I seem to not have ticked you off to th' point wheree you drop me for good, eh? I think even be friends. Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",0) Global("c-apcdeclaresellsword","GLOBAL",1)~ THEN ~[ARAN] I seem to not have ticked you off to th' point wheree you drop me for good, eh? You done told me no sellsword has th' right to be called "freind". Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",1)~ THEN ~[ARAN] You haven't told me to not try a bit o' sparkin' from time to time. Then again, You done got a huge amount to think about lately. I think we be friends, more's th' pity. Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",2) Global("c-aransex","GLOBAL",0)~ THEN ~[ARAN] We might rightly be called 'involved', I think. I am not sure what you get out o' th' deal, but I'm not rightly complainin'. Mayhap I can coax you into a kiss or two someday. Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",2) Global("c-aransex","GLOBAL",1)~ THEN ~[ARAN] We might rightly be called 'involved', I think. I am not sure what you get out o' th' deal, but I'm not rightly complainin'. Mayhap I can coax you into more than a kiss or two someday. Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",2) Global("c-aransex","GLOBAL",2)~ THEN ~[ARAN] We might rightly be called 'involved', I think. I am not sure what you get out o' th' deal, but I'm not rightly complainin'. Mayhap I can coax you into somethin' more than kissin' an' touchin' someday. Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",2) Global("c-aransex","GLOBAL",3)~ THEN ~[ARAN] We might rightly be called 'involved', I think. I am not sure what you get out o' th' deal, but I'm not rightly complainin'. I can rightly say I live for th' times when we get physical wi' eachother. Mayhap someday we will take that final step. Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",2) Global("c-aransex","GLOBAL",4)~ THEN ~[ARAN] We might rightly be called 'involved', I think. I am not sure what you get out o' th' deal, but I'm not rightly complainin'. An' I won't never forget spendin' time wi' you all tangled up, explorin' everythin'... why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1) Global("c-aranrom","GLOBAL",3)~ THEN ~[ARAN] I seem to not have ticked you off to th' point wheree you drop me for good, eh? I think we even be friends. We could have a bit more, but I guess things didn't work out th' way you wanted. Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,MALE) !HasItemEquiped("belt05",Player1) Global("c-apcdeclaresellsword","GLOBAL",0)~ THEN ~[ARAN] You haven't told me to bugger off permanent, though you do seem a trifle short wi' me from time to time. Then again, You done got a huge amount to think about lately. I think we be friends. Why do you be askin'?~ == C-ARN25A IF ~Gender(Player1,MALE) !HasItemEquiped("belt05",Player1) Global("c-apcdeclaresellsword","GLOBAL",1)~ THEN ~[ARAN] You told me to not try to confuse things by bein' friends, so we be supposed to keep to th' professional side. You command, I follow. Then you pay me. Why do you be askin'?~ == C-ARN25A IF ~HasItemEquiped("belt05",Player1)~ THEN ~[ARAN] Hey... you know, I be havin' one hells o' a blighted time figurin' out just what I think o' our relationship. I mean, that belt... it confuses me right proper, it do.~ EXIT + ~Global("c-aranrom","GLOBAL",0) Global("c-apcdeclaresellsword","GLOBAL",0) !HasItemEquiped("belt05",Player1)~ + ~[PC] I was just wondering.~ EXIT + ~Global("c-aranrom","GLOBAL",0) Global("c-apcdeclaresellsword","GLOBAL",0) !HasItemEquiped("belt05",Player1)~ + ~[PC] Oh, I just thought you might realize that I depend on you as one of my closest friends. I may not treat you exactly the way you would like, but I count on you..~ EXIT + ~Global("c-aranrom","GLOBAL",0) Global("c-apcdeclaresellsword","GLOBAL",0) !HasItemEquiped("belt05",Player1)~ + ~[PC] No sellsword ever has the right to call me "friend".~ DO ~SetGlobal("c-apcdeclaresellsword","GLOBAL",1)~ EXIT + ~Global("c-aranrom","GLOBAL",0) Global("c-apcdeclaresellsword","GLOBAL",1) !HasItemEquiped("belt05",Player1)~ + ~[PC] It is good to know that you know your place.~ EXIT + ~Global("c-aranrom","GLOBAL",0) Global("c-apcdeclaresellsword","GLOBAL",1) !HasItemEquiped("belt05",Player1)~ + ~[PC] In your case, I will make an exception. I think we are friends.~ DO ~SetGlobal("c-apcdeclaresellsword","GLOBAL",0)~ EXIT + ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ + ~[PC] I think we have headed down the wrong path, Aran. Let's just be friends.~ DO ~SetGlobal("c-aranrom","GLOBAL",3)~ + a2661 + ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ + ~[PC] I think I am... very interested in you. Romantically speaking.~ DO ~SetGlobal("c-aranrom","GLOBAL",2)~ + a2698 + ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ + ~[PC] I think we could be together, if you were discreet. I have other lovers who are much less forgiving than you. Play by my rules, and we might just see what happens...~ DO ~SetGlobal("c-aransummoned","GLOBAL",2)~ + a2652 + ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ + ~[PC] I think I am... interested in you. But I don't like things to move so fast. Perhaps we should be friends, and explore becoming more?~ DO ~SetGlobal("c-aranrom","GLOBAL",1)~ + a2697 + ~Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ + ~[PC] I can't believe you have forgotten all of the passion. You are so physical, but you can't remember with whom?~ EXTERN C-ARN25A a2695 + ~HasItemEquiped("belt05",Player1)~ + ~[PC] Just checking.~ EXIT APPEND C-ARN25A IF ~~ a2695 SAY ~[ARAN] Mayhap I have been knoocked on th' head, but I am sure I would remember anythin' to do with you, <CHARNAME>. I... why, what do you know that I don't?~ ++ ~[PC] You remember it corrrectly, Aran. I was just teasing you.~ + a2697 ++ ~[PC] You remember it corrrectly, Aran. All except.. well, I thought we had a few stray glances, and the way your eyes look at me, I think you want more than just a little friendship. Nothing has really happened.~ DO ~SetGlobal("c-aransex","GLOBAL",0)~ + a2697 ++ ~[PC] Shall I jog your memory, and describe some of the things we have done together?~ + a2696 ++ ~[PC] No. I think you have it just the way I want it. Thank the gods for memory lapses.~ + a2697 END IF ~~ a2696 SAY ~[ARAN] I would love that.~ ++ ~[PC] You remember it corrrectly, Aran. I was just teasing you.~ + a2697 ++ ~[PC] You remember it corrrectly, Aran. All except the stray glances, whispers, and the way you look at me. It is like you are hungry, but not for food.~ DO ~SetGlobal("c-aransex","GLOBAL",0)~ + a2697 ++ ~[PC] You remember it corrrectly, Aran. All except the bold glances, whispered converstaions, and some very deep kisses.~ DO ~SetGlobal("c-aransex","GLOBAL",1)~ + a2698 ++ ~[PC] You remember it corrrectly, Aran. All except the stolen whispered converstaions, the feel of your fingers tracing runes my body, the feel of the bare skin of your chest under my palms... and kisses that set us both on fire.~ DO ~SetGlobal("c-aransex","GLOBAL",2)~ + a2698 ++ ~[PC] Aran... we have spent so much time together, the only thing we haven't done is... ~ DO ~SetGlobal("c-aransex","GLOBAL",3)~ + a2698 ++ ~[PC] Aran... I know the touch of you, the feel of all you, and that little strained look you get just before you... ~ DO ~SetGlobal("c-aransex","GLOBAL",4)~ + a2698 ++ ~[PC] No. I think you have it just the way I want it. Thank the gods for memory lapses.~ + a2697 END IF ~~ a2697 SAY ~[ARAN] Well, you had me off balance, there. I be right happy we both agree. I was worried, mayhap because any time a woman asks about 'relationship status', there be a powerful lot o' pitfalls an' traps a lad can fall into, eh?~ IF ~~ THEN EXIT END IF ~~ a2698 SAY ~[ARAN] I can stop you right there, with a kiss. I can't rightly forget anythin' about us, but it sure does feel good to hear you speakin' o' us like this. I was just a mite off balance, is all. Mayhap because any time a woman asks about 'relationship status', there be a powerful lot o' pitfalls an' traps a lad can fall into, eh?~ IF ~~ THEN EXIT END END // of APPEND
  3. Lots of tutorials out there, I think, on DreamTalks, hassles with Dream Timers, and all sorts of stuff, so this will probably be more of a "post the talks and be done with it". The easiest - a straightforward "on waking, outside, after Underdark". .bcs, .dlg, and PartyRested(). No need t=for the DreamScript, C-ARAJD, as that script only runs at rest - and since there is no before-rest | after-rest pairing, this one is a straightforward one. c-aran.baf addition: /* On waking banter, after Underdark : bcs */ IF InParty(Myself) Global("c-aranwakeup","LOCALS",0) Global("Chapter","GLOBAL",6) CombatCounter(0) !StateCheck(Myself,CD_STATE_NOTVALID) InMyArea(Player1) !StateCheck(Player1,CD_STATE_NOTVALID) PartyRested() // this one makes it immediately after rest !RealGlobalTimerNotExpired("c-aransmalltalk","GLOBAL") // not while smalltalk timer is still running, so we don't load up OR(2) AreaType(OUTDOOR) AreaType(FOREST) !AreaType(DUNGEON) THEN RESPONSE #100 SetGlobal("c-aranwakeup","LOCALS",1) RealSetGlobalTimer("c-aransmalltalk","GLOBAL",300) PlaySong(0) PlaySound("c-aranft") StartDialogNoSet(Player1) END c-aranj.d addition, two possibilities - waking up during day, or waking up during night /* On waking banter, after Underdark : dlg */ IF ~Global("c-aranwakeup","LOCALS",1) TimeOfDay(DAY)~ c_nice_to_see_day SAY ~[ARAN] Birds. Daylight. Sunrise. Blighted hells, it be nice to stretch out after a real sleep, an' see th' sky...~ IF ~~ THEN DO ~SetGlobal("c-aranwakeup","LOCALS",2)~ GOTO c_we_made_it END IF ~Global("c-aranwakeup","LOCALS",1) TimeOfDay(NIGHT)~ c_nice_to_see_night SAY ~[ARAN] Stars. Breezes. Selune Herself, shinin' down. Blighted hells, it be nice to stretch out after a real sleep, an' see th' sky...~ IF ~~ THEN DO ~SetGlobal("c-aranwakeup","LOCALS",2)~ GOTO c_we_made_it END IF ~~ c_we_made_it SAY ~[ARAN] for awhile there, I thought we might never get topside again. I did not relish th' thought o' endin' up stuck down in th' Underdark permanent-like.~ ++ ~[PC] Oh, it wasn't so bad. At least we knew almost everything we met was just waiting for a chance to kill us.~ + c_like_they_arent_now ++ ~[PC] The classic Whitehand juxtaposition - say something nice, but add a swear word or two strong enough to blister the ears of young children.~ + c_beautiful_words ++ ~[PC] Good, you are up. Get some food going, fast. I am starving!~ + c_and_not_fungus + ~Global("c-aranrom","GLOBAL",2) Global("c-aransex","GLOBAL",1)~ + ~[PC] Hey, I am not done with you yet. I still have some unattended romantic business to finish...~ + c_going_to_kill_me ++ ~[PC] Shhh. Not so loud. I am going back to sleep for awhile.~ + c_get_up END IF ~~ c_like_they_arent_now SAY ~[ARAN] We don't have to be in Underdark for that to be true, eh? If danger be th' spice o' life, then I think you be cayenne, paprikea, an' burnin' oil all rolled into one!~ IF ~~ THEN GOTO c_get_up END IF ~~ c_beautiful_words SAY ~[ARAN] Fervent feelin's fill foul phrases full, eh? I guess I should o' said "Mystra's Tears", or "Lathander's Smile", or some such.~ IF ~~ THEN GOTO c_get_up END IF ~~ c_and_not_fungus SAY ~[ARAN] Praise be to th' gods, we don't have to worry about no strange creatures showin' up in th' food, an' there be not a mushroom or fungus in sight. Real meal, an' open air.~ IF ~~ THEN GOTO c_get_up END IF ~~ c_going_to_kill_me SAY ~[ARAN] Good gods, woman. You are like to kill me. We can always stop for a mite later, but we'd best be movin' on.~ IF ~~ THEN GOTO c_get_up END IF ~~ c_get_up SAY ~[ARAN] Now, pop right out o' that there bedroll, <CHARNAME>... my cookin' muscles have been all cramped down underground. I can feel a first-class meal comin' on. An' I be in th' mood for a right fine <DAYNIGHT> o' travel an' adventure!~ IF ~~ THEN EXIT END Taking ideas for expansion, but sometimes short and sweet is all the scenery dialog you need. Reminders to self - Classic Modder Mixups to recheck in main files - Posible Mismatches: SCOPE. we set a timer on each fun talk and flirt that tries to space out potential scenery dialog/ fun talks so that you don't end up with several becoming evaluated true at the same time. Some places that tend to load up include the start of every major area, and every chapter, so there is a talk-fest and then not so much. But, is it consistent in its usage? we need to recheck RealSetGlobalTimer("c-aransmalltalk","GLOBAL",300) <-> !RealGlobalTimerNotExpired("c-aransmalltalk","GLOBAL") as a pairing, because if we use the game time timers on either side of this in other code, it will not do what we want it to do. Same with variables - edited above code just now because I set a LOCALS and closed a GLOBAL, which will not work quite as intended... Global("c-aranwakeup","LOCALS",0) <-> SetGlobal("c-aranwakeup","LOCALS",1)
  4. So, the idea was to get detailed, and see what happened in WeiDU with two ideas that have been coded into Aran. 1. - is it really really true that WeiDU does not care if you code things like this: IF ~~ a101 SAY ~[ARAN] Well, I have seen precious little o' th' Tel' Quessirim, truth be told. Those ears be a right interestin' sight on a lad. No harm meant, eh?~ IF ~~ THEN EXIT END or this, run all into a single line: IF ~~ a101 SAY ~[ARAN] Well, I have seen precious little o' th' Tel' Quessirim, truth be told. Those ears be a right interestin' sight on a lad. No harm meant, eh?~ IF ~~ THEN EXIT END (We know the answer to this - WeiDU does not care, but the human does. Nothing harder to troubleshoot than unindented stuff. If there is not a decent pattern, then you can't catch the silly things, like a missing tilde, or an IF ~~ THEN EXIT with no END. We are just having some fun with this as a control). So, first off, we create a folder called test1 in the BG2 directory. NOT THAT ONE!!!!! Nope, not the clean, nice, pristine, untouched one you have on your main hard drive. Trust me. Bad idea. Copy the whole BG2 clean version onto another drive, remap the baldur.ini in your copied one to your new one in the nice folder X:\TESTING\BG2, because you might want to get fancy someday and do things like edit creatures, or build macros that are supposed to manipulate values, or something fancier than what we are doing today. And when you do that, you will need to compare the original game structures to the modded ones, so that even before you test in-game, you can see if it is doing basically what you want, or have you accidentally done something like edit every single item in the game to have an extra couple of bytes, thus corrupting everything... believe, or suffer the consequences. I certainly hope you believe, because if you think it is tough to troubleshoot your installation now, just wait until you have been playing around trying to learn modding, and forget to uninstall a test - or worse. OK, on the testing install, I have that folder, and now I grab a copy of another mod's setup-mymod.exe (or just a regular old weidu.exe from its package), and name it setup-test1.exe. I whip up a quick .tp2 (unless I have a test one already created and are just editing it, like I do): setup-test1.tp2 BACKUP ~test1/BACKUP~ AUTHOR ~Me.~ VERSION ~v1~ BEGIN ~Check Dialog format~ COMPILE ~test1/test1.d~ And I grab the dialog thought I want to play with, and toss it in the folder with the .tp2: test1.d BEGIN ~test1~ APPEND ~test1~ IF ~Global("test1","GLOBAL",1)~ THEN BEGIN a100 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 ~!Kit(Player1,NMSUNE)~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT IF ~Kit(Player1,NMSUNE)~ THEN GOTO a101 END IF ~NumTimesTalkedTo(0)~ THEN BEGIN a105 SAY ~[ARAN] Yup, a stupid test~ ++ ~[PC] heya, 101~ + a101 ++ ~[PC] heya, 102~ + a102 ++ ~[PC] heya, 103~ + a103 ++ ~[PC] heya, 104~ + a104 END IF ~~ a101 SAY ~[ARAN] Well, I have seen precious little o' th' Tel' Quessirim, truth be told. Those ears be a right interestin' sight on a lad. No harm meant, eh?~ IF ~~ THEN EXIT END /* c-aranpidhum */ IF ~~ a102 SAY ~[ARAN] No, naught but tryin' to figure out if you be a native Chondathan, Luskan, or mayhap Rashemi speaker. Must be all that book learnin'. I just can't bloody well place your accent, is all.~ IF ~~ THEN EXIT END /* c-aranpiddwarf */ IF ~~ a103 SAY ~[ARAN] Nothin' wrong. Just tryin' not to trip over your short little sorry arse, eh?~ IF ~~ THEN EXIT END /* c-aranpidorc */ IF ~~ a104 SAY ~[ARAN] Just tryin' to figure out how to avoid tellin' you that you be the ugliest son o' a bitch I ever did lay eyes on. No harm meant, o' course.~ IF ~~ THEN EXIT END END and double-click the file setup-test1.exe. Now, I have weidu showing me a command box, and before I go further, I want to make sure I get all the data I can. In Windows (I am using Win7 pro x64, but it is all variations on a theme), I right click on the top bar of the command prompt (command box, terminal, whatever you want to call it), and I change the properties. First, I set the screen buffer size to something appropriate for my screen resolution. Since I work at 1280 x 1024, it ends up being something huge, like width = 150, height = 300. I make the window size width = 150 and height = 60. And most of all, I toggle options, and put a buffer size of 500, 4 buffers, QuickEdit mode, and Insert mode. Now, the command box will save lots of cool information - and I can cut and paste out of it. It looks pretty silly right now, but on troubleshooting a big install, I have a big wide net cast to discover troubles, and I can either screenshot or copy/paste the errors for forum posting, to bug and annoy share with friendly fellow modders. OK, now I go ahead and press i, installing the mod. Success! If there wasn't, I could do that snipping tool, giving you a cute picture of a black box with text, or just copy the contents and post here, like this: OK, now we have our answers to both questions. It installs, allowing single-line code, and if Divine Remix is not installed before Aran is installed, there will be some parse warnings that show up in the black box and will lead to people checking in and reporting this as an error. Useful information. Side Note: what we just found out was that weidu will allow an install to happen, and will show a successful install in the DEBUG. It will not throw a "Installed with Warnings", or fail outright. In other words, it found the correct structures, and did not choke/scream bloody murder/spit up on us. WE HAVE NOT FOUND OUT IF IT WORKS. WeiDU was designed by trial and error, and is rebuilt and maintained by serious moddarz, not folks who have 14 safety nets for every conceivable situation and way in which the average idiot like me will throw weidu's way. If you tell it politely to do something that sounds reasonable, using the correct language, and in the correct form, it will do it. But, as we are about to find out, what a modder *thinks* they want and what the game engine *actually* wants is not always... err... make that almost never... the same thing. SO, Now we check the files. Lots of ways of doing this, but since many folks starting out do not actually use weidu to look at dialog, let's use DLTCEP and go through the process. (Heh. That is a little joke, because when you are using DLTCEP, you are using a cool, powerful, hardworking tool that acts as a front-end GUI for weidu. It does other stuff, but in this instance, we are just letting DLTCEP form the weidu commands). First off, we point DLTCEP to our new test install, because if you leave it where it is, you will keep going back to the same original installation over and over, scratching your head, trying to figure out why the mod *says* it is installed, but DLTCEP just can't seem to find TEST1.DLG... That's always fun. Now, I choose the EDIT > DLG > Load Dialog, and find TEST1. Yup, it is there, and looks good. But I want to see it all laid out nicely like when I wrote it, instead of hunting down triggers and actions and text strings, all jumbled up - so I do FILE > Export WeiDU. Now I toddle over to my testing directory> script compiler > decompiled, and voila - a TEST1.D is all ready for me. Let's see what it looks like, opened up in Notepad++: OK. Now, there is something interesting to investigate next, another day, by either asking on the forums or trying it out in game. If we look at the decompiled dialog reply states, we has set up the logic "If the player has the kit NMSUNE, then go in this direction. If the player does not have the kit NMSUNE, then go in another direction." But with no entry for NMSUNE, because DR is not installed, the script now says "If the player has the kit 0, then go in this direction. If the player does not have the kit 0, then go in another direction." Before we experiment, of course, we can research. What is Kit=0? IESDP, http://iesdp.gibberl...ids/bg2/kit.htm, and we find... nothing. Nothing matching 0 in the old, incorrect .ids, nothiing in the new one... are we safe? Maybe. But logic tells us we might just have a problem. Because what that lovely piece of code is saying is IF NOT no_kit IF no_kit and there is no entry no_kit (and even un-kitted folks have 0x4000 TRUECLASS as their "kit") - I think we will have a dreaded NVROL "No Valid Replies Or Links" popping up. Lots of ways to solve this, by the way - everything from requiring Divine Remix to be installed before Aran [bad idea to create unneeded dependencies, so not my idea of a good solution] to rejiggering the dialog code to allow a valid link that allows folks who want to play without DR installed, by simply making that ~!Kit(Player1,0)~ into a very simple default condition always available, by using IF ~~ THEN REPLY or its shortcut ++.
  5. Fun little snippets that can only be gathered if you do silly things in-game - the Easter egg is as old as computer gaming itself. One more recent addition to Easter eggs in games are conditional talks that can be triggered if you do something that is really a sideline in the game. In BG2, you can drink, and get intoxicated. The only thing this does is reduce your combat stats for a time, as a single drink or two is more than enough to get rumors at bars, is really not necessary, and as far as I know has no relation to anything at all in the gameplay. Several modders have played with this intoxication, though, using it for entertainment, and Aran seems to be a bar-hopping type of guy. Fortunately or unfortunately, I am not, preferring a quiet, reasonably aged scotch in the company of friends and/or family over wild shenannigans. (Yep. I actually used 'shennanigans' in a sentence. +10 points for SAT prep tests). So, aside from the scripting of the trigger (CheckStat:intoxication), here is a first pass at a series of three 'drunk talks', and a call for ideas to add/take away. The goal is for short, humorous, interesting exchanges that would happen when Three Sheets To The Wind™, Blotto™, or just short of Praying to the Great Porcelain God®. We have plenty of other spots for deep introspection, fun flirts, or other silliness. Here, the player will need to get Aran drunk in order to trigger this set, so we can assume that the player is purposefully searching for a fun relief from the 400th playthrough of required quest cycle, and wants a bit of humor to spice up the game. /* This is fun - Let's paint the town red! */ IF ~Global("c-arandrunk","GLOBAL",1)~ THEN BEGIN c-arandrunk1 SAY ~[ARAN] Now, tha... that last round, it packed one hell o' a... hell o' a wallop. Hey, stop weavin' about so much, <CHARNAME>.~ + ~Gender(Player1,FEMALE)~ + ~[PC] You seem to have had too much to drink. Perhaps we should get you to bed.~ DO ~SetGlobal("c-arandrunk","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ c-drunk1fem + ~Gender(Player1,MALE)~ + ~[PC] You seem to have had too much to drink. Perhaps we should get you to bed.~ DO ~SetGlobal("c-arandrunk","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ c-drunk1male END /* womenfolk */ IF ~~ c-drunk1fem SAY ~[ARAN] Too kind o' you, lookin' out for me an' all. But I think you'd be a mite bit disappointed in my performance, eh? On account o' I might not be able to see where to fit th' key in the hole wi' everythin' spinnin' around so much, so to speak.~ ++ ~[PC] Is everything you say and do about sex?~ + c-aboutsex ++ ~[PC] Did you just proposition me?~ + c-proposition ++ ~[PC] I wasn't expecting much from you anyways. Forget it.~ + c-million ++ ~[PC] You would never say that to me if you were not very, very drunk.~ + c-verydrunk END IF ~~ c-aboutsex SAY ~[ARAN] Hells, yes. Well, no. I mean, there be fightin', an' writin', an' sometimes a nice bit o' commentary on th' state o' Waterdeep politics. But mostly, it be about sex. Either havin' it, not havin' it, or whom th' havin' or not havin'... what was I sayin'?~ ++ ~[PC] You were saying how you really wanted to go to sleep right now.~ DO ~RestParty()~ EXIT ++ ~[PC] You are stupid and rude, and I think you can just stay here and fend for yourself.~ DO ~RestParty()~ EXIT ++ ~[PC] You are drunk. I think I might be, too, a little. I will see you tomorrow.~ DO ~RestParty()~ EXIT ++ ~[PC] Politics, sex, having your way with me, you know... the usual. Aran? Are you awake? Aran?~ DO ~RestParty()~ EXIT END IF ~~ c-proposition SAY ~[ARAN] Did I? I do believe I did. Well, if I could remember what I said. Why, you interested?~ ++ ~[PC] You are stupid and rude, and I think you can just stay here and fend for yourself.~ DO ~RestParty()~ EXIT ++ ~[PC] You are drunk. I think I might be, too, a little. I will see you tomorrow.~ DO ~RestParty()~ EXIT ++ ~[PC] Yes.~ + c-dammit ++ ~[PC] Never in a million years.~ + c-million ++ ~[PC] This is why I do not get drunk. It saves all sorts of embarassment the next morning.~ + c-million END IF ~~ c-verydrunk SAY ~[ARAN] You be right on that. But probably I won't remember in th' mornin'. I don't know, <CHARNAME>... there be so much about you that sets me on fire. But then you scare me, too. Don't know if I am comin' or goin', goin', or... what was I sayin'?~ ++ ~[PC] You are stupid and rude, and I think you can just stay here and fend for yourself.~ DO ~RestParty()~ EXIT ++ ~[PC] You are drunk. I think I might be, too, a little. I will see you tomorrow.~ DO ~RestParty()~ EXIT ++ ~[PC] I would not sleep with you, Aran, even if you were a Masked Lord of Neverwinter. Never in a million years.~ + c-million ++ ~[PC] This is why I do not get drunk. It saves all sorts of embarassment the next morning.~ + c-million ++ ~[PC] Well, you are drunk, and I might be, too... but I want to be special to someone right now. I say yes. Let's go upstairs.~ + c-dammit END IF ~~ c-dammit SAY ~[ARAN] Shun's... Zune's.. hells, whatever-her-name-is' Schlippery Schlopes. I want you, an' you say yes, an' then it all falls apart on account o' I am just about to...~ ++ ~[PC] Aran? Aran? Wake up, Aran...~ DO ~RestParty()~ EXIT END IF ~~ c-million SAY ~[ARAN] Well, good thing I got a tough hide, eh? Used to rejection. Now, that there cute little thing over there, she might just say yes. Her... th' one standin' next to her twin...~ ++ ~[PC] Aran, you are pointing vaguely in the direction of a table. I think you... too late. Bartender, can you get someone to haul him up to his room?~ DO ~RestParty()~ EXIT END /* menfolk */ IF ~~ c-drunk1male SAY ~[ARAN] No, naught o' talk like that! We got th' whole rest o' th'... ok, we got mayhap a few hours, but still, we should get out there an' find us somethin' to do! There be a lot o' women attracted to power, boyo. Some o' it might rub off on me.~ ++ ~[PC] I am spoken for. But you go along and find some poor girl to make wish that she had stayed home tonight. Just don't get arrested.~ + c-spoilsport ++ ~[PC] I am spoken for. But a fling might be just the thing. She has been getting very possessive and controlling lately. We are not married.~ + c-controlling ++ ~[PC] Come on, let's find some women who have loose morals and low standards. That should take care of you, and then I will go find someone with class and refined tastes for myself.~ + c-bigtalk ++ ~[PC] Is everything you say and do about sex?~ + c-allaboutsex END IF ~~ c-allaboutsex SAY ~[ARAN] Hells, yes. Well, no. I mean, there be fightin', an' writin', an' sometimes a nice bit o' commentary on th' state o' Waterdeep politics. But mostly, it be about sex. Either havin' it, not havin' it, or whom th' havin' or not havin'... what was I sayin'?~ + ~ReputationGT()~ + ~[PC] You were babbling randomly again. I lost track somewhere about the time you opened your mouth.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were babbling randomly again. I lost track somewhere about the time you opened your mouth.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were babbling randomly again. I lost track somewhere about the time you opened your mouth.~ + c-evilfriend + ~ReputationGT()~ + ~[PC] Do not worry, Aran. we will get you upstairs and keep you out of trouble. In this condition, I do not think you even know what you are saying.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] Well, this is amusing. You are drunk, boyo.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] Hey, I think you should get a few more drinks in you, while I bet on how many it takes to make you pass out.~ + c-evilfriend ++ ~[PC] Come on, let's find some women who have loose morals and low standards. That should take care of you, and then I will go find someone with class and refined tastes for myself.~ + c-bigtalk ++ ~[PC] Hey, Aran.. say this... 'she sells sea shells by the seashore'. Come on, I dare you!~ + c-sheshellsh END IF ~~ c-bigtalk SAY ~[ARAN] Oh, big talk, big talk. I can see 'em linin' up for you, right now, eh? Price o' fame, I guess. So many women, so many beautiful women... Waukeen's Wanderin' Worshipers, what in th' nine hells was I sayin'?~ ++ ~[PC] You were saying that you were going to buy another round.~ + c-nocoin + ~ReputationGT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-evilfriend + ~ReputationGT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-evilfriend + ~ReputationGT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-evilfriend END IF ~~ c-spoilsport SAY ~[ARAN] Spoilsport. You should come wi' me, an' help me land one o' these women in my bedroll, eh? So many women, so many beautiful women... Waukeen's Wanderin' Worshipers, what in th' nine hells was I sayin'?~ ++ ~[PC] You were saying that you were going to buy another round.~ + c-nocoin + ~ReputationGT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-evilfriend + ~ReputationGT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-evilfriend + ~ReputationGT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-evilfriend END IF ~~ c-controlling SAY ~[ARAN] Exactly my point. Women, they need to know they be not th' only choice out there. Keep em' on their toes, I always say. But I say a bit more'n I should, an' naught comes o' it, either. I think. Do I think? I was thinkin' o' somethin. So many women, so many beautiful women... Waukeen's Wanderin' Worshipers, what in th' nine hells was I sayin'?~ ++ ~[PC] You were saying that you were going to buy another round.~ + c-nocoin + ~ReputationGT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that you were going to try to bed that waitress over there.~ + c-evilfriend + ~ReputationGT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that you were going to bed to sleep off the drink.~ + c-evilfriend + ~ReputationGT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-goodfriend + ~ReputationLT() ReputationGT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-neutralfriend + ~ReputationLT()~ + ~[PC] You were saying that the night is young, and you wanted to have some fun.~ + c-evilfriend END IF ~~ c-goodfriend SAY ~[ARAN] You be a damned good fr... friend, <CHARNAME>. Deneir's Sharp Quill, it were a g... good day when I signed on wi' you. Prince among swine, or men, or someth'n like that, an' all... a Mystra-Kissed Hero o' th' Realms.~ ++ ~[PC] Easy, easy... you are starting to wobble. Stay seated...~ + c-passout ++ ~[PC] Careful. I have had a few too many drinks myself, but your breath smells like you have been drinking D'Tranion.~ + c-passout ++ ~[PC] Another reason not to drink. Whether I am available or not, I am about to be the only one of the two of us who could do anything but slobber and pass out.~ + c-passout END IF ~~ c-neutralfriend SAY ~[ARAN] You be a damned good fr... friend, <CHARNAME>. Well, no, that be wrong. You be a tough man what to understand. Hoar's Swift Justice, you go one way an' then th' next, semmin' to stay neutral, you kn... know. Hey. Stop spinnin' aout like that.~ ++ ~[PC] I am not spinning, Aran. But here, you might want to keep a bucket handy...~ + c-passout ++ ~[PC] Careful. I have had a few too many drinks myself, but your breath smells like you have been drinking D'Tranion.~ + c-passout ++ ~[PC] Another reason not to drink. Whether I am available or not, I am about to be the only one of the two of us who could do anything but slobber and pass out.~ + c-passout END IF ~~ c-evilfriend SAY ~[ARAN] You be a damned good fr... friend, <CHARNAME>. Umberlee's Undulations, that be wrong. You be th' meanest, nastiest Son' o' Bhaal ever let loose on' th' face o' Toril. But I got your back, an' I c... can't rightly complain. I like to be on th' winnin' side, eh? Bastard.~ ++ ~[PC] Interesting revelation. You love me, but you hate me. Useful.~ + c-passout ++ ~[PC] Hey, you should go run your head through that door over there. You could do it. 5 gold says you can do it...~ + c-passout ++ ~[PC] Bartender, my friend here says that I am on his tab for the night. Get me your best drink!~ + c-passout ++ ~[PC] You. Yeah, the ugly one. My friend Aran here says your girlfriend looks like a cow. And something about your mother being an orc.~ + c-passout END IF ~~ c-sheshellsh SAY ~[ARAN] She shellsh... See sell... she sh... Red Knight's Rump, I be shpittin... Hells. You say it. I be lookin' for someplace where to lie down. Nice table... ~ IF ~~ THEN GOTO c-passout END IF ~~ c-nocoin SAY ~[ARAN] Right, by Oghma's Oracular Aura! Ano... 'nother round! Only I can't bloody well find my coinpurse, eh? I th... think it fell somehweres down here. Nice table... it be a bit smelly down here under t, but th' floor feels right s... soft it do.~ IF ~~ THEN GOTO c-passout END IF ~~ c-passout SAY ~[ARAN] Shun's... Zune's.. hells, whatever-her-name-is' Schlippery Schlopes.~ ++ ~[PC] Aran? Aran? Wake up, Aran...~ DO ~RestParty()~ EXIT END /* DT2: Hey, those skirts are short - cool. */ IF ~Global("c-arandrunk","GLOBAL",3)~ THEN BEGIN c-arandrunk2 SAY ~[ARAN] Sharess' Sensual Caress, I do love th' Waterdeep fashions. Low bodice, high skirt, just flirty enough to drive a man crazy. A toast to Waterdeep, an' a hope that next year be th' year o' th' invisible dress!~ + ~Gender(Player1,FEMALE)~ + ~[PC] I think you need to slow down. Do you remember what happened last time you had too much to drink?~ DO ~SetGlobal("c-arandrunk","GLOBAL",4) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-noidontfemale + ~Gender(Player1,MALE)~ + ~[PC] I think you need to slow down. Do you remember what happened last time you had too much to drink?~ DO ~SetGlobal("c-arandrunk","GLOBAL",4) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-noidontmale END /* DT3: We have to stop doing this. Where's the FR AA Chapter? */ IF ~Global("c-arandrunk","GLOBAL",5)~ THEN BEGIN c-arandrunk3 SAY ~[ARAN] ~ ++ ~[PC] ~ DO ~SetGlobal("c-arandrunk","GLOBAL",6) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT END
  6. OK, not a lot of activity on the boards, because what free time I do have is being invested in writing/rewriting. Plus, the nature of lots of small files built over five minutes here, ten minutes there... let's just say that the first alpha was notable only in the fact that it installed. In fact, it installed only due to triage, where sections that will eventually be linked were capped off with a temporary state easy to find and replace: IF ~~ PLACEHOLDER SAY ~[CMORGAN] PLACEHOLDER~ IF ~~ THEN EXIT END I should have written that as IF ~~ PLACEHOLDER SAY ~[CMORGAN] YO, IDIOT... FINISH THIS BEFORE 2020 AD. OR THE HEAT DEATH OF THE UNIVERSE.~ IF ~~ THEN EXIT END But, since I have only a few minutes here before work once again swarms over me, here is some work in progress dealing with both quest materials and areea dialog for the new tavern Berelinde has graciously created for me. I thought I had quest stuff up here, but can't take the time to search right now, so if i am overlapping myself, so be it. he first question I think was answered elsewhere - Q: Does Aran have a quest? A: Hells, no. What could possibly be the point of adding yet another friend to be rescued, ex-lover to exact revenge upon, or "I must do this or leave you FOREVAR"? It makes sense for some of the other NPCs out there. For example, Gavin not resolving family issues before potentially being removed from the very weave of existence would be just plain stupid. Decent dads don't say "Yo, might be hideously imprisoned in the depths of hell for the next two centuries, because that's how <CHARNAME> is rolling these days. There's a PB&J on the table, Lanie. If I am not back in two days, go find someone else to take care of you." Some other NPCs I have less understanding of why it is so important that they deal with the quests, but that is actually true in the game, too... Watcher's Keep is a nice little dungeon, but it never made in-game sense to me in terms of the plot. "Hey, the world is falling apart, and you are dealing with all sorts of bhaalspawn opponents... take a load off, and visit the Temple of doom. All the experience and loot you can gather, for a low, low price. Act now! Limited time offer!". Q: Does having Aran in the party add more quest content? A: Hells yes. An established mercenary will be on the lookout for contacts, job opportunities, adventures to join in, loot to gather, all the normal stuff that makes coin. It just is likely to be a little more mundane and simple stuff. Your average merc deals with trivial stuff, for very low pay. You know - "Stand here and look tough. Oh, and did i mention, though your pay is only a few copper coins a day, i never actually paid off the Thieve's Guild, so there might be an attack today?" Or worse... "Lady Kinsa needs a package taken over to lord so and so, and she really wants it delivered without anyone looking into it. Go take care of that". So, what can we come up with? Contact 1: Orrin, tavern keeper and Jeweler(*cough* fence). Simple FedEx quest, the meat of any regular life. Pick up critical tax paperwork, make sure it gets into the right hands, return with rec't. The equivalent of being a Brinks Truck, only for paperwork. Contact 2; Teldra, mercenary recruiter. This one is trickier. What makes sense in-game? Her usual gig would be to send them to Maztica, or assign the party to one of the many Bhaalspawn armies ad such recruiting during game events. That takes the party out of play, which is silly. So, lots of allusions to potential work, but not much in the way of useful stuff... but there are two loopholes that spring to mind. 1. magic is bad, banned, and deviant. But Cowlies will let anyone purchase a license, no questions asked. So what happens when a sage has limited book study of magic, and has logically worked through all the things needed for a cute little research project "on paper", concerning a certain set of writings about this malevolent being? I could subtitle this "Holmes on Homes", or "Why You Need A Licensed Electrician To Install That New Lighting". I. Sage's Guild supports a research project, and Teldra contracts the party to go over there "just in case" something happens. Cute little project, simple enough - make sure some fool doesn't disturb me, oh big thug-like sellswords I know what I am doing - I graduated top of my class at Harvard, and that silly Oxford set really doesn't know what they are talking about. Besides, they talk with funny accents... Only it turns out the "research" involves someone with magical or bardic skill (or a decent amount of reading time in fantasy literature) might recognize as a scroll of summoning, or a book protected by a minor demon. Hilarity ensues, leaving the party with an interesting set of choices: a. if trouble realized, pursuade the researcher to stop; contract over, minor payoff, crisis averted, Miller Time™. b. if trouble realized, have a minor "accident", wherin said researcher accidentally falls head first into his vat of ink, after having somehow bound himself tightly and fallen head-first out of a third-story window. Twice. c. do the job right, allowing research to continue, and be faced with a new set of quandries: Run. Screw this gig - a few gold coins to face *THAT*? I am breaking this contract, and quick! Negotiate. Heya, big fellow - answer a few questions, and we will let you take this silly researcher as a prize. It is a win - win scenario, and we all go home happy! So, this place they call 'Spellhold'... any idea where it is? Fight. Back, foul fiend! Though I am armed with but a paper mache sword and a few rotting clubs, I shall defend this poor researcher unto the death! (Hey, i never said i was smart. Just dedicated. A job's a job, right?). negotiate with winning charm and insider knowledge, and/or the wisdom of Soloman (because hey, this is FR, and anything might be possible) [available to high charisma/intelligence/wisdom PCs] - find a win-win situation where the researcher gets his information, the protector/demon gets something he wants, and the party gets a contract completed without 92% casualty rate and the use of every spell and item available to them, just for a measly little 20gp a day rate. Well if they complete that, that might be a fun boss battle opportunity, or a fun roleplay opportunity. So what else might a happy headhunter do with someone who made an impossible situation right? Well, how about hand them a politically suicidal hot-button issue that noone else wants to touch? We could subtiltle this "Help, Help! I'm Being Repressed!" II. The Army doesn't want it. the Council wants nothing to do with it. The various Guilds have no real skin in the game... but this stupid guy has managed to tick off his tenants to the point that they are threatening to revolt. Well, techincally, as most of them have never really bathed and have the table manners of a Kobold, they are a little revolting already, but now they want to kick the idiot who rules their section out. Ordinarily, this would be the work of a few good regiments of the army, or perhaps a couple of Shadow Thief enforcers making some "suggestions".... but the idiot kid trying to make his mark as a lord is well connected, and the peasants are reasonably well Guild-connected themselves. So, enter the Contract Mercenary - Heads Bashed, Solutions Enforced. Have Mace, Will Travel. Options for resolution: Convince the kid to negotiate with the unwashed hordes, resolving the dispute and making everyone breath a great sigh of relief. A lousy payday and no loot, but job well done is its own reward, right? Just another day as a contract merc, unthanked, and underpaid, ready for a nice stiff drink and a good grousing session on why the world should be ruled by mercs, because civilians just don't understand how to solve problems. Convince the peasants that being unwashed is just fine, compared to being unwashed and pushing up daisies from underneath. Convince the kid that washing the peasants and perhaps even letting them eat once a week might improve profits - especially as it is hard to take any profit from them when a wannabe-landlord is explaining the sword run through his forehead to Kelemvor, who has heard it all before. The truly and uniquely mercenary option - get a contract from the noble to clobber the peasants, and one from the peasants to do away with the noble, and then confront them both. Now a merc is not an assassin, but perhaps if you play your cards right, both sides will be so upset that you had the audacity to do such a thing that they ignore the whole point of doing this (allowing a settlement to be enforced, as you have a valid contract from each side, so they can negotiate together or else), and they both join up together and attack you - wherin you get a contract finished, you get the experience, and you get to sell all their various body parts to the highest bidder. Hey, the contract said settle the dispute - it said nothing about keeping anyone out of harm's way! This set of ideas provides some fun, a battle (or not), some loot and experience (or not), and does not interrupt the flow of the game. Do these, or not - completely immaterial to the main plot, or Aran sticking around. Of course, if Aran isn't around, you did pay your union dues, didn't you? You didn't? Golly, gee... Teldra can contract with Aran, but if he is not around, she just can't pay off the party, now, can she?
  7. Separate talks, as friendtalks are suspended in Underdark - like the flirts, separation and the PID separation, the whole "party in disguise" thing and the environment itself leads to conceptual problems dealing with growth of a friendship and sequencing. So, a set of 5 talks that are more 'psychology and scenery' than friendship evolution. People talk, even under (or especially under) high stress. /* SoA UnderDark FriendTalks */ /* SoA UnderDark FriendTalk 1 */ IF ~Global("c-aranfriendud","GLOBAL",1)~ THEN BEGIN a1689 SAY ~[ARAN] Do you think we could move this along a little? This place be my idea o' a nightmare wrapped up in one o' those tales told to scare children.~ ++ ~[PC] We are moving along as best we can. Calm down, take a big breath, and get yourself under control. The Underdark may be legendary, but then again, so are we.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2040 ++ ~[PC] Oh, shut up. What a big baby. You talk about being a tough military man, yet go all weak-kneed at a little fungus and some Drow?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2041 ++ ~[PC] It is bothering me, too, Aran. But complaining about it will not get us any further.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2042 + ~RandomNum(3,1)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1907 /* c-aranshutup1 */ + ~RandomNum(3,2)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1909 /* c-aranshutup3 */ + ~RandomNum(3,3)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1911 /* c-aranshutup5 */ + ~InParty("aerie") InMyArea("aerie") Global("c-aranaerieud","LOCALS",0)~ + ~[PC] You sound like Aerie.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1687 + ~!Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1672 + ~Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1671 + ~OR(7) Global("c-arankravitchstory","LOCALS",1) Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) GlobalGT("c-aranmoonfight","LOCALS",0)~ + ~[PC] Hey, Aran, I remember you telling a story... can you tell it to me again?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1673 + ~InParty("ADANGEL") InMyArea("ADANGEL") !StateCheck("ADANGEL",CD_STATE_NOTVALID) Global("c-aran2103","GLOBAL",0)~ + ~[PC] Angelo seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2103 + ~InParty("Anishai") InMyArea("Anishai") !StateCheck("Anishai",CD_STATE_NOTVALID) Global("c-aran2104","GLOBAL",0)~ + ~[PC] Anishai seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2104 + ~InParty("Azure") InMyArea("Azure") !StateCheck("Azure",CD_STATE_NOTVALID) Global("c-aran2105","GLOBAL",0)~ + ~[PC] Azure seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2105 + ~InParty("B!Gavin2") InMyArea("B!Gavin2") !StateCheck("B!Gavin2",CD_STATE_NOTVALID) Global("c-aran2106","GLOBAL",0)~ + ~[PC] Gavin seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2106 + ~InParty("b!haldamir") InMyArea("b!haldamir") !StateCheck("b!haldamir",CD_STATE_NOTVALID) Global("c-aran2107","GLOBAL",0)~ + ~[PC] Haldamir seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2107 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",0)~ THEN DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ GOTO a1788 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",1) GlobalTimerExpired("c-aranskin","GLOBAL")~ THEN DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ GOTO a1789 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",2) GlobalTimerExpired("c-aranskin","GLOBAL")~ THEN DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ GOTO a1790 END IF ~~ a2040 SAY ~[ARAN] Aye, I be a legend in my own mind, eh?~ + ~RandomNum(3,1)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ + a1907 /* c-aranshutup1 */ + ~RandomNum(3,2)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ + a1909 /* c-aranshutup3 */ + ~RandomNum(3,3)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ + a1911 /* c-aranshutup5 */ + ~InParty("BIDDE") InMyArea("BIDDE") !StateCheck("BIDDE",CD_STATE_NOTVALID) Global("c-aran2108","GLOBAL",0)~ + ~[PC] Biddekorak seems to be handling this better than you are.~ + a2108 + ~InParty("BWTOUCHX") InMyArea("BWTOUCHX") !StateCheck("BWTOUCHX",CD_STATE_NOTVALID) Global("c-aran2109","GLOBAL",0)~ + ~[PC] Touchstone seems to be handling this better than you are.~ + a2109 + ~InParty("CALLISTO") InMyArea("CALLISTO") !StateCheck("CALLISTO",CD_STATE_NOTVALID) Global("c-aran2110","GLOBAL",0)~ + ~[PC] Callisto seems to be handling this better than you are.~ + a2110 + ~InParty("WILLYB") InMyArea("WILLYB") !StateCheck("WILLYB",CD_STATE_NOTVALID) Global("c-aran2111","GLOBAL",0)~ + ~[PC] Bruce seems to be handling this better than you are.~ + a2111 + ~InParty("WLBRAN") InMyArea("WLBRAN") !StateCheck("WLBRAN",CD_STATE_NOTVALID) Global("c-aran2112","GLOBAL",0)~ + ~[PC] Bruce seems to be handling this better than you are.~ + a2112 + ~InParty("Skooter") InMyArea("Skooter") !StateCheck("Skooter",CD_STATE_NOTVALID) Global("c-aran2173","GLOBAL",0)~ + ~[PC] Skooter seems to be handling this better than you are.~ + a2173 + ~InParty("SOLAUFEIN") InMyArea("SOLAUFEIN") !StateCheck("SOLAUFEIN",CD_STATE_NOTVALID) Global("c-aran2174","GLOBAL",0)~ + ~[PC] Solaufein seems to be handling this better than you are.~ + a2174 + ~InParty("xulaye") InMyArea("xulaye") !StateCheck("xulaye",CD_STATE_NOTVALID) Global("c-aran2175","GLOBAL",0)~ + ~[PC] Xulaye seems to be handling this better than you are.~ + a2175 + ~!Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1672 + ~Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1671 + ~OR(7) Global("c-arankravitchstory","LOCALS",1) Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) GlobalGT("c-aranmoonfight","LOCALS",0)~ + ~[PC] Hey, Aran, I remember you telling a story... can you tell it to me again?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1673 ++ ~[PC] You know you are interrupting our travels with random comments, right?~ + a2052 ++ ~[PC] Oh, more than one person thinks you are legendary. There are probably entire books on the famous Inedible Whitehand Curry.~ + a2053 ++ ~[PC] Stop worrying, Aran. You are letting things get to you.~ + a2054 ++ ~[PC] You could help move things along down here if you would actually hit something once in awhile. I thought you were a soldier, not a recruit.~ + a2055 ++ ~[PC] Hey, we can spice things up. Why don't we go find something really disgusting, and slowly torture it to death, just to hear it scream!~ + a2056 END IF ~~ a2041 SAY ~[ARAN] I do be reservin' th' right to be scared out o' my skin, on account o we be wanderin' th' worst collection o' fungus, mold, slime, an' evil anywhere. It's not th' hordes o' Drow that get me, though. It be th' creepin' fungus what covers everythin'. I keep wakin' up expectin' to find I have been half digested.~ + ~InParty("Minsc") InMyArea("Minsc") !StateCheck("Minsc",CD_STATE_NOTVALID) Global("c-aran2176","GLOBAL",0)~ + ~[PC] Minsc seems to be handling this better than you are.~ + a2176 + ~InParty("Korgan") InMyArea("Korgan") !StateCheck("Korgan",CD_STATE_NOTVALID) Global("c-aran2177","GLOBAL",0)~ + ~[PC] Korgan seems to be handling this better than you are.~ + a2177 + ~InParty("Keldorn") InMyArea("Keldorn") !StateCheck("Keldorn",CD_STATE_NOTVALID) Global("c-aran2178","GLOBAL",0)~ + ~[PC] Keldorn seems to be handling this better than you are.~ + a2178 + ~InParty("Valygar") InMyArea("Valygar") !StateCheck("Valygar",CD_STATE_NOTVALID) Global("c-aran2179","GLOBAL",0)~ + ~[PC] Valygar seems to be handling this better than you are.~ + a2179 + ~InParty("Viconia") InMyArea("Viconia") !StateCheck("Viconia",CD_STATE_NOTVALID) Global("c-aran2180","GLOBAL",0)~ + ~[PC] Viconia seems to be handling this better than you are.~ + a2180 + ~InParty("Nalia") InMyArea("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID) Global("c-aran2181","GLOBAL",0)~ + ~[PC] Nalia seems to be handling this better than you are.~ + a2181 + ~InParty("Mazzy") InMyArea("Mazzy") !StateCheck("Mazzy",CD_STATE_NOTVALID) Global("c-aran2182","GLOBAL",0)~ + ~[PC] Mazzy seems to be handling this better than you are.~ + a2182 + ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID) Global("c-aran2183","GLOBAL",0)~ + ~[PC] Jaheira seems to be handling this better than you are.~ + a2183 + ~InParty("Jan") InMyArea("Jan") !StateCheck("Jan",CD_STATE_NOTVALID) Global("c-aran2184","GLOBAL",0)~ + ~[PC] Jan seems to be handling this better than you are.~ + a2184 + ~InParty("Imoen2") InMyArea("Imoen2") !StateCheck("Imoen2",CD_STATE_NOTVALID) Global("c-aran2185","GLOBAL",0)~ + ~[PC] Imoen seems to be handling this better than you are.~ + a2185 + ~InParty("HaerDalis") InMyArea("HaerDalis") !StateCheck("HaerDalis",CD_STATE_NOTVALID) Global("c-aran2186","GLOBAL",0)~ + ~[PC] HaerDalis seems to be handling this better than you are.~ + a2186 + ~InParty("Edwin") InMyArea("Edwin") !StateCheck("Edwin",CD_STATE_NOTVALID) Global("c-aran2187","GLOBAL",0)~ + ~[PC] Edwin seems to be handling this better than you are.~ + a2187 + ~InParty("Anomen") InMyArea("Anomen") !StateCheck("Anomen",CD_STATE_NOTVALID) Global("c-aran2188","GLOBAL",0)~ + ~[PC] Anomen seems to be handling this better than you are.~ + a2188 + ~InParty("Cernd") InMyArea("Cernd") !StateCheck("Cernd",CD_STATE_NOTVALID) Global("c-aran2189","GLOBAL",0)~ + ~[PC] Cernd seems to be handling this better than you are.~ + a2189 + ~InParty("Yoshimo") InMyArea("Yoshimo") !StateCheck("Yoshimo",CD_STATE_NOTVALID) Global("c-aran2190","GLOBAL",0)~ + ~[PC] Yoshimo seems to be handling this better than you are.~ + a2190 ++ ~[PC] We should be keeping our eyes open and not wasting time with all of this talk, you know.~ + a2052 ++ ~[PC] And here I thought it would be more uncomfortable to wake up and find yourself fully digested.~ + a2053 ++ ~[PC] You should stop worrying so much about everything, and concentrate on your duties.~ + a2054 ++ ~[PC] You could help move things along down here if you would actually hit something once in awhile. I thought you were a soldier, not a recruit.~ + a2055 ++ ~[PC] Hey, we can spice things up. Why don't we go find something really disgusting, and slowly torture it to death, just to hear it scream!~ + a2056 END IF ~~ a2042 SAY ~[ARAN] Mayhap not. But it be a soldier's right to complain, an' it sure beats runnin' around screamin' "We're all goin' to die! We're all goin' to die!"~ + ~InParty("Minsc") InMyArea("Minsc") !StateCheck("Minsc",CD_STATE_NOTVALID) Global("c-aran2176","GLOBAL",0)~ + ~[PC] Minsc seems to be handling this better than you are.~ + a2176 + ~InParty("Korgan") InMyArea("Korgan") !StateCheck("Korgan",CD_STATE_NOTVALID) Global("c-aran2177","GLOBAL",0)~ + ~[PC] Korgan seems to be handling this better than you are.~ + a2177 + ~InParty("Keldorn") InMyArea("Keldorn") !StateCheck("Keldorn",CD_STATE_NOTVALID) Global("c-aran2178","GLOBAL",0)~ + ~[PC] Keldorn seems to be handling this better than you are.~ + a2178 + ~InParty("Valygar") InMyArea("Valygar") !StateCheck("Valygar",CD_STATE_NOTVALID) Global("c-aran2179","GLOBAL",0)~ + ~[PC] Valygar seems to be handling this better than you are.~ + a2179 + ~InParty("Viconia") InMyArea("Viconia") !StateCheck("Viconia",CD_STATE_NOTVALID) Global("c-aran2180","GLOBAL",0)~ + ~[PC] Viconia seems to be handling this better than you are.~ + a2180 + ~InParty("Nalia") InMyArea("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID) Global("c-aran2181","GLOBAL",0)~ + ~[PC] Nalia seems to be handling this better than you are.~ + a2181 + ~InParty("Mazzy") InMyArea("Mazzy") !StateCheck("Mazzy",CD_STATE_NOTVALID) Global("c-aran2182","GLOBAL",0)~ + ~[PC] Mazzy seems to be handling this better than you are.~ + a2182 + ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID) Global("c-aran2183","GLOBAL",0)~ + ~[PC] Jaheira seems to be handling this better than you are.~ + a2183 + ~InParty("Jan") InMyArea("Jan") !StateCheck("Jan",CD_STATE_NOTVALID) Global("c-aran2184","GLOBAL",0)~ + ~[PC] Jan seems to be handling this better than you are.~ + a2184 + ~InParty("Imoen2") InMyArea("Imoen2") !StateCheck("Imoen2",CD_STATE_NOTVALID) Global("c-aran2185","GLOBAL",0)~ + ~[PC] Imoen seems to be handling this better than you are.~ + a2185 + ~InParty("HaerDalis") InMyArea("HaerDalis") !StateCheck("HaerDalis",CD_STATE_NOTVALID) Global("c-aran2186","GLOBAL",0)~ + ~[PC] HaerDalis seems to be handling this better than you are.~ + a2186 + ~InParty("Edwin") InMyArea("Edwin") !StateCheck("Edwin",CD_STATE_NOTVALID) Global("c-aran2187","GLOBAL",0)~ + ~[PC] Edwin seems to be handling this better than you are.~ + a2187 + ~InParty("Anomen") InMyArea("Anomen") !StateCheck("Anomen",CD_STATE_NOTVALID) Global("c-aran2188","GLOBAL",0)~ + ~[PC] Anomen seems to be handling this better than you are.~ + a2188 + ~InParty("Cernd") InMyArea("Cernd") !StateCheck("Cernd",CD_STATE_NOTVALID) Global("c-aran2189","GLOBAL",0)~ + ~[PC] Cernd seems to be handling this better than you are.~ + a2189 + ~InParty("Yoshimo") InMyArea("Yoshimo") !StateCheck("Yoshimo",CD_STATE_NOTVALID) Global("c-aran2190","GLOBAL",0)~ + ~[PC] Yoshimo seems to be handling this better than you are.~ + a2190 ++ ~[PC] We should be keeping our eyes open and not wasting time with all of this talk, you know.~ + a2052 ++ ~[PC] Now that I would pay to see. I'll even give you a skirt to wear while doing it.~ + a2053 ++ ~[PC] You should stop worrying so much about everything, and concentrate on your duties.~ + a2054 ++ ~[PC] You could help move things along down here if you would actually hit something once in awhile. I thought you were a soldier, not a recruit.~ + a2055 ++ ~[PC] Hey, we can spice things up. Why don't we go find something really disgusting, and slowly torture it to death, just to hear it scream!~ + a2056 END IF ~~ a1788 SAY ~[ARAN] Hey, your armor be all wrong. I know you be th' scourge o' Faerun, but you don't have to wear your heart on your sleeve, eh? In this case, someone else's, by th' look. Not a great morale boostin' thing, by my account.~ IF ~~ THEN DO ~SetGlobal("c-arskinarm","LOCALS",1) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ GOTO a1791 END IF ~~ a1791 SAY ~[ARAN] But there be more botherin' me than that bundle o' leathered human skin you be wearin'. Do you think we could move this along a little? This whole Underdark be my idea o' a nightmare wrapped up in one o' those tales told to scare children.~ ++ ~[PC] We are moving along as best we can. Calm down, take a big breath, and get yourself under control. The Underdark may be legendary, but then again, so are we.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2040 ++ ~[PC] Oh, shut up. What a big baby. You talk about being a tough military man, yet go all weak-kneed at a little fungus and some Drow?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2041 ++ ~[PC] It is bothering me, too, Aran. But complaining about it will not get us any further.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2042 + ~RandomNum(3,1)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1907 /* c-aranshutup1 */ + ~RandomNum(3,2)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1909 /* c-aranshutup3 */ + ~RandomNum(3,3)~ + ~[PC] It is not a great time to talk right now, Aran. If you want this over with quickly, stop wasting time with smalltalk.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1911 /* c-aranshutup5 */ + ~InParty("aerie") InMyArea("aerie") Global("c-aranaerieud","LOCALS",0)~ + ~[PC] You sound like Aerie.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1687 + ~!Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1672 + ~Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1671 + ~OR(7) Global("c-arankravitchstory","LOCALS",1) Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) GlobalGT("c-aranmoonfight","LOCALS",0)~ + ~[PC] Hey, Aran, I remember you telling a story... can you tell it to me again?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",2) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1673 END IF ~~ a1789 SAY ~[ARAN] You stll be wearin' that Grumbar-lovin' Cyric-blighted armor? Gives me th' chills, it does.~ ++ ~[PC] If it bothers you that much, I will take it off.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + a1791 ++ ~[PC] I think it has a great effect on our opponents' morale. You are just going to have to get used to it.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + a1791 ++ ~[PC] If I wanted you opinion, I would have asked.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + a1791 ++ ~[PC] Shut up, or your ears will add decoration to it.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + a1791 END IF ~~ a1790 SAY ~[ARAN] Look, I do a good bit around here, an' I know you be th' leader. I'm just sayin', that armor makes it blighted hard for me to do my job. Th' smell be only part o' it. Shar's Kiss, get rid o' it, eh?~ ++ ~[PC] Or you will run crying like a weakling child, break your contract, and leave?~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1793 ++ ~[PC] Shut up, Aran. I heard you the first two times. I will use what tools I see fit to advance my goals.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1793 ++ ~[PC] Are you volunteering to add more skin to this armor? Speak again, and I will ~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1793 ++ ~[PC] I may very well take it off. You are useful. But then again, I might put it back on. You will have to get used to it, or leave.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1793 ++ ~[PC] You do very little, and I am tired of your whining. That is the lasty warning you will get.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1793 END IF ~~ a1793 SAY ~[ARAN] Hey, I don't go around second guessin' you. So if I be sayin' it, you know there be one hells of a lot more people who have noticed. Might fit your ideas, but it be bad tactics to give away your position that way.~ IF ~~ THEN GOTO a1791 END IF ~~ a1794 SAY ~[ARAN] Cyric's Black Heart, I don't run out on contracts. But you smell worse than a charnelhouse. If I throw up, you will be knowin' why.~ IF ~~ THEN GOTO a1791 END /* SoA UnderDark FriendTalk 2 */ IF ~Global("c-aranfriendud","GLOBAL",3)~ THEN BEGIN a1690 SAY ~[ARAN] This place be like a great huge weight on me, pushin' down. I done heard o' bein' in th' bowels o' th' earth, but I never did think to be there myself.~ ++ ~[PC] Why do I think you are about to make some horrible childish intestine joke?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2043 + ~RandomNum(3,1)~ + ~[PC] It is not a great time to talk right now, Aran. In fact, it is a lousy time, so shut up.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1907 /* c-aranshutup1 */ + ~RandomNum(3,2)~ + ~[PC] It is not a great time to talk right now, Aran. In fact, it is a lousy time, so shut up.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1909 /* c-aranshutup3 */ + ~RandomNum(3,3)~ + ~[PC] It is not a great time to talk right now, Aran. In fact, it is a lousy time, so shut up.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1911 /* c-aranshutup5 */ ++ ~[PC] I was wondering what that smell was. I just assumed it was you.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2044 + ~InParty("aerie") InMyArea("aerie") Global("c-aranaerieud","LOCALS",0)~ + ~[PC] You keep that depressing talk up, and we will have to do something to calm Aerie down.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1687 + ~!Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1672 + ~Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1671 + ~OR(7) Global("c-arankravitchstory","LOCALS",1) Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) GlobalGT("c-aranmoonfight","LOCALS",0)~ + ~[PC] Hey, Aran, I remember you telling a story... can you tell it to me again?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1673 + ~InParty("WxJon") InMyArea("WxJon") !StateCheck("WxJon",CD_STATE_NOTVALID) Global("c-aran2113","GLOBAL",0)~ + ~[PC] Jonathan seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2113 + ~InParty("CHLOE") InMyArea("CHLOE") !StateCheck("CHLOE",CD_STATE_NOTVALID) Global("c-aran2114","GLOBAL",0)~ + ~[PC] Chloe seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2114 + ~InParty("RCHLOE") InMyArea("RCHLOE") !StateCheck("RCHLOE",CD_STATE_NOTVALID) Global("c-aran2115","GLOBAL",0)~ + ~[PC] Chloe seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2115 + ~InParty("CMALORA") InMyArea("CMALORA") !StateCheck("CMALORA",CD_STATE_NOTVALID) Global("c-aran2116","GLOBAL",0)~ + ~[PC] Alora seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2116 + ~InParty("CMGMIRIAM") InMyArea("CMGMIRIAM") !StateCheck("CMGMIRIAM",CD_STATE_NOTVALID) Global("c-aran2117","GLOBAL",0)~ + ~[PC] Mirriam seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",4) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2117 END IF ~~ a2043 SAY ~[ARAN] You know me so well, oh great leader. Unfortunately, there be little enough to joke about when th' smell down here be worse than anythin' I ever did smell.~ + ~InParty("DL#BWN") InMyArea("DL#BWN") !StateCheck("DL#BWN",CD_STATE_NOTVALID) Global("c-aran2123","GLOBAL",0)~ + ~[PC] Branwen seems to be handling this better than you are.~ + a2123 + ~InParty("DYNAHEIR") InMyArea("DYNAHEIR") !StateCheck("DYNAHEIR",CD_STATE_NOTVALID) Global("c-aran2124","GLOBAL",0)~ + ~[PC] Dynaheir seems to be handling this better than you are.~ + a2124 + ~InParty("E3Fade") InMyArea("E3Fade") !StateCheck("E3Fade",CD_STATE_NOTVALID) Global("c-aran2125","GLOBAL",0)~ + ~[PC] Fade seems to be handling this better than you are.~ + a2125 + ~InParty("FHLAND") InMyArea("FHLAND") !StateCheck("FHLAND",CD_STATE_NOTVALID) Global("c-aran2126","GLOBAL",0)~ + ~[PC] Andrei seems to be handling this better than you are.~ + a2126 + ~InParty("FHLSEB") InMyArea("FHLSEB") !StateCheck("FHLSEB",CD_STATE_NOTVALID) Global("c-aran2127","GLOBAL",0)~ + ~[PC] Sebastian seems to be handling this better than you are.~ + a2127 + ~InParty("Minsc") InMyArea("Minsc") !StateCheck("Minsc",CD_STATE_NOTVALID) Global("c-aran2176","GLOBAL",0)~ + ~[PC] Minsc seems to be handling this better than you are.~ + a2176 + ~InParty("Korgan") InMyArea("Korgan") !StateCheck("Korgan",CD_STATE_NOTVALID) Global("c-aran2177","GLOBAL",0)~ + ~[PC] Korgan seems to be handling this better than you are.~ + a2177 + ~InParty("Keldorn") InMyArea("Keldorn") !StateCheck("Keldorn",CD_STATE_NOTVALID) Global("c-aran2178","GLOBAL",0)~ + ~[PC] Keldorn seems to be handling this better than you are.~ + a2178 + ~InParty("Valygar") InMyArea("Valygar") !StateCheck("Valygar",CD_STATE_NOTVALID) Global("c-aran2179","GLOBAL",0)~ + ~[PC] Valygar seems to be handling this better than you are.~ + a2179 + ~InParty("Viconia") InMyArea("Viconia") !StateCheck("Viconia",CD_STATE_NOTVALID) Global("c-aran2180","GLOBAL",0)~ + ~[PC] Viconia seems to be handling this better than you are.~ + a2180 + ~InParty("Nalia") InMyArea("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID) Global("c-aran2181","GLOBAL",0)~ + ~[PC] Nalia seems to be handling this better than you are.~ + a2181 + ~InParty("Mazzy") InMyArea("Mazzy") !StateCheck("Mazzy",CD_STATE_NOTVALID) Global("c-aran2182","GLOBAL",0)~ + ~[PC] Mazzy seems to be handling this better than you are.~ + a2182 + ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID) Global("c-aran2183","GLOBAL",0)~ + ~[PC] Jaheira seems to be handling this better than you are.~ + a2183 + ~InParty("Jan") InMyArea("Jan") !StateCheck("Jan",CD_STATE_NOTVALID) Global("c-aran2184","GLOBAL",0)~ + ~[PC] Jan seems to be handling this better than you are.~ + a2184 + ~InParty("Imoen2") InMyArea("Imoen2") !StateCheck("Imoen2",CD_STATE_NOTVALID) Global("c-aran2185","GLOBAL",0)~ + ~[PC] Imoen seems to be handling this better than you are.~ + a2185 + ~InParty("HaerDalis") InMyArea("HaerDalis") !StateCheck("HaerDalis",CD_STATE_NOTVALID) Global("c-aran2186","GLOBAL",0)~ + ~[PC] HaerDalis seems to be handling this better than you are.~ + a2186 + ~InParty("Edwin") InMyArea("Edwin") !StateCheck("Edwin",CD_STATE_NOTVALID) Global("c-aran2187","GLOBAL",0)~ + ~[PC] Edwin seems to be handling this better than you are.~ + a2187 + ~InParty("Anomen") InMyArea("Anomen") !StateCheck("Anomen",CD_STATE_NOTVALID) Global("c-aran2188","GLOBAL",0)~ + ~[PC] Anomen seems to be handling this better than you are.~ + a2188 + ~InParty("Cernd") InMyArea("Cernd") !StateCheck("Cernd",CD_STATE_NOTVALID) Global("c-aran2189","GLOBAL",0)~ + ~[PC] Cernd seems to be handling this better than you are.~ + a2189 + ~InParty("Yoshimo") InMyArea("Yoshimo") !StateCheck("Yoshimo",CD_STATE_NOTVALID) Global("c-aran2190","GLOBAL",0)~ + ~[PC] Yoshimo seems to be handling this better than you are.~ + a2190 ++ ~[PC] We should be keeping our eyes open and not wasting time with all of this talk, you know.~ + a2052 ++ ~[PC] And here I thought you had experienced everything worth experiencing, oh teller of tall tales. Just think of the stories you will be able to tell your children. If any woman can get past the permanent stench, that is.~ + a2053 ++ ~[PC] You should stop worrying so much about everything, and concentrate on your duties.~ + a2054 ++ ~[PC] You could help move things along down here if you would actually hit something once in awhile. I thought you were a soldier, not a recruit.~ + a2055 ++ ~[PC] Hey, we can spice things up. Why don't we go find something really disgusting, and slowly torture it to death, just to hear it scream!~ + a2056 END IF ~~ a2044 SAY ~[ARAN] Now there be no call for that kind o' talk. I don't smell that bad, not on my worst day ever! An' it never lets up. At least topside you can get a breeze an' some relief.~ + ~InParty("FINIREN") InMyArea("FINIREN") !StateCheck("FINIREN",CD_STATE_NOTVALID) Global("c-aran2128","GLOBAL",0)~ + ~[PC] Irenicus seems to be handling this better than you are.~ + a2128 + ~InParty("FWGhareth") InMyArea("FWGhareth") !StateCheck("FWGhareth",CD_STATE_NOTVALID) Global("c-aran2129","GLOBAL",0)~ + ~[PC] Ghareth seems to be handling this better than you are.~ + a2129 + ~InParty("GOZALOTH") InMyArea("GOZALOTH") !StateCheck("GOZALOTH",CD_STATE_NOTVALID) Global("c-aran2130","GLOBAL",0)~ + ~[PC] Goo seems to be handling this better than you are.~ + a2130 + ~InParty("Horace") InMyArea("Horace") !StateCheck("Horace",CD_STATE_NOTVALID) Global("c-aran2131","GLOBAL",0)~ + ~[PC] Horace seems to be handling this better than you are.~ + a2131 + ~InParty("Hubelpot") InMyArea("Hubelpot") !StateCheck("Hubelpot",CD_STATE_NOTVALID) Global("c-aran2132","GLOBAL",0)~ + ~[PC] Hubelpot seems to be handling this better than you are.~ + a2132 + ~InParty("Minsc") InMyArea("Minsc") !StateCheck("Minsc",CD_STATE_NOTVALID) Global("c-aran2176","GLOBAL",0)~ + ~[PC] Minsc seems to be handling this better than you are.~ + a2176 + ~InParty("Korgan") InMyArea("Korgan") !StateCheck("Korgan",CD_STATE_NOTVALID) Global("c-aran2177","GLOBAL",0)~ + ~[PC] Korgan seems to be handling this better than you are.~ + a2177 + ~InParty("Keldorn") InMyArea("Keldorn") !StateCheck("Keldorn",CD_STATE_NOTVALID) Global("c-aran2178","GLOBAL",0)~ + ~[PC] Keldorn seems to be handling this better than you are.~ + a2178 + ~InParty("Valygar") InMyArea("Valygar") !StateCheck("Valygar",CD_STATE_NOTVALID) Global("c-aran2179","GLOBAL",0)~ + ~[PC] Valygar seems to be handling this better than you are.~ + a2179 + ~InParty("Viconia") InMyArea("Viconia") !StateCheck("Viconia",CD_STATE_NOTVALID) Global("c-aran2180","GLOBAL",0)~ + ~[PC] Viconia seems to be handling this better than you are.~ + a2180 + ~InParty("Nalia") InMyArea("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID) Global("c-aran2181","GLOBAL",0)~ + ~[PC] Nalia seems to be handling this better than you are.~ + a2181 + ~InParty("Mazzy") InMyArea("Mazzy") !StateCheck("Mazzy",CD_STATE_NOTVALID) Global("c-aran2182","GLOBAL",0)~ + ~[PC] Mazzy seems to be handling this better than you are.~ + a2182 + ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID) Global("c-aran2183","GLOBAL",0)~ + ~[PC] Jaheira seems to be handling this better than you are.~ + a2183 + ~InParty("Jan") InMyArea("Jan") !StateCheck("Jan",CD_STATE_NOTVALID) Global("c-aran2184","GLOBAL",0)~ + ~[PC] Jan seems to be handling this better than you are.~ + a2184 + ~InParty("Imoen2") InMyArea("Imoen2") !StateCheck("Imoen2",CD_STATE_NOTVALID) Global("c-aran2185","GLOBAL",0)~ + ~[PC] Imoen seems to be handling this better than you are.~ + a2185 + ~InParty("HaerDalis") InMyArea("HaerDalis") !StateCheck("HaerDalis",CD_STATE_NOTVALID) Global("c-aran2186","GLOBAL",0)~ + ~[PC] HaerDalis seems to be handling this better than you are.~ + a2186 + ~InParty("Edwin") InMyArea("Edwin") !StateCheck("Edwin",CD_STATE_NOTVALID) Global("c-aran2187","GLOBAL",0)~ + ~[PC] Edwin seems to be handling this better than you are.~ + a2187 + ~InParty("Anomen") InMyArea("Anomen") !StateCheck("Anomen",CD_STATE_NOTVALID) Global("c-aran2188","GLOBAL",0)~ + ~[PC] Anomen seems to be handling this better than you are.~ + a2188 + ~InParty("Cernd") InMyArea("Cernd") !StateCheck("Cernd",CD_STATE_NOTVALID) Global("c-aran2189","GLOBAL",0)~ + ~[PC] Cernd seems to be handling this better than you are.~ + a2189 + ~InParty("Yoshimo") InMyArea("Yoshimo") !StateCheck("Yoshimo",CD_STATE_NOTVALID) Global("c-aran2190","GLOBAL",0)~ + ~[PC] Yoshimo seems to be handling this better than you are.~ + a2190 ++ ~[PC] We should be keeping our eyes open and not wasting time with all of this talk, you know.~ + a2052 ++ ~[PC] Unless, of course, you are downwind of a certain Aran Whitehand... at which point the stream of gas is almost constant.~ + a2053 ++ ~[PC] You should stop worrying so much about everything, and concentrate on your duties.~ + a2054 ++ ~[PC] You could help move things along down here if you would actually hit something once in awhile. I thought you were a soldier, not a recruit.~ + a2055 ++ ~[PC] Hey, we can spice things up. Why don't we go find something really disgusting, and slowly torture it to death, just to hear it scream!~ + a2056 END IF ~~ a1687 SAY ~[ARAN] Aye, I be a mite worried about that girl. Girl? Woman? Don't rightly know which to call her, nohow. On th' one hand, she can blow th' crap out o' a fight wi' a well placed spell, but on th' other hand she seems right innocent for a circus follower. This whole underground warren o' evil be th' wrong place for her, for sure.~ ++ ~[PC] You seem to be spending a good deal of time looking over at her.~ + a1695 ++ ~[PC] You let me worry about Aerie. I think you have enough trouble just keeping up with your own problems.~ + a1704 END IF ~~ a1695 SAY ~[ARAN] Look, I'm not about to lie to you. Aerie, she tugs at my heartstrings, an' a bit at my loins too. I'd not be a man if I didn't see her as a might bit attractive.~ IF ~Gender(Player1,MALE)~ DO ~SetGlobal("c-aranaerieud","LOCALS",1)~ GOTO a1696 IF ~Gender(Player1,FEMALE) !Global("c-aranrom","GLOBAL",2)~ DO ~SetGlobal("c-aranaerieud","LOCALS",1)~ GOTO a1697 IF ~Gender(Player1,FEMALE) Global("c-aranrom","GLOBAL",2)~ DO ~SetGlobal("c-aranaerieud","LOCALS",1)~ GOTO a1698 END IF ~~ a1696 SAY ~[ARAN] Man to man, though, an' no offense intended, but she's way too high maintenance for me. I'd not bed her, for fear o' hurtin' her. She don't need no romp. She needs someone what can give her th' support, patience, an' true love what will heal her. Me, I'm not rightly that man. You might be, though...~ IF ~~ THEN EXIT END IF ~~ a1697 SAY ~[ARAN] Friend to friend, though, an' no offense intended, but she's a might too high maintenance for me. I'd not kick her out o' my bedroll if she came callin' lookin' for comfort, but I'm not lookin' to tie myself down for a long term contract. An' I think she probably won't be up for anythin' short of a lifetime commitment.~ ++ ~[PC] Is that what you say about me behind my back, too?~ + a1699 + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] That didn't stop you from having some fun with me, if I recall correctly.~ + a1700 END IF ~~ a1698 SAY ~[ARAN] But <CHARNAME>, no offense intended... I am not sure why you think I'd prefer her over you. You are beautiful, special, an' make me feel... well, you make me feel. Why would I go throw that away on a high maintenance Avariel what needs protectin', comfortin', an' hand-holdin' just to get out o' bed in th' morning? I think I have been pretty clear on what I want. An' that be you.~ IF ~~ THEN EXIT END IF ~~ a1699 SAY ~[ARAN] No way, no how, naught. I know to keep my mouth shut on that subject. Though I do think I probably wouldn't kick you out o' my bedroll if you came a-callin', either.~ ++ ~[PC] Why do I get the feeling that very few women would ever be refused your "comfort"?~ + a1702 ++ ~[PC] How does a rough, ill-mannered, uppity, vagabond sellsword like yourself get away with being so free in his manner with women?~ + a1702 ++ ~[PC] You just don't know where friendly joking ends and rude pushy stupidity begins, do you.~ + a1701 + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] You are so.... so... Why did I ever let you sleep with me?~ + a1700 END IF ~~ a1700 SAY ~[ARAN] Well, now, if I do be recallin' correctly in return, that was mutual attraction. Plus a mite bit o' stress. An' a good deal o' "Oh, gods, Aran, gods...", which do a man's ego a huge boost, it does.~ = ~[ARAN] But wi' you, there is a big difference. Even when you don't know your own mind, you have a presence, a way o' bein' there that be right different than Aerie. Or mayhap... mayhap I think o' you in a completely different way, eh?~ IF ~~ THEN EXIT END IF ~~ a1701 SAY ~[ARAN] You mean to say there be a line between th' two? Heh. That explains why so many women seem to think my cheeks make good slappin' targets.~ IF ~~ THEN EXIT END IF ~~ a1702 SAY ~[ARAN] Well, my mother done taught me right. If a lady needs somethin', don't talk back - just do what she be askin'. Saves a heap o' trouble, it does. Except that time when I done what th' lady asked, only to find out there should have been a mite bit more communication with her husband...~ IF ~~ THEN EXIT END IF ~~ a1703 SAY ~[ARAN] Well, when you put it that way, I suspect you be right.~ IF ~~ THEN EXIT END IF ~~ a1704 SAY ~[ARAN] An' what, pray tell, be my problems?~ ++ ~[PC] Besides always smelling like a badly burned pot of beans or decomposing swamp gas about an hour after eating curry?~ + a1703 ++ ~[PC] You mean in addition to never being able to shut up?~ + a1703 + ~Gender(Player1,FEMALE)~ + ~[PC] Do I have to mention the whole "oh, I just accidentally walked around the bushes and saw you with no clothes on, <CHARNAME>, don't mind me" incident?~ + a1703 + ~Gender(Player2,FEMALE) !Name("c-aran",Player2)~ + ~[PC] Do I have to mention the whole "oh, sorry, <PLAYER3>, don't mind me. I am just checking to see if your bust will fit into this here Drow armor" incident?~ + a1703 + ~Gender(Player3,FEMALE) !Name("c-aran",Player3)~ + ~[PC] Do I have to mention the whole "oh, I just accidentally tripped and grabbed your buttocks, <PLAYER3>, don't mind me" incident?~ + a1703 + ~Gender(Player4,FEMALE) !Name("c-aran",Player4)~ + ~[PC] Do I have to mention the whole "<PLAYER4> might need some help stuffing her bottom into that Drow outfit" incident?~ + a1703 + ~Gender(Player5,FEMALE) !Name("c-aran",Player5)~ + ~[PC] Do I have to mention the whole "<PLAYER5>, just let me tighten that strap for you" incident?~ + a1703 + ~Gender(Player6,FEMALE) !Name("c-aran",Player6) !Name("viconia",Player6)~ + ~[PC] Do I have to mention the whole "<PLAYER6>, you have something on your chest, let me brush it off" incident?~ + a1703 ++ ~[PC] Oh, you don't *have* problems. You just *cause* problems.~ + a1703 ++ ~[PC] Let me see... Swearing at every opportunity, check. Being crude, check. Being offensive, check. Being drunk... check, check, check, and check. Hardly ever picking up the check, check.~ + a1703 END /* SoA UnderDark FriendTalk 3 */ IF ~Global("c-aranfriendud","GLOBAL",5)~ THEN BEGIN a1691 SAY ~[ARAN] So, you doin' anythin' fun tonight? I figure we could use some distraction from all this grimness an' darkness.~ ++ ~[PC] Err... Aran... look around. Do you really think this is a place with a nice corner pub we can go visit?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2045 ++ ~[PC] Actually, I thought I would go for a nice walk. Do you want to come along?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2046 ++ ~[PC] Oh, no you don't. I am not falling for that again. Last time, we ended up in a dice game that cost me dearly.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2047 ++ ~[PC] I think a cooking contest is in order. The secret ingredient will be... fungus!~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2048 + ~RandomNum(3,1)~ + ~[PC] Do I look like I am in the mood for talk of any kind?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1907 /* c-aranshutup1 */ + ~RandomNum(3,2)~ + ~[PC] Do I look like I am in the mood for talk of any kind?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1943 /* c-aranshutup37 */ + ~RandomNum(3,3)~ + ~[PC] Do I look like I am in the mood for talk of any kind?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1911 /* c-aranshutup5 */ + ~InParty("aerie") InMyArea("aerie") Global("c-aranaerieud","LOCALS",0)~ + ~[PC] We should do something to perk up Aerie. She seems to be very upset about being down here.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1687 + ~!Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1672 + ~Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1671 + ~OR(7) Global("c-arankravitchstory","LOCALS",1) Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) GlobalGT("c-aranmoonfight","LOCALS",0)~ + ~[PC] Hey, Aran, I remember you telling a story... can you tell it to me again?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1673 + ~InParty("CMNIKITA") InMyArea("CMNIKITA") !StateCheck("CMNIKITA",CD_STATE_NOTVALID) Global("c-aran2118","GLOBAL",0)~ + ~[PC] Nikita seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2118 + ~InParty("CMNINAF") InMyArea("CMNINAF") !StateCheck("CMNINAF",CD_STATE_NOTVALID) Global("c-aran2119","GLOBAL",0)~ + ~[PC] Ninafer seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2119 + ~InParty("CORAN") InMyArea("CORAN") !StateCheck("CORAN",CD_STATE_NOTVALID) Global("c-aran2120","GLOBAL",0)~ + ~[PC] Coran seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2120 + ~InParty("D#Silver") InMyArea("D#Silver") !StateCheck("D#Silver",CD_STATE_NOTVALID) Global("c-aran2121","GLOBAL",0)~ + ~[PC] SilverStar seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2121 + ~InParty("D0Alassa") InMyArea("D0Alassa") !StateCheck("D0Alassa",CD_STATE_NOTVALID) Global("c-aran2122","GLOBAL",0)~ + ~[PC] Alassa seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2122 + ~InParty("Rylorn") InMyArea("Rylorn") !StateCheck("Rylorn",CD_STATE_NOTVALID) Global("c-aran2168","GLOBAL",0)~ + ~[PC] Rylorn seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2168 + ~InParty("SAERILETH") InMyArea("SAERILETH") !StateCheck("SAERILETH",CD_STATE_NOTVALID) Global("c-aran2169","GLOBAL",0)~ + ~[PC] Sarileth seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2169 + ~InParty("SIME") InMyArea("SIME") !StateCheck("SIME",CD_STATE_NOTVALID) Global("c-aran2171","GLOBAL",0)~ + ~[PC] Sime seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2171 + ~InParty("SUBRU") InMyArea("SUBRU") !StateCheck("SUBRU",CD_STATE_NOTVALID) Global("c-aran2170","GLOBAL",0)~ + ~[PC] Bruce seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2170 + ~InParty("SK#NEHT") InMyArea("SK#NEHT") !StateCheck("SK#NEHT",CD_STATE_NOTVALID) Global("c-aran2172","GLOBAL",0)~ + ~[PC] Neh'taniel seems to be handling this better than you are.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2172 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",0)~ THEN DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ GOTO a1783 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",1) GlobalTimerExpired("c-aranskin","GLOBAL")~ THEN DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ GOTO a1784 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",2) GlobalTimerExpired("c-aranskin","GLOBAL")~ THEN DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ GOTO a1785 END IF ~~ a1783 SAY ~[ARAN] Hey, your armor be all wrong. I know you be th' scourge o' Faerun, but you don't have to wear your heart on your sleeve, eh? In this case, someone else's, by th' look. Not a great morale boostin' thing, by my account.~ IF ~~ THEN DO ~SetGlobal("c-arskinarm","LOCALS",1) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ GOTO a1792 END IF ~~ a1792 SAY ~[ARAN] But there be more botherin' me than that bundle o' leathered human skin you be wearin'. There has to be somethin' fun around here to do. I figure we could use some distraction from all this grimness an' darkness.~ ++ ~[PC] Err... Aran... look around. Do you really think this is a place with a nice corner pub we can go visit?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2045 ++ ~[PC] Actually, I thought I would go for a nice walk. Do you want to come along?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2046 ++ ~[PC] Oh, no you don't. I am not falling for that again. Last time, we ended up in a dice game that cost me dearly.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2047 ++ ~[PC] I think a cooking contest is in order. The secret ingredient will be... fungus!~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a2048 + ~RandomNum(3,1)~ + ~[PC] Do I look like I am in the mood for talk of any kind?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1907 /* c-aranshutup1 */ + ~RandomNum(3,2)~ + ~[PC] Do I look like I am in the mood for talk of any kind?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1943 /* c-aranshutup37 */ + ~RandomNum(3,3)~ + ~[PC] Do I look like I am in the mood for talk of any kind?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1911 /* c-aranshutup5 */ + ~InParty("aerie") InMyArea("aerie") Global("c-aranaerieud","LOCALS",0)~ + ~[PC] We should do something to perk up Aerie. She seems to be very upset about being down here.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1687 + ~!Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1672 + ~Class("c-aran",BARD_ALL)~ + ~[PC] Well, take your mind off of it. Tell me a story to distract from all this oppressive darkness.~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1671 + ~OR(7) Global("c-arankravitchstory","LOCALS",1) Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) GlobalGT("c-aranmoonfight","LOCALS",0)~ + ~[PC] Hey, Aran, I remember you telling a story... can you tell it to me again?~ DO ~SetGlobal("c-aranfriendud","GLOBAL",6) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1673 END IF ~~ a1784 SAY ~[ARAN] You stll be wearin' that Grumbar-lovin' Cyric-blighted armor? Gives me th' chills, it does.~ ++ ~[PC] If it bothers you that much, I will take it off.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + a1786 ++ ~[PC] I think it has a great effect on our opponents' morale. You are just going to have to get used to it.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + a1786 ++ ~[PC] If I wanted you opinion, I would have asked.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + a1786 ++ ~[PC] Shut up, or your ears will add decoration to it.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + a1786 END IF ~~ a1785 SAY ~[ARAN] Look, I do a good bit around here, an' I know you be th' leader. I'm just sayin', that armor makes it blighted hard for me to do my job. Th' smell be only part o' it. Shar's Kiss, get rid o' it, eh?~ ++ ~[PC] Or you will run crying like a weakling child, break your contract, and leave?~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1787 ++ ~[PC] Shut up, Aran. I heard you the first two times. I will use what tools I see fit to advance my goals.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1787 ++ ~[PC] Are you volunteering to add more skin to this armor? Speak again, and I will consider you have volunteered.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1787 ++ ~[PC] I may very well take it off. You are useful. But then again, I might put it back on. You will have to get used to it, or leave.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1787 ++ ~[PC] You do very little, and I am tired of your whining. That is the lasty warning you will get.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + a1787 END IF ~~ a1786 SAY ~[ARAN] Hey, I don't go around second guessin' you. So if I be sayin' it, you know there be one hells of a lot more people who have noticed. Might fit your ideas, but it be bad tactics to give away your position that way.~ IF ~~ THEN GOTO a1792 END IF ~~ a1787 SAY ~[ARAN] Cyric's Black Heart, I don't run out on contracts. But you smell worse than a charnelhouse. If I throw up, you will be knowin' why.~ IF ~~ THEN GOTO a1792 END IF ~~ a2045 SAY ~[ARAN] You have a good point there. Th' only pub I might find around here probably serves our blood up as an appetizer, an' our fingers an' toes as side dishes.~ + ~InParty("IYLOS") InMyArea("IYLOS") !StateCheck("IYLOS",CD_STATE_NOTVALID) Global("c-aran2133","GLOBAL",0)~ + ~[PC] Ilyos seems to be handling this better than you are.~ + a2133 + ~InParty("xulaye") InMyArea("xulaye") !StateCheck("xulaye",CD_STATE_NOTVALID) Global("c-aran2134","GLOBAL",0)~ + ~[PC] Xulae seems to be handling this better than you are.~ + a2134 + ~InParty("YASRAENA") InMyArea("YASRAENA") !StateCheck("YASRAENA",CD_STATE_NOTVALID) Global("c-aran2135","GLOBAL",0)~ + ~[PC] Yasraena seems to be handling this better than you are.~ + a2135 + ~InParty("ZAIYA") InMyArea("ZAIYA") !StateCheck("ZAIYA",CD_STATE_NOTVALID) Global("c-aran2136","GLOBAL",0)~ + ~[PC] Zaia seems to be handling this better than you are.~ + a2136 + ~InParty("J#Kelsey") InMyArea("J#Kelsey") !StateCheck("J#Kelsey",CD_STATE_NOTVALID) Global("c-aran2137","GLOBAL",0)~ + ~[PC] Kelsey seems to be handling this better than you are.~ + a2137 + ~InParty("O#XAN") InMyArea("O#XAN") !StateCheck("O#XAN",CD_STATE_NOTVALID) Global("c-aran2163","GLOBAL",0)~ + ~[PC] Xan seems to be handling this better than you are.~ + a2163 + ~InParty("P#DEHER") InMyArea("P#DEHER") !StateCheck("P#DEHER",CD_STATE_NOTVALID) Global("c-aran2164","GLOBAL",0)~ + ~[PC] Xan seems to be handling this better than you are.~ + a2164 + ~InParty("P#KIVAN") InMyArea("P#KIVAN") !StateCheck("P#KIVAN",CD_STATE_NOTVALID) Global("c-aran2165","GLOBAL",0)~ + ~[PC] Kivan seems to be handling this better than you are.~ + a2165 + ~InParty("R#ALLIS") InMyArea("R#ALLIS") !StateCheck("R#ALLIS",CD_STATE_NOTVALID) Global("c-aran2166","GLOBAL",0)~ + ~[PC] Allison seems to be handling this better than you are.~ + a2166 + ~InParty("R#Kitanya") InMyArea("R#Kitanya") !StateCheck("R#Kitanya",CD_STATE_NOTVALID) Global("c-aran2167","GLOBAL",0)~ + ~[PC] Kitanya seems to be handling this better than you are.~ + a2167 + ~InParty("Minsc") InMyArea("Minsc") !StateCheck("Minsc",CD_STATE_NOTVALID) Global("c-aran2176","GLOBAL",0)~ + ~[PC] Minsc seems to be handling this better than you are.~ + a2176 + ~InParty("Korgan") InMyArea("Korgan") !StateCheck("Korgan",CD_STATE_NOTVALID) Global("c-aran2177","GLOBAL",0)~ + ~[PC] Korgan seems to be handling this better than you are.~ + a2177 + ~InParty("Keldorn") InMyArea("Keldorn") !StateCheck("Keldorn",CD_STATE_NOTVALID) Global("c-aran2178","GLOBAL",0)~ + ~[PC] Keldorn seems to be handling this better than you are.~ + a2178 + ~InParty("Valygar") InMyArea("Valygar") !StateCheck("Valygar",CD_STATE_NOTVALID) Global("c-aran2179","GLOBAL",0)~ + ~[PC] Valygar seems to be handling this better than you are.~ + a2179 + ~InParty("Viconia") InMyArea("Viconia") !StateCheck("Viconia",CD_STATE_NOTVALID) Global("c-aran2180","GLOBAL",0)~ + ~[PC] Viconia seems to be handling this better than you are.~ + a2180 + ~InParty("Nalia") InMyArea("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID) Global("c-aran2181","GLOBAL",0)~ + ~[PC] Nalia seems to be handling this better than you are.~ + a2181 + ~InParty("Mazzy") InMyArea("Mazzy") !StateCheck("Mazzy",CD_STATE_NOTVALID) Global("c-aran2182","GLOBAL",0)~ + ~[PC] Mazzy seems to be handling this better than you are.~ + a2182 + ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID) Global("c-aran2183","GLOBAL",0)~ + ~[PC] Jaheira seems to be handling this better than you are.~ + a2183 + ~InParty("Jan") InMyArea("Jan") !StateCheck("Jan",CD_STATE_NOTVALID) Global("c-aran2184","GLOBAL",0)~ + ~[PC] Jan seems to be handling this better than you are.~ + a2184 + ~InParty("Imoen2") InMyArea("Imoen2") !StateCheck("Imoen2",CD_STATE_NOTVALID) Global("c-aran2185","GLOBAL",0)~ + ~[PC] Imoen seems to be handling this better than you are.~ + a2185 + ~InParty("HaerDalis") InMyArea("HaerDalis") !StateCheck("HaerDalis",CD_STATE_NOTVALID) Global("c-aran2186","GLOBAL",0)~ + ~[PC] HaerDalis seems to be handling this better than you are.~ + a2186 + ~InParty("Edwin") InMyArea("Edwin") !StateCheck("Edwin",CD_STATE_NOTVALID) Global("c-aran2187","GLOBAL",0)~ + ~[PC] Edwin seems to be handling this better than you are.~ + a2187 + ~InParty("Anomen") InMyArea("Anomen") !StateCheck("Anomen",CD_STATE_NOTVALID) Global("c-aran2188","GLOBAL",0)~ + ~[PC] Anomen seems to be handling this better than you are.~ + a2188 + ~InParty("Cernd") InMyArea("Cernd") !StateCheck("Cernd",CD_STATE_NOTVALID) Global("c-aran2189","GLOBAL",0)~ + ~[PC] Cernd seems to be handling this better than you are.~ + a2189 + ~InParty("Yoshimo") InMyArea("Yoshimo") !StateCheck("Yoshimo",CD_STATE_NOTVALID) Global("c-aran2190","GLOBAL",0)~ + ~[PC] Yoshimo seems to be handling this better than you are.~ + a2190 ++ ~[PC] We should be keeping our eyes open and not wasting time with all of this talk, you know.~ + a2052 ++ ~[PC] I'll take a side order of Aran Toes, but go light on the fungus.~ + a2053 ++ ~[PC] I think you are doing well, Aran. You should stop worrying so much.~ + a2054 ++ ~[PC] You could help move things along down here if you would actually hit something once in awhile. I thought you were a soldier, not a recruit.~ + a2055 ++ ~[PC] Hey, we can spice things up. Why don't we go fid something really disgusting, and slowly torture it to death, just to hear it scream!~ + a2056 END
  8. This talk is a mini-micro-quest, setup to leverage Aran's skills for a reward in a way that makes in-game sense. The original interlude is set using C-ARAND.BCS, the "dreamscript" that is checked at rest, so if the player avoids resting in the Keep after attaining it, they don't get it. It has checks for romantic Encounters' Chanelle in the .bcs, and is set up so it could make sense for visits other than the first time (though it stretches it a bit. I am banking on player behavior being to rest when a party member is wounded or when they get to a destination/leave one). The follow up shpws up only if the player pursues gain; you gotta love having a corporate raider do some dirty work, for those evil players out there. The mini-micro quest manipulates the revolt value from vanilla. Notes to self: the .bcs block needs compatability check/adjustment for D'Arnese (Jcompton, PPG) and states a2208 and a2209 need an evil response. I thought the + ~!Class("c-aran",PALADIN_ALL)~ + ~[PC] You would do that? Cheat these people?~ + a2210 + ~Class("c-aran",PALADIN_ALL)~ + ~[PC] You would do that? Cheat these people?~ + a2211 was enough, but I think it is too subtle for the players who would go "wtf, give me an option where I can suggest that is EXACTLY what I want, right up front! Subtlety is for people who have not figured out everything can be solved by the suitable application of blunt force trauma!" Cleanup and integration of materials from http://forums.gibberlings3.net/index.php?s...st&p=166974 /* Stone Walls, Stone Hearts, Stone Heads : Dream Script, De'Arnise Keep (Stronghold) Dialog */ /* Set from C-ARAND after keep is owned */ IF ~Global("c-arandreamstone","GLOBAL",1) TimeOfDay(DAY)~ a2194 SAY ~[ARAN] There you are. I thought you might be off tryin' to get some sleep. Hells, there be a shortage o' candles in this place, eh? It be daylight outside, but in here it be gloomier than a one legged man at a dancin' contest. Anyways, I needed to bend your ear a mite.~ IF ~~ THEN DO ~SetGlobal("c-arandreamstone","GLOBAL",2)~ GOTO a2196 END IF ~Global("c-arandreamstone","GLOBAL",1) TimeOfDay(NIGHT)~ a2195 SAY ~[ARAN] There you are. I thought you might be off tryin' to get some sleep. Hells, there be a shortage o' candles in this place, eh? It be night outside so you'd think they would run out some good lanterns or a spell or two an' brighten th' place up, but in here it be gloomier than a one legged man at a dancin' contest. Anyways, I needed to bend your ear a mite.~ IF ~~ THEN DO ~SetGlobal("c-arandreamstone","GLOBAL",2)~ GOTO a2196 END IF ~~ a2196 SAY ~[ARAN] Now that you have a solid defensible position, mayhap you want to gather an army, an' get settled a mite before takin' on th' rest of the world, eh? Not that you have to listen to me, tryin' to tell you what to do. I just keep these lips flappin' way too much.~ + ~Gender(Player1,FEMALE)~ + ~[PC] Actually, I had some other ideas for those lips of yours. I think I need a respite from all this heavy responsibility.~ + a2202 + ~Gender(Player1,FEMALE)~ + ~[PC] I agreed to help Nalia because it was in my best interests. We will wait for as long as it takes me to figure out how to best profit from all of this.~ + a2208 ++ ~[PC] We have to make sure that the Keep is secured, and things are settled. But we need to move on as quickly as we can, too. I am debating whether to take Nalia along, or leave her here to make sure things get reorganized.~ + a2214 ++ ~[PC] You have no idea what you are talking about, and even if you did, what makes you think I want to hear it from you?~ + a2199 ++ ~[PC] Aran. Shut up. Go away. Now.~ + c-aranshutup39 + ~!HPPercentLT(Player1,30)~ + ~[PC] I think we had better move on quickly. I do not think we can afford to wait.~ + a2200 + ~HPPercentLT(Player1,30)~ + ~[PC] I think we had better move on quickly. I do not think we can afford to wait.~ + a2201 + ~Gender(Player1,MALE)~ + ~[PC] I agreed to help Nalia because it was in my best interests. We will wait for as long as it takes me to figure out how to best profit from all of this.~ + a2209 + ~Gender(Player1,MALE) Global("RE_ChanelleFlirt","GLOBAL",1) !Global("RE_ChanelleSex","GLOBAL",1)~ + ~[PC] Actually, I was thinking of taking a bath. I think there is a set of washtubs in the master suite.~ + a2198 + ~Gender(Player1,MALE) !Global("RE_ChanelleFlirt","GLOBAL",1) Global("RE_ChanelleSex","GLOBAL",1)~ + ~[PC] Actually, I was thinking of taking a bath. I think there is a set of washtubs in the master suite.~ + a2198 + ~Gender(Player1,MALE) !Global("RE_ChanelleFlirt","GLOBAL",1) !Global("RE_ChanelleSex","GLOBAL",1)~ + ~[PC] Actually, I was thinking of taking a bath. I think there is a set of washtubs in the master suite.~ + a2197 END IF ~~ a2197 SAY ~[ARAN] That sounds like a right nice idea. Just so you know, though, one o' th' maids was askin' about you, for some odd chore or somethin'. I'd duck in an' out o' there right quick, so you don't get no more things to handle tonight. But about my questions, do you have some time, or not?~ IF ~~ THEN GOTO a2205 END IF ~~ a2198 SAY ~[ARAN] Riiiight. A bath. Got it. Just be a mite bit more careful when you get in that water, eh? There were a powerful lot o' screamin' an' laughin' last time, an' I think some o' th' servants are beginnin' to talk. But before you go dippin' your various parts into various things, do you have that mite bit o' time?~ IF ~~ THEN GOTO a2205 END IF ~~ a2199 /* 7 replies possible, down to 5 if non-edwin/minsc */ SAY ~[ARAN] What are you blighted well talkin' about? This be my forte, eh? I thought you'd be wantin' some help gettin' this place in order.~ ++ ~[PC] I can handle things myself. Just go get some sleep, and I'll give you orders in the morning.~ + a2217 + ~InParty("edwin") !InParty("minsc") !Global("c-aranrom","GLOBAL",1) !Global("c-aranrom","GLOBAL",2)~ + ~[PC] If I wanted some unwashed idiot spouting orders about how to do things, I would have asked Edwin to run things for me. Even he would give better advice than you.~ + a2217 + ~!InParty("edwin") InParty("minsc") !Global("c-aranrom","GLOBAL",1) !Global("c-aranrom","GLOBAL",2)~ + ~[PC] If I wanted some unwashed idiot spouting orders about how to do things, I would have asked Minsc to run things for me. Even he would give better advice than you.~ + a2217 + ~InParty("edwin") InParty("minsc") !Global("c-aranrom","GLOBAL",1) !Global("c-aranrom","GLOBAL",2)~ + ~[PC] If I wanted some unwashed idiot spouting orders about how to do things, I would have asked Minsc or Edwin to run things for me. Both would give better advice than you.~ + a2217 ++ ~[PC] I appreciate the input, but I have too much on my hands right now. How about we have a good night's sleep, and then you draft up some plans on how you would go about defending this place. We can have a meeting some other time to go over it, ok?~ + a2225 + ~InParty("edwin") !InParty("minsc") OR(2) Global("c-aranrom","GLOBAL",1) Global("c-aranrom","GLOBAL",2)~ + ~[PC] If I wanted some unwashed idiot spouting orders about how to do things, I would have asked Edwin to run things for me. Even he would give better advice than you.~ + a2218 + ~!InParty("edwin") InParty("minsc") OR(2) Global("c-aranrom","GLOBAL",1) Global("c-aranrom","GLOBAL",2)~ + ~[PC] If I wanted some unwashed idiot spouting orders about how to do things, I would have asked Minsc to run things for me. Even he would give better advice than you.~ + a2218 + ~InParty("edwin") InParty("minsc") OR(2) Global("c-aranrom","GLOBAL",1) Global("c-aranrom","GLOBAL",2)~ + ~[PC] If I wanted some unwashed idiot spouting orders about how to do things, I would have asked Minsc or Edwin to run things for me. Both would give better advice than you.~ + a2218 + ~Gender(Player1,FEMALE)~ + ~[PC] Hey, don't get upset. You get all cute and kissable when you are upset, and I might be too tired to resist your charms.~ + a2202 + ~Gender(Player1,MALE)~ + ~[PC] Hey, don't get upset. I am just too tired to think about this right now. We are all heroes, here - why don't you go relax by flirting with one of the cute chambermaids? They probably won't be able to resist your charms.~ + a2225 ++ ~[PC] Well, talk, then. But make it quick.~ + a2205 ++ ~[PC] I'm sorry. That was a little short. Blame it on the lack of sleep, and this whole "save the world every day" thing we seem to have going.~ + a2205 END IF ~~ a2200 SAY ~[ARAN] Well fine. But there be some good tactical thought behind stayin' put for awhile. These lands have had th' crap kicked out o' 'em, and mayhap seein' you around a couple more times will give them a morale boost. Plus, give us a mite bit o' a rest to build up some scrolls an' supplies before movin' on.~ IF ~~ THEN GOTO a2205 END IF ~~ a2201 SAY ~[ARAN] Bloody hells, <CHARNAME>... look at you! There be half an inch o' you what hasn't been ripped, torn, or otherwise mauled. You need a good solid rest, some magical healin', an' mayhap an armorsmith to put th' party gear back in operation. An' there be some good tactical thought behind stayin' put for awhile. These lands have had th' crap kicked out o' 'em, and mayhap seein' you around a couple more times will give them a morale boost. Plus, give us a mite bit o' a rest to build up some scrolls an' supplies before movin' on.~ IF ~~ THEN GOTO a2205 END IF ~~ a2202 /* only attainable by Gender(Player1,FEMALE) */ SAY ~[ARAN] Now, hold on one second. Do you think I be so easy you can just have your way wi' me any time you want?~ ++ ~[PC] Well, seeing as you are not really complaining while I am currently wrapping my arms around your neck and brushing your cheek with my eyelashes, yes.~ + a2204 ++ ~[PC] Judging by how close you are holding me, and how your lips keep grazing my ear, yes.~ + a2204 ++ ~[PC] Look, all that grabbing at my waist with your hands is very much unwanted. Go find someone else, because I am just not interested.~ + a2205 ++ ~[PC] On second thought, I don't know if this is the time and place, Aran. I'm not even sure I want this kind of attention from you.~ + a2203 + ~Global("c-aranflirtstop","GLOBAL",0)~ + ~[PC] I let you flirt because it keeps you in line, but I am very much in love with someone else. I am not sure we should be sneaking around, even if it is fun.~ + a2203 + ~Global("c-aranflirtstop","GLOBAL",1)~ + ~[PC] You are so easy to tease. Forget it, Aran. I told you I did not want you to flirt with me. I just wanted to see what you would say.~ + a2203 ++ ~[PC] Yes.~ + a2203 END IF ~~ a2203 SAY ~[ARAN] Now, I'm not rightly goin' to argue wi' you. A little kissin' never hurt nobody, an' there be naught else we can do in just a stolen moment, eh? So do you want to kiss, or not?~ ++ ~[PC] Judging by how close you are holding me, and how your lips keep grazing my ear, yes.~ + a2204 ++ ~[PC] Well, seeing as you are not really complaining while I am currently wrapping my arms around your neck and brushing your cheek with my eyelashes, yes.~ + a2204 ++ ~[PC] Nope. Tactical distraction. Works every time. Now, why don't you say what it is you were trying to say?~ + a2205 ++ ~[PC] I was joking, Aran. The thought of kissing you actually is quite disgusting. What is it you are annoying me with now?~ + a2205 ++ ~[PC] You are easily misdirected with the mere offer of affection. That is a tactical weakness that I do so enjoy exploiting. One day, it will kill you.~ + a2205 END IF ~~ a2204 SAY ~[ARAN] Well, I did have me some ideas for th' security an' defense o' this place, but I have naught in th' way o' resistance to your womanly wiles, eh?~ IF ~~ THEN GOTO a2215 END IF ~~ a2205 SAY ~[ARAN] I was just offerin' some help, is all. I done found some o' th' architectural drawin's, an' land levies for militia service. I wanted to get a word in wi' you on how to proceed.~ + ~HPPercentLT(Player1,40) Gender(Player1,MALE)~ + ~[PC] No time like the present, though I wish I could have rested first. I think I will drip blood all over this parchment. Let's see... yes. Go ahead and call up these militia for at least one tenday service, until we can get everything covered with professionals.~ + a2225 + ~HPPercentLT(Player1,40) Gender(Player1,MALE)~ + ~[PC] I think I will sit down for a minute, seeing as most of my body hurts. Let's see... yes. Go ahead and pull what you need from manpower and supplies to block off that section. Less to defend means more attention on rebuilding.~ + a2225 + ~!HPPercentLT(Player1,40)~ + ~[PC] Hmmm. Yes, this makes sense. Go ahead and pull what you need from manpower and supplies to block off that section. Less to defend means more attention on rebuilding.~ + a2225 + ~!HPPercentLT(Player1,40)~ + ~[PC] No time like the present, though I wish I could have rested first. Let's see... yes. Go ahead and call up these militia for at least one tenday service, until we can get everything covered with professionals.~ + a2225 + ~HPPercentLT(Player1,40) !Gender(Player1,MALE)~ + ~[PC] No time like the present, though I wish I could have rested first. I think I will drip blood all over this parchment. Let's see... yes. Go ahead and call up these militia for at least one tenday service, until we can get everything covered with professionals.~ + a2216 + ~HPPercentLT(Player1,40) !Gender(Player1,MALE)~ + ~[PC] I think I will sit down for a minute, seeing as most of my body hurts. Let's see... yes. Go ahead and pull what you need from manpower and supplies to block off that section. Less to defend means more attention on rebuilding.~ + a2216 ++ ~[PC] I will take a look at this information tomorrow, Aran. But if you are all fired up about working, you could go over the tax levies, and draw up a short list of those we could extort for more money.~ + a2206 ++ ~[PC] Why are you bothering me with all of this? I want your skills focused on finding how much there is left in the treasury, and how much we have to help with the rebuilding.~ + a2206 ++ ~[PC] Why are you bothering me with all of this? I want your skills focused on finding how much there is left in the treasury, and how much we can raise taxes.~ + a2206 + ~Class(Player1,FIGHTER_ALL)~ + ~[PC] I am well versed in fighting. All we need is the strength to hold this place for awhile. You are too interested in the details.~ + a2224 + ~Class(Player1,MAGE_ALL)~ + ~[PC] If you think it will help, go bother with all that petty detail. All I am really interested is wandering the library, and checking for spell components.~ + a2224 + ~OR(2) Class(Player1,CLERIC_ALL) Class(Player1,PALADIN_ALL)~ + ~[PC] I am sure you mean well, but I don't have time to concentrate on the details. What I really need is time to pray to my god and gather my strength.~ + a2224 + ~Class(Player1,THIEF_ALL)~ + ~[PC All we need is the illusion of strength to hold this place for awhile. Being pinned down to a fortress is not my idea of being subtle. Do I really need to be bothered with all these details?~ + a2224 + ~Class(Player1,BARD_ALL)~ + ~[PC] I am more interested in the stories, songs, and poetry that our conquest of this place will inspire. I need some time and space to sit down and concentrate. Do I really need to be bothered with all these details?~ + a2224 END IF ~~ a2206 SAY ~[ARAN] Sure thing. Inventory, check what be left o' th' raided treasury an' what can be built back up, check into th' land leases, th' whole audit.~ ++ ~[PC] And Aran... find every single way you can to get us more coin.~ + a2208 + ~Gender(Player1,FEMALE) Global("c-aranrom","GLOBAL",2)~ + ~And Aran... don't you dare leave this room without kissing me.~ + a2207 ++ ~[PC] And Aran... send me some food up from the kitchen. No dogmeat. Just real food.~ + a2219 ++ ~[PC] You have your orders, so now will you please just let me go to sleep?~ + a2220 END IF ~~ a2207 SAY ~[ARAN] Now that be an order I can't rightly refuse. An' why would I want to, anyhow?~ IF ~~ THEN GOTO a2215 END IF ~~ a2208 SAY ~[ARAN] Whoa, now, I misread you right solid, I did. If this be a hostile takeover, you'd better let me know right quick, so I can set up a second set o' books.~ + ~!Class("c-aran",PALADIN_ALL)~ + ~[PC] You would do that? Cheat these people?~ + a2210 + ~Class("c-aran",PALADIN_ALL)~ + ~[PC] You would do that? Cheat these people?~ + a2211 ++ ~[PC] That's right, make a joke about these poor people and what they have sufered through. Do you really think I want you to do that?~ + a2211 ++ ~[PC] Look, forget I said anything. I am tired and short-tempered. I just want to be left alone so I can go to sleep.~ + a2220 END IF ~~ a2209 SAY ~[ARAN] Whoa, now, I misread you right solid, I did. I thought you were givin' her a hand on account o' she be quite easy on th' eyes, an' everyone knows a hero has more of a chance with beddin' th' fair maid. If this be a hostile takeover, you'd better let me know right quick, so I can set up a second set o' books.~ + ~!Class("c-aran",PALADIN_ALL)~ + ~[PC] You would do that? Cheat these people?~ + a2210 + ~Class("c-aran",PALADIN_ALL)~ + ~[PC] You would do that? Cheat these people?~ + a2211 ++ ~[PC] That's right, make a joke about these poor people and what they have sufered through. Do you really think I want you to do that?~ + a2211 ++ ~[PC] Look, forget I said anything. I am tired and short-tempered. I just want to be left alone so I can go to sleep.~ + a2220 END IF ~~ a2211 SAY ~[ARAN] Me? Hells, no. Just wanted to see your face when I said it, eh? I guess it weren't that funny.~ IF ~~ THEN GOTO a2205 END IF ~~ a2210 SAY ~[ARAN] Me? Hells, no. I'd be out gettin' these people on th' road to recovery, an' mayhap makin' it less likely that they get cheated out o' their hard work. But I work for you. An' I have done things what would curdle th' blood in th' name o' "good". So it would be you doin' th' cheatin', not me.~ ++ ~[PC] You are spineless, aren't you.~ + a2212 ++ ~[PC] With that attitude, you will serve me very well.~ + a2213 ++ ~[PC] Perhaps one day I will have to test the limits of your loyalty. just how far would you go to serve me?~ + a2221 END IF ~~ a2212 SAY ~[ARAN] Not spineless. Just blighted flexible when it comes to absolute morality. You have a mission, an' when there be a priority mission, normal rules don't rightly apply. Neverwinter has some great readin' materials on this, if you ever visit up there. Sometimes th' ends justify th' means.~ ++ ~[PC] The ends never justify the means. There is an absolute good, and an absolute bad. So no more talk about cheating these people.~ + a2225 ++ ~[PC] Well said. The ends sometimes do justify the means. But in this case, I think we can afford to help these people.~ + a2225 ++ ~[PC] You almost had it right, Aran. My goals are attained by any means necessary. Go do whatever you have to do to get me coin.~ + a2222 END IF ~~ a2213 SAY ~[ARAN] Well, given th' powers you have, it be a matter o' percentages, eh? I'm not spineless, just blighted flexible when it comes to absolute morality. You have a mission, an' when there be a priority mission, normal rules don't rightly apply. Neverwinter has some great readin' materials on this, if you ever visit up there. Sometimes th' ends justify th' means.~ ++ ~[PC] The ends never justify the means. There is an absolute good, and an absolute bad. So no more talk about cheating these people.~ + a2225 ++ ~[PC] Well said. The ends sometimes do justify the means. But in this case, I think we can afford to help these people.~ + a2225 ++ ~[PC] You almost had it right, Aran. My goals are attained by any means necessary. Go do whatever you have to do to get me coin.~ + a2222 END IF ~~ a2214 SAY ~[ARAN] On that point, I know better than to give no opinion. She could be a right passible party member, but she were born wi' a silver spoon in her mouth. Might be trouble. I'm right glad you have to make that decision, not me. Now, do you have a bit o' time, or should I go make myself useful elsewhere?~ ++ ~[PC] Sure. What is it you want?~ + a2205 ++ ~[PC] All people do is wander up and talk to me all day and night. They prod me, poke me, question me... so no. Go away, and let me have a moment of peace and quiet all to myself.~ + a2220 END IF ~~ a2215 SAY ~[ARAN] (His kisses are ferocious, demanding yours with rising passion. His hands hold your face, cupping you to his lips like a man driven by desperate thirst.)~ = ~[ARAN] (Only the gentle knocking on the door reminds you that you have duties and appointments waiting before you can sleep, and you hastily compose yourself before Aran slips out of the door. The Captain of the Guard raises one eyebrow while requesting orders, but he is far too professional to inquire. When you catch a glimpse in the mirror, you see that your cheeks and lips are not quite as calm and composed as the Protector of the Keep might be expected to be.)~ IF ~~ THEN DO ~RealSetGlobalTimer("RE_DreamTimer","GLOBAL",100) RestParty()~ EXIT END /* HPPercentLT(Player1,30) , Female */ IF ~~ a2216 SAY ~[ARAN] Now, that be a nice image, there. I can see why I know you will be a great leader. An' why I might just be fallin' for you, too.~ IF ~~ THEN DO ~RealSetGlobalTimer("RE_DreamTimer","GLOBAL",100) RestParty()~ EXIT END IF ~~ a2217 /* males */ SAY ~[ARAN] By Th' Red Knight's Sword, you are a sorry pain in th' arse. I thought I know where I stood wi' you. I guess I was wrong. Apparently, I stand somewhere south o' th' dungheap out by th' Keep's privy.~ IF ~~ THEN DO ~RestParty()~ EXIT END IF ~~ a2218 /* females */ SAY ~[ARAN] By Th' Red Knight's Sword, you are a sorry pain in th' arse. I thought I know where I stood wi' you. I guess I was wrong. Apparently, I stand somewhere south o' th' dungheap out by th' Keep's privy.~ IF ~~ THEN DO ~SetGlobalTimer("c-aranismad","GLOBAL",ONE_DAY) RealSetGlobalTimer("RE_DreamTimer","GLOBAL",100) RestParty()~ EXIT END IF ~~ a2219 SAY ~[ARAN] Aye, then. No curry... err... Right. I'll be sendin' somethin' up quick as a flash.~ IF ~~ THEN DO ~RestParty()~ EXIT END IF ~~ a2220 SAY ~[ARAN] Right, then. I'll be leavin' you alone. Have a good night.~ IF ~~ THEN DO ~RestParty()~ EXIT END IF ~~ a2221 SAY ~[ARAN] I don't rightly know. Slavery, now, that be a deal killer. But short o' that, I guess we just have to see.~ ++ ~[PC] And what will you do if I ever cross that unknown line?~ + a2223 ++ ~[PC] That is what I like about you. Always so vague and indecisive, and easy to manipulate.~ + a2220 ++ ~[PC] That is what I hate about you. You keep letting me push you around.~ + a2220 ++ ~[PC] Sorry. should not have asked that question. I am in a foul mood tonight. I had better get some rest.~ + a2220 END IF ~~ a2222 SAY ~[ARAN] Right. I'll let you get on wi' your work, an' mayhap I can come up wi' some extra coin somewhere. It might take a few days, mayhap even a tenday. I'll be lettin' you know.~ IF ~~ THEN DO ~SetGlobal("c-aranextort","LOCALS",1) SetGlobalTimer("c-aranextorttalk","GLOBAL",TEN_DAYS) RestParty()~ EXIT /* ten game days for research */ END IF ~~ a2223 SAY ~[ARAN] I don't rightly know. I never did run out on no contract. But I suppose we all have a breakin' point somewhere, eh? Probably just leave. Mayhap fight you, mayhap just kill you. Fair warnin', an' all. But I suspect you will know long before I do. No sense thinkin' about it until it happens, on account o' I'm not blighted well likely to survive th' experience, eh?~ IF ~~ THEN DO ~RestParty()~ EXIT END IF ~~ a2224 SAY ~[ARAN] Details matter. It be a labor o' love what creates a solid foundation, an' th' details be what shows you are doin' more than just th' work o' a hired sword. They be what shows you really care about th' people in your charge, an' provides 'em a sense o' your leadership. But I can see you be busy, so mayhap I will come bother you some other time.~ IF ~~ THEN DO ~RestParty()~ EXIT END IF ~~ a2225 SAY ~[ARAN] Now, that be a nice idea, there. I can see why I think you will be a great leader, someday. Well, mayhap already.~ IF ~~ THEN DO ~RealSetGlobalTimer("RE_DreamTimer","GLOBAL",100) RestParty()~ EXIT END /* from C-ARAN.BCS */ IF ~Global("c-aranextort","LOCALS",2)~ THEN BEGIN a2226 SAY ~[ARAN] Hey, I found some way o' gainin' a mite bit o' extra coin out o' that Keep, just like you asked. There be some options open. You just tell me which one to chose, an' I can get it done right quick.~ = ~[ARAN] First off, there be some outstandin' debts on th' part o' th' Merchant's Guild, on account o' we provide some protection. We could force collection, makin' them pay for "protection" on a regular basis, instead o' just when they need it, an' get a tidy sum. But turnin' th Guild against you means some serious penalties... merchants talk to everyone, an' a little bad blood can get to be a problem right quick.~ = ~[ARAN] Second off, we could sell off some o' th' land what's able to be repossessed. It be a matter o' movin' families off farms they been workin' for generations, but th' law be th' law. Might piss people off a mite bit, though.~ = ~[ARAN] Third, we could cut a deal wi' th' Trade Guild. Right now, there be two representatives vyin' for th' rights. Th' sorry bastard what's tryin' to get th' concession be a right mean bastard, but he has coin to spend, an' he'll give us some to approve him as th' representative next season.~ = ~[ARAN] So, you want to collect on th' Guild, sell some land, or take a bribe for th' representative choice? Or none o' these?~ ++ ~[PC] I don't like any of these options.~ DO ~SetSetGlobal("c-aranextort","GLOBAL",3)~ + a2227 ++ ~[PC] Do all three.~ DO ~SetSetGlobal("c-aranextort","GLOBAL",3)~ + a2228 ++ ~[PC] Force the Guild, and take the bribe. Then our "representative" can clean things up for us over time.~ DO ~SetSetGlobal("c-aranextort","GLOBAL",3)~ + a2231 ++ ~[PC] I don't want to mess with the Guild directly. There could be problems. So just kick those families off my land, and sell it.~ DO ~SetSetGlobal("c-aranextort","GLOBAL",3)~ + a2232 ++ ~[PC] I don't want to mess with the Guild directly, and I don't need disgruntled tenants causing trouble. Just take the bribe. If the "representative" doesn't serve us well, then we can always make adjustments later.~ DO ~SetSetGlobal("c-aranextort","GLOBAL",3)~ + a2232 ++ ~[PC] Force the Guild, and throw those people off of my land. But don't bother with taking the bribe. We can probably do better with an honest representative. They tend to actually follow rules, which puts them at a disadvantage.~ DO ~SetSetGlobal("c-aranextort","GLOBAL",3)~ + a2231 END IF ~~ a2227 SAY ~[ARAN] Look, th' truth be there is naught in th' way o' new coin to be had just by squeezin' th' books. I don't rightly recommend doin' any o' these things, but if you want th' coin, that's what I was able to find. Personally, I say give th' whole blighted idea up, an' let's go find somethin' to kill an' loot. Except for dragons. No dragons. They are a pain in th' arse.~ = ~[ARAN] So, what be your orders?~ ++ ~[PC] Forget the whole thing. It is just not worth it.~ + a2233 ++ ~[PC] Do all three.~ + a2228 ++ ~[PC] Force the Guild, and take the bribe. Then our "representative" can clean things up for us over time.~ + a2231 ++ ~[PC] I don't want to mess with the Guild directly. There could be problems. So just kick those families off my land, and sell it.~ + a2232 ++ ~[PC] I don't want to mess with the Guild directly, and I don't need disgruntled tenants causing trouble. Just take the bribe. If the "representative" doesn't serve us well, then we can always make adjustments later.~ + a2232 END IF ~~ a2228 SAY ~[ARAN] Grumbar's Clay Fist, do you want a blighted revolt on your head? That might get us 3000 gold, but you would be askin' for a revolt. You sure you want to do that?~ ++ ~[PC] Yes. We need the money. And revolts can be put down. What are they going to do, talk me to death?~ + a2230 ++ ~[PC] No. Forget the whole idea.~ + a2233 ++ ~[PC] What are my options again?~ + a2227 ++ ~[PC] You are so unimaginative. What about falsifying documents and having people driven of their land so I can sell it? What about adding a tax for anyone who speaks Chondathan in public? I expected more out of you, Aran.~ + a2229 END IF ~~ a2229 SAY ~[ARAN] Cyric's Black Balls, there be limits. Corruption, kickin' out people on th' street, an' shakin' down th' guild for "protection" didn't go far enough for you? Forget it. I'm bloody well destroyin' this right now, an' to th' nine hells wi' you. Go find your own way o' dealin' wi' this. I got my limits.~ IF ~~ THEN EXIT END IF ~~ a2230 SAY ~[ARAN] Xvim's Spit, you be... right. Just a job. Consider it done. An' me, I will go lookin' for somethin' to shield th' spittle that folks will send our direction every time they see us.~ IF ~~ THEN DO ~GiveGoldForce(3000) IncrementGlobal("KPRevolt","GLOBAL",-4)~ EXIT END IF ~~ a2231 SAY ~[ARAN] That I can do. Not exactly th' nicest thing in th' world, but it works. It means there will be some disgruntled people, but you don't make no omlette wi' out breakin' eggs.~ IF ~~ THEN DO ~GiveGoldForce(2000) IncrementGlobal("KPRevolt","GLOBAL",-2)~ EXIT END IF ~~ a2232 SAY ~[ARAN] That I can do. Not exactly th' nicest thing in th' world, but it works. It means there will be some disgruntled people, but you don't make no omlette wi' out breakin' eggs.~ IF ~~ THEN DO ~GiveGoldForce(1000) IncrementGlobal("KPRevolt","GLOBAL",-1)~ EXIT END IF ~~ a2233 SAY ~[ARAN] Good idea. Sometimes, th' best thing to do is to let well enough alone, eh? We'll get th' gold some other way.~ IF ~~ THEN EXIT END
  9. 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.
  10. OK, a quest. Or quests. Or something that Aran brings to the table in terms of gently adding to the story or fleshing it out, without hijacking the plot. Does he need one? No, not really. There are lots of NPCs out there that are useful additions that carry no real plot beyond a copy of traditional themes, shadowing in-game ideas of betrayal, love, conquest, good versus evil, rescuing Boo, cooking Boo over an open fire, Slaying The Evil Ones And Gaining The Gratitude Of The Gods™ (all rights reserved, MGM Studios, 1929). We have NPCs that add no quest content at all. We have intricate plotlines like Beyond The Law that seek both entertainment and some social tweaking/thinking, controlling single-viewpoint storytelling quests like Saerileth, open character-building plotlines/encounters like Keto's quest, and a whole ton of romantic plots that can entertain a player. So, what could we possibly add to this mix that does not already exist in some form or fashion, and fits Aran? He is not Chloe or other god-children, or Sheena the half-dragon, Kivan of dark and sad twisted fate, or even Nalia who is at least a Noble and should darned well expect some quest-like content cropping up. I mean, really - running a darned fiefdom is no picnic in the Realms - and she has to deal with <CHARNAME>> to boot. So what is it that Aran brings to the party? He is supposed to be, well, normal. Or as normal as Faerun really gets, anyways. Kind of that gruff travelling trader/fighter/scribe type, a Have Gun Will Travel, only not so much into the Lone Gunman role... the guys that are one step behind John Wayne (OK, so perhaps Ms. Jonie Wayne, since the protagonist can be male or female) in the 5th Cavalry Charge. You know. The one who takes the bullet for our hero, or hands our hero the extra ammo, or holds his horse - bit actor parts at best. No secret angsty famly to save - his sister is a mage off in Waterdeep, and his family has all retired from trading oster work. No roots put down, so no former girlfriend to rescue - a hint of slaver work that he detested and decided against doing ever again, lots of mercenary battles, some study with itenerant scholars - a jack-of-all-trades, master of none. Hmmm. Perhaps what Aran needs is not a Quest, but an Anti-Quest. Or a series of them. Traditionally, Quests are fun diversions. After all, we know the main plotline, and unlike Morrowind, you really can't ignore it successfully forever without simply abandoning your game and starting over (a nasty habit, that. I am opening my own chapter of "BG2 Plot-Restarters Anonymous", if anyone else wants to join. Anonymously, of course. To join, simply do not send me an email and never admit you joined to anyone, and voila - you are in). Some folks want tons of 'em. Some want specific ones. Most NPC quests require the NPC to actually be there, or involve her being kidnapped and having to be rescued, etc. But the predominant characteristic of BG2 NPC quests is that they seem to be attempts to play up the character in a situatiion that fleshes out thier backstory and provides a glimpse of what the mod maker though would be really cool for the NPC to do (or the PC to do to/for the NPC). This is to be expected - basically, it is the CRPG equivalent of literary sub-plots, which can enlighten and entertain while forwarding or obscuring the story, however the story works. C-3PO and R2D2 were just oddities in the first Star Wars movies - it wasn't until we saw the whole sequence unfold or read the books that we began to find out how deeply enmeshed in the action two little plot-device/comic-relief 'droids actually complete a nice little subplot and tie stories together, providing a thread to follow that enriches the whole. The best example of this device in TV Sci-Fi that I can think of is Babylon 5, which was a masterful use of entire story-arcs built entirely out of "sub-plots" - until the series writers twisted them into a rope that really became one big story. It is so important to us players/readers, that entire genres of fiction are based not on primary or secondary characters in the Forgotten Realms / Star Trek Universe / Honorverse / BuffyVerse / whatever - we create entirely new characters to live and breath in those worlds, interacting with those worlds. the paperback sci-fi/fantasy section of our local bookstore shows us that there is a large market for stories that expand or reinforce the playground universe of WarHammer, or Star Wars, or Dragonlance, or Forgotton Realms. We are either incredibly creative, or incredibly out of touch with day to day survival. Not that I care - I have a Morrowind game, BG2 game, Tutu game, and a good CoH RTS going, so don't talk to me about day to day survival unless you can tell me how to find more Ash Yams so I can punch up my Alchemy Skill and enhance my intelligence so that I can create better potions using Ash Yams. Or perhaps explain why I just can't seem to make my Rangers take Hill 101 by the timed deadline for the combat medal... so far, 9 tries, 9 failures. Bleh! Plotting Quests DM-ing by the anti-numbers In my book, good DMs provide four things every single time: a goal, a conflict or consequence of failing to attain the goal, an adversary or obstacle to overcome, and finally - plot points. For DM'ing, plot points are pretty similar to the screenplay/writer/author/novelist idea, in that they are a point at which the plot can pivot or change direction unexpectedly, or even cease to be important as a new direction is revealed. There are lots of folks who actually study this kind of thing, so if you are one, awesome - good luck on your next book, and I honestly hope you have success. Luckily, I have a paying gig and have no aspirations of being a real author (I starved and scraped and did enough things that I am ashamed of being a musician, thank you very much - I don't relish repeating it in yet another career that chews creative people up and spits them out without much regard for things like, say, a reasonable income. Or sleep. Or even food.) I am stealing the phrase 'plot point' and applying it in a personal way, so if you have already read the latest greatest "How To Write The Next Great Original American Novel In Twenty Days™" or just came back from a writer's seminar at Harvard (better yet Bennington or Oxford or Cambridge, because they have real writers there) way cool - go write that damned novel and let a musician misuse terminology. For my purpose, I am going to say that a plot point is the point where the players can completely and utterly screw up their DM. In a novel or screenplay, the author has a story (or stories) and the reader follows the story (or dumps the book at the next train station to inflict in on some poor unsuspecting soul who just needed to pass the time). The difference in really awesome DM'ing is that each one of the critical points of the story, the part where the author drives the story forward or teases the reader by tossing new light on the matter or whatever - the element of choice creeps in. A group of players doesn't "know" the story, so they can't make the "right choice". And that is really, really fun. It can lead literally anywhere, for any reason, and usually in the manner least expected. For example, the classic plotpoint, meeting the Lich who will give the quest to our party of intrepid adventurers. Deus Ex Machina is nice, but a little goes a long way. And having a quest forced on you just plain stinks, in my book - though I understand that for some NPCs, the modder feels that the characterization makes it an all or nothing proposition. Although she is not alone in the modding world in this regard, she is one of the absolutely classic examples of "directional"storytelling, Saerileth again springs to mind - one story, strong character, definite "yes" and "no" answers, and that means less player choice. You go through the story, but in order to fit Saerileth in the party, you go through *her* story. I actually am ok with that story, but Aran is the antithesis of "thou shalt do this or thy evilness shalt rip my teenage heart in two and I shall die of the pain thou hast caus-ed mine own". He would be more like Now, how much choice can we accomplish in the i.e. engine? lots. Tons. WAY TOO MUCH. Because although the concept of a freeform awesome DM'ing of player choice, you need to create your own game. We have Limitations™. There are Canonical Rules™. There is also the little teeeeeny consideration that the darned quest would never be finished if every single major point had a measly 5 choices, and their points had 5 choices, and so on, and so on (I hope Prell doesn't sue me for stealing their commercial). For that, you need real people, so you need a PbP or a gaming group, or an online group of some kind. For BG2, you have to draw some limits. Let's see what we might need to do to limit Aran. Has to be Faerunian, even if it isn't completely Old Skool Canonical Treatment. Should fit 2E rules and expectations, probably should reference correct timeline (even though they kind of screwed that up a bit in the game - fans are notoriously more picky about that than the original authors in almost every setting, except perhaps Tolkein Himself.) Has to take place in chapter 2 or 6, because we didn't make Aran a Drow or a pirate, or set him up with a backstory that puts him in Saradush somehow. And that is a pretty crowded set of chapters, let me tell you. Has to try to not spoil the main plot with info too early, and yet have some attraction to being done/accomplished that makes sense to the PC (no pulling a sword from a stone to become the next King Of Amn, and no suddenly discovering that Aran is actually Elminster's First Cousin and Future Ruler of a Moonshea Isle... it really needs to follow the goals of the PC, not Aran. Bit part, remember? Must be Equity, but not command a star billing and salary...) OK, some minimal stuff - what does that leave us with? How about a quick brainstorm. What would a JOAT (Stainless Steel Rat, a great story, go read it) do when hired by a Bhaalspawn bent on Saving/Dominating The World? After all, he is Pinky to <CHARNAME> The Brain.... GOALS: Help The BhaalSpawn Succeed. Potential plots that might fit that goal: gather information on OBE's (Other Bhaalspawn Enemies) (if you are British, you get it...) find scrolls of power or a secret cache of gold/items that could help the PC (Pirate Gold, ARrrrrrr....) arrange mercenary work for money using contacts (Conquerers For rent. Reasonable Rates. No Dragons. Apply within.) build a man from scrap parts labled "Abbey... abby something - abby-normal" and bring him back to life (Hey, how did Young Frankenstien get in here? Commonplace occurrence in FR, so scrap this one!) discover plot against PC by local authorities scared of the Prophecy and resulting business losses (Leave the guns. Take the canolis.) CONSEQUENCE/CONFLICT: Tasks Distracting From Main Goal. mercenary network of information can work for or against the merc - what happens when you are in the posse of the Notorious BiG (Bhallspawn Interest Group) and someone has hired your former friends and acquaintences to "detain and question" said BiG, for, say, perhaps... - the rulers of Waterdeep, who might want to see what is going on and see if this is a Good witch, or a Bad witch? (ok, or warlock, but you get the idea) - the followers of Ilmater/Cyric/Corelon/etc. who want to help/hurt a being who is rumored (correctly or incorrectly) to have chosen sides in the religious conflict rebrewing? There are other forces interested in the outcome, after all. - payment of taxes or service requirements by the local lords? The Cowled ones aren't the only game in Amn, and the Roenalls are not the only nobles by any means. Court intrigue might help here. Written communication is cool, but can spread information the wrong way, too. What happens if Aran's journal falls into the wrong hands, and Irenicus finds additional chinks in PC's armour - sending a bribery attempt against the party, with a loyalty check on participants (Korgan takes the cash no problem, Minsc squishes the messenger...) A mercenary's life is a hard one. What happens when PC finds himself accused of warcrimes against "innocent, law abiding" patrols that ambushed the party, like every time I try to go from point to point in the darned city? Especially when Aran is found to be wanted by the Crimson Tower for 'spying' during the Iron Throne conflict? negotiation is not Aran's strong point. There is a great Padme quote about this - something about negotiations - ah, Google is my friend; Anakin: You call this a diplomatic Solution? Padme: No, I call it an aggressive negotiation. So what happens when a guy can get you a job, but gets in over his head, and PC has to choose between breaking the contract or fulfilling it - better yet, what happens when you take the contract and find out there is*no* good guy present, and Aran's answer is "To hell wi' th' contract, anyways. I never did like that murderin' son o' a bitch, beggin' pardon to dogs everywhere. I says we kill em' all, an' let Kelemvor sort out what bastard gets sent to what hell." ADVERSARY/OBSTACLES well, on this one, it really depends on what form of goal and consequence/conflict we lay down. One sample scenario: > Aran gets job offer for group to negotiate peace between some nobles for some traders. > group finds out "traders" are really agents sent to test PC and gather info for other bhallspawn, or for Irenicus, or for some other political entity > peace must be negotiated or resolved through any number of means, from a game of chess through to personal challenges/champions, to perhaps the regular way (bug group battle, save, reload, try again). Well, that is the brainstorm - no answers yet, just floating out ideas. The "non-required-yet-fun-to-accomplish-subplot-for-normal-mercenary-faerunian-sellswords-that-builds-up-PC-and-fills-in-backstory" quest or mini-quests. An interesting uzzle. Help yourself to a brainstorm, if you like. When something moves along into focus, we can come back to actual plot points, and see how we can make the quest be one of those 'replayable because I actually have real choices' quests.
  11. When it is set up to run on a townsperson/guard with a designated dialog file, and that file is all RandomNumber() and all states use simple IF ~~ THEN EXIT triggers. Luckily, following an exact copy and rebuild of BioWare™'s coding works great. Extend the dialogs with a RandomNum(2,1) and don't fill ot the second condition so that it has a 50% chance of firing, and then have at it... APPEND DMTOWN1 IF ~See("c-aran") InParty("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) RandomNum(2,1) Global("dmtown1aran","AR0500",0)~ THEN BEGIN a1774 SAY ~By Helm... yer outfitted for battle. I'd give my right arm for some o' that gear.~ IF ~~ THEN DO ~SetGlobal("dmtown1aran","AR0500",1)~ EXTERN ~C-ARANJ~ a1771 // chain END END APPEND DMTOWN2 IF ~See("c-aran") InParty("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) RandomNum(2,1) Global("dmtown1aran","AR0500",0)~ THEN BEGIN a1773 SAY ~Ay, now... you looks like a sword for hire, you does. You lookin' for some work?~ IF ~~ THEN DO ~SetGlobal("dmtown2aran","AR0500",1)~ EXTERN ~C-ARANJ~ a1772 // chain END END APPEND GMTOWN01 IF ~See("c-aran") InParty("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) RandomNum(2,1) Global("gmtown01aran","GLOBAL",0)~ THEN BEGIN a1775 SAY ~Is that spitting really becessary? This is not the slums, you know.~ IF ~~ THEN DO ~SetGlobal("gmtown01aran","GLOBAL",1)~ EXTERN ~C-ARANJ~ a1779 // join END IF ~See("c-aran") InParty("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) RandomNum(2,1) Global("gmtown01aran","GLOBAL",0)~ THEN BEGIN a1776 SAY ~Mmm...I haven't been to one of the spa tubs in ages. It's the only luxury we, here, in the city really have.~ IF ~~ THEN DO ~SetGlobal("gmtown01aran","GLOBAL",1)~ EXTERN ~C-ARANJ~ a1780 // chain END END APPEND GMTOWN02 IF ~See("c-aran") InParty("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) RandomNum(2,1) Global("gmtown02aran","GLOBAL",0)~ THEN BEGIN a1777 SAY ~You, there! You look like the fighting type! Are you in the army? Can I join through you?~ IF ~~ THEN DO ~SetGlobal("gmtown02aran","GLOBAL",1)~ EXTERN ~C-ARANJ~ a1781 END IF ~See("c-aran") InParty("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) RandomNum(2,1) Global("gmtown02aran","GLOBAL",0)~ THEN BEGIN a1778 SAY ~I am here to join the glorious army of Amn! There are victories to be had and both coin and women to earn!~ IF ~~ THEN DO ~SetGlobal("gmtown02aran","GLOBAL",1)~ EXTERN ~C-ARANJ~ a1782 END END APPEND ~C-ARANJ~ IF ~~ a1779 SAY ~[ARAN] I don't rightly think a little bit o' moisture is goin' to hurt anythin' around here. An' dust be dust, city or country. But I take your point, it were blighted rude o' me.~ IF ~~ THEN EXIT END IF ~~ a1782 SAY ~[ARAN] Ah, that be th' call o' th' Wild Recruiter. "Join th' Army! Coin, Wine, Women, Song, Travel!" I'd be changin' that around, a mite. "Join th' Army! Lice! Weeks Of Tedious Boredom Punctuated By Moments O' Sheer Terror An' Mortal Danger! All th' Ditches you can Dig! Travel to New Places, Meet New People, Then Kill 'Em! Wine, Women, an' Song subject to your own coin, an' we don't pay for none o' th' problems what result." Then again, it probably wouldn't bring in young idiots what think duty in a far-flung colony be a walk in th' park.~ IF ~~ THEN EXIT END END CHAIN ~C-ARANJ~ a1771 ~[ARAN] They say th' gear don't make th' man. But it do help, eh?~ == DMTOWN1 ~[DMTOWN1] Take it from one who spent a little time in Maztica. Good gear saves lives.~ == ~C-ARANJ~ ~[ARAN] Brother, I hear you. You spend a long time?~ == DMTOWN1 ~[DMTOWN1] Two years before I came to my senses and went back to civilian life. I'll take my chances with the dangerous nightlife around here. At least that I can predict.~ == ~C-ARANJ~ ~[ARAN] Well, good luck to you. I don't think i could take th' quiet life for too long, but it seems to have agreed wi' you.~ == DMTOWN1 ~[DMTOWN1] Good luck and a pearl to you.~ EXIT CHAIN ~C-ARANJ~ a1772 ~[ARAN] Why, do you know o' any?~ == DMTOWN2 ~[DMTOWN2] Well, there's always some hirin' o' watchmen, and sometimes they need a bouncer at some inns.~ == ~C-ARANJ~ ~[ARAN] So, long story short, you got nothin'.~ == DMTOWN2 ~[DMTOWN2] Hey, don't get touchy. We were just makin' conversation!~ == ~C-ARANJ~ ~[ARAN] Civilians. Can't live with 'em, can't live wi' out 'em. An' if you take 'em out back to beat some sense into 'em, you end up wi' a tenday in jail an' a stiff fine.~ EXIT CHAIN ~C-ARANJ~ a1781 ~[ARAN] Why, sure thing. I can help you out right quick. You ever heard o' th' Jerva's Jerkins? They be th' toughest, most fierce company Amn has to be offerin'. An' I can get you an introduction, for only 5 gold.~ == GMTOWN02 ~[GMTOWN02] I don't have that much. What will 3 gold get me?~ == ~C-ARANJ~ ~[ARAN] Well, I could hook you up wi' a lad what served in th' regulars in Maztica...~ == GMTOWN02 ~[GMTOWN02] I really don't have more than 3 copper pieces to spare. What will that get me?~ == ~C-ARANJ~ ~[ARAN] For 3 coppers, I can start your hazin' ritual right away, by takin' your coin an' tossin' both you an' your bloody coin in th' nearest latrine.~ EXIT CHAIN ~C-ARANJ~ a1780 ~[ARAN] Now that be true enough. Though I doubt there be anythin' around here like those in Calimport, eh?~ == GMTOWN01 ~We have a much more civilized approach to bathing here in Amn. Although it does not appear that you are familiar with the concept of bathing.~ == ~C-ARANJ~ ~[ARAN] Bane's... right. Don't suppose it would do us much good if I respond. Shuttin' up an' soldierin'.~ EXIT
  12. Well, I started awhile ago on this, asking folks for input, and got some, so it is probably time to figure out where he really goes. Synopsis We want to tell the game where Aran is supposed to meet the party - where he "spawns" in-game. To do that, we use WeiDU to add him in, first having researched area, x.y coordinates, and extended that area's script with the instructions to do so. In addition, we want to allow players to choose where he goes, but they have to choose one area out of the pool of choices, and the instructions must be run out (can' be skipped or uninstalled without replacement, or he will never spawn for players). Starting at Providing Choices In The .tp2 There are some cool ways of getting player input, including very customizable things like ACTION_READLN and setting up multiple components. There are some advantages to READLN we have already discussed, so let's go to a simple way of adding a player choice to an install - SUBCOMPONENT and FORCED_SUBCOMPONENT. Regular WeiDU installation Choices; Simple. Effective. And They Can Roll Back. In our regular WeiDU installation, the easiest way to let things work is to create a separate component and let players choose what they want to install, like this: BEGIN ~This is the first component in my mod.~ BEGIN ~This is the second component in my mod.~ Simple enough, though sometimes it feels odd to do a BEGIN without an END, but don't complain to the bigg - that is way way legacy stuff that can't be changed without messing up about everything out there already coded. He didn't write it like that - it came that way from back in the day, and we need it to say how the game will play. Darn - almost made that work, but it got confusing. Basically, if we want to be able to use older mods, we need backwards compatibility, and the bigg has to stick within certain constraints, this being one of them. With this example above, all we are saying is "WeiDU, do this first set of instructions." "WeiDU, do this second set of instructions." So, a mod .tp2 might have something like BEGIN ~This is the first coponent in my mod. Aran is starting in Candlekeep.~ EXTEND_BOTTOM ~CANDLEKEEP.ARE~ ~aranw/baf/starting_area.baf~ BEGIN ~This is the second coponent in my mod. Aran is starting in East Timbuktoo~ EXTEND_BOTTOM ~EAST_TIMBUKTOO.ARE~ ~aranw/baf/starting_area.baf~ This lets the player choose to install component 1, Candlekeep start, or to install component 2, African Safari start, and we have accomplished our mission. Except... under this configuration, the player could choose 1 AND 2. They could choose 1 OR 2.They could choose 1. They could choose 2. Or they could skip both. Worst of all from a mod author's standpoint, they could choose both, then uninstall them both, and then come complaining when Aran doesn't show up in the game... so we probably do not want to do the installation choice this way. HEY - why don't we use READLN? I mean, it is simple enough - the code is out there, and wee have already gone through it in another post - why would we *not* use that fancy way of creating choice for the player in this instance? Two words... Weidu. Log. When WeiDU puts out the central log of everything, it sees components that are installed. The .DEBUG created from your mod install has lots of cool information for troubleshooting, but standard practice for troubleshooting is to get the big, obvious text file in the game folder named "weidu.log" and use it to determine if things have gone right or wrong in a player's game. Those entries are *only* mod components installed, not the READLN choices, because the WeiDU.log serves a cool purpose - it helps weidu operate. Cluttering it up with inner actions of a component would mess it up, as will PRINT and other commands within your .tp2. Basically, it is an index of mod components, not a listing of every single change to your game in great detail. Here is a sample entry in the weidu.log after installation: Now, I can go with a "list every component approach, like Fixpack: but we just figured out I don't want that approach, because with Fixpack we want players to be able to install and uninstall various things as they choose. With the spawining area, this is not such a good idea. Not only do we want players to choose one, we want them to be required to choose one of several choices, or have the mod pull itself out - because if you can't spawn him, it is just as bad if you have him popping up in a dozen areas, all coming up to various versions of himself like in Multiplicity, saying "Hey, you look familiar - what a handsome dude you are. You got any work?" And READLN doesn't leave a clue in the weidu.log as to which choice the player has made, so 3/4 of the way through a Mega-BGT-BP, when a player is completely confsed, and wants to go pick up Aran, We can't go "gee... do you remember where you told him to spawn, three months ago, while you were spending hours staring at your computer screen willing the installation to move faster?" So we want 1. a way that weidu will ask the player to choose from a panel of choices 2. allow weidu the ability to report which choice was made 3. require/demand/insist/not proceed until the player chooses one of the panel of choices. Enter the world of SUBCOMPONENT | FORCED_SUBCOMPONENT (tadaa!) Let's go back to Grim Squeaker's Tyris Flare mod for a second. I only posted a portion of the Weidu.log. The full entry for Tyris looks like this: Now, that is pretty cool. Grim Squeaker has a second component, that allows players to choose an alternate portrait. Let's look at how it got coded: BEGIN ~Alternate Portrait 1~ DESIGNATED 101 REQUIRE_COMPONENT ~Setup-TyrisFlare.tp2~ ~0~ ~NPC is not installed, therefore skipping alternate portraits...~ SUBCOMPONENT ~Alternate Tyris Portraits~ COPY ~TyrisFlare/Portraits/Alternate1/G#TYRISL.bmp~ ~override/G#TYRISL.bmp~ ~TyrisFlare/Portraits/Alternate1/G#TYRISM.bmp~ ~override/G#TYRISM.bmp~ ~TyrisFlare/Portraits/Alternate1/G#TYRISS.bmp~ ~override/G#TYRISS.bmp~ BEGIN ~Alternate Portrait 2~ SUBCOMPONENT ~Alternate Tyris Portraits~ COPY ~TyrisFlare/Portraits/Alternate2/G#TYRISL.bmp~ ~override/G#TYRISL.bmp~ ~TyrisFlare/Portraits/Alternate2/G#TYRISM.bmp~ ~override/G#TYRISM.bmp~ ~TyrisFlare/Portraits/Alternate2/G#TYRISS.bmp~ ~override/G#TYRISS.bmp~ BEGIN ~Alternate Portrait 3~ SUBCOMPONENT ~Alternate Tyris Portraits~ COPY ~TyrisFlare/Portraits/Alternate3/G#TYRISL.bmp~ ~override/G#TYRISL.bmp~ ~TyrisFlare/Portraits/Alternate3/G#TYRISM.bmp~ ~override/G#TYRISM.bmp~ ~TyrisFlare/Portraits/Alternate3/G#TYRISS.bmp~ ~override/G#TYRISS.bmp~ BEGIN ~Alternate Portrait 4~ SUBCOMPONENT ~Alternate Tyris Portraits~ COPY ~TyrisFlare/Portraits/Alternate4/G#TYRISL.bmp~ ~override/G#TYRISL.bmp~ ~TyrisFlare/Portraits/Alternate4/G#TYRISM.bmp~ ~override/G#TYRISM.bmp~ ~TyrisFlare/Portraits/Alternate4/G#TYRISS.bmp~ ~override/G#TYRISS.bmp~ The initial DESIGNATED 101 is a way of telling weidu that the modder wants this component to be labled 101, even if it is component 2 of 2. Ordinarily, Weidu decides component numbers on the fly, based on what it sees - a component can get swapped around in install order over the course of development, etc. This DESIGNATED locks the component number. You might want to do this if you are making sure things remain available to check for over time by other modders, so that if they put something like line 2, REQUIRE_COMPONENT, or FORBID_COMPONNT, or anything else in that series of choices, the numbering is right. Here, an example. Pretend I made a mod that Grim Squeaker had contributed to that already had Tyris' portarit choice in it. Because he put DESIGNATED 101, I can use that number to avoid duplication - FORBID_COMPONENT ~Setup-TyrisFlare.tp2~ ~101~ ~Tyris Flare's Alternate Portraits are already installed, therefore skipping alternate Tyris portraits...~ and he he could add [FORBID_COMPONENT ~setup-cmorgans_massive_portrait_pack.tp2~ ~27~ ~Sorry, you already chose Tyris' portrait, therefore skipping alternate portraits...~ Of course, if I did not use DESIGNATED 27, and I added another component, it would become component 28, and then Grim is messed up bad - so usig DESIGNATED can help with things like this. Why not just do it Old Skool, and go with BEGIN ~Alternate Portrait 1~ BEGIN ~Alternate Portrait 2~ BEGIN ~Alternate Portrait 3~ BEGIN ~Alternate Portrait 4~ Well... becuse players dont want to be bothered with picking and choosing components for every mod. Some folks would just install everything. Under that setup, Tyris would have her original portrait. Then Alternate 1 would be added. Then Alternate 2, then 3, then 4, each overwriting the last. And the end result would be that most installs of Tyris Flare would use Alternate Portrait v4, and there would be a bunch of extra lines in the weidu.log, and it would be silly. So, putting these into So, next line is already covered. He has 4 components, BEGIN ~Alternate Portrait 1~ BEGIN ~Alternate Portrait 2~ BEGIN ~Alternate Portrait 3~ BEGIN ~Alternate Portrait 4~ Why not just do it Old Skool, and go with this as is? Well... because players don't want to be bothered with picking and choosing components for every mod. Or reading README's and figuring out that they are installing something that does exactly the same thing over the top of what they just chose. Some folks would just install everything. Under that setup, Tyris would have her original portrait. Then Alternate 1 would be added. Then Alternate 2, then 3, then 4, each overwriting the last. And the end result would be that most installs of Tyris Flare would use Alternate Portrait v4, and there would be a bunch of extra lines in the weidu.log, and it would be silly. So, putting these into a new format wuill avoid this. As a side note, he has made them all dependent on Tyris being installed, which is generally a good thing for mod-specific content changes. You don't want players adding stuff that has no use in-game, or worse - if this component had tried to edit Tyris' .cre, the mod component would fail and stop installation with an error message about missing the .cre. So, a line that requires that the central component of Tyris Flare be installed, looking for component ~0~. Adding this line back into our deconstruction - BEGIN ~Alternate Portrait 1~ DESIGNATED 101 REQUIRE_COMPONENT ~Setup-TyrisFlare.tp2~ ~0~ ~NPC is not installed, therefore skipping alternate portraits...~ BEGIN ~Alternate Portrait 2~ BEGIN ~Alternate Portrait 3~ BEGIN ~Alternate Portrait 4~ Now things get fancy. He makes each of these components into be a subset of another component, so that what we originally had as four separate install choices become one of a small group of choices: BEGIN ~Alternate Portrait 1~ DESIGNATED 101 REQUIRE_COMPONENT ~Setup-TyrisFlare.tp2~ ~0~ ~NPC is not installed, therefore skipping alternate portraits...~ SUBCOMPONENT ~Alternate Tyris Portraits~ BEGIN ~Alternate Portrait 2~ SUBCOMPONENT ~Alternate Tyris Portraits~ BEGIN ~Alternate Portrait 3~ SUBCOMPONENT ~Alternate Tyris Portraits~ BEGIN ~Alternate Portrait 4~ SUBCOMPONENT ~Alternate Tyris Portraits~ So far, beautiful. I can adapt the same idea, and go crazy! Except... why SUBCOMPONENT? What happened to the FORCED_ ? Well, Grim Squeaker sent Tyris Flare out into the world with an existing portrait. No player *has* to install *any* of the alternate portrait choices. So under this configuration, the player can choose to skip the whole thing, or choose one of the portraits. I can't do that for Aran's spawning - I only want one of him, and I insist that the player choose one. So, simple enough edit - with Tyris, all I would have to do to make a player not be able to complete the install without the choice being made, is change that SUBCOMPONENT into FORCED_SUBCOMPONENT. Logical, huh.
  13. Commentary to follow, but basics - taking suggestions for better pathways/responses. /* APOLOGY: PC approaches ARAN while TIMERNOTEXPIRED - PC is seeking him out for an apology, either given or rec'd */ /* Aran Is Mad PID Responses (4 random) */ IF ~~ c-aranmad1 SAY ~[ARAN] (Aran glares at you, his face sullen and unresponsive. He moves away.)~ IF ~~ THEN EXIT END IF ~~ c-aranmad2 SAY ~[ARAN] Hey, you be a mite pushy there. I'm not rightly happy. So leave me alone, unless it be business.~ ++ ~[PC] Fine. Be that way. I don't care.~ + a1232 ++ ~[PC] I... I wanted to apologise.~ + c_pc_apology + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] You are really pushing it. We need to talk, and you are refusing? You must really want to have a cold bedroll.~ + c_aran_is_still_mad ++ ~[PC] I know you are angry. But if you were to talk to me, I think you would find I can make it worth your time.~ + c_pc_i_can_make_it_worth_it ++ ~[PC] I'm sorry. I did not mean to make you angry.~ + c_pc_apology ++ ~[PC] Sulking? Oh, that is *so* adult.~ + c-aranmad1 END IF ~~ c-aranmad3 SAY ~[ARAN] (Aran studiously ignores you, stepping away and avoiding your eyes, his jaw set stubbornly.)~ IF ~~ THEN EXIT END IF ~~ c-aranmad4 SAY ~[ARAN] We got nothin' to say to one another right now, <CHARNAME>. We got things to discuss, but now is not rightly the time.~ ++ ~[PC] I... I wanted to apologise.~ + c_pc_apology + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] You are really pushing it. We need to talk, and you are refusing? You must really want to have a cold bedroll.~ + c_aran_is_still_mad ++ ~[PC] I know you are angry. But if you were to talk to me, I think you would find I can make it worth your time.~ + c_pc_i_can_make_it_worth_it ++ ~[PC] (Burst into tears.)~ + c_pc_tears ++ ~[PC] Sulking? Oh, that is *so* adult.~ + a1232 ++ ~[PC] Fine. Be that way. I don't care.~ + c-aranmad1 END IF ~~ c_aran_is_still_mad SAY ~[ARAN] Look, I done got close enough to you to be able to be hurt. Don't you be thinkin' I am some toy what to screw with. A man's got some pride, though blighted little be left him after th' gods an' womenfolk done had their ways. Just leave me be for awhile.~ IF ~~ THEN EXIT END IF ~~ c_pc_tears SAY ~[ARAN] Hey, that be no fair. Hey... now, stop th' waterworks... you done hurt me a good bit there. I just need a mite bit o' space...~ ++ ~[PC] Fine. Be that way. I don't care. I hate you!~ + a1232 ++ ~[PC] I... I just wanted to apologise. I'm sorry if I hurt you. I didn't mean to.~ + c_pc_apology + ~Global("c-aransex","GLOBAL",1)~ + ~[PC] You are a moody, ridiculous egotistical brat, and I am beginning to think you will never grace my bed again.~ + c_aran_is_still_mad ++ ~[PC] A few tears, and you cave like an apprentice in his first year. Do you have any spine, or should I give you sometime to grow one?~ + c_aran_offended ++ ~[PC] Can you really be so angry with me? I mean... with my fingers walking up your chest to your cheek like this? Or my lips coming so close to yours?~ + c_you_dont_play_fair ++ ~[PC] (Keep sobbing, burying your face in his shoulder)~ + c_you_dont_play_fair ++ ~[PC] Sulking? Oh, that is *so* adult.~ + c-aranmad1 END IF ~~ c_aran_offended SAY ~[ARAN] You ruddy hurtfull little vindictive... get away from me.~ ++ ~[PC] Look, this is coming out all wrong. I... I wanted to apologise.~ + c_pc_apology ++ ~[PC] With an attitude like that, you will make no headway with me.~ + a1232 ++ ~[PC] Still sulking? Oh, that is *so* adult.~ + c-aranmad1 ++ ~[PC] So, you have a little spine. Good. When you come and apologise to me, just remember that I do not appreciate weaklings.~ + c-aranmad3 // stop romance ++ ~[PC] This is not working out, Aran. We should stick to business, and absolutely nothing else.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_we_are_through // kick him out ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. You should leave the party for awhile.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_you_are_out // kick him out for good and try to kill him ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. I think... yes. I will just kill you now and be done with it.~ + a24 // DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ << remember to set this on out END IF ~~ c_pc_apology // PC flatters Aran ++ ~[PC] (Grab his hand, kissing his palm quickly.) Does this answer the question?~ + c_kiss_palm // PC grovels for Aran + ~RandomNum(3,1)~ + ~[PC] I am so sorry I hurt you. I didn't mean to, and I am so selfish and stupid... I just need to be near you, and have you be near me.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_1_grovel + ~RandomNum(3,2)~ + ~[PC] I don't deserve to be with you. You are careful and considerate, and I was horrible to you. You mean more to me than I ever imagined.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_2_grovel + ~RandomNum(3,3)~ + ~[PC] I can't stand you glowering and silent, Aran. My time with you is too important. You make this all bearable. Please... I am sorry. Can't a handsome, wonderful man like you find it in your heart to fogive me?~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_3_grovel // make up + ~RandomNum(3,1)~ + ~[PC] It was my fault, Aran, not yours. I didn't realize that I could hurt you like that. Will we be able to go bacjk to the way things were?~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_1_of_course_we_are + ~RandomNum(3,2)~ + ~[PC] I do not always understand you, and what you want of me, Aran. But you are a part of my life now. I apologise for getting you so angry.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_2_of_course_we_are + ~RandomNum(3,3)~ + ~[PC] Can you forgive me? Do you think we are fine being with each other? ~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_3_of_course_we_are // do not make up + ~RandomNum(3,1)~ + ~[PC] I don't know what I did to get you angry, but whatever it is can't really be important. So let's make up, alright?~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_1_no_we_are_not + ~RandomNum(3,2)~ + ~[PC] I mean, I am sorry you got all upset over nothing. I expected you to have a tougher skin.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_aran_offended + ~RandomNum(3,3)~ + ~[PC] Don't you have something to say to me? like "I'm sorry, <CHARNAME>, for not understanding how you want things to be"?~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_3_no_we_are_not // cry + ~RandomNum(3,1)~ + ~[PC] I know I am not the best at making apologies, but... I... (begin to cry.)~ + c_cry_not_fair + ~RandomNum(3,2)~ + ~[PC] I... I... you... (Begin crying.)~ + c_cry_not_fair + ~RandomNum(3,3)~ + ~[PC] These aren't jewels running down my cheeks, Aran. I didn't mean to hurt you. You are very important to me.~ + c_cry_not_fair END IF ~~ c_kiss_palm SAY ~[ARAN] (He draws your hands to him, holding them close to his chest.)~ = ~[ARAN] Aye, it does answer it right well. An' I be a right happy man.~ IF ~~ THEN EXIT END IF ~~ c_you_dont_play_fair SAY ~[ARAN] <CHARNAME>... You don't rightly play fair, now, do you.~ = ~[ARAN] (He draws you close into his embrace, his lips barely brushing your ear.)~ = ~[ARAN] I don't even rightly remember what it was all about, nohow. Fine. I guess it be a waste o' time to be mad at you anyways, seein' as you done got me, hook, line, an' sinker.~ IF ~~ THEN EXIT END IF ~~ c_pc_i_can_make_it_worth_it SAY ~[ARAN] Fine. I be here, like a good little blighted sellsword.~ ++ ~[PC] With an attitude like that, you will make no headway with me.~ + a1232 ++ ~[PC] I was wrong. I don't believe in words without actions, so I am going to let you kiss me.~ + c_toying_with_me ++ ~[PC] I am sorry. I did not mean to hurt you. Can you forgive me?~ + c_it_was_nothing ++ ~[PC] Can you really be so angry with me? I mean... with my fingers walking up your chest to your cheek like this? Or my lips coming so close to yours?~ + c_you_dont_play_fair // stop romance ++ ~[PC] Look... this is just not working out, Aran. We should stick to business, and absolutely nothing else.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_we_are_through // kick him out ++ ~[PC] None of this is working the way I want. I think it would be best if you left the party for awhile, to go settle your head.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_you_are_out // kick him out for good and try to kill him ++ ~[PC] You are such a pain to deal with. None of this is working the way I want. I think... yes. I will just kill you now and be done with it.~ + a24 // DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ << remember to set this on out END IF ~~ c_it_was_nothing NOT_YET_BUILT END /* APOLOGY: ARAN approaches PC after TIMEREXPIRED - Aran is seeking PC to give an apology */ /* Remember to remove the GTE to .BCS */ /* Remember to place note in docs: If you make up with Aran after fighting, just like most dudes, he will try to be overly physical in his demostrations immediately post fight. At least that is the rationale I am presenting for why his NPC-Initiated Flirts get set to run, even though a player has told him she doesn't want hem... players will have to tell him to stop flirting again via PID after making up. */ IF ~Global("c-aranfight","GLOBAL",1) GlobalTimerExpired("c-aranismad","GLOBAL")~ THEN BEGIN c-aranmakeup1 SAY ~[ARAN] Hey... I am right sorry.~ IF ~RandomNum(3,1)~ THEN GOTO c-aran_1_makeup IF ~RandomNum(3,2)~ THEN GOTO c-aran_2_makeup IF ~RandomNum(3,3)~ THEN GOTO c-aran_3_makeup END IF ~~ c-aran_1_makeup // 7 to 11 responses SAY ~[ARAN] I know I have been mad, but I should know better. You call th' shots, <CHARNAME>. Do we be fine wi' eachother?~ // Another male as foil + ~Gender(Player2,MALE) !Name("c-aran",Player2)~ + ~[PC] Not really. I should have <PLAYER2> beat you senseless. I would do it, but I think it is beneath my notice.~ + c_dont_be_that_way + ~Gender(Player3,MALE) !Name("c-aran",Player3)~ + ~[PC] I can't believe you just walked away angry like that. I should have <PLAYER3> pound some sense into you.~ + c_dont_be_that_way + ~Gender(Player4,MALE) !Name("c-aran",Player4)~ + ~[PC] No. You should be careful, Aran. <PLAYER4> might be convinced that you hurt me, and then where would you be?~ + c_dont_be_that_way + ~Gender(Player5,MALE) !Name("c-aran",Player5)~ + ~[PC] No. I do not understand why you were so angry. I asked <PLAYER5>, and he just shrugged.~ + c_dont_be_that_way + ~Gender(Player6,MALE) !Name("c-aran",Player6)~ + ~[PC] If by fine, you mean I should be spending less time with you and more time with <PLAYER6>, then sure.~ + c_dont_be_that_way // make up + ~RandomNum(3,1)~ + ~[PC] It was my fault, Aran, not yours. Of course we are fine.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",0)~ + c_1_of_course_we_are + ~RandomNum(3,2)~ + ~[PC] I do not always understand you, and what you want of me, Aran. But you are a part of my life now. I accept your apology.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",0)~ + c_2_of_course_we_are + ~RandomNum(3,3)~ + ~[PC] I think so. Do you think we are fine with each other? ~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",0)~ + c_3_of_course_we_are // do not make up + ~RandomNum(3,1)~ + ~[PC] No. You will have to do better than that as an apology, Aran. Go away until you can apologise properly.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_1_no_we_are_not + ~RandomNum(3,2)~ + ~[PC] He speaks. Well, sort of - his mouth is moving, but I do not hear anything worth hearing.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_3_no_we_are_not + ~RandomNum(3,3)~ + ~[PC] You are joking, right? What makes you think I have forgiven you?~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_3_no_we_are_not // cry + ~RandomNum(3,1)~ + ~[PC] (Burst into tears.)~ + c_cry_not_fair + ~RandomNum(3,2)~ + ~[PC] I... I... you... (Begin crying.)~ + c_cry_not_fair + ~RandomNum(3,3)~ + ~[PC] These aren't jewels running down my cheeks, Aran. You really hurt me.~ + c_cry_not_fair // PC expects groveling by Aran + ~RandomNum(3,1)~ + ~[PC] On your knees. A proper apology starts with you kneeling in front of me.~ + c_1_aran_grovel + ~RandomNum(3,2)~ + ~[PC] After your words and actions over the past few days, you should be crawling to me on your hands and feet. Do it, and I might consider your aplogoly.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_2_aran_grovel + ~RandomNum(3,3)~ + ~[PC] Speak a little louder. And where are my flowers? Where is my gift? This is shaping up to be a sorry excuse for an apology.~ + c_3_aran_grovel // stop romance ++ ~[PC] This is not working out, Aran. We should stick to business, and absolutely nothing else.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_we_are_through // kick him out ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. You should leave the party for awhile.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_you_are_out END IF ~~ c-aran_2_makeup // 8 to 12 responses SAY ~[ARAN] I just got so... so mad, I didn't rightly know how to handle it. You mean a good bit to me, <CHARNAME>. Do we be fine wi' eachother?~ // Another male as foil + ~Gender(Player2,MALE) !Name("c-aran",Player2)~ + ~[PC] <PLAYER2> thinks you are an ass.~ + c_dont_be_that_way + ~Gender(Player3,MALE) !Name("c-aran",Player3)~ + ~[PC] I thought we understood each other. <PLAYER3> would have understood me better.~ + c_dont_be_that_way + ~Gender(Player4,MALE) !Name("c-aran",Player4)~ + ~[PC] I don't understand why you got so upset. If i were arguing with <PLAYER4>, he would never walk away from me like that.~ + c_dont_be_that_way + ~Gender(Player5,MALE) !Name("c-aran",Player5)~ + ~[PC] You got so angry, over so little. I asked <PLAYER5> if all men were like that, and he just shrugged.~ + c_dont_be_that_way + ~Gender(Player6,MALE) !Name("c-aran",Player6)~ + ~[PC] If by fine, you mean I should be spending less time with you and more time with <PLAYER6>, then sure.~ + c_dont_be_that_way // make up + ~RandomNum(3,1)~ + ~[PC] It was my fault, Aran, not yours. Of course we are fine.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_1_of_course_we_are + ~RandomNum(3,2)~ + ~[PC] I do not always understand you, and what you want of me, Aran. But you are a part of my life now.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_2_of_course_we_are + ~RandomNum(3,3)~ + ~[PC] I think so. Do you think we are fine with each other? ~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_3_of_course_we_are // do not make up + ~RandomNum(3,1)~ + ~[PC] Go away, Aran. I don't want to talk to you right now.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_1_no_we_are_not + ~RandomNum(3,2)~ + ~[PC] He speaks. Well, sort of - his mouth is moving, but I do not hear anything worth hearing.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_3_no_we_are_not + ~RandomNum(3,3)~ + ~[PC] You are joking, right? What makes you think I have forgiven you?~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_3_no_we_are_not // PC expects groveling by Aran + ~RandomNum(3,1)~ + ~[PC] Don't you think I deserve a better apology than that? Perhaps you should be kneeling, or groveling, or something more suitable?~ + c_1_aran_grovel + ~RandomNum(3,2)~ + ~[PC] You should be crawling to me on your hands and feet. Actually, you should be kissing my feet, and begging me for forgiveness.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_2_aran_grovel + ~RandomNum(3,3)~ + ~[PC] Do you really think I will accept such a lackluster performance? No gifts. No flowers. No chocolate. No clue. That isn't an apology - that is an insult.~ + c_3_aran_grovel // PC grovels for Aran + ~RandomNum(3,1)~ + ~[PC] I am so sorry I hurt you. I didn't mean to, and I am so selfish and stupid... I just need to be near you, and have you be near me.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_1_grovel + ~RandomNum(3,2)~ + ~[PC] I don't deserve to be with you. You are careful and considerate, and I was horrible to you. You mean more to me than I ever imagined.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_2_grovel + ~RandomNum(3,3)~ + ~[PC] (Grab his hand, kissing his palm quickly.) Does this answer the question?~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_3_grovel // stop romance ++ ~[PC] This is not working out, Aran. We should stick to business, and absolutely nothing else.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_we_are_through // kick him out ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. You should leave the party for awhile.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_you_are_out // kick him out for good and try to kill him ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. Stop that grinning, servile smile. I think... yes. I will just kill you now and be done with it.~ + a24 // DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_you_are_out END IF ~~ c-aran_3_makeup // ok, some fun with girltalk, but don't laugh - my experience with girltalk is a teacher's lounge in primary and secondary eductaion, and from the outside looking in! SAY ~[ARAN] I get so worked up over you sometimes, it jsut seems a bit like I be drownin'. I don't have no hold or call over you, but sometimes I start thinkin' like I do. Do we be fine wi' eachother?~ // Another male as foil + ~Gender(Player2,MALE) !Name("c-aran",Player2)~ + ~[PC] <PLAYER2> would never turn his back on me, no matter what I did.~ + c_dont_be_that_way + ~Gender(Player3,MALE) !Name("c-aran",Player3)~ + ~[PC] Why don't you go ask <PLAYER3> how a real man apologises. Even he could do better.~ + c_dont_be_that_way + ~Gender(Player4,MALE) !Name("c-aran",Player4)~ + ~[PC] I don't know. <PLAYER4> would never treat me like you do.~ + c_dont_be_that_way + ~Gender(Player5,MALE) !Name("c-aran",Player5)~ + ~[PC] Why don't you go off and do manly things with <PLAYER5>. You don't need me around, anyways. After all, I am just a silly little girl who doesn't know how to keep you happy.~ + c_dont_be_that_way + ~Gender(Player6,MALE) !Name("c-aran",Player6)~ + ~[PC] <PLAYER6> says I am too important to be given the silent treatment, but I told him it didn't matter. I am not worth talking to, anyways.~ + c_dont_be_that_way // Another female as foil + ~Gender(Player2,FEMALE) !Name("edwin",Player2) !Name("aerie",Player2) !Name("viconia",Player2) !Name("jaheira",Player2)~ + ~[PC] Edwina says you are a chauvanistic, egotistical, self-centered moron. And I tend to believe her... after all, she has lived both sides of the equation.~ + c_dont_be_that_way + ~Gender(Player3,FEMALE) !Name("edwin",Player3) !Name("aerie",Player3) !Name("viconia",Player3) !Name("jaheira",Player3)~ + ~[PC] Edwina says you are a chauvanistic, egotistical, self-centered moron. And I tend to believe her... after all, she has lived both sides of the equation.~ + c_dont_be_that_way + ~Gender(Player4,FEMALE) !Name("edwin",Player4) !Name("aerie",Player4) !Name("viconia",Player4) !Name("jaheira",Player4)~ + ~[PC] Edwina says you are a chauvanistic, egotistical, self-centered moron. And I tend to believe her... after all, she has lived both sides of the equation.~ + c_dont_be_that_way + ~Gender(Player5,FEMALE) !Name("edwin",Player5) !Name("aerie",Player5) !Name("viconia",Player5) !Name("jaheira",Player5)~ + ~[PC] Edwina says you are a chauvanistic, egotistical, self-centered moron. And I tend to believe her... after all, she has lived both sides of the equation.~ + c_dont_be_that_way + ~Gender(Player6,FEMALE) !Name("edwin",Player6) !Name("aerie",Player6) !Name("viconia",Player6) !Name("jaheira",Player6)~ + ~[PC] Edwina says you are a chauvanistic, egotistical, self-centered moron. And I tend to believe her... after all, she has lived both sides of the equation.~ + c_dont_be_that_way + ~Gender(Player2,FEMALE) Name("aerie",Player2)~ + ~[PC] Aerie says I should apologise to you right away, because we make such a good team, but she is no real judge of relationships.~ + c_dont_be_that_way + ~Gender(Player3,FEMALE) Name("aerie",Player3)~ + ~[PC] Aerie says I should apologise to you right away, because we make such a good team, but she is no real judge of relationships.~ + c_dont_be_that_way + ~Gender(Player4,FEMALE) Name("aerie",Player4)~ + ~[PC] Aerie says I should apologise to you right away, because we make such a good team, but she is no real judge of relationships.~ + c_dont_be_that_way + ~Gender(Player5,FEMALE) Name("aerie",Player5)~ + ~[PC] Aerie says I should apologise to you right away, because we make such a good team, but she is no real judge of relationships.~ + c_dont_be_that_way + ~Gender(Player6,FEMALE) Name("aerie",Player6)~ + ~[PC] Aerie says I should apologise to you right away, because we make such a good team, but she is no real judge of relationships.~ + c_dont_be_that_way + ~Gender(Player2,FEMALE) Name("viconia",Player2)~ + ~[PC] Viconia says you are a spineless wimp, and I should beat you, hurt you, or manipulate you until you do my bidding without getting angry.~ + c_dont_be_that_way + ~Gender(Player3,FEMALE) Name("viconia",Player3)~ + ~[PC] Viconia says you are a spineless wimp, and I should beat you, hurt you, or manipulate you until you do my bidding without getting angry.~ + c_dont_be_that_way + ~Gender(Player4,FEMALE) Name("viconia",Player4)~ + ~[PC] Viconia says you are a spineless wimp, and I should beat you, hurt you, or manipulate you until you do my bidding without getting angry.~ + c_dont_be_that_way + ~Gender(Player5,FEMALE) Name("viconia",Player5)~ + ~[PC] Viconia says you are a spineless wimp, and I should beat you, hurt you, or manipulate you until you do my bidding without getting angry.~ + c_dont_be_that_way + ~Gender(Player6,FEMALE) Name("viconia",Player6)~ + ~[PC] Viconia says you are a spineless wimp, and I should beat you, hurt you, or manipulate you until you do my bidding without getting angry.~ + c_dont_be_that_way + ~Gender(Player2,FEMALE) Name("jaheira",Player2)~ + ~[PC] Jaheira says I should smack you hard on the side of the head, and tell you to stop being a silly male, but I don't if I care anyways.~ + c_dont_be_that_way + ~Gender(Player3,FEMALE) Name("jaheira",Player3)~ + ~[PC] Jaheira says I should smack you hard on the side of the head, and tell you to stop being a silly male, but I don't if I care anyways.~ + c_dont_be_that_way + ~Gender(Player4,FEMALE) Name("jaheira",Player4)~ + ~[PC] Jaheira says I should smack you hard on the side of the head, and tell you to stop being a silly male, but I don't if I care anyways.~ + c_dont_be_that_way + ~Gender(Player5,FEMALE) Name("jaheira",Player5)~ + ~[PC] Jaheira says I should smack you hard on the side of the head, and tell you to stop being a silly male, but I don't if I care anyways.~ + c_dont_be_that_way + ~Gender(Player6,FEMALE) Name("jaheira",Player6)~ + ~[PC] Jaheira says I should smack you hard on the side of the head, and tell you to stop being a silly male, but I don't if I care anyways.~ + c_dont_be_that_way // make up + ~RandomNum(3,1)~ + ~[PC] It is my fault, Aran, not yours. Of course we are fine.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",0)~ + c_3_of_course_we_are + ~RandomNum(3,2)~ + ~[PC] I do not always understand you, or what you want of me, Aran. But you are a part of my life now.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",0)~ + c_4_of_course_we_are + ~RandomNum(3,3)~ + ~[PC] I think so. Do you think we are fine with each other? ~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",0)~ + c_1_of_course_we_are // do not make up + ~RandomNum(3,1)~ + ~[PC] No. You have to better than that as an apology, Aran. Get on with the job at hand. Perhaps you should just sulk and stew by yourself for a few days.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_3_no_we_are_not + ~RandomNum(3,2)~ + ~[PC] Go away, Aran. You shut me out. I don't care what I did, or what you did... I just don't ever expect to be given the cold shoulder, ever.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_4_no_we_are_not + ~RandomNum(3,3)~ + ~[PC] I do not hear anything worth hearing. You can go drown, for all I care.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_dont_be_that_way // stop romance ++ ~[PC] This is not working out, Aran. We should stick to business, and absolutely nothing else.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_we_are_through // kick him out ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. You should leave the party for awhile.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_you_are_out // kick him out for good and try to kill him ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. Stop that grinning, servile smile. I think... yes. I will just kill you now and be done with it.~ + a24 END IF ~~ c_dont_be_that_way SAY ~[ARAN] Now, don't be that way, eh? I done said I was sorry...~ // make up + ~RandomNum(3,1)~ + ~[PC] No... wait. It is my fault, Aran, not yours. Of course we are fine.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_2_of_course_we_are + ~RandomNum(3,2)~ + ~[PC] Yes, you did. And... I guess that I should, too. I do not always understand you, and what you want of me, Aran. But you are a part of my life now.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_3_of_course_we_are + ~RandomNum(3,3)~ + ~[PC] I think that is enough torture. Of course we are fine with eachother. In fact, we are more than fine. A little arguement isn't going to kill us.~ DO ~SetGlobal("c-aranfight","GLOBAL",0)~ + c_4_of_course_we_are // do not make up + ~RandomNum(3,1)~ + ~[PC] No. You have to better than that as an apology, Aran. Get on with the job at hand, and don't come to me before you have figured out what you did wrong.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_3_no_we_are_not + ~RandomNum(3,2)~ + ~[PC] You never specified what you are sorry about. About the stars being in the sky? About you being an ass? About you not listening to my needs and wants?~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_4_no_we_are_not + ~RandomNum(3,3)~ + ~[PC] That is not enough. Words are never enough. I mean, you just talk, you don't do anything to back them up. You must hate me.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_I_dont_hate_u // cry + ~RandomNum(3,1)~ + ~[PC] (Burst into tears.)~ + c_cry_not_fair + ~RandomNum(3,2)~ + ~[PC] I... I... you... (Begin crying.)~ + c_cry_not_fair + ~RandomNum(3,3)~ + ~[PC] These aren't jewels running down my cheeks, Aran. You really hurt me by shutting me out.~ + c_cry_not_fair // PC expects groveling by Aran + ~RandomNum(3,1)~ + ~[PC] On your knees. A proper apology starts with you kneeling in front of me.~ + c_1_aran_grovel + ~RandomNum(3,2)~ + ~[PC] After your words and actions over the past few days, you should be crawling to me on your hands and feet. Do it, and I might consider your aplogoly.~ DO ~SetGlobal("c-aranfight","GLOBAL",1) SetGlobalTimer("c-aranismad","GLOBAL",TWO_DAYS)~ + c_2_aran_grovel + ~RandomNum(3,3)~ + ~[PC] Speak a little louder. And where are my flowers? Where is my gift? This is shaping up to be a sorry excuse for an apology.~ + c_3_aran_grovel // stop romance ++ ~[PC] This is not working out, Aran. We should stick to business, and absolutely nothing else.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_we_are_through // kick him out ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. You should leave the party for awhile.~ DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_you_are_out // kick him out for good and try to kill him ++ ~[PC] None of this is working the way I want. You are a pain and a distraction. Stop that grinning, servile smile. I think... yes. I will just kill you now and be done with it.~ + a24 // DO ~SetGlobal("c-aranfight","GLOBAL",0) SetGlobal("c-aranflirtstop","GLOBAL",1) SetGlobal("c-aranromance","GLOBAL",3)~ + c_you_are_out END IF ~~ c_1_of_course_we_are SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_2_of_course_we_are SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_3_of_course_we_are SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_4_of_course_we_are SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_1_no_we_are_not SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_2_no_we_are_not SAY ~[ARAN] ~ + ~RandomNum(4,1)~ + ~[PC] ~ + c_1_bugger_all // reconsider, no + ~RandomNum(4,2)~ + ~[PC] ~ + c_2_bugger_all // reconsider, no + ~RandomNum(4,3)~ + ~[PC] ~ + c_3_bugger_all // reconsider, no + ~RandomNum(4,4)~ + ~[PC] ~ + c_4_bugger_all // reconsider, no + ~RandomNum(4,1)~ + ~[PC] ~ + c_1_of_course_we_are // reconsider, yes + ~RandomNum(4,2)~ + ~[PC] ~ + c_2_of_course_we_are // reconsider, yes + ~RandomNum(4,3)~ + ~[PC] ~ + c_3_of_course_we_are // reconsider, yes + ~RandomNum(4,4)~ + ~[PC] ~ + c_4_of_course_we_are // reconsider, yes ++ ~[PC] I have had enough of your crap. Go on... go sulk for awhile. When you decide to grow up, come and talk to me again.~ + c_1_bugger_all END IF ~~ c_3_no_we_are_not SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_4_no_we_are_not SAY ~[ARAN] ~ + ~RandomNum(4,1)~ + ~[PC] ~ + c_1_bugger_all // reconsider, no + ~RandomNum(4,2)~ + ~[PC] ~ + c_2_bugger_all // reconsider, no + ~RandomNum(4,3)~ + ~[PC] ~ + c_3_bugger_all // reconsider, no + ~RandomNum(4,4)~ + ~[PC] ~ + c_4_bugger_all // reconsider, no + ~RandomNum(4,1)~ + ~[PC] ~ + c_1_of_course_we_are // reconsider, yes + ~RandomNum(4,2)~ + ~[PC] ~ + c_2_of_course_we_are // reconsider, yes + ~RandomNum(4,3)~ + ~[PC] ~ + c_3_of_course_we_are // reconsider, yes + ~RandomNum(4,4)~ + ~[PC] ~ + c_4_of_course_we_are // reconsider, yes ++ ~[PC] You are so... so... Go on. Go sulk, or pout, or whatever you want to do. I don't want to talk to you anyways! I... I hate you! (burst into tears)~ + c_2_bugger_all END IF ~~ c_1_bugger_all SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_2_bugger_all SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_3_bugger_all SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_4_bugger_all SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_1_we_are_through SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_you_are_out SAY ~[ARAN] ~ IF ~~ THEN DO EXIT END IF ~~ c_I_dont_hate_u SAY ~[ARAN] ~ END IF ~~ c_cry_not_fair SAY ~[ARAN] Now, hey, wait... I be right sorry, eh? I just felt you were takin' advantage o' me right an' left, an' I... oh, for Tymora's Smile, stop wi' th' waterworks, eh?~ END
  14. Exit Strategy Well, we have a number of responses building for most states, and I want to play with one specific challenge. How do we make an exit available for a player right up front in a dialog, that fulfills the following conditions: Reinforces Aran's characterization Is not always the same "No talking" line Takes little effort to implement so we can concentrate on dialog folks who don't exit want to see. In many states, we have from 2 to 5 different responses already, which is getting to the point of Wall Of Text™. So I want to do two things - have only one line available that says "this way out", and have it reinforce a character concept. I'm going to toss a RandNum set into the mix, so that Aran swears a little differently each time the line gets run. This I am setting aside, too, as a "Standard Exit Block". The added replies to a state: + ~RandNum(9,1)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup1 + ~RandNum(9,2)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup2 + ~RandNum(9,3)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup3 + ~RandNum(9,4)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup4 + ~RandNum(9,5)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup5 + ~RandNum(9,6)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup6 + ~RandNum(9,7)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup7 + ~RandNum(9,8)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup8 + ~RandNum(9,9)~ + ~ <<EXIT_TEXT>> ~ + c-aranshutup9 IF ~~ c-aranshutup1 SAY ~[ARAN] Aye, then. Shuttin' up.~ IF ~~ THEN EXIT END IF ~~ c-aranshutup2 SAY ~[ARAN] By the Cryin' God's tears, you are in a mood.~ IF ~~ THEN EXIT END IF ~~ c-aranshutup3 SAY ~[ARAN] Sure.~ IF ~~ THEN EXIT END IF ~~ c-aranshutup4 SAY ~[ARAN] Fine. I'll be over there.~ IF ~~ THEN EXIT END IF ~~ c-aranshutup5 SAY ~[ARAN] Sune's Lusty Lips, you can sure kill a conversation.~ IF ~~ THEN EXIT END IF ~~ c-aranshutup6 SAY ~[ARAN] Corellon's Bowhand, you have an attitude today.~ IF ~~ THEN EXIT END IF ~~ c-aranshutup7 SAY ~[ARAN] Shar's Arsehole, shut me down, will ya? Fine.~ IF ~~ THEN EXIT END IF ~~ c-aranshutup8 SAY ~[ARAN] By the Cryin' God's Tears - I was just makin' conversation.~ IF ~~ THEN EXIT END IF ~~ c-aranshutup9 SAY ~[ARAN] Well, I'll just bugger off, then. This is me, see, mindin' my own business.~ IF ~~ THEN EXIT END The advantage here is that I can customize the player response to fit the talk it is attached to, but I have it linked to the same 9 possible responses.
  15. Scraps of ideas from researching (read that as distracting berelinde from her appointed tasks by poking at her and asking silly questions. Hey, i think I can get a job at Fox research, now...) Edwin/Edwina tranformation. Adding a banter to Edwin's post-transformation banter file, /* Fun with Edwin as a Woman */ Probably will never play, but heck - why not. This is long form built out of Edwin's BEDWINWO.DLG file, acient long-form EXTERN. This could be rebuilt more efficiently as a CHAIN, or just tidied up, but the code part that is most fun about it is the use of SAY #sringnumber I saw used in JCompton's D'Arnise alia Romance, where preexisting game string references can be swapped in: APPEND ~BEDWINWO~ IF ~InParty("C-ARAN") See("C-ARAN") !StateCheck("C-ARAN",CD_STATE_NOTVALID) Global("c-arEdwinW","LOCALS",0)~ THEN BEGIN c-edwiniswoman SAY #8556 /* ~(My condition draws fools like flies to honey). Silence, you idiot! You've a death wish that is larger than your swollen head.~ [EDWINW39] */ IF ~~ THEN DO ~SetGlobal("c-arEdwinW","LOCALS",1)~ EXTERN ~C-ARANB~ woman1 END END APPEND ~C-ARANB~ IF ~~ woman1 SAY ~[ARAN] Hey, now, I weren't saying naught, now, eh? I was just...~ IF ~~ THEN EXTERN ~BEDWINWO~ woman2 END END APPEND ~BEDWINWO~ IF ~~ woman2 SAY ~[EDWIN] Your eyes were practically shouting vile depravity at my feminine form.~ IF ~~ THEN EXTERN ~C-ARANB~ woman3 END END APPEND ~C-ARANB~ IF ~~ woman3 SAY ~[ARAN] Grumbar's Formidable Fists, laddie... err.. m'Lady, I weren't doin' no such thing. It were just that you haven't got used to th' right manner o' walkin in that there body, eh?~ IF ~~ THEN EXTERN ~BEDWINWO~ woman4 END END APPEND ~BEDWINWO~ IF ~~ woman4 SAY #7276 /* ~And exactly WHAT is wrong with my 'manner?'~ [EDWINW49] */ IF ~~ THEN EXTERN ~C-ARANB~ woman5 END END APPEND ~C-ARANB~ IF ~~ woman5 SAY ~[ARAN] Well, for one thing, if you keep slammin' down your heels when you walk like that, you are goin' to jounce those feminine attributes right out o' that there robe.~ IF ~~ THEN EXTERN ~BEDWINWO~ woman6 END END APPEND ~BEDWINWO~ IF ~~ woman6 SAY #7066 /* ~(I will kill ALL of them. Slowly. With...with HOT...pokey things and...and coals and...and prods. Yessssss, prods. Many, many prods.)~ */ IF ~~ THEN EXIT END END So, dv doesn't change, still = "edwin", but the banter file and script in play does. Next step; figure out what consititues a good check for "Edwina" being in play rather than "edwin", so that a banter or talk fits the feminine form. Gender() I think is not the way to go, as my bet is that if they don't change the DV, they must be shell-scripting somehow, so time to look through the decompiled .bcs for clues...
  16. First draft. Less to talk about here. PC gets stronghold. Aran genially asks about it. Complications ensue. 1. multi-stronghold folks vs re-classing Aran vs. stock responses. 2. easter egg for having all strongholds. 3. time. This sample took hours to create and runs three lines [A] > [PC] > [A] in-game. note to self - look up triggers for thieves guild and recheck vs Blucher's and aVENGER (RR)'s expanded guild content, for .bcs operation. note to self - steal berelinde's .bcs blocks for Gavin that tip off stronghold ownership, modify to Aran's dv and the given LOCALS values placed here, and claim as own brilliant idea thus winning fame, worldwide acclaim, and the millions of dollars such an act will bring my way. note to self - must not play clip of Morodin singing or go into Research Lab on Normandy 2. Must not play ME2. Too many similarities. Must evaluate code, test weidu functionality, choose pathways for progression of ToB talks... too much to do. Too little time. Salarian brain equipped for tasks, but need Krogon stamina to complete. Must talk to Shepherd about creating new [PARAGON ACTION HERE] Must post and shut down computer. /* Gaining Stronghold Responses : set from .bcs */ /* 1 possible if played without mods, 2 or 3 for multiclass PC's with mods, all of them if one of the multi-stronghold tweaks are installed */ IF ~Global("c-arants","LOCALS",1)~ THEN BEGIN a1502 SAY ~[ARAN] Well, <CHARNAME>, you done got yourself a nice little operation to run. Gamblin', prostitution, light theft, "protection", spyin', an' a cute little trainin' program to boot. Question is, what are you goin' to do with it.~ ++ ~[PC] Anything I want.~ DO ~SetGlobal("c-arants","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1503 /* c-anythingiwant */ ++ ~[PC] Whatever serves the greater good.~ DO ~SetGlobal("c-arants","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1504 /* c-whateverservesgood */ + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Are you jealous? After all, you have some minor skills in gathering either information or whatever is not tied down. Strike that. Especially things that are tied down.~ DO ~SetGlobal("c-arants","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1505 /* c-tieddown */ + ~Class("c-aran",MAGE_ALL)~ + ~[PC] I am not sure you would understand, all wrapped up in your books and scribing. It takes coin to keep you in quills, parchment, and spell components.~ DO ~SetGlobal("c-arants","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1506 /* c-takescoin */ + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations and an income stream, but I hear that there is only one way out of the Guild, and it involves me having a minor accident.~ DO ~SetGlobal("c-arants","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1507 /* c-minoraccident */ + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... kill anything that moves, and then resurrect anyone who we did not mean to kill.~ DO ~SetGlobal("c-arants","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1508 /* c-strongarmthem */ ++ ~[PC] I know this is not the most honest, upright way of doing things. But right now we need the resources, and shutting this all down puts people at risk of far worse owners.~ DO ~SetGlobal("c-arants","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END IF ~Global("c-aranrs","LOCALS",1)~ THEN BEGIN a1470 SAY ~[ARAN] Well, you done got us a nice place to set up base camp. I don't rightly know what a Ranger territory means, though, really. Anythin' special we got to do?~ ++ ~[PC] Just do what I tell you to, when I tell you to, and everything will be fine.~ DO ~SetGlobal("c-aranrs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1479 ++ ~[PC] Whatever serves the greatest good for the greatest number of our charges.~ DO ~SetGlobal("c-aranrs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1480 ++ ~[PC] It's good to know you are paying attention to our progress, Aran. Your scrivening will be useful handling all this. But stick to weaponry and contracts, and let me handle management.~ DO ~SetGlobal("c-aranrs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1481 + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Well, you have some minor skills in gathering either information or whatever is not tied down. Strike that. Especially things that are tied down.~ DO ~SetGlobal("c-aranrs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1488 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] I am not sure you would understand, all wrapped up in your books and scribing. It takes coin to keep you in quills, parchment, and spell components.~ DO ~SetGlobal("c-aranrs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1487 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations and an income stream, but I know that helping protect a wide territory is a great deal of work.~ DO ~SetGlobal("c-aranrs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1490 + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... kill anything that moves, and then resurrect anyone who we did not mean to kill.~ DO ~SetGlobal("c-aranrs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1491 +~!Class(Player1,RANGER_ALL)~+ ~[PC] I know this is not really what I spent my life training for. But right now we need the resources, and these people need someone to look after them.~ DO ~SetGlobal("c-aranrs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END IF ~Global("c-aranps","LOCALS",1)~ THEN BEGIN a1471 SAY ~[ARAN] Well, you done got us a nice place to set up a base. Th' Order's back room there be plain, but clean an' secure. I don't rightly know what they will do to me, on account o' my language bein' so rough, though. Any words o' advice?~ ++ ~[PC] We do what the Order says, when it asks. Until then, we take advantage of the stability they offer.~ DO ~SetGlobal("c-aranps","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1482 ++ ~[PC] Whatever serves the greatest good.~ DO ~SetGlobal("c-aranps","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1483 ++ ~[PC] It's good to know you are paying attention to our progress, Aran. Your scrivening will be useful handling all this. But stick to weaponry and contracts, and let me handle management.~ DO ~SetGlobal("c-aranps","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1481 + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Well, you have some minor skills in gathering information. That might make a useful addition to the Order, and secure our relationship with them.~ DO ~SetGlobal("c-aranps","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1488 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] I am not sure you would understand, all wrapped up in your books and scribing. It takes coin to keep you in quills, parchment, and spell components.~ DO ~SetGlobal("c-aranps","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1487 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations, but I know that helping the Order is a great deal of work and returns very little coin.~ DO ~SetGlobal("c-aranps","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1490 + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... kill anything that moves, and then resurrect anyone who we did not mean to kill.~ DO ~SetGlobal("c-aranps","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1491 + ~!Class(Player1,PALADIN_ALL)~ + ~[PC] I know this is not really what I spent my life training for. But right now we need the backup, and having the backing of the Order will allow us more freedom to operate.~ ~SetGlobal("c-aranps","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END IF ~Global("c-aranms","LOCALS",1)~ THEN BEGIN a1472 SAY ~[ARAN] Well, you done got us an odd place to set up base camp. I don't rightly know if wanderin' 'round the Planes be a good idea. Seems like we got enough trouble right here on Faerun.~ ++ ~[PC] We do whatever I want to do, and use the Sphere to accomplish those goals.~ DO ~SetGlobal("c-aranms","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1484 ++ ~[PC] We will do whatever serves the greatest good for the most people.~ DO ~SetGlobal("c-aranms","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1485 ++ ~[PC] It's good to know you are paying attention to our progress, Aran. Your scrivening will be useful handling all this. But stick to weaponry and contracts, and let me handle management.~ DO ~SetGlobal("c-aranms","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1481 + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Well, you have some minor skills in gathering either information or whatever is not tied down. Strike that. Especially things that are tied down.~ DO ~SetGlobal("c-aranms","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1489 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] I am not sure you would understand, all wrapped up in your books and scribing. It takes coin to keep you in quills, parchment, and spell components.~ DO ~SetGlobal("c-aranms","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1498 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations, but I know that managing apprentices and dealing with the Sphere will be a great deal of work.~ DO ~SetGlobal("c-aranms","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1490 + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... kill anything that moves, and then resurrect anyone who we did not mean to kill.~ DO ~SetGlobal("c-aranms","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1491 + ~!Class(Player1,MAGE_ALL)~ + ~[PC] I know this is not really what I spent my life training for. But right now we need all the resources we can get, and this is too important an object to be left lying around unused.~ DO ~SetGlobal("c-aranms","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END IF ~Global("c-aranfs","LOCALS",1)~ THEN BEGIN a1473 SAY ~[ARAN] Well, you done got us a nice place to set up permanent. Bein' a landlord has some advantages, too, with that coin comin' in. I don't suppose we can call up an army as well as use th' Keep as a home, eh?~ ++ ~[PC] We will have to investigate that. At the very least, we might be able to gather some idiots who will be useful spell-fodder and distractions before they die.~ DO ~SetGlobal("c-aranfs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1486 ++ ~[PC] We will do whatever serves the greatest good for the most people who are tied to this Keep and its lands.~ DO ~SetGlobal("c-aranfs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1480 ++ ~[PC] It's good to know you are paying attention to our progress, Aran. Your scrivening will be useful handling all this. But stick to weaponry and contracts, and let me handle management.~ DO ~SetGlobal("c-aranfs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1481 + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Well, you have some minor skills in gathering either information or whatever is not tied down. Strike that. Especially things that are tied down. You could investigate the books and see what might be possible.~ DO ~SetGlobal("c-aranfs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1489 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] No armies. I am not sure you would understand, all wrapped up in your books and scribing. It takes coin to keep you in quills, parchment, and spell components. It takes much, much more coin to build an army, even a conscripted one.~ DO ~SetGlobal("c-aranfs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1487 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations and an income stream, but I know that helping protect a wide territory is a great deal of work.~ DO ~SetGlobal("c-aranfs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1490 + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... kill anything that moves, and then resurrect anyone who we did not mean to kill.~ DO ~SetGlobal("c-aranfs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1491 + ~!Class(Player1,FIGHTER_ALL)~ + ~[PC] I know this is not really what I spent my life training for. But right now we need the backup, and having a fortress and tenants allows us more freedom to operate.~ DO ~SetGlobal("c-aranfs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END IF ~Global("c-arands","LOCALS",1)~ THEN BEGIN a1474 SAY ~[ARAN] Well, you done got us a nice place to set up base camp. I don't rightly know what a Druid territory means, though, really. Anythin' special we got to do?~ ++ ~[PC] I use it to further my goals. You use it however I choose to let you.~ DO ~SetGlobal("c-arands","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1484 ++ ~[PC] We do whatever serves the entire Grove's creatures best.~ DO ~SetGlobal("c-arands","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1489 ++ ~[PC] It's good to know you are paying attention to our progress, Aran. Your scrivening will be useful handling all this. But stick to weaponry and contracts, and let me handle management.~ DO ~SetGlobal("c-arands","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1481 + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Well, you have some minor skills in gathering either information or whatever is not tied down. Strike that. Especially things that are tied down.~ DO ~SetGlobal("c-arands","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1489 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] I am not sure you would understand, all wrapped up in your books and scribing. Nature is a harsh mistress, and protecting this place will take a great deal of focus and attention.~ DO ~SetGlobal("c-arands","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1487 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations, but I know that helping protect a wide territory is a great deal of work.~ DO ~SetGlobal("c-arands","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1490 + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... kill anything that moves, and then resurrect anyone who we did not mean to kill.~ DO ~SetGlobal("c-arands","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1491 + ~!Class(Player1,DRUID_ALL)~ + ~[PC] I know this is not really what I spent my life training for. But right now we need the backup, and having nature on our side could have huge advantages.~ DO ~SetGlobal("c-arands","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END IF ~Global("c-arancs","LOCALS",1)~ THEN BEGIN a1475 SAY ~[ARAN] Well, you done got us a secure place to set up a base camp, complete wi' the protection o' a god. Anythin' special we got to do?~ ++ ~[PC] Whatever we can get away with.~ DO ~SetGlobal("c-arancs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1484 ++ ~[PC] Whatever serves the Temple.~ DO ~SetGlobal("c-arancs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1480 ++ ~[PC] It's good to know you are paying attention to our progress, Aran. Your scrivening will be useful handling all this. But stick to weaponry and contracts, and let me handle management.~ DO ~SetGlobal("c-arancs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1481 + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Well, you have some minor skills in gathering either information or whatever is not tied down. Strike that. Especially things that are tied down.~ DO ~SetGlobal("c-arancs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1488 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] I am not sure you would understand, all wrapped up in your books and scribing. There is more here than ways to keep you in quills and parchment.~ DO ~SetGlobal("c-arancs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1487 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations, but I know that being involved in a Temple is a great deal of work.~ DO ~SetGlobal("c-arancs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1490 + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... kill anything that moves, and then resurrect anyone who we did not mean to kill.~ DO ~SetGlobal("c-arancs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1491 + ~!Class(Player1,CLERIC_ALL)~ + ~[PC] I know this is not really what I spent my life training for. But right now we need the backup, and having the backing of the Temple will allow us more freedom to operate.~ DO ~SetGlobal("c-arancs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END IF ~Global("c-aranbs","LOCALS",1) Gender(Player1(MALE)~ THEN BEGIN a1476 SAY ~[ARAN] Well, you done got us a nice place to set up base camp. I don't rightly know much about playwritin', but you want help wi' the castin' couch, you just let me know. ~ ++ ~[PC] We do whatever it takes to increase my fame and fortune.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1492 ++ ~[PC] We do our best to keep these people employed and helping lift spirits. These are dangerous, horrible times for most people, and they need good entertainment.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1493 ++ ~[PC] It's good to know you are paying attention to our progress, Aran. Your scrivening will be useful handling all this. But stick to weaponry and contracts, and let me handle management.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1481 + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Well, you have some minor skills in gathering either information or whatever is not tied down. Strike that. Especially things that are tied down.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1489 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] I am not sure you would understand, all wrapped up in your books and scribing. It takes coin to keep you in quills, parchment, and spell components.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1487 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations and an income stream, but I know that managing a successful Theater is a great deal of work.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1490 + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... if something stands between you and your goal, whack it with something until it goes away.~ DO ~SetGlobal("c-aranbs","LOCALS",2)~ + a1491 + ~!Class(Player1,BARD_ALL)~ + ~[PC] I know this is not really what I spent my life training for. But right now we need resources, and having the Theater will allow us more freedom to operate.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END IF ~Global("c-aranbs","LOCALS",1) Gender(Player1(FEMALE)~ THEN BEGIN a1477 SAY ~[ARAN] Well, you done got us a nice place to set up base camp. I don't rightly know much about playwritin', but I do decent copywork. I think I done told you that before. How can I help?~ ++ ~[PC] This sudden offer to help would not be because some of the ingénues are pretty little redheads with wide, innocent eyes and low cut dresses, would it?~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1494 ++ ~[PC] I think I can handle a theater company. After all of the dangerous beasts we have clobbered, how hard could handling a group of stage musicians, actors, and suppliers possibly be?~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1495 ++ ~[PC] It's good to know you are paying attention to our progress, Aran. Your scrivening will be useful handling all this. But stick to weaponry and contracts, and let me handle management.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1481 + ~Class("c-aran",THIEF_ALL)~ + ~[PC] Well, you have some minor skills in gathering either information or whatever is not tied down. Strike that. Especially things that are tied down.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1489 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] I am not sure you would understand, all wrapped up in your books and scribing. It takes coin to keep you in quills, parchment, and spell components.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1487 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Say a prayer or two for me. I want this as a base of operations and an income stream, but I know that managing a successful Theater is a great deal of work.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1490 + ~Class("c-aran",FIGHTER_ALL)~ + ~[PC] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... if something stands between you and your goal, whack it with something until it goes away.~ DO ~SetGlobal("c-aranbs","LOCALS",2)~ + a1491 + ~!Class(Player1,BARD_ALL)~ + ~[PC] I know this is not really what I spent my life training for. But right now we need resources, and having the Theater will allow us more freedom to operate.~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1509 /* c-rightboss */ END /* Easter Egg for Multi-stronghold folks who get all strongholds at once */ IF ~Global("c-aranas","LOCALS",1)~ THEN BEGIN a1478 SAY ~[ARAN] Denir's Dextrous Digits, I am goin' crazy. What wi' all o' these strongholds to maintain, there be so much paperwork that I be usin' potions o' healin' on th' paper cuts. An' some idiot decided it were unkind to kill animals an' trees to use for buildin' parchment an' vellum, so now I have that ranger cabin an' druid grove on verbal contract.~ = ~[ARAN] That senchal at th' Keep be whinin' about taxes not addin' up, th' Thieves Guild dues we paid twice on account o' "clerical error", an' somehow those bloody apprentices wanted spell components similar to the temple's order so th' order components got cross-shipped. Don't rightly know how more messed up this can get.~ = ~[ARAN] Hey, find me somethin' to kill, eh? I am shut o' paperwork for a good while. Or mayhap get me a nice personal assistant, what can keep up with th' filin'.~ ++ ~[PC] You asked to help, remember? Don't come crying to me now.~ DO ~SetGlobal("c-aranas","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1496 ++ ~[PC] You have done a good job, and you will get through this. Just clear your head, take a day or two off, and then focus on getting things back in order.~ DO ~SetGlobal("c-aranas","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1497 ++ ~[PC] If you can't handle it, we will find someone else to do the job.~ DO ~SetGlobal("c-aranas","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1510 END IF ~~ a1479 SAY ~[ARAN] Right, then. Note to self... don't mess wi' a ranger and <PRO_HISHER> territory, on account o' they will be right snippy about it. I will be goin' about my business, eh?~ IF ~~ THEN EXIT END IF ~~ a1480 SAY ~[ARAN] Right nice o' you, all things considered. Me, I'd be wonderin' how to get someone extra hired on, makin' sure your wishes got done while you be runnin' about Faerun huntin' mad mages and miscellaneous mischievous maniacs. But that be me, always thinkin' an' talkin' way too much.~ IF ~~ THEN EXIT END IF ~~ a1481 SAY ~[ARAN] Look, it will turn out fine for you, no matter what. Just a bit o' occasional paperwork, some meetin's, an' mayhap some decisions to make later on, eh? We get a base o' operations, mayhap some coin, an' who knows what else. Worst comes to worst, we walk away clean and let fate take a hand.~ IF ~~ THEN EXIT END IF ~~ a1482 SAY ~[ARAN] Takin' advantage o' the Order o' the Radiant Heart sounds right smart. It be up there among th' top "smart" things to do, alongside rippin' the mask off a Lord o' Neverwinter, crossin' the Shadow Thieves, takin' a piss on a Dryad's oak, an' havin' wild sex wi' random dragons.~ IF ~~ THEN EXIT END IF ~~ a1483 SAY ~[ARAN] Sounds just like those wet-behind-the-ears recruit squires I seen cleanin' privys. The Order's goin' to like havin' us around right fine.~ IF ~~ THEN EXIT END IF ~~ a1484 SAY ~[ARAN] Was this th' part where we break into low evil chuckles, followed by increasin'ly disturbin' laughter, followed by a thunderclap an' some ominous music?~ IF ~~ THEN EXIT END IF ~~ a1485 SAY ~[ARAN] Well, I surely don't know what wanderin' around in a glorified fishbowl randomly crushin' parts o ' towns will do for th' greater good, but it sure will be fun tryin' not to smash the thing up on th' landin's. At the very least, it ought to be good for a laugh or two.~ IF ~~ THEN EXIT END IF ~~ a1486 SAY ~[ARAN] Auril's Icy Aura, remind me not to piss you off, eh? I have heard o' cold, but th' last bastards what went for those tactics were Iron Throne.~ IF ~~ THEN EXIT END IF ~~ a1487 SAY ~[ARAN] Savras' Foresight, I understand right fine. An' I bet it will be a mite useful to have this place. Tell you what, you find soemthin' I can do wi' my little quill, an' I will help out.~ IF ~~ THEN EXIT END IF ~~ a1488 SAY ~[ARAN] Well, I'll give it a shot. Somehow, I just hope they don't ask too many questions on how I get th' information or th' resources. Could be just a mite ticklish, eh?~ IF ~~ THEN EXIT END IF ~~ a1489 SAY ~[ARAN] Savras' Foresight, forewarned be forearmed, or somethin' like that. Runnin' this place will take information, good record keepin' an' an eye for detail. I be just th' right man for th' job. Now, where do they keep th' strong drink around here? I'll be wantin' to take a right good inventory...~ IF ~~ THEN EXIT END IF ~~ a1490 SAY ~[ARAN] I'm right on th' prayer angle, <CHARNAME>. But if you were afraid o' a little bit o' hard work, well... you'd be dead, an' some blighted arse would be makin' life hell for me by sendin' out waves o' murderin' bastards to set up bathtubs o' blood for a nice afternoon wash. So, all things considered, a little paperwork an' a few decisions be a small price to pay.~ IF ~~ THEN EXIT END IF ~~ a1491 SAY ~[ARAN] Hey, do I get royalties on that? On account o' I think most of the sly bastards we be fightin' seem to have th' same idea. Well, except for th' ones who give some long monologue about how they be the baddest arseholes around, an' we will be sorry we tangled wi' 'em. Poor sods.~ IF ~~ THEN EXIT END IF ~~ a1492 SAY ~[ARAN] Now, don't you be gettin' all star an' stage struck, <CHARNAME>. Next thing you know, you'll be dumpin' all your gold into a massive production of 'Lyra, the Masked Lady of Destiny; a Love Story In Three Acts', fendin' off demands from th' Actor's Guild an' th' Stage Workers Union. Worse, you might have to be dealin' with publicity agents.~ IF ~~ THEN EXIT END IF ~~ a1493 SAY ~[ARAN] Good entertainment? You be kiddin' me, right? The average person out there be more interested in watchin' th' drama o' whose daughter slept wi' whom, an' how many gibberlin's a man can be run overby in an hour. Hey... that's not bad. Mayhap we got a new show, cheap to produce. Sell tickets, then put a group o' commoners out in a field armed wi' butter knives, an' send in a wave o' gibberlin's. We could call it "Survivor: Athalka".~ IF ~~ THEN EXIT END IF ~~ a1494 SAY ~[ARAN] Sharess' Sensual Caress, what ever put that fool idea into your head? Now, if you just send 'em over to me, I'll draw up a list o' measurements, an' such. Costumes don't rightly sew themselves into proper fit, you know. Busy, busy time. Knock before you enter th' wardrobe room, eh?~ IF ~~ THEN EXIT END IF ~~ a1495 SAY ~[ARAN] Waukeen's Wanderin' Worshipers, you never did no community theater productions, I take it.~ IF ~~ THEN EXIT END IF ~~ a1496 SAY ~[ARAN] Sure, sure... kick a man when he be down. Right. I can fix it up. You go on conquerin' Faerun, an' I'll just be in th' back, sortin' out supply requisitions.~ IF ~~ THEN EXIT END IF ~~ a1497 SAY ~[ARAN] Right you are. Tymora's Bright Smile, I done had worse troubles to iron out, like that time th' 'Fist accidentally took a contract for both protectin' an' sackin' the same fiefdom. No worries. I will take a breather, an' get back on it as soon as my head clears.~ IF ~~ THEN EXIT END IF ~~ a1498 SAY ~[ARAN] Hey, I studied enough magic to know how important that blighted Gond-Meets-Mystrul-an'-Mystra construct be. I just don't rightly see how you are goin' to be able to leverage it against th' bastards we are fightin' right now. You can't hide in an' among th' Planes when your opponents have eyes everywhere, an' when we don't know where they are, we can't just drop in unannounced. But I guess you be right. It is a damned fine place to take a nap, at least.~ IF ~~ THEN EXIT END /* Romantic Encounters: Valygar item */ IF ~~ a1499 SAY ~[ARAN] That be a right fine piece o' jewelry you be wearin', <CHARNAME>. Now, where did you get it, eh?~ IF ~InParty("valygar")~ THEN DO ~SetGlobal("c-aljewelv","LOCALS",1)~ GOTO a1500 IF ~!InParty("valygar")~ THEN DO ~SetGlobal("c-aljewelv","LOCALS",1)~ GOTO a1501 END IF ~~ a1500 SAY ~[ARAN] Valygar seems to like it right fine, too. At least, he has an eye out for it when it be on you.~ IF ~~ THEN EXIT END IF ~~ a1501 SAY ~[ARAN] I just never did see when you got it, or where, or why. But it suits you right well, it does. Hey, why th' red face?~ IF ~~ THEN EXIT END /* c-anythingiwant */ IF ~~ a1503 SAY ~[ARAN] Bane's Broken Bones, you be a right strong <PROMANWOMAN>. Got it. I'll set to checkin' how we can raise coin out o' this here operation right quick.~ IF ~~ THEN EXIT END /* c-whateverservesgood */ IF ~~ a1504 SAY ~[ARAN] Well, you be powerful enough to use it as a tool for whatever you want to accomplish, eh? Have someone send over th' contracts an' paperwork, an' I'll get right on seein' what be what.~ IF ~~ THEN EXIT END /* c-tieddown */ IF ~~ a1505 SAY ~[ARAN] Jealous? Sons o' th' Seldarine, what gave you that bloody idea? I don't want no target on my back, an' all those decisions. Hells, if I wanted that, I would have struck out on my own and built my own little mercenary company! There be enough hassles just bein' on staff, let alone runnin' th' show!~ IF ~~ THEN EXIT END /* c-takescoin */ IF ~~ a1506 SAY ~[ARAN] Ubtao's Great Beginnin', I understand right fine. I don't question the decision, I just wanted to know what you be wantin' to do. When you take charge o' somethin' there always be paperwork. That's where havin' me along comes in right handy, eh?~ IF ~~ THEN EXIT END /* c-minoraccident */ IF ~~ a1507 SAY ~[ARAN] Velsharoon's Vicious Vampires, I'll be sayin' more than a prayer or two. Those "minor accidents" usually come in th' form o' stabbin' yourself while ingestin' poison, havin' tied yourself to a chair, an' fallin' out a third story window two or mayhap three times.~ IF ~~ THEN EXIT END /* c-strongarmthem */ IF ~~ a1508 SAY ~[ARAN] Well, I have your sword arm to back me up. Sometimes, a little subtle action is useful. Other times, the situation calls for the trademark "Whitehand Technique"... kill anything that moves, and then resurrect anyone who we did not mean to kill.~ IF ~~ THEN EXIT END /* c-rightboss */ IF ~~ a1509 SAY ~[ARAN] Look, <CHARNAME> you don't owe me no reasons. I just thought I should kick in wi' handlin' the paperwork, is all.~ IF ~~ THEN EXIT END IF ~~ a1510 SAY ~[ARAN] Good. Talona's Mericless Poisons, I thought handlin' a trade coster or a mercenary regiment was tough. This... well, let's just say I'd rather you strip me down an' send me arse first into a nest o' kobolds.~ IF ~~ THEN EXIT END edit: ok, i have a favorite. i don't usually, but this time, I do. So it probably is rechanneled from some other work, because it cracked me up, which means it probably is some line from SportsNight, West Wing, StarGate:all of them, StarTrek:all of them, Burn Notice, The Mentalist, Monk, Psyche, Remington Steele, Moonlighting, or another snappy banter show that has bouncing around in my head for years: ++ ~[PC] I think I can handle a theater company. After all of the dangerous beasts we have clobbered, how hard could handling a group of stage musicians, actors, and suppliers possibly be?~ DO ~SetGlobal("c-aranbs","LOCALS",2) RealSetGlobalTimer("c-aranstrong","GLOBAL",180)~ + a1495 IF ~~ a1495 SAY ~[ARAN] Waukeen's Wanderin' Worshipers, you never did no community theater productions, I take it.~ IF ~~ THEN EXIT END
  17. When Good Ideas Go Bad: An Example of Dropping Material (Or Sending It To Be Chopped Up And Recycled) This one has been sitting around for awhile, gathering dust, since October 2008. Today's project was to see what could be salvaged, get the tutorial section on manipulating globals that was already written posted (though I am pretty sure this is already covered in other threads), and see where we are after over a year of periodically tweaking and puzzling through it. One of the advantages of having a trustworthy, discreet modder friend is that they are able to tell you when you are about to spend massive amounts of work on an idea that just doesn't cut it - and can even point you to ideas that you might be able to use. In this case, an early lovetalk had PC and Aran doing the friend thing where the guy and the girl are both out on the prowl for companionship, but have not really figured out that they might be compatible. As initially sketched, there was something compelling about it, but subsequent revisits showed more and more weaknesses with the talk. The Talk Topic SidebarThis "talk about the possibilities" is the Gold Standard™ trope from literature, TV, movies, and games - Taylor Swift 's "You Belong With Me" is one of the latest songs that play with this idea, but this one is as old as the hills themselves. Sometimes it works out, sometimes it doesn't, of course, which means it can be a friendtalk or a lovetalk, or for any gender. After all, there does not need to be mutual attraction to have the discussion. It is a staple of human communication - "window shopping" and looking for potential interests for yourself or your friend or both. And usually in literature it is a pair of good friends who are too stupid/shortsighted/whatever to realize that the dude or dudette that has been a best friend is actually a perfect match romantically. Most of the other posts around here have tagged on this, and certainly used this, but let's run down ways we can tailor reactions to player choice in-game. All of this involves manipulating a particular kind of switch, a variable that in the i.e. engine is labels a "global", whether it is actually checked by the engine all the time across operating files ("GLOBAL"), only checked in reference to the active actor's script ("LOCALS"), or only checked when a particular area's script is running ("AREA"). Using Globals: Setting Options for Players Playing with Globals to Open Pathways within reply states The standard way to make sure a dialog takes note of outside circumstances is to set a global somewhere else and then refer to it. For example, IF ~Global("Aran_Likes_Imoen","GLOBAL",1)~ THEN REPLY ~[ARAN] So, Imoen. Want to go play hide an' seek?~ + newstate The idea here is that something has already set the global variable to 1, so the dialog can recognize that this decision has already been made elsewhere. BioWare™ has a small number of these set up that only reference a single variable being set without advancement, meaning that SetGlobal("Aran_Likes_Imoen","GLOBAL",1) in either a dialog state transition or a script block is the only reference point. This single global variable basically toggles the question "Does Aran Like Imoen?" to "yes". Then it can be referenced in other ways. It does not advance to another value, the way we like to code friendtalks and lovetalks, because there is no sequence - one question, quest, or path taken, one answer, all available to any script or dialog played ingame from that point on. You can set the line to play if a global is not set, too: Variables Can Create Or Reference a Decision for the PC or NPC IF ~Global("Aran_Likes_Imoen","GLOBAL",0)~ THEN REPLY ~[PC] So, Imoen. I hear Aran likes you alot. Want to go play hide an' seek with him?~ DO ~SetGlobal("Aran_Likes_Imoen","GLOBAL",1)~ + newstate sets up the question to be asked only if Aran has not expressed an opinion about Imoen. Following that pathway sets the variable to 1 (yes) and then we can reference the value for the rest of the mod, for any actor who wants to know. We could also make it only available to Aran, for his own use - all we have to do is change "GLOBAL" to "LOCALS" and then the global is "local'in scope, meaning only Aran can really reference it. We can't have Imoen get something set up on it, because she can't see it. And you thought only grade schoolers hid their feelings from eachother Variables Can Advance a Reference Point for the NPC Another way to play with this is to advance the variable for different stages of discussion: Dialog Variable Advancement IF ~Global("Aran_Likes_Imoen","GLOBAL",0)~ GOTO z100 IF ~Global("Aran_Likes_Imoen","GLOBAL",1)~ GOTO z101 IF ~Global("Aran_Likes_Imoen","GLOBAL",2)~ GOTO z102 // IF ~~ z100 SAY ~[ARAN] So, Imoen. Want to go play hide an' seek?~ DO ~SetGlobal("Aran_Likes_Imoen","GLOBAL",1)~ + cool_beans IF ~~ z101 SAY ~[ARAN] That was fun, Imoen. Want to go play checkers?~ DO ~SetGlobal("Aran_Likes_Imoen","GLOBAL",2)~ + its_your_money IF ~~ z102 SAY ~[ARAN] Imoen, that tight leather does some right wonderful things, it does. How about I buy you a drink?~ DO ~SetGlobal("Aran_Likes_Imoen","GLOBAL",3)~ + I_Like_Gavin_More_Plus_He_Needs_Me For an existing example of this in action, one source is BG1NPC's "Bardic Reputation" component and berelinde's work doing the same thing for BG2, designed to have different options based on how many times the bard has had the conversation, as well as using reputation and bglobls to determine cost and amount of adjustment available. This kind of dialog advancement can make it easy to simulate a long running debate or theme across several different (and even unrelated) conversations. Globals are usually set in a dialog or through a script block, and are referenced on a later dialog and block. Almost all tutorials out there talk about this, but for the most advanced extension of the ways to manipulate, redirect, and randomize pathways, I suggest a look at Zyraen's mods - he has some very involved treatments of dialog states that allow a player to have a new experience for multiple playthroughs. randomizing using scripts For scripts, the following is completely possible: Script Variable Randomization IF Global("Aran_Likes_Imoen","GLOBAL",0) THEN RESPONSE #20 SetGlobal("Aran_Likes_Imoen","GLOBAL",1) StartDialogNoSet(Player1) THEN RESPONSE #20 SetGlobal("Aran_Likes_Imoen","GLOBAL",2) StartDialogNoSet(Player1) THEN RESPONSE #20 SetGlobal("Aran_Likes_Imoen","GLOBAL",3) StartDialogNoSet(Player1) THEN RESPONSE #20 SetGlobal("Aran_Likes_Imoen","GLOBAL",4) StartDialogNoSet(Player1) THEN RESPONSE #20 SetGlobal("Aran_Likes_Imoen","GLOBAL",5) StartDialogNoSet(Player1) END which means that for one script block, five different and separate dialogs could take place, with the corresponding global in the dialog states called: IF ~Global("Aran_Likes_Imoen","GLOBAL",1)~ THEN BEGIN AranLikesImoen1 SAY ~[ARAN] So, Imoen. Want to go play hide an' seek?~ IF ~~ THEN EXIT END IF ~Global("Aran_Likes_Imoen","GLOBAL",2)~ THEN BEGIN AranLikesImoen2 SAY ~[ARAN] That was fun, Imoen. Want to go play checkers?~ IF ~~ THEN EXIT END IF ~Global("Aran_Likes_Imoen","GLOBAL",3)~ THEN BEGIN AranLikesImoen3 SAY ~[ARAN] Imoen, that tight leather does some right wonderful things, it does. How about I buy you a drink?~ IF ~~ THEN EXIT END IF ~Global("Aran_Likes_Imoen","GLOBAL",4)~ THEN BEGIN AranLikesImoen4 SAY ~[ARAN] You know, I never asked how things were back in Candlekeep. Did you have to wear a French Maid costume while cleaning up?~ IF ~~ THEN EXIT END IF ~Global("Aran_Likes_Imoen","GLOBAL",5)~ THEN BEGIN AranLikesImoen5 SAY ~[ARAN] OK, how about a little game of "how long can you hold your breath". Close your eyes, hold your breath, pucker your lips, and we can time how long it takes me to kiss you.~ IF ~~ THEN EXIT END In each of the above, the dialog plays once. In the sequential global of BG1NPC's "Bardic Reputation" component, future visits will recognize the global being advanced, and give new responses in place of the old, topping out at the third. In the second example, with a script block initiating one of five different possible responses, the script block only plays once, with the variable advanced to either 1, 2, 3, 4, or 5 - thus leaving a global setting for other dialogs or script blocks to call on, refining choices later. For example, if we wanted to pick up on what Aran said in a later banter, a quick check lets us tailor the content: CHAIN == ~IMOEN2~ IF ~Global("Aran_Likes_Imoen","GLOBAL",1)~ THEN ~[iMOEN] Hah! I taught you not to mess with me, Aran. Remember that game of hide and seek? You couldn't find me for two hours!~ == ~IMOEN2~ IF ~Global("Aran_Likes_Imoen","GLOBAL",2)~ THEN ~[iMOEN] I suppose you want another game of checkers. But this time, none of that "I get a kiss every time you king me"...~ == ~IMOEN2~ IF ~Global("Aran_Likes_Imoen","GLOBAL",3)~ THEN ~[iMOEN] No way, Aran. I still remember that tired old pickup line you used on me. 'That tight leather does some right wonderful things, it does'? You need to do better if you are going to attract my sister's attention!~ == ~IMOEN2~ IF ~Global("Aran_Likes_Imoen","GLOBAL",4)~ THEN ~[iMOEN] Go away, Aran. I am still mad about that French Maid outfit crack. And you never did explain about this mythical "France", as you called it.~ == ~IMOEN2~ IF ~Global("Aran_Likes_Imoen","GLOBAL",5)~ THEN ~[iMOEN] I thought the last time you tried some kind of silliness on me, I slapped you but good. Back for more?~ The equivalent in the dialog state is the use of RandomNum(#,#). Here, only one reply will show upon any given run through the dialog, pulled from the three available states: IF ~RandomNum(3,1)~ THEN GOTO z100 IF ~RandomNum(3,2)~ THEN GOTO z101 IF ~RandomNum(3,3)~ THEN GOTO z102 IF ~~ z100 THEN BEGIN z100state SAY ~[ARAN] So, Imoen. Want to go play hide an' seek?~ IF ~~ z100 THEN BEGIN z101state SAY ~[ARAN] That was fun, Imoen. Want to go play checkers?~ IF ~~ z100 THEN BEGIN z102state SAY ~[ARAN] Imoen, that tight leather does some right wonderful things, it does. How about I buy you a drink?~ END Layering this can get you into intricacies that can be incredibly tightly tailored to situation, player choices, and even in-game variables like chapter or quest conclusion. I think the most comprehensive existing model is Jastey's Ajantis PID in BG1NPC and her BG2 Ajantis mod, tied with Domi's SharTeel and Coran PIDs in the same project, followed by berelinde's Gavin. Domi's Kivan for BG2 makes similar use of the model, and is a good place to compare and contrast across each of these modder's implementations. Of course, it also introduces lots of difficulty in troubleshooting, which is why if you can you should probably build a variable map before you get very far into playing this, so you don't forget. I do a bad job of this - berelinde does a very good job of this. Do, or do not, it is a choice you make, but if you have the patience for it I bet you will save yourself lots of troubleshooting time if you do. I keep having to go bakc and review choices because my map is scattered. Narrowing the Choices So far, each of the above code expands pathways and makes information on player choices available to other talks later on. But what about within the same talk? How do we make sure a pathway taken can influence later choices? Most situations do not need such tight attention. A talk that has different replies simply creates the branch pathways, and that is the end of it: example 3 /* Dialog Initiated */ IF ~Global("c-aranbg2rom","GLOBAL",5)~ THEN BEGIN c-aranbg2rom3 SAY ~[ARAN] Hey, <CHARNAME>, you are a girl...~ IF ~~ THEN REPLY ~[PC] Actually, I am a woman. Usually everyone stops calling us "girls" after we leave apprenticeship age behind, unless you are a dwarf. But you were saying?~ DO ~<<set_timers_and_advance_global>>~ + girls IF ~~ THEN REPLY ~[PC] Someone inform the Sages of Candlekeep - Aran has discovered the difference between boys and girls!~ DO ~<<set_timers_and_advance_global>>~ + sages IF ~~ THEN REPLY ~[PC] Is this the start of a personal discussion? I am not in the mood for smalltalk.~ DO ~<<set_timers_and_advance_global>>~ + forgetit END /* Pathway 1: Offended PC */ IF ~~ girls SAY ~[ARAN] Sometimes that seems like th' best picture o' all, <CHARNAME>. At least the sparkin' - not so much the squallin' babes what result.~ IF ~~ THEN GOTO pathway1 END /* Pathway 2: Joking */ IF ~~ sages SAY ~[ARAN] Well, come to think o' it, I did notice a mite bit o' difference...~ IF ~~ THEN GOTO pathway2 END /* Pathway 3: Go Away, Sellsword */ IF ~~ forgetit SAY ~[ARAN] Right, then. Sorry to bother you.~ IF ~~ THEN GOTO pathway3 END There are some situations, though, where building the dialog manually through pathways becomes a tangled web. In regular conversation, something like For this, since you are basically looping back to the same question over and over again until the player chooses a choice that advances the dialog, it would be great to do this: Coded like this, the state looping_block will always look the same. All three choices will remain. So using a global within the talk, like example 1, looks like a good way to screen out pathways that the player has already taken. It sounds logical - set the variable, and then let the next state rely on that variable. The problem is, it doesn't work exactly like that. Setting a "GLOBAL", "LOCAL", or "AREA" global all takes time to be able to be registered with the game and referenced in the same dialog. If you set a variable in one dialog state, you need at least one and one half (which means really two states - the reply state, and an additional intermediate state) to allow time for the global to set and be recognized by the talk it is in. So, what does this look like in code? Why don't we play with a talk designed to allow players to explore various romantic possibilities in-party for an NPC, Aran. The loop is entered through c-aranbg2rom3frequenting for dialog purposes, because we have to lead into the coversation differently that you would come back to the same idea: A. IF ~~ c-aranbg2rom3frequenting SAY ~[ARAN] So probably my best best don't rely on frequentin' inns along the way. The best bet might be look at th' ladies I see every day, an' perhaps there's somethin' more than just straight comradeship.~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END B. The entry block des not need a filter block, because the first time through the dialog. But here is the filter block, to be passed through on the way back to c-aranbg2rom3someoneelse: IF ~~ c-aranbg2rom3challenging1 SAY ~[ARAN] That makes it a mite o' a challenge, eh?~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END C. Here is the workhorse, allowing dialog to reflect the potential matches within the party. The player can reject all choices by selecting reply 0 or reply 1, advancing the dialog. She is also given the opportunity to roleplay the evaluations, just to see what Aran thinks - a common enogh friendly conversation. A quick reminder: with PC and Aran, there is a maximum possible number of possible party-joined NPCs to discuss of 4. If they are all female distributed NPCs, there are 6 conversational choices facing Player1. It is much more likely there will be two or only one - in a canonical "good" party, for example, there will probably only be Aerie and Jaheira. IF ~~ c-aranbg2rom3someoneelse SAY ~[ARAN] Perhaps there might be someone around here, right under my nose...~ IF ~~ THEN REPLY ~[PC] I really do not think so, Aran.~ + c-aranbg2rom3remembered IF ~~ THEN REPLY ~[PC] She might be. Perhaps even about to put this nice cold water right down your back, to wake you up... ~ + c-aranbg2rom3remembered IF ~InParty("JAHEIRA") Global("c-jaheiramatch","LOCALS",0)~ THEN REPLY ~[PC] Jaheira? I thought you liked younger women.~ DO ~SetGlobal("c-jaheiramatch","LOCALS",1)~ + c-jaheiramatch1 IF ~InParty("AERIE") Global("c-aeriematch","LOCALS",0)~ THEN REPLY ~[PC] Who, Aerie?~ DO ~SetGlobal("c-aeriematch","LOCALS",1)~ + c-aeriematch1 IF ~InParty("IMOEN2") Global("c-imoenmatch","LOCALS",0)~ THEN REPLY ~[PC] Leave Imoen alone, Aran.~ DO ~SetGlobal("c-imoenmatch","LOCALS",1)~ + c-imoenmatch1 IF ~InParty("MAZZY") Global("c-mazzymatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Mazzy?~ DO ~SetGlobal("c-mazzymatch","LOCALS",1)~ + c-mazzymatch1 IF ~InParty("NALIA") Global("c-naliamatch","LOCALS",0)~ THEN REPLY ~[PC] Do you really think Nalia would be interested in you?~ DO ~SetGlobal("c-naliamatch","LOCALS",1)~ + c-naliamatch1 IF ~InParty("VICONIA") Global("c-viconiamatch","LOCALS",0)~ THEN REPLY ~[PC] The drowess. Riiiight. Tell me you are not considering Viconia, Aran.~ DO ~SetGlobal("c-viconiamatch","LOCALS",1)~ + c-viconiamatch1 IF ~InParty("R#ALLIS") Global("c-allisonmatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Allison?~ DO ~SetGlobal("c-allisonmatch","LOCALS",1)~ + c-allisonmatch1 IF ~InParty("CMALORA") Global("c-aloramatch","LOCALS",0)~ THEN REPLY ~[PC] Alora?? You are joking, right...~ DO ~SetGlobal("c-aloramatch","LOCALS",1)~ + c-aloramatch1 IF ~InParty("Anishai") Global("c-anishaimatch","LOCALS",0)~ THEN REPLY ~[PC] Anishai is not to be trusted with the silver, let alone your heart. Unless you enjoy pain.~ DO ~SetGlobal("c-anishaimatch","LOCALS",1)~ + c-anishaimatch1 IF ~InParty("MWAriena") Global("c-arienamatch","LOCALS",0)~ THEN REPLY ~[PC] Ariena?~ DO ~SetGlobal("c-arienamatch","LOCALS",0)~ + c-arienamatch1 IF ~InParty("M#AMBER") Global("c-ambermatch","LOCALS",0)~ THEN REPLY ~[PC] Amber? You look at her often, but I figured that it was because you did not trust her.~ DO ~SetGlobal("c-ambermatch","LOCALS",1)~ + c-ambermatch1 IF ~InParty("K#Auren") Global("c-aurenmatch","LOCALS",0)~ THEN REPLY ~[PC] You are not thinking of Auren, right...~ DO ~SetGlobal("c-aurenmatch","LOCALS",1)~ + c-aurenmatch1 IF ~InParty("WLBRAN") Global("c-branwen1match","LOCALS",0)~ THEN REPLY ~[PC] Branwen is just a bit intense for you, isn't she?~ DO ~SetGlobal("c-branwen1match","LOCALS",1)~ + c-branwen1match1 IF ~InParty("Britt") Global("c-brittmatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Britt?~ DO ~SetGlobal("c-brittmatch","LOCALS",1)~ + c-brittmatch1 IF ~InParty("CALLISTO") Global("c-callistomatch","LOCALS",0)~ THEN REPLY ~[PC] Callisto? I don't know...~ DO ~SetGlobal("c-callistomatch","LOCALS",1)~ + c-callistomatch1 IF ~InParty("Chloe") Global("c-chloematch","LOCALS",0)~ THEN REPLY ~[PC] You. Chloe. You and Chloe. Aran, let me smell your breath. I want to see exactly how drunk you are right now.~ DO ~SetGlobal("c-chloematch","LOCALS",1)~ + c-chloematch1 IF ~InParty("E3Fade") Global("c-fadematch","LOCALS",0)~ THEN REPLY ~[PC] Fade really does not seem to talk to you at all, Aran.~ DO ~SetGlobal("c-fadematch","LOCALS",1)~ + c-fadematch1 IF ~InParty("Keto") Global("c-ketomatch","LOCALS",0)~ THEN REPLY ~[PC] This should be fun. You think Keto might be a good match for you. By all means, tell me why.~ DO ~SetGlobal("c-ketomatch","LOCALS",1)~ + c-ketomatch1 IF ~InParty("R#Kitanya") Global("c-kitanyamatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Kitanya?~ DO ~SetGlobal("c-kitanyamatch","LOCALS",1)~ + c-kitanyamatch IF ~InParty("SAERILETH") Global("c-saerimatch","LOCALS",0)~ THEN REPLY ~[PC] I know you like younger women, Aran, but a Paladin of Tyr is a bit out of your league...~ DO ~SetGlobal("c-saerimatch","LOCALS",1)~ + c-saerimatch1 IF ~InParty("CMNIKITA") Global("c-nikimatch","LOCALS",0)~ THEN REPLY ~[PC] Nikita? Do you have a death wish?~ DO ~SetGlobal("c-nikimatch","LOCALS",1)~ + c-nikimatch1 IF ~InParty("CMNINAF") Global("c-ninamatch","LOCALS",0)~ THEN REPLY ~[PC] Ninafer really does not seem like your type.~ DO ~SetGlobal("c-ninamatch","LOCALS",1)~ + c-ninamatch1 IF ~InParty("DL#BWN") Global("c-branwen2match","LOCALS",0)~ THEN REPLY ~[PC] Branwen?~ DO ~SetGlobal("c-branwen2match","LOCALS",1)~ + c-branwen2match1 IF ~InParty("K#Sarah") Global("c-sarahmatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Sarah? Aran, have you ever really talked to her?~ DO ~SetGlobal("c-sarahmatch","LOCALS",1)~ + c-sarahmatch1 IF ~InParty("TASHIA") Global("c-tashiamatch","LOCALS",0)~ THEN REPLY ~[PC] Tashia? I did not think you found her interesting.~ DO ~SetGlobal("c-tashiamatch","LOCALS",1)~ + c-tashiamatch1 IF ~InParty("YASRAENA") Global("c-yasraenamatch","LOCALS",0)~ THEN REPLY ~[PC] You are not seriously considering Yasraena...~ DO ~SetGlobal("c-yasraenamatch","LOCALS",1)~ + c-yasraenamatch1 IF ~InParty("D#SILVER") Global("c-silvermatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Silverstar?~ DO ~SetGlobal("c-silvermatch","LOCALS",1)~ + c-silvermatch1 END D. And each one of the replies leads back to the filtering state: IF ~~ c-aranbg2rom3challenging SAY ~[ARAN] Now, then. I do take chances. But perhaps Tymora's Coin won't spin on that one.~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END So, let's fill out the full lovetalk, using the technique. The Full Talk The repeating block is #18, c-aranbg2rom3someoneelse The entry state is c-aranbg2rom3frequenting and the filtering states for setting the globals are c-aranbg2rom3challenging1, 2, 3, 4, 5, so that there is a reply block and the filter block. /* Queen: Somebody To Love */ /* BG2 LoveTalk 3, c-aranbg2rom = 5 c-aranromtimer,C-ARAN_ROM */ IF ~Global("c-aranbg2rom","GLOBAL",5)~ THEN BEGIN c-aranbg2rom3 SAY ~[ARAN] Hey, <CHARNAME>, you are a girl...~ IF ~~ THEN REPLY ~[PC] Actually, I am a woman. Usually everyone stops calling us "girls" after we leave apprenticeship age behind, unless you are a dwarf. But you were saying?~ + c-aranbg2rom3noticed IF ~~ THEN REPLY ~[PC] Someone inform the Sages of Candlekeep - Aran has discovered the difference between boys and girls!~ + c-aranbg2rom3inn IF ~~ THEN REPLY ~[PC] Is this the start of a personal discussion? I am not in the mood for smalltalk.~ + c-aranbg2rom3inn IF ~~ THEN REPLY ~[PC] Your powers of observation are astounding.~ + c-aranbg2rom3inn IF ~~ THEN REPLY ~[PC] I am glad you noticed, Aran.~ + c-aranbg2rom3inn END IF ~~ c-aranbg2rom3noticed SAY ~[ARAN] (grins) Now, come to think o' it, you are right. But then again, I'd say you're still a bit wet behind the ears too. An' I don't mean on account o' washin' your face. Anyways... IF ~~ THEN GOTO c-aranbg2rom3inn END IF ~~ c-aranbg2rom3inn SAY ~[ARAN] At the last Inn we stayed. Blonde, beautiful blue eyes, great smile - she seemed to sparkle right pretty, she did. She came over, an' we talked for a bit, an' she seemed right interested. But I don't know. I couldn't tell if she was interested in just a dance an' some entertainment upstairs, or if she thought I was marriage material, like. IF ~~ THEN REPLY ~[PC] I didn't notice.~ + c-aranbg2rom3serious IF ~~ THEN REPLY ~[PC] That is not really my concern, Aran.~ + c-aranbg2rom3serious IF ~~ THEN REPLY ~[PC] Why yes, I noticed you making a fool of yourself.~ + c-aranbg2rom3really IF ~~ THEN REPLY ~[PC] I definitely noticed her, Aran. I thought she was just right for you.~ + c-aranbg2rom3really <<STANDARD EXIT BLOCK>> END IF ~~ c-aranbg2rom3really SAY ~[ARAN] Really? IF ~~ THEN REPLY ~[PC] Why, yes indeed. She would make you a wonderful wife. You should ask her out next time we pass through that way.~ + c-aranbg2rom3doit IF ~~ THEN REPLY ~[PC] Absolutely. Sparkly eyes and cute hair, never been more than three feet from her front door, no education... she will believe every story you tell her. You can be a fat, happy, contented chef at an inn, and she can bear you five or six children.~ + c-aranbg2rom3nicepic IF ~~ THEN REPLY ~[PC] Who else would be naive enough to believe your tall tales, and put up with your snoring.~ + c-aranbg2rom3snore IF ~~ THEN REPLY ~[PC] No, Aran, I was joking. It is not often you meet someone randomly and get that serious that quickly.~ + c-aranbg2rom3serious END IF ~~ c-aranbg2rom3doit SAY ~[ARAN] Well, I might just do that, if you think it might be taken in th' right way.~ IF ~~ THEN GOTO c-aranbg2rom3serious END IF ~~ c-aranbg2rom3nicepic SAY ~[ARAN] Sometimes that seems like th' best picture o' all, <CHARNAME>. At least the sparkin' - not so much the squallin' babes what result.~ IF ~~ THEN GOTO c-aranbg2rom3serious END IF ~~ c-aranbg2rom3snore SAY ~[ARAN] I snore? Well, bugger all Chauntea's haystacks - I didn't know that. I'd better lose a bit o weight, or somethin'. But really, now...~ IF ~~ THEN GOTO c-aranbg2rom3serious END IF ~~ c-aranbg2rom3serious SAY ~[ARAN] Do you think she was serious, or just out for some fun?~ IF ~~ THEN REPLY ~[PC] In general, Aran, if you meet someone at a bar only once, I think it is unlikely she was looking for a serious committment. But I could be wrong.~ + c-aranbg2rom3experience IF ~~ THEN REPLY ~[PC] It takes longer than a single evening to fall in love, Aran.~ + c-aranbg2rom3experience IF ~~ THEN REPLY ~[PC] Well, I believe there is such a thing as love at first sight. But I have heard it is usually found with the people close to you for a longer period of time.~ + c-aranbg2rom3experience <<STANDARD EXIT BLOCK>> END IF ~~ c-aranbg2rom3experience SAY ~[ARAN] So , you have experience at that? The fallin' in love, I mean?~ IF ~~ THEN REPLY ~[PC] That is for me to know and you to find out.~ + c-aranbg2rom3lostlove IF ~~ THEN REPLY ~[PC] That is a bit personal, and painful, Aran. I don't want to talk about it.~ + c-aranbg2rom3lostlove IF ~~ THEN REPLY ~[PC] Perhaps. Have you had any experience yourself?~ + c-aranbg2rom3lostlove IF ~~ THEN REPLY ~[PC] Love, or lust? There is a difference, you know.~ + c-aranbg2rom3hear END IF ~~ c-aranbg2rom3hear SAY ~[ARAN] I did hear there was. I'm not so sure, m'self. But then again, as far as I know, I only have had th' second.~ IF ~~ THEN GOTO c-aranbg2rom3frequenting END IF ~~ c-aranbg2rom3lostlov SAY ~[ARAN] Well, I don't know. I did think I had a friend once what was interested. She was a rare one, she was. Sun Elf father, human mother, long hair like polished brass, an' a body what made... *ahem*... well, that's another story. Unfortunately she ran off with some Cyric - blighted bard, all dark, broodin' an' "I just lost the love o' me life" type. I learned my lesson well, I did. Women seem to want danger, bad boys, an' damaged goods.~ IF ~~ THEN REPLY ~[PC] Three for three - you are all set, Aran. Pity you don't have the other requirement. You need to be just a little more handsome, and you might have a fighting chance with a real woman.~ + c-aranbg2rom3frequenting IF ~~ THEN REPLY ~[PC] Not all women like the same thing, Aran. You might try listening to them for awhile, or even asking them.~ + c-aranbg2rom3frequenting IF ~~ THEN REPLY ~[PC] Well, if you met her in an inn...~ + c-aranbg2rom3frequenting END IF ~~ c-aranbg2rom3frequenting SAY ~[ARAN] So probably my best best don't rely on frequentin' inns along the way. The best bet might be look at th' ladies I see every day, an' perhaps there's somethin' more than just straight comradeship.~ IF ~~ THEN GOTO c-aranbg2rom3challenging1 END IF ~~ c-aranbg2rom3challenging1 SAY ~[ARAN] That makes it a mite o' a challenge, eh?~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END IF ~~ c-aranbg2rom3challenging2 SAY ~[ARAN] Well, there might be somethin' to what you say.~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END IF ~~ c-aranbg2rom3challenging3 SAY ~[ARAN] Right. You have a point there, you do.~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END IF ~~ c-aranbg2rom3challenging4 SAY ~[ARAN] I like a challenge. But I don't know if that be a challenge or a lost cause.~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END IF ~~ c-aranbg2rom3challenging5 SAY ~[ARAN] Now, then. I do take chances. But perhaps Tymora's Coin won't spin on that one.~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END IF ~~ c-aranbg2rom3challenging6 SAY ~[ARAN] It could happen, right? It might be possible.~ IF ~~ THEN GOTO c-aranbg2rom3someoneelse END IF ~~ c-aranbg2rom3someoneelse SAY ~[ARAN] Perhaps there might be someone around here, right under my nose...~ IF ~~ THEN REPLY ~[PC] I really do not think so, Aran.~ + c-aranbg2rom3remembered IF ~~ THEN REPLY ~[PC] She might be. Perhaps even about to put this nice cold water right down your back, to wake you up... ~ + c-aranbg2rom3remembered IF ~InParty("JAHEIRA") Global("c-jaheiramatch","LOCALS",0)~ THEN REPLY ~[PC] Jaheira? I thought you liked younger women.~ DO ~SetGlobal("c-jaheiramatch","LOCALS",1)~ + c-jaheiramatch1 IF ~InParty("AERIE") Global("c-aeriematch","LOCALS",0)~ THEN REPLY ~[PC] Who, Aerie?~ DO ~SetGlobal("c-aeriematch","LOCALS",1)~ + c-aeriematch1 IF ~InParty("IMOEN2") Global("c-imoenmatch","LOCALS",0)~ THEN REPLY ~[PC] Leave Imoen alone, Aran.~ DO ~SetGlobal("c-imoenmatch","LOCALS",1)~ + c-imoenmatch1 IF ~InParty("MAZZY") Global("c-mazzymatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Mazzy?~ DO ~SetGlobal("c-mazzymatch","LOCALS",1)~ + c-mazzymatch1 IF ~InParty("NALIA") Global("c-naliamatch","LOCALS",0)~ THEN REPLY ~[PC] Do you really think Nalia would be interested in you?~ DO ~SetGlobal("c-naliamatch","LOCALS",1)~ + c-naliamatch1 IF ~InParty("VICONIA") Global("c-viconiamatch","LOCALS",0)~ THEN REPLY ~[PC] The drowess. Riiiight. Tell me you are not considering Viconia, Aran.~ DO ~SetGlobal("c-viconiamatch","LOCALS",1)~ + c-viconiamatch1 IF ~InParty("R#ALLIS") Global("c-allisonmatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Allison?~ DO ~SetGlobal("c-allisonmatch","LOCALS",1)~ + c-allisonmatch1 IF ~InParty("CMALORA") Global("c-aloramatch","LOCALS",0)~ THEN REPLY ~[PC] Alora?? You are joking, right...~ DO ~SetGlobal("c-aloramatch","LOCALS",1)~ + c-aloramatch1 IF ~InParty("Anishai") Global("c-anishaimatch","LOCALS",0)~ THEN REPLY ~[PC] Anishai is not to be trusted with the silver, let alone your heart. Unless you enjoy pain.~ DO ~SetGlobal("c-anishaimatch","LOCALS",1)~ + c-anishaimatch1 IF ~InParty("MWAriena") Global("c-arienamatch","LOCALS",0)~ THEN REPLY ~[PC] Ariena?~ DO ~SetGlobal("c-arienamatch","LOCALS",0)~ + c-arienamatch1 IF ~InParty("M#AMBER") Global("c-ambermatch","LOCALS",0)~ THEN REPLY ~[PC] Amber? You look at her often, but I figured that it was because you did not trust her.~ DO ~SetGlobal("c-ambermatch","LOCALS",1)~ + c-ambermatch1 IF ~InParty("K#Auren") Global("c-aurenmatch","LOCALS",0)~ THEN REPLY ~[PC] You are not thinking of Auren, right...~ DO ~SetGlobal("c-aurenmatch","LOCALS",1)~ + c-aurenmatch1 IF ~InParty("WLBRAN") Global("c-branwen1match","LOCALS",0)~ THEN REPLY ~[PC] Branwen is just a bit intense for you, isn't she?~ DO ~SetGlobal("c-branwen1match","LOCALS",1)~ + c-branwen1match1 IF ~InParty("Britt") Global("c-brittmatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Britt?~ DO ~SetGlobal("c-brittmatch","LOCALS",1)~ + c-brittmatch1 IF ~InParty("CALLISTO") Global("c-callistomatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Callisto?~ DO ~SetGlobal("c-callistomatch","LOCALS",1)~ + c-callistomatch1 IF ~InParty("Chloe") Global("c-chloematch","LOCALS",0)~ THEN REPLY ~[PC] You Chloe. Aran, let me smell your breath. I want to see exactly how drunk you are right now.~ DO ~SetGlobal("c-chloematch","LOCALS",1)~ + c-chloematch1 IF ~InParty("E3Fade") Global("c-fadematch","LOCALS",0)~ THEN REPLY ~[PC] Fade really does not seem to talk to you at all, Aran.~ DO ~SetGlobal("c-fadematch","LOCALS",1)~ + c-fadematch1 IF ~InParty("Keto") Global("c-ketomatch","LOCALS",0)~ THEN REPLY ~[PC] This should be fun. You think Ketop might be a good match for you. By all means, tell me why.~ DO ~SetGlobal("c-ketomatch","LOCALS",1)~ + c-ketomatch1 IF ~InParty("R#Kitanya") Global("c-kitanyamatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Kitanya?~ DO ~SetGlobal("c-kitanyamatch","LOCALS",1)~ + c-kitanyamatch IF ~InParty("SAERILETH") Global("c-saerimatch","LOCALS",0)~ THEN REPLY ~[PC] I know you like younger women, Aran, but a Paladin of Tyr is a bit out of your league...~ DO ~SetGlobal("c-saerimatch","LOCALS",1)~ + c-saerimatch1 IF ~InParty("CMNIKITA") Global("c-nikimatch","LOCALS",0)~ THEN REPLY ~[PC] Nikita? Do you have a death wish?~ DO ~SetGlobal("c-nikimatch","LOCALS",1)~ + c-nikimatch1 IF ~InParty("CMNINAF") Global("c-ninamatch","LOCALS",0)~ THEN REPLY ~[PC] Ninafer really does not seem like your type.~ DO ~SetGlobal("c-ninamatch","LOCALS",1)~ + c-ninamatch1 IF ~InParty("DL#BWN") Global("c-branwen2match","LOCALS",0)~ THEN REPLY ~[PC] Branwen?~ DO ~SetGlobal("c-branwen2match","LOCALS",1)~ + c-branwen2match1 IF ~InParty("K#Sarah") Global("c-sarahmatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Sarah? Aran, have you ever realy talked to her?~ DO ~SetGlobal("c-sarahmatch","LOCALS",1)~ + c-sarahmatch1 IF ~InParty("TASHIA") Global("c-tashiamatch","LOCALS",0)~ THEN REPLY ~[PC] Tashia? I did not think you found her interesting.~ DO ~SetGlobal("c-tashiamatch","LOCALS",1)~ + c-tashiamatch1 IF ~InParty("YASRAENA") Global("c-yasraenamatch","LOCALS",0)~ THEN REPLY ~[PC] You are not seriously considering Yasraena...~ DO ~SetGlobal("c-yasraenamatch","LOCALS",1)~ + c-yasraenamatch1 IF ~InParty("D#SILVER") Global("c-silvermatch","LOCALS",0)~ THEN REPLY ~[PC] Who, Silverstar?~ DO ~SetGlobal("c-silvermatch","LOCALS",1)~ + c-silvermatch1 END // The Competition IF ~~ c-jaheiramatch1 SAY ~[ARAN] There's Jaheira. Well, now she is a right fine woman. She's smart, a bit bossy, an' she can partner right quick in th' cookin' area. She's a bit motherin', but then again, she's an older woman in real years, if not in th' equivalent. She might take a shine to me.~ IF ~~ THEN REPLY ~[PC] Leave her alone, Aran. She has lost the love of her life, and is in a great deal of pain. She does not need you distracting her and bothering her.~ IF ~~ THEN REPLY ~[PC] I think that is a great idea. You can go worship trees together.~ + c-aranbg2rom3challenging 1 2 3 4 5 6 IF ~~ THEN REPLY ~[PC] <<TEXT>> ~ + c-aranbg2rom3challenging 1 2 3 4 5 6 END IF ~~ c-aeriematch1 SAY ~[ARAN] Aerie is a fine girl. She just reaches out wi' those eyes, an' tugs at your heartstrings. It might be the Aavariel, but then again, it might just be she looks like she needs a right stong man to protect her an' look out for her. It's nice to be needed.~ IF ~~ THEN REPLY ~[PC] A great way to establish a relationship, Aran. Choose the frail, self-consious waif who has image problems and has suffered traumatic abuse. A truly equal relationship.~ + c-aranbg2rom3challenging 1 2 3 4 5 6 IF ~~ THEN REPLY ~[PC] She has been hurt rather badly, Aran. I would be careful of offering her more than you intend. Breaking her heart woud be easy to do, and a disaster for this party as well as for her.~ + c-aranbg2rom3challenging 1 2 3 4 5 6 IF ~~ THEN REPLY ~[PC] What is it with men and elves?~ + c-aranbg2rom3challenging 1 2 3 4 5 6 END IF ~~ c-imoenmatch1 SAY ~[ARAN] <<_TEXT_>> ~ IF ~~ THEN REPLY ~[PC] <<_TEXT_>> ~ + c-aranbg2rom3challenging 1 2 3 4 5 6 IF ~~ THEN REPLY ~[PC] <<_TEXT_>> ~ + c-aranbg2rom3challenging 1 2 3 4 5 6 END IF ~~ c-mazzymatch1 SAY ~[ARAN] Mazzy is right pretty, in her own way. I don't know, though. She is a mighty riteous Han. She might not take kindly to me flirtin', an' all. Besides, most o' the Halfling folk seem tied up wi' bonds o' family an' obligation. I never heard o' a halfling an' a human fallin' for eachother. IF ~~ THEN REPLY ~[PC] <<_TEXT_>> ~ + c-aranbg2rom3challenging 1 2 3 4 5 6 IF ~~ THEN REPLY ~[PC] <<_TEXT_>> ~ + c-aranbg2rom3challenging 1 2 3 4 5 6 END // snip END // IF ~~ c-aranbg2rom3remembered SAY ~[ARAN] Hey, I just remembered. I met you in an Inn, right?~ IF ~~ THEN REPLY ~[PC] Have you noticed you keep describing all these women's physical attributes?~ + c-aranbg2rom3harm IF ~~ THEN REPLY ~[PC] I was slumming. If I remember correctly, you approached me about some employment, or something. I do not seem remember candlelight and roses.~ + c-aranbg2rom3slumming IF ~~ THEN REPLY ~[PC] You meet all sorts of people in taverns. I keep a watchful eye on most of the crowd.~ + c-aranbg2rom3slumming END IF ~~ c-aranbg2rom3harm SAY ~[ARAN]I don't mean no harm. I guess that's just the way menfolk think.~ IF ~~ THEN REPLY ~[PC] I don't believe that. I think that is the way boys think. A real man would see people, not objects.~ + c-aranbg2rom3slumming IF ~~ THEN REPLY ~[PC] Women think that way sometimes too, you know.~ + c-aranbg2rom3slumming IF ~~ THEN REPLY ~[PC] Men think?~ + c-aranbg2rom3slumming END IF ~~c-aranbg2rom3slumming SAY ~[ARAN] Well, now, you might be right there. I suspect we boys do more'n occasionally run to the shallow side o' life at times. I'd say women, too, based on where I see your eyes lingerin' sometimes. Then again, I see your eyes linger on some folks a mite more than a casual one over, yourself.~ IF ~~ THEN REPLY ~[PC] That might not mean anything. After all, I am looking at you right now.~ + c-aranbg2rom3boss IF ~~ THEN REPLY ~[PC] So many choices, so little time...~ + c-aranbg2rom3boss IF ~~ THEN REPLY ~[PC] That is different.~ + c-aranbg2rom3boss IF ~~ THEN REPLY ~[PC] That sounds like you might be a little jealous.~ + c-aranbg2rom3boss IF ~~ THEN REPLY ~[PC] So, how would you describe me, Aran?~ + c-aranbg2rom3game END IF ~~ c-aranbg2rom3boss SAY ~[ARAN] If you say so, <CHARNAME>. If you say so.~ IF ~~ THEN EXIT END IF ~~ c-aranbg2rom3game SAY ~[ARAN] Oh, I'm not fallin' for that, <CHARNAME>. I know that game too well. I'd say "<CHARNAME>. You know, the one what's in charge o' this here party". I get to describin' you, an' I'm likely to dig a hole an' have you kickin' the dirt over my head right quick!~ IF ~~ THEN EXIT END So, Why Did This Talk Not Work Out? Why Is It On The Recycling Or Disposal Pile? Well, the idea is sound, and it does a good job of showing off some ways of variable manipulation - even more fun would be the "undo state", where we DE-advance the variable - + ~Global("c-silvermatch","LOCALS",1)~ + ~[PC] Are you sure SilverSatr is not that attractive to you? Do you want to think about her again?~ DO ~SetGlobal("c-silvermatch","LOCALS",0)~ but the devil is in the details. Looking through this, there are some problems to be worked on. Number one, the project has moved on, and we have code example in play that already show these kinds of usages (though I want to go back and put a randomizing script block in there, because it is just way cool). Second problem - effort vs. playability. The way this is created, I either have to assume PC is straight to build a corresponding set of choices - otherwise it will be over a month of writing to get specific reactions for all available NPCs. Even using Aran's straightness to get specifics down to female NPCs, there is alot there. So unless inspiration hits, this one is a tough one to write. We can keep it positive, and search for good reasons for a match, aviding disrespect for other NPCs, but then we get a way too cheery, upbeat, unrealistic view, but that is not so cool. The real life conversation would be a bit harsher - "You would go out with *her*? I mean, that voice just cuts like a kife, man. Plus, she seems so needy. And the scars on her back... yuck. Drop the damaged elf-chick, and go for a real woman." Third Problem - psychology. It works as a friend setting up Aran, but there is no opportunity for him to follow through, unless the player is doing something with Amber and being careful about how it is all set up. So each way I try to rewrite it, starting as a lovetalk means that PC is trying to foist him off on others, or having to listen to him go "hey, perhaps she would like me". Perhaps a bit too realistic and annoying, having Aran talk about why others might be preferable to PC - and completely a waste of her time if she just wants to be friends. And with a guy PC, things get even more difficult to work through without it being odd. Aran is not going to mind talking openly about how a two male or two female pairings might work out, being an open-minded dude in FR, where open-mindedness includes romances that cross species as well as gender. But the PC, well, not so easy to guage reaction and account for pathways. But most of all, #4, the big question - how much is this advancing the relationship, versus how much is this just fluff? Can we have a similar kind of discussion to foster that sense of "good friendship developing that might become more"? Given the number of talks already in place, is this getting us anywhere exploring either Aran's personality or the Player's roleplaying personality in a way not covered by other talks? So, some salvage work... A way around some of the challenges is to adjust the level of detail. We might be able to salvge some of the reactions, by making them more generic: IF ~InParty(Player2) Gender(Player2,FEMALE) !HasItemEquiped("belt05",Player2) !Name(Player2,"c-aran")~ + ~[PC] What about <PLAYER2>? She might be just what you want.~ + newstate IF ~InParty(Player3) Gender(Player3,FEMALE) !HasItemEquiped("belt05",Player2) !Name(Player3,"c-aran")~ + ~[PC] What about <PLAYER3>? She might be just what you want.~ + newstate IF ~InParty(Player4) Gender(Player4,FEMALE) !HasItemEquiped("belt05",Player2) !Name(Player4,"c-aran")~ + ~[PC] What about <PLAYER4>? She might be just what you want.~ + newstate IF ~InParty(Player5) Gender(Player5,FEMALE) !HasItemEquiped("belt05",Player2) !Name(Player5,"c-aran")~ + ~[PC] What about <PLAYER5>? She might be just what you want.~ + newstate IF ~InParty(Player6) Gender(Player6,FEMALE) !HasItemEquiped("belt05",Player2) !Name(Player6,"c-aran")~ + ~[PC] What about <PLAYER6>? She might be just what you want.~ + newstate IF ~InParty(Player2) !HasItemEquiped("belt05",Player2) !Name(Player2,"c-aran")~ THEN BEGIN z100 SAY ~[ARAN] What about <PLAYER2>? You know, <HESHE> might be just what you want.~ + newstate IF ~InParty(Player3) !HasItemEquiped("belt05",Player3) !Name(Player3,"c-aran")~ THEN BEGIN z101 SAY ~[ARAN] What about <PLAYER3>? You know, <HESHE> might be just what you want.~ + newstate IF ~InParty(Player4) !HasItemEquiped("belt05",Player4) !Name(Player4,"c-aran")~ THEN BEGIN z102 SAY ~[ARAN] What about <PLAYER4>? You know, <HESHE> might be just what you want.~ + newstate IF ~InParty(Player5) !HasItemEquiped("belt05",Player5) !Name(Player5,"c-aran")~ THEN BEGIN z103 SAY ~[ARAN] What about <PLAYER5>? You know, <HESHE> might be just what you want.~ + newstate IF ~InParty(Player6) !HasItemEquiped("belt05",Player6) !Name(Player6,"c-aran")~ THEN BEGIN z104 SAY ~[ARAN] What about <PLAYER6>? You know, <HESHE> might be just what you want.~ + newstate Of course, we run into the difficulty of scripting PC response to potential cross-gender suggestions - which is fine for me to present with Aran. but tougher for scripting PC responses to. Plus, it leaves little "punch" to the dialog, wheras saying things Note I wimped out on the Girdle of gender Change, too ( !HasItemEquiped("belt05",Player2) ) . Too hard to come up with a way of filtering out whether or not Aran would react well, or the PC, for that matter, to romancing Edwina with the belt on. Great ground for lots of stuff, but way too hard to anticipate player intent and keep things non-jarring. So, this one has lingered since October of 2008, waiting for inspiration to strike, or parts to be salvaged. Workrooms at many hosting sites, closed or open in forums, are littered with materials like this, so if you have some of these tossed in a file somewhere, you are not alone. Perhaps the ideas will make their way out, or perhaps they will be tossed out with the next crash of your hard drive, but either way, thinking through the reasons why it might or not make it is a useful exercise in making choices about your mod. Sometimes, for whatever reason, several months of work need to be scrapped. At least we are not pro writers, who may have to dump draft after draft!
  18. I had an idea about color/background dialogue replies that took into account party spells cast, items, and such - throwaway one-line loops that give players a sense of "awareness" in Aran. It turns out that JCompton as already tread this road before - in his Infinity Modding Iron Chef im7 entry is a great example of a straightforward quest encounter, with resolution through party-supplied items. The code is pretty straightforward (and by that, I mean good, because simple = less likely to break) - IF ~~ gotitem SAY ~Yes! That will be perfect! Thank you!~ = ~Now... do I have everything I might need to face him?~ ++ ~This sounds expensive. Forget it.~ + busy + ~PartyHasItem("potn43") Global("FionaInsight","GLOBAL",0)~ + ~I have this Potion of Insight, might that serve as a source of inspiration?~ DO ~AddexperienceParty(3000) SetGlobal("FionaInsight","GLOBAL",1) TakePartyItemNum("POTN43",1) ~ + gotitem + ~CheckStatGT(Player1,14,WIS) Global("FionaInsight","GLOBAL",0)~ + ~You say your spell brought you to me? Perhaps hearing the tale of my own triumphs over adversity will inspire you.~ DO ~AddexperienceParty(3500) SetGlobal("FionaInsight","GLOBAL",1)~ + inspirestory + ~PartyHasItem("belt06") Global("FionaStrength","GLOBAL",0)~ + ~I have a belt which grants the strength of a hill giant, will that do?~ DO ~AddexperienceParty(3000) TakePartyItemNum("belt06",1) SetGlobal("FionaStrength","GLOBAL",1)~ + gotitem + ~PartyHasItem("belt07") Global("FionaStrength","GLOBAL",0)~ + ~I have a belt which grants the strength of a stone giant, will that do?~ DO ~AddexperienceParty(3000) TakePartyItemNum("belt07",1) SetGlobal("FionaStrength","GLOBAL",1)~ + gotitem + ~PartyHasItem("belt08") Global("FionaStrength","GLOBAL",0)~ + ~I have a belt which grants the strength of a frost giant, will that do?~ DO ~AddexperienceParty(3000) TakePartyItemNum("belt08",1) SetGlobal("FionaStrength","GLOBAL",1)~ + gotitem + ~PartyHasItem("belt11") Global("FionaStrength","GLOBAL",0)~ + ~I have a belt which grants the strength of a fire giant, will that do?~ DO ~AddexperienceParty(3000) TakePartyItemNum("belt11",1) SetGlobal("FionaStrength","GLOBAL",1)~ + gotitem + ~InParty("Minsc") !Dead("Minsc") Global("FionaStrength","GLOBAL",0)~ + ~A source of strength? Hmmm. I have an idea so crazy it just might work. Minsc, would you let Fiona hold Boo for a moment?~ DO ~SetGlobal("FionaStrength","GLOBAL",1) AddexperienceParty(3500)~ EXTERN MINSCJ holdboo + ~PartyHasItem("SW1H51") Global("FionaPower","GLOBAL",0)~ + ~You may have Celestial Fury. It is a blade of unprecedented power.~ DO ~AddexperienceParty(3000) TakePartyItemNum("sw1h51",1) SetGlobal("FionaPower","GLOBAL",1)~ + gotitem + ~PartyHasItem("staf11") Global("FionaPower","GLOBAL",0)~ + ~Though we fought hard to obtain it, take the Staff of the Magi. Surely, it is powerful enough for your needs.~ DO ~AddexperienceParty(3000) TakePartyItemNum("staf11",1) SetGlobal("FionaPower","GLOBAL",1)~ + gotitem + ~PartyHasItem("hamm09") Global("FionaPower","GLOBAL",0)~ + ~Crom Faeyr is a hammer of enormous power. May it serve you well.~ DO ~AddexperienceParty(3000) TakePartyItemNum("hamm09",1) SetGlobal("FionaPower","GLOBAL",1)~ + gotitem + ~CheckStatGT(Player1,14,CHR) Global("FionaPower","GLOBAL",0)~ + ~You say you need a source of great power? I don't think so. All the power you need is already in your own heart and spirit, which must be formidable indeed for you to have endured years of torture without giving up hope.~ DO ~SetGlobal("FionaPower","GLOBAL",1) AddexperienceParty(3500)~ + powerstory ++ ~Let me come back later, I may have what you need then.~ DO ~AddJournalEntry(@99,QUEST)~ + comeback IF ~Global("FionaInsight","GLOBAL",1) Global("FionaStrength","GLOBAL",1) Global("FionaPower","GLOBAL",1)~ + haveitall END So, in this case, JCompton has decided that as part of the quest/encounter, the player can swap out specific items for experience as a payment for resolving Fiona's quest. For materials other than quests, or reactions to the party having items that might be worthy of comment by a party (either for good or ill), the standard or "traditional" way of doing this is using the script (.bcs) to trigger. Some mods, like Saerileth, take this to extremes by adding things like this to baldur.bcs, therefore loading down scripts when the player has a big bag of holding - the master script continually checks the party, and all of the containers with the party, for the item: IF PartyHasItem("AnObjectionableEvilItem") // no global set, so that it checks every script cycle THEN RESPONSE #100 SetGlobal("PartyHasEvilItemIWantToDestroyOrWillLeaveImmediately","GLOBAL",1) StartDialogNoSet(Player1) END SIDE NOTE: DavidW has suggested a cool idea using LOCALS and timers to run these checks on a longer cycling, reducing script lag. It works well, as it still checks regularly - just not every single script cycle. In the dialog, there is a matching state that complains about the object to the PC, and sets reactions accordingly. For example, Chloe's script detects misuse of her swords, and smites the player. Other modders have chosen less restrictive paths. Amber, for example, refuses to use certain items, but it runs in her script, and does not mess with what others in the party are using or what is in the bag of holding. I think we can safely add some nice scenery stuff for all players using the "traditional" approach, for a few (less than 5) of the big, big items. Heck, we might even use this in his .bcs as a way of tailoring weaponry or equipment to match his class when the player first spawns him, if we want: in dialog, or in .bcs, it runs about the same: .baf entry for "upgrading" a weapon IF Global("c-weaponcheck","GLOBAL",0) HasItem("weapon1","c-aran") CheckStatGT(Player1,11,LEVEL) THEN RESPONSE #50 TakeItemReplace("weapon2","weapon1","c-aran") SetGlobal("c-weaponcheck","GLOBAL",1) THEN RESPONSE #50 TakeItemReplace("weapon3","weapon1","c-aran") SetGlobal("c-weaponcheck","GLOBAL",1) END In this example, we leverage both the use of CheckStatGT() | HasItem(), and the random RESPONSE block, so that sometimes Aran shows up with Weapon 2, sometimes Weapon 3 (Check Beyond The Law and other mods by Z and you will see good examples of this kind of .bcs block leverage). But dialogue between people does not always work with such constraint that you immediately walk up to a friend and say "Yo. Big ugly evil thing in your hands. Drop it, or I am outta here." (Well, perhaps that is an overstatement, and perhaps you do. But I am unaccustomed to the blunt, direct, rude conversation depicted in that kind of scenario - it is more likely to be "Cmorgan! Great to see you!" <3 minutes of trivia smalltalk> "You know, I think you are a good friend, and I just have to mention... that thing you said to the principal? I am glad you have tenure! Because if I said it, my non-tenured bottom would have been bounced right out of the school!". Unless it is a pickup line, like this, I think in a more natural conversation, you might sidecomment on gear or something, and then be back in the regular conversation, more like this: or for the dudes, Good game designers know to avoid this kind of sidetracking. It is a bogdown of clean conversation, it adds complexity to keeping players on track, and it wastes precious time in development. It tends to confuse players, who are already conditioned that if NPC A mentions a dude who sells swords the next town over, it means either he is secretly a black dragon in disguise, he has a mission you can take, or he is a Plot Point that must be cleared before moving on. Luckily, I am a modder, and can ignore this (albeit at my peril), adding a few little "awareness" dialogs here and there. They can be added to the PID, where players who love RP interaction will find them; they can be added to flirts; and with a little bit of judicial weaving, they can even be interjected into vanilla reactions by Canonical BioWare™ NPCs. In a few places, they can even be snuck in as a side branch in a conversation, which may or may not sidetrack the conversation. For that reason (the potential sidetrack) the FriendTalks are the best place to look at adding one or two of these, in more innocent conversations where it does not really matter if a player is sidetracked as much. We all have those conversations where you start talking about something, and then someone says something bad about <INSERT_FAVORITE_TEAM_OR_HOBBY_OR_POLITICAL_STANCE_HERE>, and suddenly it is all broken up, and the original conversation is completely lost! We can play with this idea at the dialog level, adding a reaction template to be scattered where it mimics regular conversational flow. With some situational rewriting, this template can be used for inserting reactions to the one item we know Aran could not shut his mouth about: /* LEAT21 // Human Flesh +5 evil armor */ IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",0)~ GOTO b100 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",1) GlobalTimerExpired("c-aranskin","GLOBAL")~ GOTO b101 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",2) GlobalTimerExpired("c-aranskin","GLOBAL")~ GOTO b102 IF ~~ b100 SAY ~[ARAN] Hey, by the way, your armor be all wrong. I know you be th' scourge o' Faerun, but you don't have to wear your heart on your sleeve, eh? In this case, someone else's, by th' look. An' I won't say how bad it smells.~ IF ~~ THEN DO ~SetGlobal("c-arskinarm","LOCALS",1) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ EXIT END // or whatever tie backs necessary IF ~~ b101 SAY ~[ARAN] You stll be wearin' that Grumbar-lovin' Cyric-blighted armor? Gives me th' chills, it does.~ ++ ~[PC] If it bothers you that much, I will take it off.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + b103 ++ ~[PC] I think it has a great effect on our opponents' morale. You are just going to have to get used to it.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + b103 ++ ~[PC] If I wanted you opinion, I would have asked.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + b103 ++ ~[PC] Shut up, or your ears will add decoration to it.~ DO ~SetGlobal("c-arskinarm","LOCALS",2) SetGlobalTimer("c-aranskin","GLOBAL",FOUR_DAYS)~ + b103 END IF ~~ b102 SAY ~[ARAN] Look, I do a good bit around here, an' I know you be th' leader. I'm just sayin', that armor makes it blighted hard for me to do my job. Th' smell be only part o' it. Shar's Kiss, get rid o' it, eh?~ ++ ~[PC] Or you will run crying like a weakling child, break your contract, and leave?~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + b104 ++ ~[PC] Shut up, Aran. I heard you the first two times. I will use what tools I see fit to advance my goals.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + b104 ++ ~[PC] Are you volunteering to add more skin to this armor? Speak again, and I will ~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + b104 ++ ~[PC] I may very well take it off. You are useful. But then again, I might put it back on. You will have to get used to it, or leave.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + b104 ++ ~[PC] You do very little, and I am tired of your whining. That is the last warning you will get.~ DO ~SetGlobal("c-arskinarm","LOCALS",3)~ + b104 END IF ~~ b103 SAY ~[ARAN] Hey, I don't go around second guessin' you. So if I be sayin' it, you know there be one hells of a lot more people who have noticed. Might fit your ideas, but it be bad tactics to give away your position that way.~ IF ~~ THEN EXIT END // or whatever tie backs necessary IF ~~ b104 SAY ~[ARAN] Cyric's Black Heart, I don't run out on contracts. But you smell worse than a charnelhouse. If I throw up, you will be knowin' why.~ IF ~~ THEN EXIT END // or whatever tie backs necessary Another template to run out might be a set of reactions for PID, with Aran reacting to using Drow weapons: /* PID for Underdark: equipment addition */ + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWBLUN01","c-aran") Global("c-arandroweq","LOCALS",0)~ + ~[PC] Aran, you keep looking oddly at that Drow flail you are using. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Flail +3 + ~Global("c-arandroweq","LOCALS",0) OR(2) HasItemEquiped("DWCHAN01","c-aran") HasItemEquiped("DWCHAN02","c-aran")~ + ~[PC] Aran, you keep looking oddly at that armor you are wearing. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Elven Chain +3, Drow Adamantine Chain +5 + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWCLCK01","c-aran")~ + ~[PC] Aran, you keep looking oddly at that cloak you are wearing. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Piwafwi Cloak + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWHALB01","c-aran")~ + ~[PC] Aran, you keep looking oddly at that halberd you are weilding. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Halberd +3 + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWPLAT01","c-aran")~ + ~[PC] Aran, you keep looking oddly at that plate armor you are wearing. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Full Plate +5 + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWSHLD01","c-aran")~ + ~[PC] Aran, you keep looking oddly at that shield you are holding. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Shield +3 + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWSPER01","c-aran")~ + ~[PC] Aran, you keep looking oddly at that lance you are weilding. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Lance +3 + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWSW1H01","c-aran")~ + ~[PC] Aran, you keep looking oddly at that scimitar you are weilding. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Scimitar +3 + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWSW1H02","c-aran")~ + ~[PC] Aran, you keep looking oddly at that longsword you are weilding. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Longsword +3 + ~Global("c-arandroweq","LOCALS",0) HasItemEquiped("DWXBOW01","c-aran")~ + ~[PC] Aran, you keep looking oddly at that crossbow you are using. Is there something wrong?~ DO ~SetGlobal("c-arandroweq","LOCALS",1)~ + c-aranreactdrow // Drow Crossbow of Speed IF ~~ c-aranreactdrow SAY ~[ARAN] Shar's Spikey Spit, I don't rightly want naught to do wi' a weapon what turns to dust in sunlight. I know it be powerful an' magical, but give me a solid surface weapon an' I'd be a mite happier.~ IF ~~ THEN DO ~SetGlobal("c-arandroweq","LOCALS",1)~ EXIT END Other ideas to play with: 0x402C HPPercent(O:Object*,I:Hit Points*) See HP(O:Object*,I:Hit Points*) except this is for a percentage. 0x402D HPPercentLT(O:Object*,I:Hit Points*) See HPLT(O:Object*,I:Hit Points*) except this is for a percentage. 0x402E HPPercentGT(O:Object*,I:Hit Points*) See HPGT(O:Object*,I:Hit Points*) except this is for a percentage. 0x4031 HaveSpell(I:Spell*Spell) Returns true only if the active CRE has the specified spell memorised. 0x4032 HaveAnySpells() Returns true if the active CRE has at least one spell memorised. 0x4044 CheckStat(O:Object*,I:Value*,I:StatNum*Stats) Returns true only if the specified object has the statistic in the 3rd parameter at the value of the 2nd parameter. 0x4045 CheckStatGT(O:Object*,I:Value*,I:StatNum*Stats) Returns true only if the specified object has the statistic in the 3rd parameter greater than the value of the 2nd parameter. 0x4046 CheckStatLT(O:Object*,I:Value*,I:StatNum*Stats) Returns true only if the specified object has the statistic in the 3rd parameter less than the value of the 2nd parameter. 0x404E PartyGold(I:Amount*) Returns true only if the player's party has the amount of gold specified in the 2nd parameter. 0x404F PartyGoldGT(I:Amount*) Returns true only if the player's party has more gold than specified in the 2nd parameter. 0x4050 PartyGoldLT(I:Amount*) Returns true only if the player's party has less gold than specified in the 2nd parameter. 0x4064 HasWeaponEquiped(O:Object*) Returns true only if the specified object has a weapon in a quickslot. 0x407F HasItemEquiped(S:ResRef*,O:Object*) Returns true if the specified object has the specified item in one of its quicklots if it is a weapon, or has it equipped if it is a piece of armour of an amulet etc. InventoryFull(O:Object*) One other area that readily springs to mind are flirts. Since appearance in PC-land is entirely subjective, and we currently do not have a way of identifying what portrait/avatar coloration combination is used, or anything else cosmetic like that in scripting, we often are restricted in the bread and butter of human attraction - reaction and commentary on appearance. We have to live in "generic land", with Assuming Facts Not In Evidence to be avoided. A sample of a problem-flirt: or worse, With a nod to HasItemEquiped(), though, some direct observation is possible: /* Flirt Additions: */ + ~HasItemEquiped("AMUL12",Player1) Global("TEMPVAR","LOCALS",0)~ + j100 // Laeral's Tear Necklace (3000 gp) + ~HasItemEquiped("AMUL01",Player1) Global("TEMPVAR","LOCALS",0)~ + j101 // Necklace of Missiles + ~HasItemEquiped("AMUL04",Player1) Global("TEMPVAR","LOCALS",0)~ + j102 // Studded Necklace with Zios Gems + ~HasItemEquiped("AMUL05",Player1) Global("TEMPVAR","LOCALS",0)~ + j103 // Bluestone Necklace + ~HasItemEquiped("AMUL06",Player1) Global("TEMPVAR","LOCALS",0)~ + j104 // Agni Mani Necklace + ~HasItemEquiped("AMUL07",Player1) Global("TEMPVAR","LOCALS",0)~ + j105 // Rainbow Obsidian Necklace + ~HasItemEquiped("AMUL08",Player1) Global("TEMPVAR","LOCALS",0)~ + j106 // Tiger Cowrie Shell Necklace + ~HasItemEquiped("AMUL09",Player1) Global("TEMPVAR","LOCALS",0)~ + j107 // Silver Necklace + ~HasItemEquiped("AMUL10",Player1) Global("TEMPVAR","LOCALS",0)~ + j108 // Gold Necklace + ~HasItemEquiped("AMUL11",Player1) Global("TEMPVAR","LOCALS",0)~ + j109 // Pearl Necklace + ~HasItemEquiped("AMUL16",Player1) Global("TEMPVAR","LOCALS",0)~ + j110 // Amulet of Metaspell Influence (+1 2nd level spell) + ~HasItemEquiped("AMUL18",Player1) Global("TEMPVAR","LOCALS",0)~ + j111 // Wolfsbane Charm +2 vs Lycanthropes + ~HasItemEquiped("AMUL22",Player1) Global("TEMPVAR","LOCALS",0)~ + j112 // Periapt of Proof Against Poison IF ~~ j100m // Laeral's Tear Necklace (3000 gp) SAY ~[ARAN] (He leans forward slightly, studying the Laeral's Tear necklace you are wearing.)~ IF ~~ THEN GOTO j113 // expensive END IF ~~ j101 // Necklace of Missiles SAY ~[ARAN] (He leans forward slightly, studying the Necklace of Missiles necklace you are wearing.)~ IF ~~ THEN GOTO j114 // missiles END IF ~~ j102 // Studded Necklace with Zios Gems SAY ~[ARAN] (He leans forward slightly, studying the zios gems embedded in the necklace you are wearing.)~ IF ~~ THEN GOTO j119 /* clunky */ END IF ~~ j103 // Bluestone Necklace SAY ~[ARAN] (He leans forward slightly, studying the bluestone necklace you are wearing.)~ IF ~~ THEN GOTO j119 /* clunky */ END IF ~~ j104 // Agni Mani Necklace SAY ~[ARAN] (He leans forward slightly, studying the angi mani necklace you are wearing.)~ IF ~~ THEN GOTO j119 /* clunky */ END IF ~~ j105 // Rainbow Obsidian Necklace SAY ~[ARAN] (He leans forward slightly, studying the obsidian necklace you are wearing.)~ IF ~~ THEN GOTO j119 /* clunky */ END IF ~~ j106 // Tiger Cowrie Shell Necklace SAY ~[ARAN] (He leans forward slightly, studying the cowrie shell necklace you are wearing.)~ IF ~~ THEN GOTO j119 /* clunky */ END IF ~~ j107 // Silver Necklace SAY ~[ARAN] (He leans forward slightly, studying the silver necklace you are wearing.)~ IF ~~ THEN GOTO j115 /* simple */ END IF ~~ j108 // Gold Necklace SAY ~[ARAN] (He leans forward slightly, studying the gold necklace you are wearing.)~ IF ~~ THEN GOTO j115 /* simple */ END IF ~~ j109 // Pearl Necklace SAY ~[ARAN] (He leans forward slightly, studying the pearl necklace you are wearing.)~ IF ~~ THEN GOTO j115 /* simple */ END IF ~~ j110 // Amulet of Metaspell Influence (+1 2nd level spell) SAY ~[ARAN] (He leans forward slightly, studying the amulet you are wearing.)~ IF ~~ THEN GOTO j118 /* magical */ END IF ~~ j111 // Wolfsbane Charm +2 vs Lycanthropes SAY ~[ARAN] (He leans forward slightly, studying the wolfsbane charm you are wearing.)~ IF ~~ THEN GOTO j117 /* anti-wolf */ END IF ~~ j112 // Periapt of Proof Against Poison SAY ~[ARAN] (He leans forward slightly, studying the periapt you are wearing.)~ IF ~~ THEN GOTO j116 /* anti-poison */ END IF ~~ j113 SAY ~[ARAN] Now, I do think that piece o' jewelry matches you. But on full account, there be few pieces, no matter how expensive, what can do justice to th' beauty o' your eyes.~ DO ~SetGlobal("TEMPVAR","LOCALS",1)~ EXIT END // expensive IF ~~ j114 SAY ~[ARAN] (Hesitantly, he reaches one hand out to touch it...) OUCH! That there necklace done bit me! Hells, <CHARNAME>, you could have warned me th' bloody thing was leakin' some o' that missile-energy.~ DO ~SetGlobal("TEMPVAR","LOCALS",1)~ EXIT END // missiles IF ~~ j115 SAY ~[ARAN] Perfect. Simple, attractive, understated, an' nearly as beautiful as you.~ DO ~SetGlobal("TEMPVAR","LOCALS",1)~ EXIT END // simple IF ~~ j116 SAY ~[ARAN] Good protection. You might want to keep in on tonight, eh? On account o' I am cookin' wi' some new spices, an' I am nt sure I have the amount just right.~ DO ~SetGlobal("TEMPVAR","LOCALS",1)~ EXIT END // anti-poison IF ~~ j117 SAY ~[ARAN] Now, you may think that charm will keep th' lkes o' me away. Problem is, I'm no wolf. I just act like one!~ DO ~SetGlobal("TEMPVAR","LOCALS",1)~ EXIT END // anti-wolf IF ~~ j118 SAY ~[ARAN] (He gently caresses it with the tip of one finger, then shivers and shakes his hand.) Now, that done give me a set o' goosebumps. Either it did, or th' curve o' your neck did. Either way, I think I might want to repeat th' experience.~ DO ~SetGlobal("TEMPVAR","LOCALS",1)~ EXIT END // magical IF ~~ j119 SAY ~[ARAN] Now, that be alright for some women, but I am not so sure when it comes to you. I think it sets off your eyes right nice, but I think it be a mite clunky. Here. This pearl necklace might be better.~ DO ~<< GiveItemCreate "AMUL11">> SetGlobal("TEMPVAR","LOCALS",1)~ EXIT END // clunky
  19. Have Pen, Will Travel. We need Aran to have a sideline scribing scroll for PC. We can work on lovenotes and doodles and starry-eyed descriptions for the lady PCs later, us dudes need some meat and potatoes too. We are creating a uniqueness, a marker that sets him apart as special, but nothing that sets him apart as all-powerful. So what happens if a guy is born with only a smattering of connection to The Weave, but not enough to truly move into wild magic? Perhaps the more he studies his language and scribing, the more he unconsciously flexes those connections, until (with a great deal of effort and concentration, in conjunction with skilled study by either himself if he is a mage or someone else if they are)... he can prepare scrolls that are hospitable enough to the undercurrent of magic that they can come into power through collaboration. OK, a little heavy on the BS there, but hey, I started out a DM, and if there isn't a heavy layer of that stuff lying around, how is anything going to grow? So, the "special ability" is to be able to create scrolls, whether or not he is actually following the classes in MAGE_ALL. What about the other magics, like druidic/cleric? Nope - I have an ok backstory and I am sticking to it. If the dude is gathering weak links to the weave and using it to create scrolls, the divine magics are out, because they expect true divine intervention or agency. In 2E terms, mages craft magic from knowledge and control, clerics craft from faith and divine gifting. Since mages are controlling aspects of the weave to make things work, but do not have that divine intervention, then Aran should be able to 'mimic' the mage's works, and with his connection do well enough that collaboration (either with his own spellbook and knowledge or with someone else's) 'trick' the magic into occupying the scroll. No divine agent would look down and say "whoa, dude, cool scroll - far out, man! Sure, I will send down that 'Cyric's Nuclear Option of Doom' right away, even though you don't follow Cyric, because you are JUST THAT KEWEL, DUDE!". So, mage spells only. And now we have an FR rationale and backstory to play with (slightly bent, but not completely broken - hey, *I'm* not having tons of half-drow running around Faerun happily being good and playing well with the local constabulary! Don't poke me, I don't want any trouble!) Creating a Special Ability Well, there are a bunch of things out there that can handle this in different ways. Rogue Rebalancing allows you the choice of spells and potions to build, with the following (by the way, this is my new "go look at this' for fellow modders - aVENGER (RR) comments everything, and his code in a highlighter is a darned good minimalist painting, all ordered and clean, and easy to follow even when exactly what he is doing doesn't hit your brain.... which means it is organized in a painstaking way that will allow you to learn by watching what he does and following it, instead of going "why that, and what does it get associated with?". For the how-not-to example, just read the last sentence. He does things the opposite of that grammatical construction.) Here is where he gets busy in the .tp2, and I don't even need to explain - he does it for me: COPY ~RR/RR_STIM/ITEMS/RR#INV.ITM~ ~override~ // Invulnerability item for cutscene creatures COPY ~RR/RR_CORE/ACTORS/RR#ALCH.CRE~ ~override~ // Alchemy invisible creature (used for initiating the dialogue) COPY ~RR/RR_CORE/SPELLS/RR#ALCH.EFF~ ~override~ // Alchemy invisible creature summoning EFF COMPILE ~RR/RR_CORE/COMPILE/RR#ALCH.D~ // Alchemy invisible creature dialogue file (used for choosing potions) COMPILE ~RR/RR_CORE/COMPILE/RR#ALCH.BAF~ // Alchemy invisible creature AI script (used for initiating the dialogue) COPY ~RR/RR_CORE/SPELLS/RR#ALCHT.SPL~ ~override~ // Alchemy (Thief version) SAY UNIDENTIFIED_DESC @8100 SAY DESC @8100 From this, even before we go poking about the files, we can infer some things. First, he is using the "invisible creature" trick, where you build a .cre and make it invulnerable and invisible, and script it to spawn/self-destruct in game, thus giving your NPC (and/or PC) the ability to talk to yourself. JCompton did that with some cool Boo dialogs, and lots of people have done this with all sorts of things - Galactygon's Spell Pack over at BWL uses it in spell scripting to create all sorts of things like ofscreen targeting and pathing, in BG1NPC Domi used it to make Gorion's letter "talk", etc. - basically, the "invisible creature" trick is one of the big 'everybody does this to make hard-to-get-to-work stuff work' trick. Just a reminder - don't use cutspy.cre as your base. It is flagged as not interactable. I found that one out the hard way, trying to figure out why dialog wouldn't fire. That was several hours of my life wasted. Do we need to do all this? I mean, that looks like extra work, and we want to finish before 2062AD... Well, no. We do not. The same concept could simply be scripted out in dialog, with the following formula: Set a variable to 1 to show Aran can scribe a scroll, and set a timer (say, 1 in-game week, for instance) to limit the number of times a player can use the ability. When the variable is at 1 and the timer is expired, it enables a PID choice. When the PID choice is chosen, go to the kind of dialog setup listed below, and at the end loop back to 1. Or, if we want to be really, really picky, set up the timer and creation of scroll in a .bcs block, so that When a variable is 0, Aran can scribe spells, and a PID option shows up for it. Choosing the PID option runs a set of "choice" dialog states, sets the appropriate variable to 1, the type of scroll attached to a specific number, so (for instance) c-aranscribe = 1 = scroll of invisibility c-aranscribe = 2 = scroll of haste etc. and set a timer (say, 1 in-game week, for instance) to limit the number of times a player can use the ability. When the variable is at 1 and the timer is expired, it is picked up by a .bcs block, which either creates the item on Aran and gives him a DisplayStringHead() that indicates he has finished scribing the scroll, or does a StartDialogNoSet(Player1) that fires a banter giving the scroll to Player 1 - and of course sets the variable back to 0, ready for the next round. But then again, that Special Ability Icon is way cool, and makes my NPC look pro, so how would that work? OK, but first let's go see how aVENGER (RR) creates the dialog, because it will be useful in both invisible .cre and straightforward dialog approaches. Again, all his comments, not mine - file RR#ALCH.D // creator : aVENGER // argument : RR#ALCH BEGIN ~RR#ALCH~ IF ~NumTimesTalkedTo(0)~ THEN BEGIN a0 SAY @8121 // (With cleverness innate to the class, an experienced rogue has seen enough potions in his or her adventuring career to simulate the creation of one. However, the costs for any raw materials that are used in the process must be paid.) = @8122 // (This ability allows a rogue to brew one of the potions from the following list:) IF ~Class(LastTalkedToBy(Myself),THIEF_ALL) PartyGoldGT(199)~ THEN REPLY @8130 DO ~TakePartyGold(200) GiveItemCreate("POTN36",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Master Thievery (200 gp) IF ~Class(LastTalkedToBy(Myself),THIEF_ALL) PartyGoldGT(174)~ THEN REPLY @8131 DO ~TakePartyGold(175) GiveItemCreate("POTN39",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Perception (175 gp) IF ~Class(LastTalkedToBy(Myself),THIEF_ALL) PartyGoldGT(124)~ THEN REPLY @8132 DO ~TakePartyGold(225) GiveItemCreate("POTN10",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Invisibility (125 gp) IF ~Class(LastTalkedToBy(Myself),BARD_ALL) PartyGoldGT(249)~ THEN REPLY @8140 DO ~TakePartyGold(250) GiveItemCreate("POTN37",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Mind Focusing (250 gp) IF ~Class(LastTalkedToBy(Myself),BARD_ALL) PartyGoldGT(349)~ THEN REPLY @8141 DO ~TakePartyGold(350) GiveItemCreate("POTN21",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Clarity (350 gp) IF ~Class(LastTalkedToBy(Myself),BARD_ALL) PartyGoldGT(249)~ THEN REPLY @8142 DO ~TakePartyGold(250) GiveItemCreate("POTN42",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Regeneration (250 gp) IF ~PartyGoldGT(349)~ THEN REPLY @8133 DO ~TakePartyGold(350) GiveItemCreate("POTN24",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Defense (350 gp) IF ~PartyGoldGT(224)~ THEN REPLY @8134 DO ~TakePartyGold(225) GiveItemCreate("POTN52",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Extra Healing (225 gp) IF ~PartyGoldGT(49)~ THEN REPLY @8135 DO ~TakePartyGold(50) GiveItemCreate("POTN20",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Antidote (50 gp) IF ~PartyGoldGT(249)~ THEN REPLY @8136 DO ~TakePartyGold(250) GiveItemCreate("POTN14",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Oil of Speed (250 gp) IF ~Class(LastTalkedToBy(Myself),THIEF_ALL) PartyGoldGT(249)~ THEN REPLY @8137 DO ~TakePartyGold(250) GiveItemCreate("POTN13",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Oil of Fiery Burning (250 gp) IF ~Class(LastTalkedToBy(Myself),BARD_ALL) PartyGoldGT(124)~ THEN REPLY @8143 DO ~TakePartyGold(125) GiveItemCreate("POTN45",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Freedom (125 gp) IF ~PartyGoldGT(374)~ THEN REPLY @8138 DO ~TakePartyGold(375) GiveItemCreate("POTN56",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Frost Giant Strength (375 gp) IF ~~ THEN REPLY @8150 DO ~DestroySelf()~ EXIT // (Do not brew any potions.) END We don't need to see the dialog strings to see how this could be useful this kind of dialog structure is - and how easy this could be to adapt for any number of things. Want a smithing character? Set this up in PID or a specific talk. An alchemist? Voila - most of the code work is right there, all set up. By the way, if you want a really interesting way of making things more or less expensive based on the current party status, try BG1NPC Bardic reputation Adjustment. Berelinde set up this little coding number, changing out costs by reputation through dialog branching. I am going to make the text small, so watch out for squinting eyes: in /* the deal is done */ APPEND ~X#LP1REP~ IF ~~ THEN X#Troubador1MakeBad SAY @110 + ~Reputation(Player1,20)~ + @111 + X#T1MB20.1 + ~Reputation(Player1,19)~ + @112 + X#T1MB19.1 + ~Reputation(Player1,18)~ + @112 + X#T1MB18.1 + ~Reputation(Player1,17)~ + @112 + X#T1MB17.1 + ~Reputation(Player1,16)~ + @112 + X#T1MB16.1 + ~Reputation(Player1,15)~ + @112 + X#T1MB15.1 + ~Reputation(Player1,14)~ + @112 + X#T1MB14.1 + ~Reputation(Player1,13)~ + @112 + X#T1MB13.1 + ~Reputation(Player1,12)~ + @112 + X#T1MB12.1 + ~Reputation(Player1,11)~ + @112 + X#T1MB11.1 + ~Reputation(Player1,10)~ + @112 + X#T1MB10.1 + ~Reputation(Player1,9)~ + @112 + X#T1MB9.1 + ~Reputation(Player1,8)~ + @112 + X#T1MB8.1 + ~Reputation(Player1,7)~ + @112 + X#T1MB7.1 + ~Reputation(Player1,6)~ + @112 + X#T1MB6.1 + ~Reputation(Player1,5)~ + @112 + X#T1MB5.1 + ~Reputation(Player1,4)~ + @112 + X#T1MB4.1 + ~ReputationLT(Player1,4)~ + @112 + X#T1MBNotPossible + ~Reputation(Player1,20)~ + @113 + X#T1MB20.2 + ~Reputation(Player1,19)~ + @113 + X#T1MB19.2 + ~Reputation(Player1,18)~ + @113 + X#T1MB18.2 + ~Reputation(Player1,17)~ + @113 + X#T1MB17.2 + ~Reputation(Player1,16)~ + @113 + X#T1MB16.2 + ~Reputation(Player1,15)~ + @113 + X#T1MB15.2 + ~Reputation(Player1,14)~ + @113 + X#T1MB14.2 + ~Reputation(Player1,13)~ + @113 + X#T1MB13.2 + ~Reputation(Player1,12)~ + @113 + X#T1MB12.2 + ~Reputation(Player1,11)~ + @113 + X#T1MB11.2 + ~Reputation(Player1,10)~ + @113 + X#T1MB10.2 + ~Reputation(Player1,9)~ + @113 + X#T1MB9.2 + ~Reputation(Player1,8)~ + @113 + X#T1MB8.2 + ~Reputation(Player1,7)~ + @113 + X#T1MB7.2 + ~Reputation(Player1,6)~ + @113 + X#T1MB6.2 + ~Reputation(Player1,5)~ + @113 + X#T1MB5.2 + ~Reputation(Player1,4)~ + @113 + X#T1MBALittle + ~ReputationLT(Player1,4)~ + @113 + X#T1MBNotPossible + ~Reputation(Player1,20)~ + @114 + X#T1MB20.3 + ~Reputation(Player1,19)~ + @114 + X#T1MB19.3 + ~Reputation(Player1,18)~ + @114 + X#T1MB18.3 + ~Reputation(Player1,17)~ + @114 + X#T1MB17.3 + ~Reputation(Player1,16)~ + @114 + X#T1MB16.3 + ~Reputation(Player1,15)~ + @114 + X#T1MB15.3 + ~Reputation(Player1,14)~ + @114 + X#T1MB14.3 + ~Reputation(Player1,13)~ + @114 + X#T1MB13.3 + ~Reputation(Player1,12)~ + @114 + X#T1MB12.3 + ~Reputation(Player1,11)~ + @114 + X#T1MB11.3 + ~Reputation(Player1,10)~ + @114 + X#T1MB10.3 + ~Reputation(Player1,9)~ + @114 + X#T1MB9.3 + ~Reputation(Player1,8)~ + @114 + X#T1MB8.3 + ~Reputation(Player1,7)~ + @114 + X#T1MB7.3 + ~Reputation(Player1,6)~ + @114 + X#T1MB6.3 + ~Reputation(Player1,5)~ + @114 + X#T1MBModerate + ~Reputation(Player1,4)~ + @114 + X#T1MBALittle + ~ReputationLT(Player1,4)~ + @114 + X#T1MBNotPossible END IF ~~ THEN X#T1MB20.1 SAY @115 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB19.1 SAY @118 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB18.1 SAY @119 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(999)~ + @117 DO ~TakePartyGold(1000) DestroyGold(1000) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB17.1 SAY @120 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB16.1 SAY @121 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB15.1 SAY @122 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(399)~ + @117 DO ~TakePartyGold(400) DestroyGold(400) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB14.1 SAY @123 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(199)~ + @117 DO ~TakePartyGold(200) DestroyGold(200) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB13.1 SAY @124 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(299)~ + @117 DO ~TakePartyGold(300) DestroyGold(300) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB12.1 SAY @125 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(399)~ + @117 DO ~TakePartyGold(400) DestroyGold(400) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB11.1 SAY @126 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB10.1 SAY @127 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB9.1 SAY @128 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB8.1 SAY @129 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB7.1 SAY @130 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB6.1 SAY @131 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1999)~ + @117 DO ~TakePartyGold(2000) DestroyGold(2000) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB5.1 SAY @132 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(2499)~ + @117 DO ~TakePartyGold(2500) DestroyGold(2500) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB4.1 SAY @133 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(4999)~ + @117 DO ~TakePartyGold(5000) DestroyGold(5000) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MB20.2 SAY @134 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(2399)~ + @117 DO ~TakePartyGold(2400) DestroyGold(2400) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB19.2 SAY @135 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1899)~ + @117 DO ~TakePartyGold(1900) DestroyGold(1900) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB18.2 SAY @136 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1299)~ + @117 DO ~TakePartyGold(1300) DestroyGold(1300) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB17.2 SAY @137 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB16.2 SAY @138 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB15.2 SAY @139 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB14.2 SAY @140 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(449)~ + @117 DO ~TakePartyGold(450) DestroyGold(450) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB13.2 SAY @141 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(599)~ + @117 DO ~TakePartyGold(600) DestroyGold(600) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB12.2 SAY @142 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB11.2 SAY @143 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(999)~ + @117 DO ~TakePartyGold(1000) DestroyGold(1000) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB10.2 SAY @144 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1399)~ + @117 DO ~TakePartyGold(1400) DestroyGold(1400) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB9.2 SAY @145 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1799)~ + @117 DO ~TakePartyGold(1800) DestroyGold(1800) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB8.2 SAY @146 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(2399)~ + @117 DO ~TakePartyGold(2400) DestroyGold(2400) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB7.2 SAY @147 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(2999)~ + @117 DO ~TakePartyGold(3000) DestroyGold(3000) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB6.2 SAY @148 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(3999)~ + @117 DO ~TakePartyGold(4000) DestroyGold(4000) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB5.2 SAY @149 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(6499)~ + @117 DO ~TakePartyGold(6500) DestroyGold(6500) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MB20.3 SAY @150 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(2799)~ + @117 DO ~TakePartyGold(2800) DestroyGold(2800) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB19.3 SAY @132 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(2499)~ + @117 DO ~TakePartyGold(2500) DestroyGold(2500) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB18.3 SAY @131 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1999)~ + @117 DO ~TakePartyGold(2000) DestroyGold(2000) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB17.3 SAY @151 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB16.3 SAY @138 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB15.3 SAY @152 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB14.3 SAY @153 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB13.3 SAY @154 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB12.3 SAY @155 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB11.3 SAY @156 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(1599)~ + @117 DO ~TakePartyGold(1600) DestroyGold(1600) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB10.3 SAY @157 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(2199)~ + @117 DO ~TakePartyGold(2200) DestroyGold(2200) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB9.3 SAY @158 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(2799)~ + @117 DO ~TakePartyGold(2800) DestroyGold(2800) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB8.3 SAY @159 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(3699)~ + @117 DO ~TakePartyGold(3700) DestroyGold(3700) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB7.3 SAY @160 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(3999)~ + @117 DO ~TakePartyGold(4000) DestroyGold(4000) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MB6.3 SAY @161 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(7499)~ + @117 DO ~TakePartyGold(7500) DestroyGold(7500) ReputationInc(-3)~ + X#Troubador1Final END IF ~~ THEN X#T1MBALittle SAY @162 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(4999)~ + @117 DO ~TakePartyGold(5000) DestroyGold(5000) ReputationInc(-1)~ + X#Troubador1Final END IF ~~ THEN X#T1MBModerate SAY @163 ++ @116 + X#Troubador1NoCoin + ~PartyGoldGT(7499)~ + @117 DO ~TakePartyGold(7500) DestroyGold(7500) ReputationInc(-2)~ + X#Troubador1Final END IF ~~ THEN X#T1MBNotPossible SAY @164 IF ~~ THEN EXIT END IF ~~ THEN X#Troubador1NoCoin SAY @165 IF ~~ THEN EXIT END IF ~~ THEN X#Troubador1Final SAY @166 IF ~~ THEN DO ~SetGlobal("X#TT1Deactivate","GLOBAL",1)~ EXIT END END So we can see how a merger of these two ideas can create dialog that can be very tightly tailored to the party, yet give a huge range of options. In this respect, it is a huge step up from Cromwell and Cespy forging, from a role-playing perspective - perhaps your Quest Blacksmith really likes dwarves and hates elves, so his forging prices and availability scale (or perhaps he offers different products to dwarves than elves, or figures out what store to start based on party gold)? Or perhaps reputation has an effect on what types of skills and services are offered? Or what if your crafter NPC operated by level, getting better items to forge, and crosschecked by the reputation of Player1, so that evil <CHARNAME>s got offered Daggers of Hideous Bloodletting, and Paladiny <CHARNAME>s got Daggers Of Riteous Providence? *cough* *cough* sorry, got carried away for a second there. Anyways, back to aAVENGER (RR). The AI for the invisible .cre is nicely set up, so summoning the .cre to access the dialog ("using the ability" in player terms) has the following script: IF OR(2) !Detect(LastSummonerOf(Myself)) StateCheck(LastSummonerOf(Myself),CD_STATE_NOTVALID) THEN RESPONSE #100 DestroySelf() END IF OR(4) Detect([EVILCUTOFF]) ActuallyInCombat() CombatCounterGT(0) AttackedBy([ANYONE],DEFAULT) THEN RESPONSE #100 DisplayStringNoNameHead(LastSummonerOf(Myself),@8120) // This ability cannot be used in a hostile environment DestroySelf() END IF NumTimesTalkedTo(0) Exists(LastSummonerOf(Myself)) !StateCheck(LastSummonerOf(Myself),CD_STATE_NOTVALID) THEN RESPONSE #100 StartDialogueNoSet(LastSummonerOf(Myself)) END That means block 1 deletes the .cre if the summoner disappears, if there is some kind of combat going on, or if a fireball trap just went off in the vacinity toasting the .cre... but if everything is a-ok, then the invisible .cre will start dialog with the actor that brought it into existence, accessing those options. OK, so far we have option 1 - build it through dialogs and timers, resolving it with either immediate creation and a "cooldown period", or commission and creation after the end of the timered "creation interval". option 2 - set up a spell that Aran can cast from either an innate ability/special ability slot or a dialog option that launches this invisible .cre and allows access to the menu. We haven't figured out *how* the .cre gets summoned yet, but we know it is attached to the way HLAs work, and we know that because aVENGER (RR) is looking at modifying and expanding existsing HLAs, which brings in the idea that perhaps cloning existing HLAs and adding them to Aran might be fun too, but I am nipping that line of inquiry in the bud because it involves much more research than even I find interesting. That is a level of script-guru stuff that I would rather beg the Big Boyz And Big Girlz to help me with if I ever have to. I don't mind going to the dentist, but I sure as heck don't volunteer for root canals without anaesthetic! Hey, so far this is pretty fun. Why don't we give it a twist further into the deep, and instead of using dialog or existing HLAs, build a level-advancing special ability that uses the special ability slots? Who does that? Well, Amber does. Emulating HLA Behaviors With Custom Stuff. Here is a snippet of Darios & Miera's Amber m#amber.baf, starting at line 3144. // Amber's racial special abilities IF XPGT(Myself,220000) GlobalLT("M#AmberLvl","GLOBAL",11) THEN RESPONSE #100 ApplySpellRES("M#INCFR",Myself) IncrementGlobal("M#AmberLvl","GLOBAL",1) END IF XPGT(Myself,440000) GlobalLT("M#AmberLvl","GLOBAL",12) THEN RESPONSE #100 ApplySpellRES("M#INCFR",Myself) IncrementGlobal("M#AmberLvl","GLOBAL",1) END IF XPGT(Myself,660000) GlobalLT("M#AmberLvl","GLOBAL",13) THEN RESPONSE #100 ApplySpellRES("M#INCFR",Myself) IncrementGlobal("M#AmberLvl","GLOBAL",1) END IF XPGT(Myself,880000) GlobalLT("M#AmberLvl","GLOBAL",14) THEN RESPONSE #100 ApplySpellRES("M#INCFR",Myself) IncrementGlobal("M#AmberLvl","GLOBAL",1) END IF XPGT(Myself,1100000) GlobalLT("M#AmberLvl","GLOBAL",15) THEN RESPONSE #100 ApplySpellRES("M#INCFR",Myself) IncrementGlobal("M#AmberLvl","GLOBAL",1) END IF XPGT(Myself,1320000) GlobalLT("M#AmberLvl","GLOBAL",16) THEN RESPONSE #100 AddSpecialAbility("M#CONTAG") ApplySpellRES("M#INCFR",Myself) IncrementGlobal("M#AmberLvl","GLOBAL",1) END So what is happening here? Well, Darios and Miera are taking advantage of the same set of resources that aVENGER(RR) is modifying. They are creating a leveling structure outside of HLA tables to create a custom HLA that improves as we go up in level. in this case, they want Amber to get progressively more fire resistant, and gain some tiefling abilities, but since BG2 didn't create tieflings as a race, they are adding these abilities to her this way: OK, so the script is adding a spell. In the first case, skipping the whole spell-adding-to-ids thing, and just using the spell as a way of adding a permanent effect to the target, and in the second adding it as a special ability, with its own cool icon, and space on the menu. Yeah, right. How? How is that spell called, and what does it actually do? Opening up NI, we find that a custom spell M#INCFR is added by Amber as a Fire Resistance Bonus (30) with a living Actor as target. OK, we have the custom spell we can build a resource that adds an effect, and then use ApplySpellRES(S:RES*, O:Target) to dump it onto our NPC via script. Now for the Special Ability - This one has an icon (SPWI409B.BAM) assigned, and is named "Contageous Eye", has its spell type set as innate, and a secondary type = disabling, and a whole set of effects (disease, playing a character string, etc. - all sorts of stuff). Lots of fun stuff to go poke around with in NI or DLTCEP. So to add in a Special Ability that casts like a spell, we can do all sorts of stuff, and add it as an innate ability by simply scripting that AddSpecialAbility(S:ResRef*). But what about summoning that .cre? The spell itself does that - how? Let's go back and look more closely at aVENGER (RR)'s Alchemy work. What does his RR#ALCHT.SPL do? ok, so it plays a sound, throws some color around, and accesses an EFF file. and what does that RR#ALCH.EFF do? So now we have a way of doing this in an innate slot, as well - we can create a leveling script that allows him to call a .cre into being, so if we wanted to we could make the .cre called dependent on both level and type, swapping all sorts of .cres in an invisible .cre shell game if we wanted to - we could even drive the player nuts, and make not only the choices random but the type of spell random (or dependent on what classes are in the party). We could get really crazy with this, if we wanted.
  20. 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.)
  21. OK, since the flirts are progressing, let's mess with PIDs. Player Initiated Dialogs or PIDs, are conversation options that show up when you "force-click" on the NPC. They are designed as individual conversations/flirts menus/Voice fixers/etc., taking advantage of the engine's mapping of click-to-talk=StartDialogNoSet(). In other words, clicking on an NPC is similar to scripting IF True() // >> clicked on << THEN RESPONSE #100 StartDialogNoSet("Player1") END only running once. This means that if we add options to the *BOTTOM* <<VERY IMPORTANT>> of the stack, with an "always true" condition, clicking on the NPC gives us access to a single (usually huge) dialog state with a ton of conditioned replies. REMEMBER:A PID is an "always true" conditioned dialog state. This is why a PID will pop up if you make a mistake on your NPC's J-file - if the script can't find what it is looking for, it will send back this PID instead. Worse, if you install the PID above other conditioned replies, IT WILL BLOCK THAT CONTENT. The safest way to deal with this is to make sure that the PID is a separate component in your NPC mod, and installs last in the order. You do not need to worry about other mods and modders - the Crossmod Banter Pack deals with B-files, and most modders do not mess around with reordering your mod's dialog states. If they do add to your NPC's J-file, it is likely to be interjections or specially scripted banters, and they have either gotten your permission (in which case they are aware of the issue) or they have simply weighted their materials higher than the bottom anyways, to make sure their stuff plays. The only exception to this canonical BioWare™ characters that have PPG FlirtPack entries. If you are adding content there, you need to be aware that unless you do a good bit of specialized work, your PID addition to (for example) Aerie *will* conflict with those flirts. Remember, folk, on these recommendations - I am talking code not content. And I am not a coding expert, so the suggested mods for research are just ones where I have come across cool ideas while reviewing code. Prepping for Aran, I have found it useful to read .d with only .tra numbers, so I don't get the dialog; I am just looking at the way the modder *structured* how they were doing things. That being said, for the most comprehensive use/abuse of this system, try checking out PID coding in Jastey's Ajantis in BG1NPC, and to a lesser but as detailed extent Domi's SharTeel PID in the same mod. Other notable PIDs to research: for clean and efficient structuring, Kulyok's Xan and Angelo PID coding (in Xan especially, she separates a series of PIDs off and builds "leveling" menus and submenus that tailor the PID and available responses with an efficiency that is not present in any other PID currently publicly released). Berelinde's Gavin PID (she extends options, reactions, and gives the most comprehensive commenting out there so it is easy to follow most of her files) can give you a good handle on how the structure works, and for the simplest and easiest to understand PID, chose any of JCompton's Flirtpack entries. They are not called PIDs, probably because they (I think) predated the idea. But as we talked about in Flirts, each component of the FlirtPack adds a clean, simple PID. To start the ball rolling, we need the dialog state that will run and always be true. This is /* PID for SoA */ IF ~IsGabber(Player1)~ THEN c-aranpid SAY ~[ARAN] (Aran is wandering around, idly tossing rocks at things that strike his fancy.)~ IF ~~ THEN EXIT END This means that when you press the "talk" icon at the bottom of the screen and then click on Aran's character portrait in the game, if no other conditions are true on the J-file, the dialog box will pop up OK, that is better than the stock variation on but not much better. So let's begin building in some responses. No, wait, let's start with an easier one - how about a PID that handles the case where a player has another party member NPC selected as the talker, rather than the PC, and then is about to post a bug report about the PID not working... let's set up a condition that handles the "not <CHARNAME> trying to force-talk". Several modders do this - most of them are single throwaway "Not now, I have a headache" lines, for reasons that will soon become apparent as I wander off into lala land... /* PID for SoA */ IF ~!IsGabber(Player1)~ THEN c-aranpidother SAY ~[ARAN] (Aran is wandering around, idly tossing rocks at things that strike his fancy. Since you are <GABBER>, not <CHARNAME>, he grins and sticks his tongue out at you before turning away.)~ IF ~~ THEN EXIT END This means that if I have Aldaron as my main PC, and I have selected Kivan instead of Aldaron, the PID will pop the following: (For more information on 'tokens' like <CHARNAME> <PRO_HESHE>, <PLAYER1>, and <GABBER> - things that the game can do for your text to match what is happening in any particular game setting on the fly, please see the IESDP). Well, so far so good. But we can do a bit better. I would not try this one at home, folks, because I am not sure it is the best way of doing this, but I will try a thought-experiment here, and massively abuse CHAIN to add a little custom "fun" for players. Here, we take advantage of the DeathVariable (dv) of existing NPCs to make individualized comments. Now, most folks don't do this for a zillion reasons, one of which is it is a huge waste of time for a throwaway line that 99% of folks will not even notice. But hey, what's an hour or two of tilting at windmills between friends... We know IsGabber("dv") will not check condition, and will not check to see if an NPC exists, so it won't crash. So we can mess with IsGabber("dv") and !IsGabber("dv") with relative impunity. Setting the condition IsGabber("b!haldimir") will allow that line to play only if the talker has a dv of b!haldimir. We can ignore folks who name their PC "Aerie" - because the engine handles that already, designating PC = Player1, so this dialog state will not play for them. Folks who create their own Multiplayer game and name their half-Elf Sorceress Aerie, playing from slot 2, well, erm... I guess they are SOL. Let's just hope no one is playing with a half-orc barbarian male and named them Aerie, or there will be a minor head-scratching moment when Aran makes a pass at them /* PID for SoA */ /* PID 1: Options for Other NPCs PC <> Aran, also know as "throughly abusing CHAIN until it screams" */ CHAIN IF ~!IsGabber(Player1)~ THEN c-aranpidother ~[ARAN] Well, now, you might want to talk, but I do have a bit on my mind right now, <GABBER>. Can this wait a bit?~ == ~C-ARANJ~ IF ~IsGabber("ADANGEL")~ THEN ~[ARAN] Besides, we might have a chat over weapons cleanin' later on, Angelo. I never did hear how you got free 'o that' Cyric-buggerin' bastard Sarevok, not from your perspective. I'll bring th' flask, you bring th' stories.~ EXIT So now we have a reply of if Angelo is not in the party, but if he is: We can also can cover multiplayer, but to do so we will need to stretch the usual limits of conditioned replies - here, we need a series of responses that skips out the special responses. this is a partial list for illustration. Please see the final code edits at the end of the next section for a relatively long list of possibles. == ~C-ARANJ~ IF ~!IsGabber("ADANGEL") !IsGabber("Aerie") !IsGabber("Anishai") !IsGabber("Anomen") // big section of other !IsGabber("myNPCdv") calls goes here removed for space !IsGabber("YASRAENA") !IsGabber("YASRAENA") !IsGabber("Yoshimo") !IsGabber("Z_MODDY") !IsGabber("ZAIYA")~ THEN ~[ARAN] No offence, <GABBER>, I just don't rightly have much to say to you right now.~ Here is a quick run at the "not-the-player PID reminder". Please feel free to suggest responses, as I am not completely familiar with all of the NPCs on the list. I can always tweak the response, but go ahead, give it a try! /* PID for SoA */ /* PID 1: Options for Other NPCs PC <> Aran, also know as "throughly abusing CHAIN until it screams" */ CHAIN IF ~!IsGabber(Player1)~ THEN c-aranpidother ~[ARAN] Well, now, you might want to talk, but I do have a bit on my mind right now. Can this wait a bit?~ == ~C-ARANJ~ IF ~IsGabber("ADANGEL")~ THEN ~[ARAN] Besides, we might have a chat over weapons cleanin' later on, Angelo. I never did hear how you got free 'o that' Cyric-buggerin' bastard Sarevok, not from your perspective. I'll bring th' flask, you bring th' stories.~ == ~C-ARANJ~ IF ~IsGabber("Aerie")~ THEN ~[ARAN] Not meanin' to be short, m'darlin lassie, but I'd rather we have a talk later. Are you up for a walk tonight, Aerie? Mayhap just you an' me, under th' stars?~ == ~C-ARANJ~ IF ~IsGabber("Anishai")~ THEN ~[ARAN] Though if you are lookin' for a partner to try a few practice runs, Ainshai, You could always try to get a good feel o' what's in my pocket... by Mask's Mighty Mouth, you could charm th' trousers off o' me, you could.~ == ~C-ARANJ~ IF ~IsGabber("Anomen")~ THEN ~[ARAN] Anomen, if this is about my gear bein' not quite tidy enough, I done rightly heard you the first three times. An' I'll say it again - I don't answer to you, nohow. So bugger on about your business, m'lord, an' leave me to mine.~ == ~C-ARANJ~ IF ~IsGabber("Azure")~ THEN ~[ARAN] Besides, Azure, I know better than to be makin' time wi' you. Sharo's a pretty sensitive wolf, an' might not take kindly to us takin' too long, private -like.~ == ~C-ARANJ~ IF ~IsGabber("B!Gavin")~ THEN ~[ARAN] BLOODY HELLS, OUCH! By Lathander's Sunny Sh... Gavin, what in th' hells do you think I'm usin' to walk with, my hands? Look, I know I don't rightly use th' tops o' my feet for much, but that's no reason for you to use 'em as steppin' stones.~ == ~C-ARANJ~ IF ~IsGabber("b!haldamir")~ THEN ~[ARAN] I'm goin' to kick myself for sayin' that, too, Haldamir, on account o' you don't talk much to anyone, an' here you go tryin' to start a conversation. Talk about bad timin'.~ == ~C-ARANJ~ IF ~IsGabber("BIDDE")~ THEN ~[ARAN] An' you can stop lookin' at me w' those cold stone grey eyes, y' old shortaxe. I like Lathander well enough, an' you don't need to go convertin' me to your ways.~ == ~C-ARANJ~ IF ~IsGabber("Britt")~ THEN ~[ARAN] Though how you got into this adventurin' party, Britt, is a mystery to me, you know. I thought you were just pullin' my leg about joinin' on. I suspect there's been some divine intervention what's made you take up adventurin'.~ == ~C-ARANJ~ IF ~IsGabber("BWTOUCHX")~ THEN ~[ARAN] An' lay off th' advice, Touchstone, m'boyo. You Wild Elves have been around a mite longer than me an' my kinfolk, I know, but here's more to th' world than trees, bugs, an' grass. Well, at least there's also mud, soot, an' grime, based on what you be wearin' right now.~ == ~C-ARANJ~ IF ~IsGabber("CALLISTO")~ THEN ~[ARAN] An' stay ahead o' me, Callisto. Mask's Blade, you are a right fine fighter, but you worry me, you do. You get all out o' control, an' there's nothin' what can stop you. I wouldn't want to have no 'accident' or nothin'.~ == ~C-ARANJ~ IF ~IsGabber("Cernd")~ THEN ~[ARAN] If it that talk you were wantin' to give me on th' ways o' th' birds an' th' bees, Cernd, well - that ship sailed a couple o' years ago. Though I can tell you o' some things I've learned what's great in th' bedroom, but don't quite fit under th' headin' o 'natural'... ~ == ~C-ARANJ~ IF ~IsGabber("CHLOE")~ THEN ~[ARAN] In fact, Chloe, let's just pretend we done talked already, an' call it quits. You scare th' crap out o' me.~ == ~C-ARANJ~ IF ~IsGabber("CMALORA")~ THEN ~[ARAN] Not that I don't appreciate some bubbly happiness an' sunshine in my day, m'darlin' Alora, but I need to concentrate right now. An' that 'happy happy joy joy' spirit o' yours might break it. Plus, last time you got all huggy wi' me, half my purse mysteriously went missin'... don't you play "Happy Hin" wi' me, lassie! I can't rightly afford it right now!~ == ~C-ARANJ~ IF ~IsGabber("CMGMIRIAM")~ THEN ~[ARAN] I don't have much time for no bloodsucker, nohow, Miriam. Especially when I don't rightly know which 'we' is you. I don't know why <CHARNAME> don't just throw a stake through your heart an' be done wi' you.~ == ~C-ARANJ~ IF ~IsGabber("CMNIKITA")~ THEN ~[ARAN] I'll tell you what, though, Nikitalleria. When we next camp, I will trade you fair an' square. You teach me a little sleight o' hand, an' I will teach you a mite on parryin' versus Waterdeep double-swords. An' I won't make no pass at you, neither. This is just friend to friend, see? ~ == ~C-ARANJ~ IF ~IsGabber("CMNINAF")~ THEN ~[ARAN] Besides, m'lady Ninafer, shouldn't you be chattin' up Anomen or somethin'? I think you are a right fine woman, an' all. But the boy's the jealous type, an' an officer an' all. I got enough o' him ridin' my back without you makin' it worse.~ == ~C-ARANJ~ IF ~IsGabber("CORAN")~ THEN ~[ARAN] An' stand where I can see you, Coran. Th' ladies might like your 'charmin' rogue' act, but me, I'm not that impressed.~ == ~C-ARANJ~ IF ~IsGabber("D#Silver")~ THEN ~[ARAN] An' stay an arm's length away, SilverStar. Unless you want a nice mutton, lettuce, an' tomato sandwich, or somethin'. Then where would your Mary be, eh? Have fun stormin' that particular castle.~ == ~C-ARANJ~ IF ~IsGabber("D0Alassa")~ THEN ~[ARAN] You can charm the breath out o' me an th' trousers off o' me, Alassa, with just the bat o' an eyelash. An' worse, you know it. But keep those gorgeous eyes an' pert lips out o' my business. You would skin me an' serve me raw if it got you an extra few coin, laughin' all the way to Calimport.~ == ~C-ARANJ~ IF ~IsGabber("DL#BWN")~ THEN ~[ARAN] By Tempus' Shield, Branwen, you are a sight for sore eyes. But I don't have no time to talk about following Tempus right now. Come talk to me when we are campin', or some such time.~ == ~C-ARANJ~ IF ~IsGabber("DYNAHEIR")~ THEN ~[ARAN] M'lady Wychlaran, I don't mean no disrespect. An' please don't turn me into no toad, nor squirrel, nor naught like that, Dynaheir. I just don't have no words t' speak right now.~ == ~C-ARANJ~ IF ~IsGabber("E3Fade")~ THEN ~[ARAN] I'm no prude, Fade, an' I respect th' Guild rightly enough. An accomplished Knife's a right good part o' a party, an' you keep th' Shadow Thieves appeased. But I don't trust no tiefling, no way, no how. So unless it's business, keep to yourself, girl.~ == ~C-ARANJ~ IF ~IsGabber("Edwin")~ THEN ~[ARAN] Unless it be more stories o' your conquests, o' course, Edwin. You got more o' those, well, step right on over, an' we'll have a mite o' a chat. I still can't rightly believe a Chondathan girl can be trained to do what you described last time. Didn't know they bent that way.~ == ~C-ARANJ~ IF ~IsGabber("FHLAND")~ THEN ~[ARAN] Come by an' chat later, though, Andrei. We can spar a bit, an' swap stories. Or, I can tell stories an' you can listen. Did I ever tell you about th' time Kirran an' me an' BrightFire got into a mite o' a spat wi' some boys servin' th' wi' Black Company? Now, that were a fight for a bard to describe...~ == ~C-ARANJ~ IF ~IsGabber("FHLSEB")~ THEN ~[ARAN] Though you could do me a right good favor, Sebastian, an' lay off Andrei. The lad's a decent enough sort, an' he needs some breathin' room you don't give him. I'll watch his back, don't you worry.~ == ~C-ARANJ~ IF ~IsGabber("FINIREN")~ THEN ~[ARAN] I don't have nothin' to say to you nohow, Irenicus. I spoke my piece back when we kicked your sorry arse. I'd tell you to get lost in any o' th' hells, but you've already done that.~ == ~C-ARANJ~ IF ~IsGabber("FWGhareth")~ THEN ~[ARAN] But come have a drink wi' me when you can, Ghareth. I want to hear more about th' Cowled an' their ways. Forewarned is forearmed, an' all that time enforcin' for 'em has got some good stories, I bet. I'll trade you, an' tell you about th' time I was servin wi' Moonshea an' we had a bit o' warlock trouble. Talk abut uncontrolled magic...~ == ~C-ARANJ~ IF ~IsGabber("G#CASS")~ THEN ~[ARAN] I know that look, Cassius love, an' you are about to charm me wi' those stories o' heroism an' such. Th' trouble wi' all you Skalds an' your tales is that when th' hero slays th' monster an' looks about, there's not much left o' th' rest o' th' party. Write one o' them tale where the kitchen maid an' her four friends beat th' crap out o' a dragon an' all live to tell the tale, an' I'll listen!~ == ~C-ARANJ~ IF ~IsGabber("GOZALOTH")~ THEN ~[ARAN] Better yet, keep yer distance, you floatin' eyeball. I can't rightly make out your accent anyways. An' people think *my* accent be hard to follow...~ == ~C-ARANJ~ IF ~IsGabber("HaerDalis")~ THEN ~[ARAN] An' lay of th' 'sparrowhawk', 'dovewing', an' birdy-birdy language for a mite, there, HaerDalis, eh? If you do, I'll let you look at a scrap o' parchment I found in a library outside o' Beregost, what's written in th' tongue o' Gold Dwarves...~ == ~C-ARANJ~ IF ~IsGabber("Horace")~ THEN ~[ARAN] Now, hold on to your jawbone, an' stop scratchin' th' inside o' that left eyesocket, Horace. I got enough trouble stayin' un-spooked just lookin' at you, let alone talkin' to an animated skeleton!~ == ~C-ARANJ~ IF ~IsGabber("Hubelpot")~ THEN ~[ARAN] We'll be talkin' over dinner prep anyways, Hubelpot. Don't worry none - I'll try not to get ripped limb from limb afore then, and with a bit o' luck, you won't be ground up bits o' parts neither. We can talk about real curry makin'!~ == ~C-ARANJ~ IF ~IsGabber("Imoen2")~ THEN ~[ARAN] I'm not pushin' you away, Imoen, really I'm not. I just know you have a mite on your mind, too, an' I'm not happy company right now. I'll walk by you for a bit, though, if you want.~ == ~C-ARANJ~ IF ~IsGabber("IYLOS")~ THEN ~[ARAN] You can't rightly expect much in th' way o' small talk from me, nohow, Iylos. You got a mission, an' I respect that. But fish around for information about <CHARNAME> from someone else. I don't serve more than one contract at a time, an' <CHARNAME> has that right now, an' probably 'til I'm arguin' wi' Kelemvor myself on where the prettiest girl souls be hidin' out.~ == ~C-ARANJ~ IF ~IsGabber("J#Kelsey")~ THEN ~[ARAN] Not that I'm puttin' you off for no reason, Kelsey. Come an' talk another time. I spent plenty o' time punchin' fists, Coster tradin' up an' down th' Sword Coast as a lad. We should talk shop some time soon, eh? I never did run a store, though I have done my share o' accountin' a' contract drafts. Reminds me o' th' good old days, when you raised an alarm for a stray urchin, a pickpocket, or a kobold or two, instead o' all the beasts th' nine hells can throw at us.~ == ~C-ARANJ~ IF ~IsGabber("Jaheira")~ THEN ~[ARAN] Yes, Jaheira, I packed up my bedroll right tightly. No, Jaheira, I did not eat too much o' th' hardtack, an' cramp my bowels. Yes, Jaheira, I read that list o' spices you wanted me to try to get into th' dinner roster. Melliki's Mysterious Mouth, I'm no bloody half-elf out o' your loins, I'm just a friend, eh? Go easy on th' motherin', for th' love of our friendship!~ == ~C-ARANJ~ IF ~IsGabber("Jan")~ THEN ~[ARAN] Tell you what, Jan. If th' story is about turnips, relatives, or craftin' new inventions, I can tell you I done heard it. In fact, if it was turnips, I done heard it twice. But we will have time to take on meal prep, an' then you can tell me about th' time the cute female turnip golem who was really your third cousin on your uncle's side managed to get you an idea for an invention what turned out to be th' best thing since th' gods created womenfolk.~ == ~C-ARANJ~ IF ~IsGabber("JCBruce")~ THEN ~[ARAN] Tymora's Tantalizing Tits, you got a huge bundle o' nerve talkin' to me, Bruce m'boyo. You owe *me* two platinum orbs an' the names o' three reliable courtesans, an' you haven't paid up yet. Bugger off until you do, you lazy bastard!~ == ~C-ARANJ~ IF ~IsGabber("K#Auren")~ THEN ~[ARAN] Tell you what, Auren - talk to me later, an' we'll have a go at that attack an' counter routine we had a few days ago. You are winnin' three falls to two, an' I would rightly enjoy balancin' out th' game, so to speak. ~ == ~C-ARANJ~ IF ~IsGabber("K#Bana")~ THEN ~[ARAN] You should know better than to sneak up on me like that, Banana. I got me a ton o' recipes wi' your name on 'em... hey, you got a cousin named Rosanna Bananadana?~ == ~C-ARANJ~ IF ~IsGabber("K#Sarah")~ THEN ~[ARAN] Sarah, lass-o-me-heart, I don't mean to be short wi' you. I'll make it up to you later. I can fix some decent flatbread an' honey, just like they serve back near Beregost, an' mayhap I can bribe you for a story or two. You keep too quiet, lass, an' I do appreciate your friendship.~ == ~C-ARANJ~ IF ~IsGabber("K#SHEENA")~ THEN ~[ARAN] I can promise you right proper, Sheena, I am not puttin' you off. I've sense enough not to cause no offense to a comerade what can be beautiful woman one moment, an' firedrake next. It be hard enough to stay on th' right side o' a regular woman, wi' out no draconic heritage.~ == ~C-ARANJ~ IF ~IsGabber("KACHIKO")~ THEN ~[ARAN] Hey, none o' that sharp eyed glare, Kachiko. I'll gladly talk wi' you another time. By your Eight Million Kara-Turan Gods, I didn't mean to offend you none. Not all o' us have your Dragon Tongue's focus, you know. I needs must concentrate, or I'll be not attendin' to my duties well enough. I'm not a Sword Saint or anythin'.~ == ~C-ARANJ~ IF ~IsGabber("Kari")~ THEN ~[ARAN] Easy, there, lass - don't you be gatherin' your tail in a twist, an' all. Literally, I mean. You are blushin' redder than I done seen in a tenday! Kari, I'm just busy now, that's all. Come by when we settle in for th' night, an' I'll help you with that weapon sharpenin' you were askin' about.~ == ~C-ARANJ~ IF ~IsGabber("Keldorn")~ THEN ~[ARAN] I don't mean no disrespect, Keldorn. If you have somethin' you want me to do, just say the word. Otherwise, I need to attend to my duties right proper.~ == ~C-ARANJ~ IF ~IsGabber("Keto")~ THEN ~[ARAN] How about you come by tonight, though, Keto, an' we trade some stories? I'd be lyin' if I didn't think I'd make you nice company. I have some nice Rashemi Firewine set aside, not even watered down... ~ == ~C-ARANJ~ IF ~IsGabber("KIARA")~ THEN ~[ARAN] There might be time to talk later, though, Kiara. I want to hear more about that monk trainin'. I'll help wi' some breath-holdin' exercise, if you want, too. Though there be not much more between us, I expect. I know you might be a decent enough friend, but somehow it always ends up bein' more about you, an' less about anyone else.~ == ~C-ARANJ~ IF ~IsGabber("KINDREK")~ THEN ~[ARAN] An' don't you be startin' in on me about th' corruption magic causes, neither, Kindrek. I'll take whatever weapon th' gods hand me, if it gets the job done proper. An' one more word about my head decoratin' a pike bein' pretty, an' we'll just have to see if that fancy weapon o' yours will be stronger than my skills, boyo.~ == ~C-ARANJ~ IF ~IsGabber("Kiyone")~ THEN ~[ARAN] Though between you an' me, I'd rather keep talkin' to you an' make some sort o' accommodation, Kiyone. I'd trust you to watch my back right proper.~ == ~C-ARANJ~ IF ~IsGabber("Korgan")~ THEN ~[ARAN] If this is about th' sharpenin' bar, Korgan, here it is. I don't need it no more nohow. An' I'm not so happy wi' havin' to rent it for two iron crescents an' a Trademeet trade bar. Xvim's Spit, that's bloody highway robbery.~ == ~C-ARANJ~ IF ~IsGabber("Kova")~ THEN ~[ARAN] On second thought, stay away, Kova. I'm not particular about my company, but in your case, I'm up for makin' exceptions. I'm not sayin' guilty, I'm not sayin' innocent - I'm just sayin' naught.~ == ~C-ARANJ~ IF ~IsGabber("LRIRENIC")~ THEN ~[ARAN] An' keep your Master O' th' Universe crap out o' my face, wonderboy. <CHARNAME> killed you once, remember? In my opinion, it were done too slowly, an' wi' not enough o' th' pain an' sufferin' on your part.~ == ~C-ARANJ~ IF ~IsGabber("M#AMBER")~ THEN ~[ARAN] I'm not likely to have nothin' to say anyways, Amber. It seems like you are backin' <CHARNAME>, but while you ca take the lady out o' th hells, now, can you really take th' hells out o' th' lady? I don't rightly trust no tiefling, no matter how pretty.~ == ~C-ARANJ~ IF ~IsGabber("Mazzy")~ THEN ~[ARAN] I'll be happy to help on th' weapons cleanin' later, though, Mazzy. I want to see how you sharpen those arrows so fierce.~ == ~C-ARANJ~ IF ~IsGabber("Minsc")~ THEN ~[ARAN] Oh, I'm right sorry, Minsc - didn't mean to be so short. Though when I'm standin' close to you, short is the word what springs to mind right quick, it does. You are blockin' most o' my view, big boy. You mind steppin' over a bit, so's I can see where we are headed?~ == ~C-ARANJ~ IF ~IsGabber("MTS#Shy")~ THEN ~[ARAN] Chende, I'm, err... well, I'm... not that I have anythin' against half-orcs, or nothin, on account o' I have worked wi' my share o' right proper comrades what's got my back as good as I watch theirs, regardless o' orcish blood. It's just you keep adjustin' your top, an' it bothers me a bit. There's a good healthy woman, an' then there's a need to get some clerical intervention. That's just not right, eh?~ == ~C-ARANJ~ IF ~IsGabber("MWAriena")~ THEN ~[ARAN] Ariena, don't be lookin' like that at me I'm not shunnin' you, I just don't rightly have th' time right now! We'll try some sparrin' later on. Though this time, you done got to remember that we be sparrin', not fightin' for real. Last time, you bloody well busted a few o' my ribs.~ == ~C-ARANJ~ IF ~IsGabber("MWKido")~ THEN ~[ARAN] An' no, I'm not interested in more discussions about Cyric an' his Dark Light, Kido. You spin a fine tale, but I'm stickin' wi' <CHARNAME> for <PRO_HISHER> sake, not on account o' any love for murder, death destruction, chaos, an' all that crap.~ == ~C-ARANJ~ IF ~IsGabber("Nalia")~ THEN ~[ARAN] An' I am not one o' th' Great Unwashed Little People, neither, Nalia. I 'll have you know I took a bath just last week. Well, parts o' me, anyways. Wanna see?~ == ~C-ARANJ~ IF ~IsGabber("NATH")~ THEN ~[ARAN] Come by later, though, 'Fletcher. We never did finish talkin' about that whole Trade Way skirmish wi' the Chill hittin' your squad o' Fist. I heard from Valis your party done got ambushed right proper, but fought all th' way out wi' only two casualties anyways. Now that is a story worth hearin' more'n once, it is. I'll provide th' spirits, you provide th' stories. ~ == ~C-ARANJ~ IF ~IsGabber("Ninde")~ THEN ~[ARAN] I mean no disrespect, o'course, m'Lady Ninde. I wouldn't want to be on th' wrong side o' one o' your tongue lashin's. Though if there's a right side, well, I'm your man for to call on. I'll just go get that gear straightened out a bit, eh?~ == ~C-ARANJ~ IF ~IsGabber("O#TIAX")~ THEN ~[ARAN] Yeah, yeah, I done heard you th' first twenty times. 'Tiax Rules All'. 'When Tiax Rules, Aran Will Be Th' Boot-Scraper An' Will Have To Talk To Me'. Sune's Rambunctious Rump, someone get this insane shorty th' Nine Hells away from me.~ == ~C-ARANJ~ IF ~IsGabber("O#XAN")~ THEN ~[ARAN] No offence, Xan, but I want to keep my spirits up, eh? You are one powerful Tel Quessir, but you sure can bring on th' doom an' gloom.~ == ~C-ARANJ~ IF ~IsGabber("P#DEHER")~ THEN ~[ARAN] Beggin' your pardon, m'lady Deheriana. I don't mean no offence to you nor your Ranger.~ == ~C-ARANJ~ IF ~IsGabber("P#KIVAN")~ THEN ~[ARAN] I'm downright flattered you want to talk to me, I am, Kivan - I don't mean no disrespect. There's just not rightly no time now for talkin'.~ == ~C-ARANJ~ IF ~IsGabber("R#ALLIS")~ THEN ~[ARAN] An' don't you be pesterin' me about all that cookin' wi' meat again, Allison. I know you be fond o' th' animals, but there's a right good purpose for them there bunny rabbits. Make good stew, they do!~ == ~C-ARANJ~ IF ~IsGabber("R#Kitanya")~ THEN ~[ARAN] Beggin' your pardon, o' course, vanimaberylellie en amin... no offense meant. I'd Like it fine if we could talk later, Kitanya. I'd like to learn some o' th' Tel Quessirim fightin' tactics, if you've a mind to share.~ == ~C-ARANJ~ IF ~IsGabber("Rylorn")~ THEN ~[ARAN] In fact, forget it. Shut your foul mouth, you Cyric-lovin' filth. If <CHARNAME> didn't keep you on a tight leash like soem pet, I'd be servin' your heart up tartar-style, wi' a nice cup o' th' blood o' innocents you like to murder. Watch your back, bastard, on account o' I'm just waitin' for th' opportunity to plant somethin' between your third an' fourth ribs.~ == ~C-ARANJ~ IF ~IsGabber("SAERILETH")~ THEN ~[ARAN] Hold on... I can do this right proper, I can. I've been readin'. *ahem*. Forsooth, it pains me greatly to cause you distress, my Lady Saerileth. But thy words best not the needs of the moment, and I must away anon. Perchance thy gracious lips would caress mine ears at the first pale glimmer of starlight; for in thine countenance I do see the beauty of life, the vivaciousness of youth, and the satin power of Tyr enobl'd and made feminine in the grace of your form. This poor sinner doth confess the lusts of both body and mind for such sweet discourse; a breath, a moment of your beauty is like the drop of divine wisdom from the countenance of Ao. *ahem*. Sune's Salacious Succulence, talkin' that way'll kill a man dead, it will. ~ == ~C-ARANJ~ IF ~IsGabber("SDNPC")~ THEN ~[ARAN] Come by an' talk later, though, Yikari. We can get a good stiff drink, an' loosen that still tongue o' yours. I want to hear more about th' far off lands, an' especially those Kara-Turan womenfolk!~ == ~C-ARANJ~ IF ~IsGabber("SIME")~ THEN ~[ARAN] Not meanin' to offend you, Sime, nor your father. I'd be right happy if you'd come talk later on. Perhaps I can buy you a drink or somethin', next opportunity. No pass, honest, just interested in swappin' some stories, playin' some dice, passin' the time.~ == ~C-ARANJ~ IF ~IsGabber("SK#NEHT")~ THEN ~[ARAN] I'm up for a mite o' a chat later, though, Neh'Taniel. You talk a deep set o' subjects, you do. I need most o' my mind on th' discussion if I want to keep up, eh?~ == ~C-ARANJ~ IF ~IsGabber("Skooter")~ THEN ~[ARAN] Oh, I'm right sorry, I am. Skooter, I did promise a throw or two o' that stick, didn't I. Right then, here you go... one good toss down that way. Just don't get lost, eh, m'boyo? There's critters around here what could eat *me* for a light snack, let alone you.~ == ~C-ARANJ~ IF ~IsGabber("SOLAUFEIN")~ THEN ~[ARAN] I'm not that interested in talkin' to no drow, nohow, Solaufein. You may talk a good game, but me, I got both my eyes on you. Figuratively speakin' that is. It'd be a mite messy if I done popped 'em out an' stuck em' to you.~ == ~C-ARANJ~ IF ~IsGabber("SUBRU")~ THEN ~[ARAN] Bugger all, Bruce, I told you I was tapped out clean. No coin, no trade bars, nothin'. Hells, man, here - take this flask. An' don't be drinkin' it staright in one shot, or it'll put you right over on your ares. Cut it wi' some water. Now leave me alone 'til payday!~ == ~C-ARANJ~ IF ~IsGabber("SUHESSA")~ THEN ~[ARAN] An' give me back my coinpurse, there, stickyfingers. Umberlee's Undulating Urges, Hessa, you should be lookin' for other marks, not messin' wi' my flat purse. <CHARNAME>'s holdin' all my share!~ == ~C-ARANJ~ IF ~IsGabber("t#dace")~ THEN ~[ARAN] An' don't you be goin' all 'Ducky This' an' 'Ducky That' wi', me, Linton. You're a right fine woman, but I figure you're a mite too streetwise to come roll in th' hay wi' th' like o' me.~ == ~C-ARANJ~ IF ~IsGabber("TASHIA")~ THEN ~[ARAN] Now, you want me to carry that kitty cat o' yours about, I'm your man. An' I wouldn't mind a few riddles, nether, Tashia. How about when we camp, I wander on by an' we have a nice conversation, private-like. I'll brew some decent tea...~ == ~C-ARANJ~ IF ~IsGabber("TSUJATH")~ THEN ~[ARAN] Outsider an' necromancer... there's naught about you that sits right wi' me, Tsujatha. I' m tolerant for <CHARNAME>'s sake, an' that's about it. So don't look for small talk an' comeradeship here.~ == ~C-ARANJ~ IF ~IsGabber("Valen")~ THEN ~[ARAN] An' stop spookin' me like that, Valen. I stay on one side o' <CHARNAME>, you stay on th' other, an' we will be fine. But I don't rightly think we should be havin' no private conversation. I'm likely to end up bein' an appetizer, or a light pre-dinner snack.~ == ~C-ARANJ~ IF ~IsGabber("Valygar")~ THEN ~[ARAN] I'm right suprised you want to talk, anyways, Valygar. You haven't put two words together wi' me in nigh on a tenday.~ == ~C-ARANJ~ IF ~IsGabber("Viconia")~ THEN ~[ARAN] On second thought, Viconia, don't even bother. I've got naught to say to a Shar-kissed spawn o' th' Nether Planes. Bugger off an' go screw an ettin, or somethin'.~ == ~C-ARANJ~ IF ~IsGabber("WILLYB")~ THEN ~[ARAN] besides, if it s that coin I owe you, Bruce m'boy, I'm tapped out until <CHARNAME> loosens those purse strings. So don't go all 'beat your arse' this an' 'youse gonna get yours' on me, eh? Just get <CHARNAME> to drop a few coin my way, an' I'll get square wi' you.~ == ~C-ARANJ~ IF ~IsGabber("WLBRAN")~ THEN ~[ARAN] I don't want to drive you away, none, Branwen you are a fine figure o' a woman. All that 'Tempus' Shield' talk, though, it worries me a mite. I'd offer you some companionship, but I'd rather not be askin' you to heal th' parts o' my body you might cut off.~ == ~C-ARANJ~ IF ~IsGabber("WxJon")~ THEN ~[ARAN] Aye, I did check up on th' idea, Jonathan, an' you'd be a fine addition to any one o' three different Guilds. I can write up th' letters for you, if you want, but the again, what be th' hurry? Th' Guilds take a tithe, an' you are doin' right fine as an independent, watchin' <CHARNAME>'s back.~ == ~C-ARANJ~ IF ~IsGabber("xulaye")~ THEN ~[ARAN] An' by Lolth's Lengthy Legs, keep away from me, you heartless drow bitch. I'm not one o' your filthy spider-spawn males to order about, Xulaye, cover or no cover. You want somethin', you put it through <CHARNAME>, done correct on th' chain o' command.~ == ~C-ARANJ~ IF ~IsGabber("YASRAENA")~ THEN ~[ARAN] I don't have naught to say to you nohow, Yasraena. You seem to be backin' <CHARNAME>, an' I see why. But the only good drow is... well, I'm not so sure I should finish that statement. Just stay where I can watch you, an' don't try to talk me up, an' I won't cause you no trouble. ~ == ~C-ARANJ~ IF ~IsGabber("Yoshimo")~ THEN ~[ARAN] Tell you what, Yoshimo - we'll talk next time we camp. I want to try that card game again. I don't rightly know how you won all five hands, an' I want a chance to make some o' those wages back. ~ == ~C-ARANJ~ IF ~IsGabber("ZAIYA")~ THEN ~[ARAN] Now, don't you be gettin' mad, there, Zaiya. I'm right interested in what you have to say. An' you are a right fine lookin' lassie, too, though sometimes it be dangerous to be around one o' those 'surges' o' yours...~ == ~C-ARANJ~ IF ~IsGabber("Z_MODDY")~ THEN ~[ARAN] Now then, miss foxy lass, I don't have no problems wi' talkin' to you, but now is not rightly th' time. Come by at dinner, Moddy, an' we'll share a bit o' talk, eh? Or better yet, a nice brace 'o rabbits.~ == ~C-ARANJ~ IF ~!IsGabber("ADANGEL") !IsGabber("K#SHEENA") !IsGabber("Aerie") !IsGabber("Anishai") !IsGabber("Anomen") !IsGabber("Azure") !IsGabber("B!Gavin") !IsGabber("b!haldamir") !IsGabber("BIDDE") !IsGabber("Britt") !IsGabber("BWTOUCHX") !IsGabber("CALLISTO") !IsGabber("Cernd") !IsGabber("CHLOE") !IsGabber("CMALORA") !IsGabber("CMGMIRIAM") !IsGabber("CMNIKITA") !IsGabber("CMNINAF") !IsGabber("CORAN") !IsGabber("D#Silver") !IsGabber("D0Alassa") !IsGabber("t#dace") !IsGabber("DL#BWN") !IsGabber("DYNAHEIR") !IsGabber("E3Fade") !IsGabber("Edwin") !IsGabber("FHLAND") !IsGabber("FHLSEB") !IsGabber("FINIREN") !IsGabber("FWGhareth") !IsGabber("G#CASS") !IsGabber("GOZALOTH") !IsGabber("HaerDalis") !IsGabber("Horace") !IsGabber("Hubelpot") !IsGabber("Imoen2") !IsGabber("IYLOS") !IsGabber("J#Kelsey") !IsGabber("Jaheira") !IsGabber("Jan") !IsGabber("JCBruce") !IsGabber("Kari") !IsGabber("K#Auren") !IsGabber("K#Bana") !IsGabber("K#Sarah") !IsGabber("KACHIKO") !IsGabber("Keldorn") !IsGabber("Keto") !IsGabber("KIARA") !IsGabber("KINDREK") !IsGabber("Kiyone") !IsGabber("Korgan") !IsGabber("Kova") !IsGabber("LRIRENIC") !IsGabber("M#AMBER") !IsGabber("Mazzy") !IsGabber("Minsc") !IsGabber("MTS#Shy") !IsGabber("MWAriena") !IsGabber("MWKido") !IsGabber("Nalia") !IsGabber("NATH") !IsGabber("Ninde") !IsGabber("O#TIAX") !IsGabber("O#XAN") !IsGabber("P#DEHER") !IsGabber("P#KIVAN") !IsGabber("R#ALLIS") !IsGabber("R#Kitanya") !IsGabber("Rylorn") !IsGabber("SAERILETH") !IsGabber("SDNPC") !IsGabber("SIME") !IsGabber("SK#NEHT") !IsGabber("Skooter") !IsGabber("SOLAUFEIN") !IsGabber("SUBRU") !IsGabber("SUHESSA") !IsGabber("TASHIA") !IsGabber("TSUJATH") !IsGabber("Valen") !IsGabber("Valygar") !IsGabber("Viconia") !IsGabber("WxJon") !IsGabber("WILLYB") !IsGabber("WLBRAN") !IsGabber("Xulaye") !IsGabber("YASRAENA") !IsGabber("Yoshimo") !IsGabber("Z_MODDY") !IsGabber("ZAIYA")~ THEN ~[ARAN] No offence, <GABBER>, I just don't rightly have much to say to you right now.~ EXIT Please feel free to add suggestions! In Progress Notes: /* Missing Stivan, SBS (Sandra), Therrin, Vanim, Wikaede, Mulgore & Xavia (BGT Indira, some of the Tutu NPC mods that might be CLUA'd into a BGT game) */ /* LEFT OFF ON PURPOSE: Taim, updated by MTS. No dialog, no assignments - silent NPC. */ /* Siefer's Horace is only available through PM/private distribution, and needs minor editing of .d for modern installs. May need permissions to update it and put it back in operation. */ /* Bananna included, but just for fun! [ARAN] Why are bananas never lonely? [bANANNA] Because they hang around in bunches. [ARAN] I done figured it was on account o' they make a right fine snack, so they don't have much time this run on th' Great Wheel. [bANANNA] You are a sick, sick man. [ARAN] I heard down on th' south continent, they 're not goin' to grow bananas no longer. [bANANNA] Really? Why not? That sounds like Banannacide. [ARAN] I heard they was long enough already. [bANANNA] I knew this was an adult mod, but that is a little gauche, don't you think? [ARAN] Hey, Bananna, what's we supposed to do if we see you go all blue? [bANANNA] Try to cheer me up, of course. [ARAN] Hey, Bananna, what would you call two banana skins? [bANANNA] Well, besides murder and vivisaction, I don't know. [ARAN] A pair o' slippers, o' course... [bANANA] Let me guess... you teach 10 year olds, don't you? [ARAN] Hey, Bananna, why is a banana peel on the sidewalk like music? [bANANA] You really have a thing for clobbering fruit, don't you? [ARAN] On account o' if you don't C sharp, you'll B flat. [bANANA] By Chiquita, Dole, and all the other Great Bananna Gods, get this man away from me! [bANANA] Hey, Aran... eat me. [ARAN] Well now, if that be an invitation... [bANANA] Hey, stop grinning like that! This isn't the Square Mod. [ARAN] Hey, Bannana, Knock knock! [bANANA] Who's there? [ARAN] Banana. [bANANA] Yes? [ARAN] No, that's who's there. [bANANA] That's not there, or No's not there? [ARAN] Bloody hells, that's what you get when you go tryin' to talk to a bananna. [ARAN] Hey, Bannana, let's try this again. Knock knock! [bANANA] Who's there? [ARAN] Banana. [bANANA] Banana who? [ARAN] Knock Knock. [bANANA] Who's there? [ARAN] Banana. [bANANA] Banana who? [ARAN] Knock Knock. [bANANA] Who's there? [ARAN] Orange. [bANANA] Hey, leave my sister out of this. [ARAN] Bloody hells, another blighted joke smashed to a pulp. [bANANA] No need to get violent there, big boy. */ /* Skooter included, but not on NPC tutorial index for pdialog.2da. Note to self - Check with Ace - I can see a whole ton of fun dialog now. [ARAN] Chauntea take that dog, he done tripped me three times today already. Right, then, laddie, waht do you want? [sKOOTER] THUD. *pant* *pant* *pant* *pant* *pant* [ARAN] OK. Now I see. Droppin' th' stick on my foot done made it clear. You are a bloody strong dog, eh? I'll toss it, then go get my foot bandaged. [sKOOTER] *wag* *wag* [ARAN] And a good wind up... go get it! [sKOOTER] (Zzzzing...) [ARAN] Hey, where did my jerky go? [sKOOTER] wmbmbmwmbb [ARAN] SKOOTER! Hey, leave that be, m'boyo - get your doggie teeth outta my sna... bloody hells, too late. [sKOOTER] *sniff* *sniff* [ARAN] Oi, there, laddie - get that long nose back where it do belong. You get any more treats, I'll be carryin you while you moan an' complain from overindulgin' ! */ NPC tutorial index for pdialog.2da Dace Linton [T#DACE T#DACEP T#DACEJ T#DACED T#DAC25P T#DAC25J T#DAC25D T#DAC25 BT#DACE BT#DAC25] Bananna (short joke joinable) [K#Bana K#BanaP K#BanaJ K#BanaD K#Ban25P K#Ban25J K#Ban25D K#Bana25 K#BanaB K#Ban25B] Horace (Siefer) [Horace HoraceP HoraceJ HoraceD Horc25P Horc25J Horc25D Horc25 BHorace BHorc25] Sheena (Red Night)[K#SHEENA SHEENAP SHEENAJ SHEENAD SHEENA25P SHEENA25J SHEENA25D SHEENA25 BSHEENA BSHEENA25] Taim (Major Tom Sawyer) [ silent, no dialog assignments made at all] Ninde (Diva) [NINDE LK#NINDP LK#NINDJ LK#NIND LK#NI25P LK#NI25J LK#NI25D LK#NI25 BLK#NIND BLK#NI25]
  22. ToB has some (small) flaws - not many spots a war-weary party has for real interjection, and where there is, it can be a tough road for a player who has played the whole Saga. At this point in the series, I feel like just getting the whole playthrough done, and I suspect without Wheels of Prophecy having been written I would have never played ToB to completion again. But, Aran is around for the long haul, and others might feel differently, so a first pass at these. For the most part, the tougher the going gets, the more silent he will be. After all, this is not likely to end positively from his point of view, no matter what - by now, he is post-post-post traumatic stress syndrome, never quite believing he is anything but an ordinary soldier, and his best friend/gf/leader gets more incomprehensibly powerful each day. So finding spots for him to naturally have something to say other than "Kill that? Aye. I can do that." Notes for coders: the PID in SoA and ToB content holds a toggled "on-off" switch, for folks who find his chatter a painful experience. I have slimmed down the interjections for ToB into 6 points for the "silent" crowd. A second consideration is the use of conditions changing the interjection if the PC's alignment ios MASK_EVIL or !MASK_EVIL, and there are a few examples of interjecting into several states but using the samestatename, so that only one of the interjections fires per game, regardless of which section of the dialog tree is taken (a ploy to allow Aran multiple shots at being in-partyto interject, but not have him comment on the same thing over and over). /* ToB Interjections and commentary */ I_C_T ~HGNYA01~ 2 c-arannyalee /* Why, the Nyalee is I! The Witch of the Glade, I is called, and for good reason, it is! But questions...you have so many questions, know I! */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] A witch? Will she turn me into a newt?~ END I_C_T ~HGNYA01~ 3 c-arannyalee /* Nyalee survives very well, she does, and Nyalee is I! The Witch of the Glade, they calls me, hee hee! But so many questions you have! */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Just one. Why in th' nine hells are all you witches messed up in th' head?~ END I_C_T ~HGNYA01~ 4 c-arannyalee /* You should know, spawn-child, you should know! Nyalee served the dead master, once, and Nyalee is I! Hee hee! But so many questions you have, questions questions! */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Nyalee is I - nope, accordin' to <charname>, here, that should be 'I am Nyalee'. See, I done listened to all that teachin' you keep pushin' on me.~ END I_C_T ~HGNYA01~ 5 c-arannyalee /* Tricks, yes! Nyalee knows many tricks! Witch of the Glade, they calls me, for many good reasons. Hee hee! But so many questions you have! */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Somehow, I doubt there be any good in those reasons, eh, on account o' th' whole servin' evil thing.~ END I_C_T2 ~SARBOY01~ 1 c-aransboy /* Gromnir has a big army. When I grow up I want a big army. */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Don't we all, boyo, don't we all. It would come in right handy for us right now.~ END /* plays even with silence set */ I_C_T ~SARKIS01~ 7 c-arankisconf /* My utilization of complex locution is more a reflection of my own superincumbent mental acuity than an aspersion on your circumscribed lexicon. */ == ~c-arn25j~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Chauntea's Basket - what in th' nine hells did he just say?~ END /* plays even with silence set */ I_C_T ~SARWAI01~ 1 c-aranwgg /* I wish someone would stand up to them... but everyone's afraid of Gromnir. *sniff* I guess I'll just have to put up with it. */ == ~c-arn25j~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) !Alignment(Player1,MASK_EVIL)~ THEN ~[ARAN] Torm's Breath! There be limits to havin' fun wi' th' help. Mayhap we see how they like a little o turnabout, eh?~ END /* plays even with silence set */ I_C_T ~SARWAI01~ 1 c-aranwgg /* I wish someone would stand up to them... but everyone's afraid of Gromnir. *sniff* I guess I'll just have to put up with it. */ == ~c-arn25j~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Alignment(Player1,MASK_EVIL)~ THEN ~[ARAN] Torm's Breath! I know, I know, might makes right. I'll shut my mouth an' go stand in th' corner like a good little sellsword.~ END I_C_T ~YAGCON~ 12 c-aranyagcon12 /* No need for passbacks - ~I wanted to become part of his unstoppable war machine, to revel in the slaughter, to have my blade drip with the blood of all those Yaga Shura crushed beneath his mighty boot! ~ */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Bloody hells, girl, you be in serious need o' a drink. You seem to have a mite too much energy. Make that several drinks, eh?~ END I_C_T ~YAGCON~ 18 c-aranyagcon18 /* No need for passbacks - ~I have heard mention of a name from Yaga Shura's past - Nyalee, an old crone who lives in the marshes of the Mir Forests. She may know Yaga Shura's secrets.~ */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) !Alignment(Player1,MASK_EVIL)~ THEN ~[ARAN] Now if I had a trade bar for every evil creature what confided in an old crone in th' wilds, I'd be a rich man. Good thing you don't rightly need one, <charname>.~ END I_C_T ~YAGCON~ 18 c-aranyagcon18 /* No need for passbacks - ~I have heard mention of a name from Yaga Shura's past - Nyalee, an old crone who lives in the marshes of the Mir Forests. She may know Yaga Shura's secrets.~ */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Alignment(Player1,MASK_EVIL)~ THEN ~[ARAN] Now if I had a trade bar for every evil creature what did that, I'd be a rich man. Speakin' o' that, where be your old crone confidant, <charname>?~ END I_C_T ~SARMEL01~ 49 c-aranmelis49 /* I can show you where that glade is... but it is only speculation. The key to the giant's invulnerability might lay there, but it might not. There may be nothing there at all. */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Given our bloody luck, there'd be a might more'n nothin'. More like a whole pile o' trouble.~ == ~SARMEL01~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[MELISSAN] I wish that I had a better answer for you.~ END I_C_T ~SARMEL01~ 16 c-aranmelis16 /* But Gromnir is mad. He has barricaded himself in the castle throne room, and his troops run amok through the town with no regard for the lives and rights of the citizens of Saradush. */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Been there, eh? Not a pretty sight. No control, an' a bit o trouble spirals into murder, rape, an' worse.~ == ~SARMEL01~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[MELISSAN] You say that like there could be worse.~ END I_C_T ~SARMEL01~ 80 c-aranmelis80 /* He runs a monastic order in a remote village in the Calim Desert...it will serve to both hide you from retribution as well as serve as a base from which you can attack the enclaves of Abazigal and Sendai. */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Monks. Well, I done fought alongside some. Might be a base o' operations after all.~ END /* plays even with silence set */ I_C_T ~SENDAI~ 15 c-aransendai15 /* NO! NO! My Bhaal essence is ripped from my very soul! Damn you! But I may yet rob you of the glory of your victory. */ == ~c-arn25j~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Th' only good Drow be a dead Drow, eh? Kiss Shar's arse for me.~ == ~SENDAI~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[sENDAI] I spit on you.~ END I_C_T ~BAZEYE01~ 0 /* You there! Intruder type! Why do you pester Lord Abazigal's most favored servant? */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Every time we turn around, there be another layer o' servants. I gotta get me some o' them. Spruce a place up, they do.~ END I_C_T ~BALTH~ 22 c-aranbalth22 /* My plan is much more altruistic. I have vowed to exterminate all of Bhaal's children, forever wiping the Realms clean of his tainted existence. You have merely helped me in my goal. */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Bloody hells. Either you be mad, or you be th' most driven individual I done met.~ END /* plays even with silence set */ I_C_T2 ~BOTSMITH~ 152 c-arancenspy /* Ummm... Cespenar only serve the great one. You'se nice, maybe, but you'se still a nobody. */ == ~c-arn25j~ IF ~Name("c-aran",LastTalkedToBy) !Global("c-aranrom","GLOBAL",2) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] You bloody well sound like that lass I was seein' in Calimport.~ END /* plays even with silence set */ I_C_T2 ~BOTSMITH~ 152 c-arancenspy /* Ummm... Cespenar only serve the great one. You'se nice, maybe, but you'se still a nobody. */ == ~c-arn25j~ IF ~Name("c-aran",LastTalkedToBy) Global("c-aranrom","GLOBAL",2) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] You bloody well sound like that lass I was seein' in Calimport. Err... that was a mite o' time before I met you, <charname>.~ END /* plays even with silence set */ I_C_T ~SENBEH01~ 10 c-aranbeholder10 /* Well, yes. Can't say I cared overmuch for that, although you *did* release me from one of the most boring tasks in Creation. Can't keep a good beholder down, I guess, eh? Heh heh. */ == ~c-arn25j~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Cyric's Balls. Never did see th' day when one o' you one-eyed wonders was a right good sort.~ == ~SENBEH01~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[FUNBEHOLDER] Don't let it get around. I have a long memory, and a great work ethic. Wouldn't want to have to hunt you down, you know.~ END I_C_T ~SARELF01~ 2 /* We have nowhere to stay... we have no choice but to wander the streets. I fear we will soon run afoul of Gromnir's men once more. */ == ~c-arn25j~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] My mother always told me never miss a good chance to shut up... but then again I'm not rightly one to follow advice. I hate to leave folks to fate, but we don't have enough supplies to run a refuge, eh?~ == ~SARELF01~ IF ~Global("c-silencearan","GLOBAL",0) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ELFLEADER] We would not ask such a thing.~ END /* plays even with silence set */ I_C_T ~SARTHF2~ 0 /* What do you want? You think you can hassle me just because I'm a kid? */ == ~c-arn25j~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] You got quick eyes, an' big ears, eh? Might be you could profit by usin' em instead o' that smart mouth.~ If I have missed a spot, please let me know - so far, I just can't see him playing flippant through the endgame/Mellisan stuff, the way he does with Irenicus' final battle.</charname></charname></charname></charname>
  23. Love Talks OK. Looking through both BioWare materials and all of the NPC modded romances I can find out there, we have a couple of things to think about with regards to the lovetalk sequence. The standard approach is to ask about family, share some personal background, develop a sense of friendship and intimacy, and to hold off on any deep pronouncements of attraction until late in the game. This is a solid model mimicking real life; gradual expansion of the idea that a person is interesting, developing a sense of rapport, and slowly building intimacy. (OK, so not so much for Saerileth, but what do you expect from a massively hormonally driven 15 year old Paladin of Tyr who has obviously read way too many romance novels back on her home plane - all that power, energy, lust, and excitement coupled with a heavy dose of Romatic Idealism and first love, and you have a "Mine Own True Prince Charming True Love At First Sight with a heavy dose of Shakespearean Angst® and Faustian Promise©. She feels things so deeply that if you break her heart, she dies of it - only a massive convergence of Tyr's power, the rush of first adolescent love, and the intense focus of a fanatic could produce that result even in a fantasy setting. So let's just forget she exists for the purposes of this discussion. If anything she is the anti-Aran, anyways. If he gets thrown over for someone else, he is more likely to get very angry, very drunk, and hit every bar and brothel in Western Faerun, starting in Amn. He probably ends somewhere deep in the pleasure quarter of a backwater Calimshan dock, running the "Extra-Planar Casa Blanca Humphrey Bogart Gin Joint for Disposessed Lovers and Angy Young Men" (courtesy of Billy Joel, with an infinite loop of Angry Young Man, Shades of Grey, and All for Leyna running over Film Noir backdrops.) The commonalites: Gradually developing storyline exploring eachother's background, usually driven by the NPC (showing increasing interest). Indistinguishable from friend talks for the first several in the series. Mimics the RL "I am talking to <prohimher> more than to other folks because I think I might like him." Increasingly tailored responses, with several opportunities for the NPC to "break up" - the NPC is evaluating PC and determining if they meet the criteria. And vice versa, of course... Attempts to shut down if the romance goes committed to another NPC, or if the criteria set is no longer met. There is another commonality - the "Conditioned Lovetalk". You know, the one where you have to be resting outdoors to get the next lovetalk, or resting in an inn... basically, the author needs to set the scene a certain way for the interaction to occur - and the lovetalks go into a holding pattern until the player meets those conditions. Those, well... I hate 'em. They work beautifully from a storytelling standpoint, they make sense, and they are some of the nicest vignettes in game - and they even have good gaming value because they stretch content out across the entire game. My absolute favorite is Domi's BG1NPC Dancing With Dynaheir lovetalk. And I still hate 'em. They are in character, like Nalia needing to return to the Keep for consummation because that "wait for the special person and everything should be just right" is a fantasy that people try to play out in real life, too. And it is silly for Ajantis to try to do a rose flirt under the stars when there are no stars and you are in Underdark, making it imperative that conditions for the talk are set to make it fit. It makes sense from a "relationship plateau" standpoint, where the will-she-or-won't-she-show-some-interest stalls while characters get up the nerve. It even makes sense for the player to have to "work for it", because a game where there is no challenge is a game played once and forgotten. A character has to play hard to get just like a human does, at times and situations, to show self-respect and self-awareness. But I can't get past the fact that I hate 'em. I hate them because they demand that the sequence wait for a set of conditions to fulfill, for the "stars to be aligned"... for the player to do something specific without realizing it. Which leads to metagaming. Which makes folks post stuff like "Aran hasn't talked to me in three chapters - was I wrong to tell him to sleep with whom he chooses... did I break the romance?" to which I have to reply "No, not at all - you need to be a Half-Elven Female Lawful Good Paladin with a Charisma of 18, Intelligence of 16+, wisdom of 12-, after sleeping in an outdoor area three times, be resting in an inn in Brynlaw, have only elven female Fighter/Mages in the party, have killed three vampires in the last 14 script cycles, game time must be greater than 16 hours, it needs to be night, and you must have installed Divine Remix. Oh, and it only works if you have correctly answered three riddles in the 12 riddle sequence while battling vampiric shades in Firkaag's Lair." So, what ideas can I twist to make the standard NPC format work, but avoid this? Well, "Floaters". Aran's "Sequences vs Floaters" For Aran, let's try straight friendship track, based on the timer and no other basic conditions. The player gets to set how often they might be triggered. straight romance track, based on the timer and no other basic conditions. The player gets to set how often they might be triggered. a pool of "Floater" talks. These talks/events can be triggered after certain lovetalks, and tightly conditioned. They become "Easter Eggs", or unlocked content after a lovetalk has passed, just like the Filrt Sequence "I have had enough teasing, I want you" material. This separation allows a simple and easily scripted sequence that still can be derailed by either player or NPC based on reactions and answers, but provides the opportunity to have event-specific or conditioned content. Most of all, the main sequence of the story can play out even if Player1 decide to never, ever, ever rest in an inn, becuse their Druidess absolutely would die rather than sleep in the Great Blight That Is Civilization. Since I like music, and it can serve as inspiration for either mood or content, let's play around with using musical analogies/temes/evoked mood to gain inspiration. No need to re-invent the Bb Major Scale; love has been around as long as humans have, and the themes are good fun to play arond with and take in different directions. We follow the standard Romantic Comedy sequence - attraction but separation, leading to attraction but conflict, leaading to resolution, leading to misunderstanding and/or barriers and self-sabotage, leading to breakup. leading to soul-searching, leading to a. Dissolution (Tragedy: It Was Never To Be), b. Resolution (Comedy/Romance: Happily Ever After) or Transmutation (Comedy/Romance: The Other Girl Was the Protagonist's Soul Mate From The Start). This is more risky than the standard story/film/play/anime-based graphic novel line; the player still has to work through these things with a real chance of failure. The escape lines for both NPC and PC mean that some content may never be unlocked; but it frees us up to a new idea necessary for an NPC - how do you write for diferent players? Remember, he is a Companion Mod. The fun is figuring out how it all works for Aran and PC, and gives them a chance at having the romance in a roleplay that takes players into account. The same lovetalk, under this model, could be four separate scenes, even before we add in pathways for the PC to alter the action and direction: EVIL vs ARAN GOOD vs ARAN (and if you don't know the scene that sparked this idea, go see Notting Hill again. Good screenplay, if trivial). CHAOS vs ARAN LAW vs ARAN With that in mind, let's get an outline of a set of ovetalks that follows the Romantic Comedy conflict setup of will she? Won't she? Does she? SHE DOES! EWait a sec... you mean i have to... Hey, that wasn't good. No Fair. Who is *he*. What is going on here? [misunderstanding/conflict] Central Lovetalk Pathway Index: Inspiration Playlist 33 base sequence talks, combined between SoA and ToB. Only 4 fit with ToB, with Marriage and Eternity talks, so either move some around or add some, or cut some, I think. This is an inspirational playlist, not a guide direct content - the idea is to either evoke the song's feeling for the female player, or to provide what Aran is feeling, depending on the song. Please note I am still a dude - and I like a very large range of stuff musically, so while all this stuff has complete playthrough in my head, it shares it with avante-garde classical, Stravinsky, Grateful Dead, Dave Mathews band, Green Day, Feist, and a heavy dose of grunge, alternative, pretty much anything except mysogynistic rap. Oh, and I can't get "Amish Paradise" out of my head - thanks alot, Al Yankovic. MAIN LOVETALK SEQUENCE >>> /* Romance ended, buddy - it's Over. Go back to work, SellSword. //* Dixie Chicks - Hello, Mr. Heartache */ >>> 1. /* Hey - I'm available, even though you aren't or might be on the fence */ //* Mary Chapin Carpenter - I Take My Chances */ //* BG2 LoveTalk 1, c-aranbg2rom = 1 c-aranromtimer,C-ARAN_ROM */ //* Dixie Chicks: Ready To Run */ //* BG2 LoveTalk 2, c-aranbg2rom = 3 c-aranromtimer,C-ARAN_ROM */ //* Queen - Somebody To Love */ 2. /* I like you - do you like me? */ //* ABBA - Name of the Game */ //* Billy Joel - You may be Right/We Didn't Start The Fire mixology */ //* ABBA - Take A Chance On Me: */ /* I want you - do you want me? */ //* Dixie Chicks - If I Fall: */ //* Police - Every Little Thing She Does Is Magic */ //* Dixie Chicks - Long Time Gone: */ //* Billy Joel - Blonde Over Blue */ (I really love this one) 3. /* You have me - do I have you? */ //* Billy Joel - Up Town Girl */ Uptown Girl //* Journey - Any Way You Want It */ >>>>I was alone >>>>I never knew >>>>What good love could do >>>>Ooh, then we touched >>>>Then we sang >>>>About the lovin things 4. /* You don't really want me, do you. */ //* Billy Joel - Shades of Grey */ //* Police - Wrapped around Your Finger */ /* Dating a Once and Future Goddess stinks. */ //* Police - Roxanne */ //* Billy Joel - Everybody Loves You Now */ Visiting the very dark side, the great subtext - like ABBA, upbeat and funny, fun, interesting, until you listen carefully... and then the irony kicks you in the teeth and you realize that all the pretty colors are the side-effect of a 20th level mage casting Color Spray.. Everybody Loves You Now //* Police - Every Breath You Take */ Sinister and loving at the same time. Creepy. 5. /* I hate you. */ //* ABBA - I'm A Marrionette */ //* Billy Joel - Big Shot */ //* Billy Joel - Captain Jack */ 6. /* I can't live without you. */ //* Billy Joel - All for Leyna */ //* Phil Collins - Take a look At Me Now */ //* Mary Chapin Carpenter - Shut Up and Kiss Me */ 7. /* Will you be here forever? */ //* Billy Joel - Honesty */ //* ABBA - One Man, One Woman */ 8. /* I am yours, completely, without reservations. */ //* 10,000 Maniacs - Because the Night: Because the night belongs to lovers, Because the night belongs to us */ This one may have to move to the middle of SoA if we are going for Romantic Comedy - or it might have to be a close to the end of ToB full Destiny or Desire moment. Save this one for the full on heavy duty erotic moment. Apparently, it is alot more popular than I thought, judging by the videos available. I thought only old dudes like me listened to this stuff. [EDIT - Wow. Agressive Copyright Enforcement. Cutting out six links that no longer work] Original - Bruce Springsteen's version doesn't capture the raw energy even though they wrote it together. But, I'm a sucker for more smooth and demanding, yearning, insistent voices that curl around your psyche and sweep you along - so 10000 Maniacs with Natalie Merchant instead - Wow. I must really like this song. //* Mary Chapin Carpenter - This Shirt */ //* Billy Joel - She's Always A Woman To Me */ 9. /* Marry me? Or just live together forever? Or even if you become a goddess... can I worship you? //* Peter Gabriel - In Your Eyes */ //* Lee Ann Womak - I Hope You Dance */ /* Choosing to Be A Goddess Or Not */ //* Mr. Mister - Kyrie */ >>>>Kyrie eleison, down the road that I must travel >>>>Kyrie eleison, through the darkness of the night >>>>Kyrie eleison, where I'm going will you follow >>>>Kyrie eleison, on a highway in the light //* Chicago - Love me Tomorrow */ OK, this gives us an outline. Some of these will be slashed and burned, too - if it just doesn't work, it just doesn't work. But we have a basic framework to build from. Let's try a first lovetalk: /* Mary Chapin Carpenter - I Take My Chances */ /* BG2 LoveTalk 1, c-aranbg2rom = 1 c-aranromtimer,C-ARAN_ROM */ /* Link to net reference, but the CD is much better :: www.youtube.com/watch?v=wYhjNDFMMc0 */ IF ~Global("c-aranbg2rom","GLOBAL",1)~ THEN BEGIN c-aranbg2romtalk1 SAY ~[ARAN] Are ye needin' somethin', <charname>?~ ++ ~[PC] No. Why do you ask?~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",1) RealSetGlobalTimer("c-aranromtimer","GLOBAL",C-ARAN_ROM)~ GOTO c-aranbg2rom1ask ++ ~[PC] I was about to ask you the same question.~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",1) RealSetGlobalTimer("c-aranromtimer","GLOBAL",C-ARAN_ROM)~ GOTO c-aranbg2rom1question ++ ~[PC] Yes. After I box your ears. Touch me again without my permission, and I will do far worse.~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",1) RealSetGlobalTimer("c-aranromtimer","GLOBAL",C-ARAN_ROM)~ GOTO c-aranbg2rom1boxed ++ ~[PC] Yes, I do. I need you to watch our surroundings, and stop watching me.~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",1) RealSetGlobalTimer("c-aranromtimer","GLOBAL",C-ARAN_ROM)~ GOTO c-aranbg2rom1watchingme ++ ~[PC] You flatter yourself, boyo.~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",1) RealSetGlobalTimer("c-aranromtimer","GLOBAL",C-ARAN_ROM)~ GOTO c-aranbg2rom1boyo <<standard exit="" block="">> END IF ~~ c-aranbg2rom1ask SAY ~[ARAN] Well, you keep strayin' your eyes my way, is all. An' I do believe I was a mite forward, back there, with my hands. You should box my ears but good. Sune knows I deserve it. Or was you goin' to tell me that I have permission to be a scoundrel?~ ++ ~[PC] You have my permission, Aran. If you are man enough for the task.~ + c-aranbg2rom1manenough ++ ~[PC] Scoundrel. Aran, you surprise me. You actually know a word longer than 'aye'.~ + c-aranbg2rom1wordlonger ++ ~[PC] Again with the romance. Some men don't take a hint. Look, drop it, Aran. And touch me again and you will be very sorry.~ + c-aranbg2rom1verysorry ++ ~[PC] You flatter yourself, boyo.~ + c-aranbg2rom1boyo <<standard exit="" block="">> END IF ~~ c-aranbg2rom1question SAY ~[ARAN] Well, I hinted back there, is all. My eyes be strayin' your way too, I guess. An' you didn't box my ears back there when my hand kinda wandered a bit.~ ++ ~[PC] Touch my rear again without my permission, and I will do far worse.~ + c-aranbg2rom1boxed ++ ~[PC] You have my permission, Aran. If you are man enough for the task.~ + c-aranbg2rom1manenough ++ ~[PC] You flatter yourself, boyo.~ + c-aranbg2rom1boyo <<standard exit="" block="">> ++ ~[PC] Scoundrel. Aran, you surprise me. You actually know a word longer than 'aye'.~ + c-aranbg2rom1wordlonger END IF ~~ c-aranbg2rom1boxed SAY ~[ARAN] Aye, I do believe I was a mite forward. You should box 'em but good. Sune knows I deserve it. Or was you goin' to tell me that I have permission to be a scoundrel?~ ++ ~[PC] Scoundrel. Aran, you surprise me. You actually know a word longer than 'aye'.~ + c-aranbg2rom1wordlonger ++ ~[PC] Forward is good. But there is a time and place.~ + c-aranbg2rom1timeandplace ++ ~[PC] *whack*~ + c-aranbg2rom1whacked ++ ~[PC] You flatter yourself, boyo.~ + c-aranbg2rom1boyo <<standard exit="" block="">> END IF ~~ c-aranbg2rom1watchingme SAY ~[ARAN] Well, I do admit you are a sight to be watched, <charname>. But I can watch you an' keep lookout too.~ ++ ~[PC] You misunderstand me. If you think I am watching because you are attractive, you flatter yourself, boyo. I just can't trust you to keep your mind on the job.~ + c-aranbg2rom1boyo ++ ~[PC] I don't mind the glances, Aran. But there is a time and place.~ + c-aranbg2rom1timeandplace ++ ~[PC] Oh, Aran, my dearest love, come and we shall frolic freely among the stars, and be one together for all eternity... + c-aranbg2rom1joking END IF ~~ c-aranbg2rom1joking SAY ~[ARAN] Aye, that's right. Make fun o' the poor lad what just was flirtin' with you. Go on wi' ye. ~ ++ ~[PC] Well, stop with all the love stuff and let's just stick to business, shall we?~ + c-aranbg2rom1chances ++ ~[PC] No, no, it's true. You are my destiny, Aran. That, or I am supposed to be the doing something about prophecies, or something. We can't just leave all that to chance, can we?~ + c-aranbg2rom1chances ++ ~[PC] What is sauce for the goose is sauce for the gander, Aran. You have been teasing me with all this looking and touching.~ + c-aranbg2rom1chances ++ ~[PC] You have a good deal to learn about women, Aran.~ + c-aranbg2rom1chances END IF ~~ c-aranbg2rom1boyo SAY ~[ARAN] Well, not to flatter myelf, exactly. I just believe in takin' some chances, is all.~ ++ ~[PC] Chance is fine when it comes to some things. But you are treading dangerous ground here.~ + c-aranbg2rom1chances ++ ~[PC] Chance is something to be avoided at all costs. There is an order to all things, Aran.~ + c-aranbg2rom1timeandplace ++ ~[PC] So you believe that taking your life into your hands and accosting me is worth the risk?~ + c-aranbg2rom1chances ++ ~[PC] If you want a chance with me, you had better behave.~ + c-aranbg2rom1chances ++ ~[PC] No chance here, Aran. I have my attentions placed elsewhere. Stop bothering me.~ + c-aranbg2rom1chances END IF ~~ c-aranbg2rom1manenough SAY ~[ARAN] Oh, I be man enough. Just not sure where the rules an' regulations put us, you bein' you an' all. Then again, I do believe in takin' chances.~ ++ ~[PC] Chance is fine when it comes to some things. But you are treading dangerous ground here.~ + c-aranbg2rom1chances ++ ~[PC] Chance is something to be avoided at all costs. There is an order to all things, Aran.~ + c-aranbg2rom1chances ++ ~[PC] So you believe that taking your life into your hands and accosting me is worth the risk?~ + c-aranbg2rom1chances ++ ~[PC] If you want a chance with me, you had better behave.~ + c-aranbg2rom1chances ++ ~[PC] Some things I leave to chance, Aran. But I like the odds better when the person is much better educated. + c-aranbg2rom1wordlonger END IF ~~ c-aranbg2rom1wordlonger SAY ~[ARAN] Oh, you know how to hurt a lad, you do. I didn't do all this scribin' blind. There be some words I can't pronounce, but I can even do a bit of Dwarven an' Illuskan script. 'Scoundrel' has been used about me before, too. Sometimes for good, sometimes meanin' bad... an' always meanin' trouble.~ ++ ~[PC] Your mother must be so proud.~ + c-aranbg2rom1mocking ++ ~[PC] And you chose to use this extensive vocabulary on me because...~ + c-aranbg2rom1boyo ++ ~[PC] Good, bad, or indifferent, you are welcome to try sparring with me, Aran. But aren't you taking a big chance, here?~ + c-aranbg2rom1chances ++ ~[PC] Somehow this conversation has gotten sidetracked. Keep your eyes and hands to yourself, sellsword. I won't give many second chances.~ + c-aranbg2rom1chances END IF ~~ c-aranbg2rom1timeandplace SAY ~[ARAN] Now, I don't rightly believe that. There is naught but little time to spend on Faerun, an' it don't serve the time we have to play it so safe.~ IF ~~ THEN GOTO c-aranbg2rom1chances END IF ~~ c-aranbg2rom1whacked SAY ~[ARAN] SUNE'S RUMP! That bloody well hurt!~ ++ ~[PC] Forward is good. But there is a time and place. Learn it, and yours.~ + c-aranbg2rom1timeandplace ++ ~[PC] Keep your eyes and hands to yourself, sellsword. I won't give many second chances.~ + c-aranbg2rom1chances ++ ~[PC] Shall I kiss it and make it better, Aran?~ + c-aranbg2rom1mocking ++ ~[PC] I mean what I say. Stop flirting with me, or risk my wrath.~ + c-aranbg2rom1chances END IF ~~ c-aranbg2rom1verysorry SAY ~[ARAN] I already bloody well am sorry I brought anythin' up. You need to lighten up, <charname>, an' take some chances. ~ IF ~~ THEN GOTO c-aranbg2rom1chances END IF ~~ c-aranbg2rom1mocking SAY ~[ARAN] Selune's Sweet Breath, you are mockin' me! Well, now, can't say as I blame you. I did come on a bit strong.~ IF ~~ THEN GOTO c-aranbg2rom1chances END IF ~~ c-aranbg2rom1chances SAY ~[ARAN] Look, most times it is better to dive in, an try. An' if there be some problem, the folks you want to be around forgive you freely, an' the folks you want naught to do with try to extract some price. When Tymora lets fly a coin, I jump right in an' wager high. I take my chances every chance I get. ~ IF ~~ THEN EXIT END </charname></charname></standard></standard></standard></standard></charname></charname></charname></charname></charname></charname></charname></prohimher>
  24. The joining dialog is los of fun to create - sets a great mood for the rest of the interactions. We need to accomplish a couple of goals here; tell the game there are some new dialog files, and populate the "I have never been in the party" dialogs. That should include a "first meet" option, a "hey, we talked before" option, a "join up" option, and a "no thanks" option. It also probably should include a "wait a bit, I'll get back to you" option. So, let's try some stuff out. 1. Tell the game we have some new dialogs: /* Initialize Dialogues */ BEGIN ~C-ARAN~ // pre-joining SoA BEGIN ~C-ARANJ~ // joined SoA BEGIN ~C-ARANB~ // banter SoA BEGIN ~C-ARANP~ // post-joined SoA I like separating them out and commenting them right up front. Now that they exist for the game, we get to fill them up. Let's go ahead with the pre-joining dialog, c-aran. First, add the "first meet" option, capitalizing on "numberoftimestalkedto" which the game keeps count of: /* C-ARAN pre joining dialogue */ APPEND ~C-ARAN~ // begin appenending to c-aran.dlg and the talk, IF ~NumTimesTalkedTo(0)~ THEN BEGIN c-firstmeetaran SAY ~Aye then, you showed up at a right good time. Aran Whitehand, Sword n' Pen. Accounts audited, contracts written, foes slain. I heard you might be interested in a sellsword for adventuring.~ [C-ARAN01] IF ~~ THEN REPLY ~Perhaps later. Right now, I just want a drink.~ GOTO c-firstmeetarandenied IF ~~ THEN REPLY ~I'm afraid we can't afford a mercenary right now. I need to save a good bit of coin to rescue a friend.~ GOTO c-firstmeetarancoin IF ~~ THEN REPLY ~Fighter and scribe? Do you do magic as well?~ GOTO c-firstmeetaranmagic IF ~~ THEN REPLY ~We might be able to use a good sword, but I am interested in your scribing. Can you make scrolls?~ GOTO c-firstmeetaranscrolls END Hey. That's boring. Same dialog every time we start the mod. Let's use random numbers to spice it up a little: IF ~NumTimesTalkedTo(0)~ THEN BEGIN c-firstmeetaran SAY ~Aye then, you showed up at a right good time. Aran Whitehand, Sword n' Pen. Accounts audited, contracts written, foes slain. I heard you might be interested in a sellsword for adventuring.~ [C-ARAN01] IF ~~ THEN REPLY ~Perhaps later. Right now, I just want a drink.~ GOTO c-firstmeetarandenied IF ~~ THEN REPLY ~I'm afraid we can't afford a mercenary right now. I need to save a good bit of coin to rescue a friend.~ GOTO c-firstmeetarancoin IF ~~ THEN REPLY ~Fighter and scribe? Do you do magic as well?~ GOTO c-firstmeetaranmagic IF ~~ THEN REPLY ~We might be able to use a good sword, but I am interested in your scribing. Can you make scrolls?~ GOTO c-firstmeetaranscrolls IF ~RandomNum(5,1)~ THEN REPLY ~Go away, little man.~ GOTO c-aranrefused1 IF ~RandomNum(5,2)~ THEN REPLY ~Nope. Just not interested.~ GOTO c-aranrefused2 IF ~RandomNum(5,3)~ THEN REPLY ~I was just checking to see if you were working here.~ GOTO c-aranrefused3 IF ~RandomNum(5,4)~ THEN REPLY ~Ask me again and I will have you thrown out of here.~ GOTO c-aranrefused4 IF ~RandomNum(5,5)~ THEN REPLY ~No. But I sure could use a drink. Buy me one?~ GOTO c-aranrefused5 END That's better - one game, PC gets to chose from The next time, perhaps Let's add another set of responses, too, so that if PC is picking up Aran later in the game the whole "find Imoen" thing is resolved nicely: IF ~GlobalLT("Chapter","GLOBAL",3)~ THEN REPLY ~I am not sure that I can use you right now. But perhaps you might be able to help me. I am looking for a mage named Irenicus. Have you heard of him?~ GOTO c-firstmeetaraniren IF ~GlobalGT("Chapter","GLOBAL",2)~ THEN REPLY ~I sure could have used you awhile ago. Now I am not so sure. What can you do for me?~ GOTO c-firstmeetaranlate Integrated into the talk, IF ~NumTimesTalkedTo(0)~ THEN BEGIN c-firstmeetaran SAY ~Aye then, you showed up at a right good time. Aran Whitehand, Sword n' Pen. Accounts audited, contracts written, foes slain. I heard you might be interested in a sellsword for adventuring.~ [C-ARAN01] IF ~~ THEN REPLY ~Perhaps later. Right now, I just want a drink.~ GOTO c-firstmeetarandenied IF ~~ THEN REPLY ~I'm afraid we can't afford a mercenary right now. I need to save a good bit of coin to rescue a friend.~ GOTO c-firstmeetarancoin IF ~~ THEN REPLY ~Fighter and scribe? Do you do magic as well?~ GOTO c-firstmeetaranmagic IF ~~ THEN REPLY ~We might be able to use a good sword, but I am interested in your scribing. Can you make scrolls?~ GOTO c-firstmeetaranscrolls IF ~GlobalLT("Chapter","GLOBAL",3)~ THEN REPLY ~I am not sure that I can use you right now. But perhaps you might be able to help me. I am looking for a mage named Irenicus. Have you heard of him?~ GOTO c-firstmeetaraniren IF ~GlobalGT("Chapter","GLOBAL",2)~ THEN REPLY ~I sure could have used you awhile ago. Now I am not so sure. What can you do for me?~ GOTO c-firstmeetaranlate IF ~RandomNum(5,1)~ THEN REPLY ~Go away, little man.~ GOTO c-aranrefused1 IF ~RandomNum(5,2)~ THEN REPLY ~Nope. Just not interested.~ GOTO c-aranrefused2 IF ~RandomNum(5,3)~ THEN REPLY ~I was just checking to see if you were working here.~ GOTO c-aranrefused3 IF ~RandomNum(5,4)~ THEN REPLY ~Ask me again and I will have you thrown out of here.~ GOTO c-aranrefused4 IF ~RandomNum(5,5)~ THEN REPLY ~No. But I sure could use a drink. Buy me one?~ GOTO c-aranrefused5 END We could have more fun with this, but we don't want to get too carried away - too many choices is just as bad as too few. And right now PC has 6 different responses - more than enough.
  25. OK. In no particular order, we have a soundset sketched and coded sans the actual sounds, and that has given a "voice" to our dude. We also have a set of SoA banters, 2 banters per canon BioWare™ NPCs, to define Aran's outlook to the reader/player through how he interacts with the other members of the party. The writing on ToB banters is slower going, because frankly while I have played SoA to death, playing ToB has not always been on the ticket. So we will let that ruminate a bit more, and perhaps even wait for another week, while things percolate. Let's go ahead and sketch out the friendship talks in rough form. Preparation and Thought-Experiments otherwise known as a variant on the spells "Confusion" and "Horror" called recently on the forums "Wall of Text", wherein the author creates meaningless psychological, sociological, and revisionist studies for his own amusement and the purposes of stunning and confusing the reader into accepting his basic premise without thinking too deeply. Go me! OK, notes to myself. Also called "Journaling", by all these new kids. For good thought-provoking discussion on dialog writing, banters, and characterization, the place I like to go is PPG and JCompton. If you follow that link, it is just the Mod general discussion board; poke around at the other stuff, and you get more threads dealing with this kind of stuff. He says up front that all of his ruminations on guidelines may or may not have been broken in stuff he writes, and that there are lots of ways to do this dialog integration thing. Sure. I agree that slavishly following a set of blueprints of any kind is anathema to creative expression; but his discussion threads bring experienced coders, writers, and readers to the table and get them discussing what makes decent gameplay and dialog work together. Plus he wrote Keto, who has to be one of the coolest "companion" - like mods out there, in my opinion, even though there is no romance track (or perhaps because there is no romance track). So reading that is good prep. And I have very seldom read something that I though was a bad idea on those explorations - he knows his stuff. At least then when I chose to do something odd, it will be because I am making a choice, instead of just blindly leaping into the void. And, of course, there is playing experience - I know what I like about other NPCs and what I find frustrating/lacking, so that helps - reading other folks' stuff is like listening to decent jazz players and seeing how they take the changes, modify the melody, and make a "standard tune" their own. (OK, let's be really painfully truthful - sometimes it provides the "how-not-to" demonstration. But negative energy rips years off of your life. And sometimes what you don't like about someone else's stuff helps figure out what you do like, and might make your work better). This one comes with a caveat. I am writing Aran for my own amusement, but I would like it if one or two folks have some fun too. So probably leaving him open to more possibilities is a good idea. I play way too many Paladin runs. Then again, all this deep philosophical stuff really is moot. It's a mod, not a dissertation. And most folks these days seem more interested in pages and pages of discussion rather than actually creating anything for players to play - so I'll cut off the additional twenty pages of deep philosophical blather, and simply refer you to the "Cathedral" vs "Parlor" debate summarized best by Wrye in Morrowind modding, the various threads around the i.e. community that ask deep questions, and let you knock yourself senseless against *other* peoples' Wall of Text™ spellcasting, unless you make your Save vs Insanity. I find thse have increasingly distracted me from actually doing stuff I like doing, so I am going all tough love on myself - tTo quote my favorite sports movie, Jerry MacGuire - "Show me the money". OK, no cash, so my old Junior High shop teacher - "Lots of talk. Who cares. Build the *&^%^& thing. Then we'll talk." Friendship Paths and FriendTalks and Friendhip Talks and Friend Banters So, what's in a name? At base, all friendtalks are PC>NPC banters. In fact, though I agree with JCompton that railroading a player through only one dialog choice is a waste of material, technically all that is required to build a friendtalk is to have Of course, that's boring. So what do we do? Before we go exploring all the ways to mess with player's heads add all sorts of cool stuff to branch out different options for the NPC and PC, it might be a good idea to sketch out an organization. It will help keep the writing focused and on-task, provide a guide for me to see how close things are to a finishing point, and most of all it will be a good idea-sparker while playing BG2 and seeing how Aran might react. I see two basic ways that would work for my style and my patience level. We can go all Pointilistic/Atomistic/Impressionist, and randomly write some scenes that appeal to us between Aran and the PC, and see what happens. Fun to do, and the way many NPCs are coded. Here, a couple of scenes that have no relation to eachother get tucked into the story. We could always build a "friendship track", where a series of talks lead from an initial lightweight banter through the development of a friendship - basically, a "Platonic Love Talk Sequence", as opposed to a "Romantic Love Talk Sequence". Here, the depth of the relationship is patterened, and there are opportunities for the PC and Aran to "break up" as friends, or at minimum to become "frenemies" [what a horrible word. Yuck.]. Guess what - I like both ideas. But I am not writing the Next Great American Novel™, so how about we ignore the list completely, and go with a middle ground - a "sequence" of talks, so that I have some targets and goals to shoot for and an idea of what kind of topics/stuff I want to have Aran and PC talk about, plus some semblance of a track. But all those random ideas that may not fit into a track, or may have conditions, set them up as "floaters", outside of the sequence. Later on, I can add in the changes needed to adjust to romance/no-romance, and perhaps even for more specific situations.
×
×
  • Create New...