Jump to content

Search the Community

Showing results for tags 'tutorial'.



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
    • 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 28 results

  1. Note: I expect that K'aeloree will create another darned good and simple-to-follow tutorial on this in the relatively near future, correctly outlined, and hopefully he will loot and pillage this attempt in the process. These materials are a consolidation and reference on the subject often passed quickly through on the way to getting dialog in the game. As a side benefit, they provide cut & paste template materials as "code shortcuts". -cmorgan There are many different dialog files the engine calls on when the game is unfolding. There are some great tutorials out there, but since I like to prep stuff beforehand, perhaps this breakdown will be a useful addition and save some folks some work coding their mods. Preparation Tutorial links useful to follow before/while/after reading this investigation of dialog file usage: The Road to Banter - by Blue, the Immortal Bard gives you a clue about some of the dialog files and their use, WeiDU Basics - by Japheth you basic IF THEN END states, a series of short tutorials/examples by Kulyok on PPG and several other sites gives you basic examples, and Definitions, Tools and Resources, NPC Creation Series, part 1, by berelinde and the follow up parts 2 and 3 give you a solid basis for all NPC creation including dialog files. A follow up with Theaceface's Ace's very long NPC creation guide should give you a crosscheck on ideas, so that you can get a handle on much of the syntax. Check out K'aeloree's new materials on SHS as well for follow-up and step-by-step breakdowns on things like "What is CD_STATE_NOTVALID and how do I use it?" or "Coding Interjections" or "Coding Friendships and Romances". If you are looking for item dialogs before I get there, there already is a great tutorial available on that: Easy Item Dialogs, for BG2 SoA and ToB by Smoketest. To organize the basic concepts, check out NPC Dialogue 101 by Ghreyfain, also found in a repost at SHS. This tutorial is an expansion of Ghreyfain's original work. After you have finished this tutorial, I suggest a quick visit to a pair of posts/tutorials, for the folks struggling with the whole "why does the order of states in a file matter" thing (or "why does my dialog not play correctly") which often has to do with the order that the engine 'sees' the various states in order to evaluate whether they are true or false. Weights - State Weights - by Japheth and the follow-up Another look at WEIGHT, by JCompton. So now you have some basics down, let's review again exactly what a state is, and what a dialog file is. Introduction: A review of States and Dialog Files Primary concept: dialog files are lists of states. At the most elementary logic level, a dialog file is no more than a list of possible text lines for the game to present. IF ~some_condition_exists~ THEN PRINT_TO_SCREEN ~some_text_with_or_without_additional_links~ END IF ~some_other_condition_exists~ THEN PRINT_TO_SCREEN ~some_text_with_or_without_additional_links~ END IF ~no_condition~ THEN PRINT_TO_SCREEN ~some_text_with_or_without_additional_links~ END Brought into the game by WeiDU reading in the file myMod.tp2, a dialog state is added when WeiDU compiles an IF THEN END code block through a ".d file" into a new or existing game resource designated by the extension .dlg Examples of usage in myMod.tp2: COMPILE ~myMod/c-aran.d~ COMPILE EVALUATE_BUFFER ~myMod/dlg/AnyNameYouwWant.d~ Reminder: when WeiDU compiles a .d file, it does not automatically add or start or set up references, or create a .dlg file. WeiDU still needs entries in the .tp2 file and .d file to set this into the game. So /* standard .d file with dialog */ COMPILE ~myMod/c-aran.d~ /* "evaluated" .d file with dialog and in-file variables that need to be evaluated before adding strings to the dialog.tlk */ COMPILE EVALUATE_BUFFER ~myMod/dlg/AnyNameYouwWant.d~ does not add the dialog files c-aran.dlg AnyNameYouwWant.dlg it just processes those files to find out what you *do* want added to the game. To add specific dialogs to the game, the .d file needs to have some entries. Why don't we start with adding a .dlg file so that the game will recognize a valid dialog: in myMod.tp2: COMPILE ~myMod/c-aran.d~ in the related c-aran.d: BEGIN ~c-aran~ So that gives the i.e. engine a chance at identifying and reading a new .dlg. Let's go on and add three states to c-aran.d. To keep things separated and simplified, we have begun a .dlg, and now we are going to add states to that .dlg - to "append" new materials to the existing file. BEGIN ~c-aran~ APPEND ~c-aran~ END The APPEND block contains all of the states that relate to a single dialog file, "c-aran". Now we add some actual states: BEGIN ~c-aran~ APPEND ~c-aran~ IF ~NumTimesTalkedTo(0)~ THEN BEGIN c-aranstarts SAY ~Aye, welcome, then. This is a fine day on Trade Way." IF ~~ THEN EXIT END IF ~NumTimesTalkedTo(1)~ THEN BEGIN c-aranagain SAY ~I do remember you - we talked before, didn't we..." IF ~~ THEN GOTO c-aranends END IF ~~ c-aranends SAY ~No matter. Welcome again, then. This is a fine day on Trade Way." IF ~~ THEN EXIT END END The only difference in the above three states is what brings them up to the engine's "use this now" list. While that's a whole other topic, we can shortcut to the following breakdown; When the game engine looks in the .dlg file c-aran, and begins evaluating each state in order. It checks agains State 1, and if it finds the condition NumTimesTalkedTo(0) is true, it fires off State 1 - and in the dialog box in-game, the player sees the text string "Aye, welcome, then. This is a fine day on Trade Way". If it finds State 1 is false (for example, if this is the second time we have called on the dialog file "c-aran.dlg"), then the engine skips State 1 and moves to State 2. It tries again; if it finds " number of times talked to = 1", then state 2 is fired, and the player sees the text string "I do remember you - we talked before, didn't we...". If this is the third time we have talked to the NPC assigned the .dlg "c-aran", then we have a problem. State 1 evaluates false and is skipped, state 2 evaluates false and is skipped, and state 3 has no condition - it literally cannot be evaluated. State 3 can only be linked from another state (in this case it is linked from State 2), so the dialog fails. What happens at this point depends on several factors not for discussion in this tutorial. For now, let's go back and fix this so there is no chance of failure: BEGIN ~c-aran~ APPEND ~c-aran~ IF ~NumTimesTalkedTo(0)~ THEN BEGIN c-aranstarts SAY ~Aye, welcome, then. This is a fine day on Trade Way." IF ~~ THEN EXIT END IF ~NumTimesTalkedToGT(0)~ THEN BEGIN c-aranagain SAY ~I do remember you - we talked before, didn't we..." IF ~~ THEN GOTO c-aranends END IF ~~ c-aranends SAY ~No matter. Welcome again, then. This is a fine day on Trade Way." IF ~~ THEN EXIT END END Now, either State 1 or State 2 will always be true, and we can look at the reply section of State 2. It creates a direct link to State 3. So the game evaluates State 2, then follows the reply, and we get two separate dialog boxes: I do remember you - we talked before, didn't we... No matter. Welcome again, then. This is a fine day on Trade Way. For great information on how to use and manipulate states, there are a large number of in-depth and beginner-friendly tutorials. So let's move on to the subject of this tutorial, which is more about organizing groups of states and forming and manipulating dialog file references. Here, we contextualize states, and break down what .dlg files are - what they do for our NPC.
  2. Greetings. I have two questions to ask. a) Can anyone with a BG2 installation check if gemrb immediately levels up the character to TOB starting XP on the tutorial ? Steps: Shadows of Amn -> Single Player -> Tutorial -> Generate a character or import one of the pre-generated ones (except those starting with tob e.g tobthief) The character starts with 89000 XP but immediately levels up to the 2.5M TOB starting XP. I noticed it with BGT because SoA takes the place of the tutorial and my SoA character immediately leveled and i reproduced it with the tutorial in my clean SoA+ToB installation but maybe something is messed up in my installation. The extra XP are given in the FixProtagonist function in bg2/MessageWindow.py. I followed it to this code in the GameExpansion function if version < 5 and not GemRB.GetVar("PlayMode") and GemRB.GetVar("oldgame"): #upgrade SoA to ToB/SoA if GemRB.GameSetExpansion(4): GemRB.AddNewArea("xnewarea") return The tutorial uses PlayMode=1 so the the body doesn't run and the function doesn't return at that point so it goes further and gives the XP. if version < 5 and and GemRB.GetVar("oldgame"): If i remove the check for Playmode as the above code shows then it works fine but my change will obviously break something. I am not familiar with the GemRB code so i do not know what is the purpose of the PlayMode check. I would appreciate if someone checks how gemrb and vanilla engine behave on the tutorial character. b) This is not very important. A minor issue i noticed when trying to debug the XP issue. LUSpellSelection.py contains the following code: # chargen character seem to get more spells per level (this is kinda dirty hack) # except sorcerers if chargen and Class != 19 and not IWD2: SpellsSelectPointsLeft[i] += 1 So when you generate a new Mage character, the code checks the mxsplwiz table and then adds 1 more spell, right ? When i test it, i get 5 4 3 2 spells respectively which seems right (89K XP is L7 for a mage and my mxsplwiz shows 4 3 2 1 for Level 7). However, i have the impression that the vanilla engine works a bit differently. The amount of spells you can memorize after you start the game is the same for both gemrb and the vanilla engine and is exactly what the mxsplwiz file says. The number of "known spells" you get to choose during character generation is different though. GemRB gives you mxsplwiz+1 spells while i believe the vanilla engine gives a fixed amount of spells regardless of what mxsplwiz says. Can anyone check how many spells he gets for a generalist mage in the vanilla engine ? I changed mxsplwiz to give only 1 spell for every level and to give 8 spells. In both cases, during character generation, i got to choose "7 6 5 5 4 4 3 2 2" for "known spells". Thank you for your time.
  3. An introduction to VEF files Introduction The VEF format (short for: Visual Effect File) has been discovered not too long ago by the forum member Ascension64. Although it is relatively unknown yet, the format can be a big help if used right. Basically a VEF file enables you to group any number of visual effects (VEF/VVC), animations (BAM), and sounds (WAV) together and specify a delay for each component to be triggered. That way you can create a series of visual effects to be played back on (a single!) command, without the hassle to put lots of Wait() or SmallWait() instructions in between. It is also possible to use VEF files in spells. By using effect opcode #215 (Play 3D Effect) you can add a VEF file into the resource field as you can already do for BAMs or VVCs. There is a minor drawback however. The effect state 1 (Play on target (attached)) doesn't appear to be supported. Setting up a VEF file is pretty straightforward. The format consists of a global header and an array of two kinds of components ('Component1' and 'Component2') containing the definitions of the actual effects. It doesn't really matter which one of the components you want to use. Both kinds appear to be used equally by the BG2 engine. The components don't have to be ordered chronologically as well. The game engine will do that for you. Caution: It is possible to recursively nest a VEF file in itself. This will produce an endless loop and, in some cases, may cause the game to grind to a halt. Creating a VEF file The easiest way to understand the format is by creating a VEF by yourself. That's why I will provide a step-by-step instruction to create a nifty visual effect that could be used for imprisonment spells or the like. Note: You will need a version of Near Infinity that includes VEF support to follow this tutorial. You can find it here. Starting with Near Infinity w1.3.0, you can easily create a new VEF file by selecting the menu entry File->New Resource->VEF. Enter the name A7FLASHY.VEF (or any other name you like) into the file creation dialog and click "Save". Press F5 or select Game->Refresh Tree to register the newly created file in Near Infinity. Depending on how you have configured NI, the resource can be found in the Override or VEF folder and should look like this: We are now ready to add our effects into the VEF. Each effect has to be defined within a 'component' structure. To create a new component, click on the Add... button in the bottom panel and select either 'Component1' or 'Component2'. It doesn't matter which one you choose. Both types are processed equally by the game engine. Double click the resulting table entry to open our new component for further editing. The table contains five relevant fields: As this is the first component in our VEF, we want it to be triggered immediately. That's why we leave the 'Ticks until start' field as it is. I will explain this field further down below. Now to the interesting parts. The 'Resource type' field determines what kind of resource the VEF will be looking for, when it is about to be triggered. As you can see, I have selected 'VVC/BAM'. That will cause the game engine to look for a VVC file first and fall back to a BAM resource if no VVC has been found. The same is true if you select 'VEF/VVC/BAM'. It will signal the game engine to look for the resource in the order VEF->VVC->BAM. The 'WAV' entry will cause the game engine to look for sound files only. For the effect in our example it isn't important whether you choose 'VVC/BAM' or 'VEF/VVC/BAM'. The 'Resource' field should present you a list of available VVC and BAM files. The files in the list reflect the resource type you have chosen in the field above, so make sure you have already selected 'VVC/BAM'. As the file SPFLSRIN is available as both VVC and BAM, the game engine will choose to trigger the VVC version when you activate the VEF. The remaining fields won't be touched in our VEF. If you set 'Ticks until loop' to a non-zero value, the animation will be looped endlessly, starting at the first frame of the animation. The specified number of ticks defines how long each pass will take until the loop starts over again. The field 'Continuous cycles?' determines whether only the first or all cycles within a BAM resource will be processed. This field will only be taken into account by the game engine if you select 'VVC/BAM' in the 'Resource type' field. After our first component has been defined, you can close the window to return to the parent structure. The second component should be triggered a short while after our first. So we enter a value into the field 'Ticks until start'. In our case, a value of 30 is suitable. One tick is processed in 1/30th seconds, therefore our effect will be triggered after exactly one second. As the default frame rate of animations is 15 fps, you can divide our delay value by two, if you want to find out how many frames of the animation defined in our first component have been processed, before our second component starts up. Sometimes you have to add or remove one tick to ensure a seamless transition between the animations. Select 'VVC/BAM' again and select SPPLANAR.VVC in the 'Resource' field. The resulting component should now look like this: For our third component we set the field 'Ticks after start' to 70 and select the BAM resource SPIMPPT.BAM, as seen in the screenshot. Our fourth and last component contains a sound effect. That's because the previous component makes use of a simple BAM file, which isn't associated with a sound resource. We use the same number of ticks as for the previous component and choose WAV in the 'Resource type' field. The file list of the Resource field should now display all available WAV resources of the game. Select the file EFF_P92.WAV as shown below: The resulting VEF resource should now look like this: Note: The order of the components within the VEF file doesn't really matter. The game engine looks only for the starting delay and orders the components appropriately. Save the changes you've made to the VEF file and we are done. If you want to test it without creating a VEF by yourself, you can try out this pre-built one: a7flashy.zip To trigger the VEF resource within the game, you can either use a script action, for example CreateVisualEffectObject("A7FLASHY", "Edwin") ...or place it into a spell or item by using effect opcode #215 (Play 3D Effect). You can not set effect state=1, however. Note: For testing purposes, you can also open the CLUA console and enter CLUAConsole:CreateVEFVidCell("A7FLASHY") to trigger our VEF resource at the center of the screen. If everything went well, you should see a sequence of visual effects as shown below: To do the same sequence of effects the old way, you would have to come up with something like this: CreateVisualEffectObject("SPFLSRIN", "Edwin") SmallWait(15) CreateVisualEffectObject("SPPLANAR", "Edwin") SmallWait(20) CreateVisualEffectObject("SPIMPPT", "Edwin") ActionOverride("Edwin", PlaySound("EFF_P92")) As you can see, you can save a lot of code (and trouble) by using VEF files instead. This is especially true when you need to trigger the same sequence more than once or use more complex VEFs. This tutorial has covered only a small part of what you can do with VEF files. Using the ability to nest VEF resources, you can easily produce a great number of complex sequences in short time. The same would have been accomplished by putting down dozens or even hundreds of lines of repetitive script code that would become unmanageable very soon.
  4. OK, long faculty meeting, and no access to stuff I am supposed to be working on, or even modding stuff - and most of all, a long pointless argument raging over "No Child Left Behind"'s merits, which really is moot - it isn't as if we can choose to ignore it. So, I already have a bunch of stuff done on soundsets - I'll scribble while Rome burns. The soundset. Straightforward stuff like .cre files, etc., really are not a concern until later. I am working from a "character first" perspective, and BG2 graphics are not Oblivion stuff; we can build that stuff later. So, sounds - recorded lines or not? Argument for: everyone has 'em. They help some people characterize the NPC and fill them out in their brain. Argument against, thousands - including tons of time, energy, and work balancing the sounds, only to have a bunch of folks who had supplied the voice and accent in their heads think "hey - that is not how Aran should sound". In fact, I often rip the soundfiles out of mods before playing them - my inner voice is much more comfortable to me than an outsider's interpretation. I like bg1npc's idea of "soundtracks" for speakers, called by script, but that is a whole other topic, and weeks away. But you know what, it doesn't matter at this point - until Aran is 90% or more done, taking the time to record (or hire someone to record) a soundset and/or lines is silly. Things may will change, and perhaps the entire characterization will shift slightly. So the sound recordings themselves, next to last to do. Let's move on to the text strings, and set them up to handle sound when it is eventually recorded and added. Note: This looks like just a quick couple of days to whip through this, but actually took place over several weeks, and the final draft was vetted by berelinde and Amaurea to make sure I wrote something that fit my idea. Unfortunately, we all write from within our own heads. While I'm not writing Aran for anyone but my personal enjoyment, it is nice to check to see if the communication moves off the page to other folks, or if it ends up being stilted/odd. Some soundreferences with tobbacco use got nixed because the ladies (quite rightly) pointed out that it was a potential turn-off for some readers, while adding nothing really to his character - so I blatantly stole berelinde's rephrase of it into "twig chewing". This stuff is tougher than it looks, because we all want the character to have what comes up in our head during fanfic-like daydreams; unfortunately, if you create a line like La Traviata for dying, it will stink as a soundset: This might be fun to envision in my head, but really, soundset entries are supposed to be very quick, or the lines will trip over others. Wicked short, to the point - that's why they are some of the toughest writing out here. "Characterize your NPC's reactions in less than four words.... GO!" But, we have caught a break with it, because we have a format to work in, and we know the parameters. Short, simple, to the point, in character. And, WeiDU has taken the work out of all the coding completely. A standard setup in the .tp2 will install the right strings in the right places - and the i.e. engine has a simple format for strings that deal with sound. STTREF/OFFSET ~[comment] text string~ [sOUNDREF] Here, STTREF/OFFSET is where in the .cre file the string reference in dialog.tlk is stored. This is why soundsets can get scrambled, and other lines, too - the .cre file carries only a reference number, or index lookup to dialog.tlk. Technically, you could go all fancy hard-core Old Skool here and tell WeiDu the specific offset for the .cre sound, but why when WeiDU does the work for you: SAY MORALE The next, the actual string created in dialog.tlk, ~[comment] text string~ well, that's pretty straightforward - the [comment] will not be seen by the player. In fact, it is where I picked up the idea to try to use this to help translators - when Smoketest, devSin, and Grim Squeaker patiently led me through how sound works in i.e. games, it was there for the BioWare developers. Every soundset in BG carries the referenced sound file in the test string in this format. It is especially useful for usually "no word" things, like "Hurt" and Dying" - the blank sound reference can be labled and searched for by the comment, like this: SAY DAMAGE ~[c-aran13]~ [c-aran13] sounds like "Ah!", but carries no text - and would get skipped in traification if it were traified as this: SAY DAMAGE ~~ [c-aran13] So, last part - [sOUNDREF]. Here, the .wav (or wavc, acm) that we will eventually place in the game override file is referenced. It can only be 8 characters long, and looking at other folk's mods there are lots of ways to label this stuff - BioWare had an odd numbering system that is consistent but does not match .cre ordering - so i am going to arbitrarily label these c-aran## and use the comment as the soundreference. The game won't care if there is no sound matching in the override - it will silently skip it. And then, if I get a soundset recorded and dropped into the override, it will be picked up when that particular string is called by the engine. Here is the blank template that can be applied for all BG2 engine games (not BG, etc - they have the same structure, but the .cre file has less of these enabled.) COPY_EXISTING ~myMod/myFolder/myCre.cre~ ~override/myCre.cre~ SAY NAME1 ~ << Full Name Of Creature >> ~ SAY NAME2 ~ << Short (tooltip hovering) Name Of Creature >> ~ SAY MORALE ~[sOUNDREF] << Morale Failure >> ~ [sOUNDREF] SAY HAPPY ~[sOUNDREF] << When Happy on .2da >> ~ [sOUNDREF] SAY UNHAPPY_ANNOYED ~[sOUNDREF] << When Annoyed on .2da >> ~ [sOUNDREF] SAY UNHAPPY_SERIOUS ~[sOUNDREF] << When Close to leaving on .2da >> ~ [sOUNDREF] SAY UNHAPPY_BREAKING_POINT ~[sOUNDREF] << When leaving on .2da >> ~ [sOUNDREF] SAY LEADER ~[sOUNDREF] << Moved to Leader >> ~ [sOUNDREF] SAY TIRED ~[sOUNDREF] << Tired >> ~ [sOUNDREF] SAY BORED ~[sOUNDREF] << Bored >> ~ [sOUNDREF] SAY BATTLE_CRY1 ~[sOUNDREF] << Attack Commanded >> ~ [sOUNDREF] SAY BATTLE_CRY2 ~[sOUNDREF] << Attack Commanded >> ~ [sOUNDREF] SAY BATTLE_CRY3 ~[sOUNDREF] << Attack Commanded >> ~ [sOUNDREF] SAY BATTLE_CRY4 ~[sOUNDREF] << Attack Commanded >> ~ [sOUNDREF] SAY DAMAGE ~[sOUNDREF] << Hit by other >> ~ [sOUNDREF] SAY DYING ~[sOUNDREF] << Toast >> ~ [sOUNDREF] SAY HURT ~[sOUNDREF] << Low HP >> ~ [sOUNDREF] SAY AREA_FOREST ~[sOUNDREF] << in area flagged with Forest bit >> ~ [sOUNDREF] SAY AREA_CITY ~[sOUNDREF] << in area flagged with City bit >> ~ [sOUNDREF] SAY AREA_DUNGEON ~[sOUNDREF] << in area flagged with Dungeon bit >> ~ [sOUNDREF] SAY AREA_DAY ~[sOUNDREF] << Daytime >> ~ [sOUNDREF] SAY AREA_NIGHT ~[sOUNDREF] << Nighttime >> ~ [sOUNDREF] SAY SELECT_COMMON1 ~[sOUNDREF] << Select the .cre >> ~ [sOUNDREF] SAY SELECT_COMMON2 ~[sOUNDREF] << Select the .cre >> ~ [sOUNDREF] SAY SELECT_COMMON3 ~[sOUNDREF] << Select the .cre >> ~ [sOUNDREF] SAY SELECT_COMMON4 ~[sOUNDREF] << Select the .cre >> ~ [sOUNDREF] SAY SELECT_COMMON5 ~[sOUNDREF] << Select the .cre >> ~ [sOUNDREF] SAY SELECT_COMMON6 ~[sOUNDREF] << Select the .cre >> ~ [sOUNDREF] SAY SELECT_ACTION1 ~[sOUNDREF] << Action >> ~ [sOUNDREF] SAY SELECT_ACTION2 ~[sOUNDREF] << Action >> ~ [sOUNDREF] SAY SELECT_ACTION3 ~[sOUNDREF] << Action >> ~ [sOUNDREF] SAY SELECT_ACTION4 ~[sOUNDREF] << Action >> ~ [sOUNDREF] SAY SELECT_ACTION5 ~[sOUNDREF] << Action >> ~ [sOUNDREF] SAY SELECT_ACTION6 ~[sOUNDREF] << Action >> ~ [sOUNDREF] SAY SELECT_ACTION7 ~[sOUNDREF] << Action >> ~ [sOUNDREF] SAY SELECT_RARE1 ~[sOUNDREF] << rare sound >> ~ [sOUNDREF] SAY SELECT_RARE2 ~[sOUNDREF] << rare sound >> ~ [sOUNDREF] SAY CRITICAL_HIT ~[sOUNDREF] << successful critical roll >> ~ [sOUNDREF] SAY CRITICAL_MISS ~[sOUNDREF] << dysmal critical roll >> ~ [sOUNDREF] SAY TARGET_IMMUNE ~[sOUNDREF] << Up the creek without a paddle >> ~ [sOUNDREF] SAY INVENTORY_FULL ~[sOUNDREF] << dropping items >> ~ [sOUNDREF] SAY SPELL_DISRUPTED ~[sOUNDREF] << hit wile casting >> ~ [sOUNDREF] SAY SET_A_TRAP ~[sOUNDREF] << successful trap set >> ~ [sOUNDREF] SAY HIDDEN_IN_SHADOWS ~[sOUNDREF] << successful attempt to hide >> ~ [sOUNDREF] SAY PICKED_POCKET ~[sOUNDREF] << successful pickpocket attempt >> ~ [sOUNDREF] SAY BIO ~[DUMMYREF] << character screen, no sound - text with blank sound reference >> ~ [bLANK] Well, here goes - in file aranw.tp2, right now empty, we toss in the set of references: COPY_EXISTING ~aranw/cre/c-aran.cre~ ~override/c-aran.cre~ SAY NAME1 ~Aran Whitehand~ SAY NAME2 ~Aran~ SAY MORALE ~[c-aran01] Helm's bones - RETREAT!~ [c-aran01] SAY HAPPY ~[c-aran02] Aye, 'tis a fair group. 'Tis better than a clear day on Trade Way.~ [c-aran02] SAY UNHAPPY_ANNOYED ~[c-aran03] By Tymorra's bright coin, you make some strange decisions. I don't rightly agree.~ [c-aran03] SAY UNHAPPY_SERIOUS ~[c-aran04] I gave up some serious opportunities to travel with you. Wasn't expectin' this kind of 'adventure'. Stop this, or I'll dissolve th' contract.~ [c-aran04] SAY UNHAPPY_BREAKING_POINT ~[c-aran05] I'll see you in the hands o' Kelemvor, but not one second before.~ [c-aran05] SAY LEADER ~[c-aran06] I'll lead, but 'tisn't my strong point.~ [c-aran06] SAY TIRED ~[c-aran07] Time to make camp. This gear is startin' to chafe.~ [c-aran07] SAY BORED ~[c-aran08] By Torm's Blood, are we beggin' to be ambushed? Standin' 'round with our swords up our...~ [c-aran08] SAY BATTLE_CRY1 ~[c-aran09] Archers to th' rear!~ [c-aran09] SAY BATTLE_CRY2 ~[c-aran10] Spellcasters die first!~ [c-aran10] SAY BATTLE_CRY3 ~[c-aran11] By Tymorra's Luck!~ [c-aran11] SAY BATTLE_CRY4 ~[c-aran12] By Sune's Bottom!~ [c-aran12] SAY DAMAGE ~[c-aran13]~ [c-aran13] //ah... SAY DYING ~[c-aran14]~ [c-aran14] //aarrgh... SAY HURT ~[c-aran15] Send the rest o' them to hell for me...~ [c-aran15] SAY AREA_FOREST ~[c-aran16] Need less trees, more road. Too many places for enemies to hide.~ [c-aran16] SAY AREA_CITY ~[c-aran17] Trade time! Some trade, then some drinkin', then some sleep... or more drinkin'.~ [c-aran17] SAY AREA_DUNGEON ~[c-aran18] I gave up comfortable inns an' guardin' simple caravans to poke around this dank musty place. I'm a bloody idiot.~ [c-aran18] SAY AREA_DAY ~[c-aran19] Lathander's fat arse is up at last. 'Bout time he shed some light around here.~ [c-aran19] SAY AREA_NIGHT ~[c-aran20] Bloody dark. Good for coverin' enemies an' ambushes. Someone light a torch, eh?~ [c-aran20] SAY SELECT_COMMON1 ~[c-aran21] Yep?~ [c-aran21] SAY SELECT_COMMON2 ~[c-aran22] What's to be done?~ [c-aran22] SAY SELECT_COMMON3 ~[c-aran23] Do I needs lead?~ [c-aran23] SAY SELECT_COMMON4 ~[c-aran24] Aye?~ [c-aran24] SAY SELECT_COMMON5 ~[c-aran25] Yes?~ [c-aran25] SAY SELECT_COMMON6 ~[c-aran26] I'm listenin'.~ [c-aran26] SAY SELECT_ACTION1 ~[c-aran27] Got it.~ [c-aran27] SAY SELECT_ACTION2 ~[c-aran28] Sune's sweet cheeks, I heard.~ [c-aran28] SAY SELECT_ACTION3 ~[c-aran29] On it.~ [c-aran29] SAY SELECT_ACTION4 ~[c-aran30] Understood~ [c-aran30] SAY SELECT_ACTION5 ~[c-aran31] Sune's Bosom, I'm movin', already!.~ [c-aran31] SAY SELECT_ACTION6 ~[c-aran32] Ilmater's Blood. I said I'd do it.~ [c-aran32] SAY SELECT_ACTION7 ~[c-aran33] Less talk, more action.~ [c-aran33] SAY SELECT_RARE1 ~[c-aran34] Watch where you point that thing.~ [c-aran34] SAY SELECT_RARE2 ~[c-aran35] Aye, I'm here.~ [c-aran35] SAY CRITICAL_HIT ~[c-aran36] Good.~ [c-aran36] SAY CRITICAL_MISS ~[c-aran37] Cyric's Black Heart!~ [c-aran37] SAY TARGET_IMMUNE ~[c-aran38] Bounced off. Damn.~ [c-aran38] SAY INVENTORY_FULL ~[c-aran39] I'm already carryin' more than my share.~ [c-aran39] SAY SPELL_DISRUPTED ~[c-aran40] Never did get that one right...~ [c-aran40] SAY SET_A_TRAP ~[c-aran41] Try that, you bugger.~ [c-aran41] SAY HIDDEN_IN_SHADOWS ~[c-aran42] Huntin'...~ [c-aran042] SAY PICKED_POCKET ~[c-aran043] Hey, look what I found.~ [c-aran43] SAY BIO ~[c-aranbio] When you ask him about his past, ARAN WHITEHAND grasps at a nearby twig to chew on. He explains that he grew up in a small independent family-run Coster plying the Trade Way and Coast Way from Waterdeep both north and south. Working as both Pen and Sword (scribe and fighting guard) made him attractive as an independent, since he could balance accounts, keep inventory, and still operate as a sellsword. A few campaigns with mercenary companies, a few battles, and lots of wandering about has brought him to Amn. He hastens to note that he is not the man to send in to negotiate anything, preferring to wield weapons rather than the spoken word - but if you want a trading contract written up, he's the right man for the job.~ [c-aran44] Later on, the sound references will be c-aran01.wav to c-aran43.wav, and weeks/months from now when we get there we can deal with how to set the darned thing up to install on Windows/OS X/Linux and play in-game. Ok, the faculty talk is back to reality-based stuff, like what we are doing with dress-code this year, and how the heck us male teacher-dudes are supposed to inform a 14 year old that her underwear is showing and not get arrested... and worse, how to not insult the mom that sent the girl to school in one of those new thigh-length baby-doll tops designed for use over a pair of shorts, sans shorts. I'd better pay attention again. I'll type this stuff up later, and post it up on an odd moment. Well, technically, if you are reading this, I already did.
  5. Set up here with inlined just for reporting here - the related .baf is an independent file. CODE ACTION_IF FILE_EXISTS_IN_GAME ~ar6111.are~ THEN BEGIN // ToB dialog file COMPILE ~aranw/dialog/c-arantobdialog.d~ // USING ~aranw/dialog/%s/setup.tra~ /* ToB Scripts */ COMPILE ~aranw/baf/c-aranx.baf~ COMPILE ~aranw/baf/c-arn25.baf~ // USING ~aranw/dialog/%s/setup.tra~ /* Epilogues : Script */ <<<<<ar6200_epilog_ext.baf /* Epilogue: PC Refused Godhood, Low Rep, regardless of friendship or romance status */ IF Global("StartEndBios","AR6200",1) InPartyAllowDead("c-aran") !Global("PlayerChoseEssence","GLOBAL",1) ReputationLT(Player1,10) Global("c-aranbio","GLOBAL",0) THEN RESPONSE #100 SetGlobal("c-aranbio","GLOBAL",1) TextScreen("C-ARANE0") SmallWait(1) Continue() END /* PC Refused Godhood, Friendship */ IF Global("StartEndBios","AR6200",1) InPartyAllowDead("c-aran") ReputationGT(Player1,9) !Global("PlayerChoseEssence","GLOBAL",1) !Global("c-aranrom","GLOBAL",2) Global("c-aranbio","GLOBAL",0) THEN RESPONSE #100 SetGlobal("c-aranbio","GLOBAL",1) TextScreen("C-ARANE2") SmallWait(1) Continue() END /* PC Refused Godhood, Romance */ IF Global("StartEndBios","AR6200",1) InPartyAllowDead("c-aran") ReputationGT(Player1,9) !Global("PlayerChoseEssence","GLOBAL",1) Global("c-aranrom","GLOBAL",2) Global("c-aranbio","GLOBAL",0) THEN RESPONSE #100 SetGlobal("c-aranbio","GLOBAL",1) TextScreen("C-ARANE3") SmallWait(1) Continue() END /* PC Became God, Friendship */ IF Global("StartEndBios","AR6200",1) InPartyAllowDead("c-aran") ReputationGT(Player1,9) Global("PlayerChoseEssence","GLOBAL",1) !Global("c-aranrom","GLOBAL",2) Global("c-aranbio","GLOBAL",0) THEN RESPONSE #100 SetGlobal("c-aranbio","GLOBAL",1) TextScreen("C-ARANE2") SmallWait(1) Continue() END /* PC Accepted Godhood, Romance, Good or Neutral */ IF Global("StartEndBios","AR6200",1) InPartyAllowDead("c-aran") Global("PlayerChoseEssence","GLOBAL",1) !GlobalGT("PPEvilChoices","GLOBAL",2) Global("c-aranrom","GLOBAL",2) Global("c-aranbio","GLOBAL",0) THEN RESPONSE #100 SetGlobal("c-aranbio","GLOBAL",1) TextScreen("C-ARANE4") SmallWait(1) Continue() END /* PC Accepted Godhood, Romance, Evil */ IF Global("StartEndBios","AR6200",1) InPartyAllowDead("c-aran") Global("PlayerChoseEssence","GLOBAL",1) GlobalGT("PPEvilChoices","GLOBAL",2) Global("c-aranrom","GLOBAL",2) Global("c-aranbio","GLOBAL",0) THEN RESPONSE #100 SetGlobal("c-aranbio","GLOBAL",1) TextScreen("C-ARANE5") SmallWait(1) Continue() END >>>>> EXTEND_TOP ~AR6200.bcs~ ~aranw/baf/ar6200_epilog_ext.baf~ /* Epilogue 1: Low Rep, regardless of friendship or romance status */ COPY ~aranw/media/blankepilogue.2da~ ~override/C-ARANE0.2da~ REPLACE_TEXTUALLY ~PORTRAIT~ ~C-ARANWL~ REPLACE 99999 ~The years of following in <CHARNAME>'s shadow took their toll on Aran, though not a single instance of him complaining is recorded. After a time, he withdrew from <PRO_HISHER> side, claiming injury, and set out for the wild coast of Maztican. Rejoining the Flaming Fist there gave him one last brush with glory - his name still graces the List of Brotherhood in the Flaming Fist training facilities there. Discovering new love with a Cleric of Sune Firehair, his sons and daughters grew up listening to bard's tales of the adventures of <CHARNAME> and <PRO_HISHER> followers, but their persistence in trying to get Aran to speak of those days went unanswered. Of <CHARNAME> <PRO_HIMHER>self, Aran refused to speak.~ /* PC Refused Godhood, Friendship */ COPY ~aranw/media/blankepilogue.2da~ ~override/C-ARANE1.2da~ REPLACE_TEXTUALLY ~PORTRAIT~ ~C-ARANWL~ REPLACE 99999 ~There are few places in history for followers and companions, and Aran was no exception. He traveled the breadth and depth of Toril in service to <CHARNAME>, often dispatched to assist other companions and causes dear to <CHARNAME>'s heart. Discovering new love with a Cleric of Sune Firehair, his sons and daughters grew up listening to bard's tales of the adventures of <CHARNAME> and <PRO_HISHER> followers. As Aran tells it, the greatest moment in Aran's life came when his eldest daughter took up the way of the sword and pledged herself to <CHARNAME>'s protection. The second best moment was when his new wife finally managed to teach him to speak with correct pronunciation (though she never did erase his swearing completely).~ /* PC Became God, Friendship */ COPY ~aranw/media/blankepilogue.2da~ ~override/C-ARANE2.2da~ REPLACE_TEXTUALLY ~PORTRAIT~ ~C-ARANWL~ REPLACE 99999 ~There are few places in history for followers and companions, and Aran was no exception. He traveled the breadth and depth of Toril in service to <CHARNAME>, often dispatched to assist other companions and causes dear to <CHARNAME>'s heart. Discovering new love with a Cleric of Sune Firehair, his sons and daughters grew up listening to bard's tales of the adventures of <CHARNAME> and <PRO_HISHER> followers. Though he never claimed worship of <CHARNAME>, his children relate that the new oaths and blasphemies used when they did something particularly right or particularly wrong seemed to indicate he was profoundly aware of <CHARNAME>'s godhood.~ /* PC Refused Godhood, Romance */ COPY ~aranw/media/blankepilogue.2da~ ~override/C-ARANE3.2da~ REPLACE_TEXTUALLY ~PORTRAIT~ ~C-ARANWL~ REPLACE 99999 ~Aran's depth of devotion to <CHARNAME> continued to grow, serving for the following years without question or complaint. Though the histories never indicate precisely the nature of their romance, there is no question of his loyalty. His final act of devotion came giving up his life in order to protect her. There are no reliable sources, but bard's tales say that his last words were "Blighted hells, <CHARNAME>... did we have to come Planewalkin' here?"~ /* PC Accepted Godhood, Romance, Good or Neutral */ COPY ~aranw/media/blankepilogue.2da~ ~override/C-ARANE4.2da~ REPLACE_TEXTUALLY ~PORTRAIT~ ~C-ARANWL~ REPLACE 99999 ~Aran's depth of devotion to <CHARNAME> continued to grow, serving as Her right hand on Faerun. His constant work furthering her causes helped develop a respectable following, and his willingness to travel anywhere in Her name led others to regard him as some sort of high priest... a notion that often was dispelled in a barrage of blasphemy and cursing. As the histories recount, his last days on this mortal plane were spent comfortably on Evermeet, attempting to arrange a joint project between the followers of <CHARNAME> and Hanali Celanil's Order of the Ruby Rose to commemorate what would have been <CHARNAME>'s eightieth mortal birth-day celebration.~ /* PC Accepted Godhood, Romance, Evil */ COPY ~aranw/media/blankepilogue.2da~ ~override/C-ARANE5.2da~ REPLACE_TEXTUALLY ~PORTRAIT~ ~C-ARANWL~ REPLACE 99999 ~Aran's depth of devotion to <CHARNAME> continued to grow, serving for the following years without question or complaint. His constant work furthering her causes eventually corrupted him completely, though later writings indicate growing fear and desolation as his mortality left him increasingly unable to serve <CHARNAME> in the manner she wished. It is a mark of their love that when a Paladin of Helm finally ended Aran's life, <CHARNAME> herself personally blasted the woman into nothingness, causing a minor skirmish in the wars of the gods.~ END /* of ToB installation */
  6. "Go on, wi' ye, then. I can write fine, but my speakin' is not so good, unless I really try. Here - let me give her a shot. Hrmmpf. 'Fair Ladies and Gentlemen, I bid you good morning. Please pay no attention to the minor inconveniences of last evening's disturbance. Our uninvited guests of yester-eve have passed on to other occupations, many of them involving plant fertilization. Our chef has prepared a special meal for your enjoyment; due to the small matter of our cookwagon being set ablaze last night while defending the camp, we have prevailed upon him to create a special morning repast of Frison Rodentia and Flatbread Carbona. This way, if you please, for your morning repast.' " *cough* "See, I can put it on, but it takes a mite o' effort, at that." Aran Whitehand is a human fighter and scribe for BG2, dual classable into either cleric or mage. Basically, a human utility player taken along for the friendship/cuddling. "Specials" include creation of minor scrolls through dialog and timer when in a party with another canon mage. Primarily a male friend who can grow into an extended courtship/romance, romanceable by female PCs, Aran has his own sense of humor and specializes in bringing others into the conversation. Functionally, Aran is a Companion mod. He has a minor optional quest with a new area, but comes with no special weapons or upgradeable items - his specialty is in interacting with the members of the party and adapting to situations. For him, the job is paramount, and his job is supporting the player. He is no stranger to having to carry out orders which bend morality, though he hates doing so. It should be noted that this mod is designed by adults for adults, and should not be installed unless you are comfortable with Faerunian swearing, occasional adult themes, and NC - 17 to R rated content in the Romance portion. Statistics immaterial these days, as folks can patch them how they want, but to start him off with some basics, a reorder based on Gavin. Berelinde did a bunch of soul searching and came up with a good 'common adventurer' set of stats, and why mess with success... power players can adjust him to build a Kensai/Mage dual class quickly enough "Warrior" configuration [player options on install, fighter] Strength 17 Dexterity 16 Constitution 15 Intelligence 12 Wisdom 13 Charisma 12 "Poet" configuration [player options on install, for Cleric dual class] Strength 16 Dexterity 13 Constitution 15 Intelligence 12 Wisdom 17 Charisma 12 "Thinker" configuration [player options on install, for Mage dual class] Strength 16 Dexterity 13 Constitution 15 Intelligence 17 Wisdom 12 Charisma 12 "Survivor" configuration [player options on install, for Thief dual class] Strength 16 Dexterity 17 Constitution 15 Intelligence 13 Wisdom 12 Charisma 12 Alignment Neutral Good. He thinks. "Bugger off, you sorry old jackass - I never said naught 'bout my alignment. Tymora's Bright Coin, you take liberties, you do. Tymora suits me fine. She even don't mind my speakin' so free, swearin' on th' gods, most times. At least, not yet." Friendship Aran will befriend any protagonist of any race or alignment,though how he reacts to situations will definitely let the player know how he feels. A rough - around - the - edges man, accustomed to mercenary service and caravan work both in front of and protecting the books, Aran hires on as a scribe or accountant as well as protection. He has learned to work with practically anyone not Drow, and chase any female within arms reach. His language is rough, his approach unrefined. And if you don't like it, he will gladly tell you exactly what your opinion is worth. Folks he would like and respect: Keldorn - Minsc - "Mad Minsc. That's not quite right, though. Make it Magnificent. I'd take him 'side me on a shield wall any day o' the week, 'giant space hampster' an' all." Ajantis - "Ajantis, laddie. There's fightin' fair, an' then there's winnin'. See, if you shine your armor like that, they knows you are an officer, an' the archers take you out first. Aint' no honor in dying before you can swing yer sword." Yoshimo - "Aye, then, deal th' cards again,. I'm down four tradebars an' three iron cresents, an' I want a chance to even the score, eh? While you are at it, tell me anouther tale o' Kara-Turan womenfolk, an' I'll buy th' next round." Angelo (Aran wasn't in BG, so he knows Angelo only by Flaming Fist contacts - "Hey, old man, lend some expertise here, eh? I'm havin' troubles wi' this parryin' position. Show me again, eh? A mug o' ale if you teach me..." Azure - "Now, she's a right fine lady, she is. Sharo's got one eye on me most o' th' time, though, so I'm not rightly sweettalkin' her any time soon." Alora - "Tymora's Smile, that halflin' lass is th' sprightliest an' happiest bein' I know! If <CHARNAME> ever drops me for good, me an' her, we should think o' teamin' up an' goin' on some adventures. She's right fun, she is!" Ninafer - "Pity she looks right through me, as if I'm not there. Bad taste in men, she has. But she's a right stalwort companion." Keto - "That lass is a right fine storyteller. She can drink me under th' table, sing like an angel, an' she's as smart as a whip. What's not to love? If <CHARNAME>'s not available or interested, now there be a lady what I would love to spark wi'. A real equal. I wonder what kind o' thinkg she might like as a courtin' gift?" Folks he would like and understand a little: Aerie - "Hey there. Come over here, girl. I have some drills you can do what's to strengthen your lips. Called 'kissin', I believe, among th' fair folk." Imoen - "You doin' all right, Imoen? You got someone troublin' you, let me know. Never met an argument I couldn't solve, thogh I do admit some were by fist an' sword instead o' words. Aww, who am I kiddin'. Who needs swattin'?" Nalia - "I don't quite understand you, Nalia. But you are a fine lookin' young women. You like dancin'?" Jaheira - "Awww, quit motherin' me, Jaheira. Here, I got these for you. They'll do fine in that stew you like to cook. Here, let me cut 'em up for you." Gavin - "Hey, watch it.... damn. Lathander's Golden Poop, Gavin, you gotta stop that backswing. Here, let's go work on it. I'll teach you to not knock me silly when I'm on the battle line with ye, and you argue wi' me about my immortal soul. Fair trade?" Sarah - "I don't blame ye for likin' the womenfolk, lassie; I sure as hells do! Say, next inn, let's go bar hoppin', an' I'll watch your back, you watch mine. If they swing your way, I steer 'em to ye, and vice versa. Sarah? Sarah? Mask's Left Hand, where'd that lassie disappear to..." Ainshai - "Sune's Slender Wrists, that one will drive a man to drink, she will. I suppose I should be keepin' my eyes on' th' business an' not on her, but the lass is right pretty. An' she can whup my arse on hand-to-hand. What's not to like?" Haldamir - "Helkaer Haldamir. Means 'icy one' in lammen Tel Quessir, that does. Good fighter, keeps to himself. I suppose you get that way if most o' th' folks you are fightin' alongside are younger than pre-apprentice age, an' will die out afore you blink your eyes a couple o' times. Never did understand why elves bothered wi' us mayflies." Alassa - Now why do some o' th' finest females come in evil, self-servin' packages? At least she's got spine an' gumption. But somehow, I don't rightly think she'd back me unless there was somethin' in it for her." Branwen - "That Tempus-lovin' girl is a sight for sore eyes, she is. I'd make a pass right quick, if every time I wandered by she didn't start all that serious discussion about dyin' an' goin' to fight alongside her god. I'm a mite more comfortable on this here plane o' existence, thank you very much. That whole dyin' thing, well, I tend to try to avoid it." Dynaheir - "Now there be a true lady. If we had more nobility like that, well, there'd be a sight more happy people in th' world. A little formal an' stuck on th' law, but what do you expect for a leader-type." Fade - "She be th' kind what sees what she wants, an' gets it. As long as I can keep th' goals coincidin' wi' hers, I get a great advantage. If our goals ever differ, I'd best watch my back. Wouldn't want to see nothin' sharp stickin' out o' it." Andrei - "A smart lad, just a raw recruit. A bit sheltered. But he listens to my stroies, an' takes pointers, an' all. I like him fine." Ghareth - "He tells some nice stories, he does. Good lad. Not much more to say, eh?" Hubelpot - "Corelon's Blade, he knows his food, he does. It's a right fine pleasure to watch him cook! Th' fightin, well... he's gettin' th' hang o' it. We are on a barter system, see. His recepies, my swordskills." Kelsey - "He knows merchant, he knows some fightin' ways - an' I do think he's a right fine party member. Th' boy's got some serious magic, he does. I just wish he weren't lookin' to spark wi' all th' available females. Puts us at odds, sometimes, on account o' that bein' *my* job!" Auren - "You look her direction, an' your eyes get stopped in their tracks, they do. In a good way, o' course. But she seems to like Nalia right propr, an' wears th' flower in th' other ear, so there's no use barkin' up that tree." Folks he would like alot and have absolutely no respect for at all: Bruce - "Barroom Bruce, named such on account o' I keep havin' to drag his sorry arse past, around, or out o' every single one we venture on. Good drinklin' companion until he gets drunk, an' not so much a fighter as an arrow-holder. I keep tellin' him that gettin' nekkid an' runnin' screamin' at kobolds weildin' short bows is not a valid battle tactic. O' course, he just tells me to sod off an' get us somethin' to drink." Kari - "Nice enough furrball, an' she's developin' some skills. Still scared o' her own shadow, though. She blushes about as much as I do, an' somehow I think th' gods have a nasty sense o' humor. Now where is she goin' to find someone to love her, eh? That just stinks. I spent way too long fendin' off kobold raids, an seein' them as scavenging animals. Not sure I can ever take her serious, as a party member an' all." Folks he would be neutral/unsure towards: Touchstone - "Not sure what to think, there. Nice enough on th' shield wall, an' strong. But I think either he's done taken one to many hits to th' head, or else he needs a decent tutor in common. Talks funny, he does. Hey, what are you laughin' at?" Callisto - "Nice enough to look at, good at her job. Wouldn't want to go carousin' wi' her, though. You don't rightly want to be around when she gets enraged, eh? There's no tellin' where her weapons get pointed." Nikitalleria - "Lathander's Light, what that girl can do wi' her fingers... But I am not sure she sees me th' same way. Somehow, I don't rightly think she likes me." Biddlekorak - "Not so bad for a shortaxe what's heard th' call. I get right tired o' all th' evangelical stories, but ghe don;t rightly get to talkative, so he's fine by me." Coran - "The boy's got charm, an' he's sharp, he is. But not much else goin' on, I think. I wouldn't trust him to hold my purse, or anythin' else, for that matter. Don't see what the ladies see in him." Iylos - "I suppose that insolent bastard knows his job. But th' backtalk, well, he could be a mite more respectful. <CHARNAME>'s been a force for a long time, an' here comes th' big bad investigator. If he plays fair an' backs <CHARNAME>, I might readjust my opinion. But if not, we will have to see if he really can stop a blade wi' his hand an live to tell the tale." Folks he would not like, but would respect and back up: Korgan - "Alright, ye black hearted Son o' Cyric, pass over those dice. You are cheatin' again." Valygar - "You are fine with a blade, friend, but magic is a powerful weapon. Why do you hate it when it'll save your arse nine times out o' ten?" Cernd - "Look, Cernd. Stop with all the talk, an' let's get down to brass tacks. What do we have to kill, an' how do we do it?" Saerileth - "Are you kiddin' me? A fifteen year old? I wouldn't kick her out o'... well, she's fine, I guess. But she don't know squat about livin', let alone fightin' proper. Tyr's Blasted Buttocks, don't send a child to do adult's work" Xan - "Doom an' gloom, all talk and no action. Shut up, ye pansy arsed jackass. Grab that Moonblade an' use it right proper, now - we got business to attend to. Don' understand quite a bit 'bout you, but you can kick arse when you've half a mind, for sure." Tashia - "Look, you are an eyeful, an armfull, an' just about the best sorceress I ever met. But when are you gonna get settled down an' take things serious? We aren't on a picnic, an' you already cost us pretty dear draggin' all that baggage onto th' party. Get with the program, lassie." Sarevok - "You made your play, an' lost. You backin' <CHARNAME> now? Fair enough. Just make sure you're on th' right side o' th' shield wall. I don't take kindly to triple crosses." Sebastian - "He be a slippery devil, that one. I 'm not rightly sure I have gotten a straight answer out o' him. Nine times out o' ten, I think he knows more than he lets on, eh?" Keen Kachiko. Keen mind, keen sword, keen tongue. Best to keep out o' all three's way." Folks he would dislike and not trust: Jan - "You talk too much, boyo. An' you keep blatherin' 'bout all those inventions. Ain't never seen a turnip soup worth eatin', neither. Keep out from underfoot, shorty." Amber - "You can take th' girl out o' the hells, but you can't take the hells out o' the girl. Only thing I can say for her is she aint' a drowess." Chloe - "I'm not sayin' nothin'. Anyone wi' divine blood's a damned sight scarier than findin' yourself penilless in Calimport. Well, exceptin' <CHARNAME>, o' course." Cassius - "Mask's Left Hand, the skald never shuts up, eh? Hey, don't be lookin' at me like that, Haer'Dalis! I shut up. Occasionally. When th' wind is right." Gozaloth - "That floatin' eyeball never did say what all that goo was. And I'm not rightly sure I want to know, anyways. Ten iron crescents says th' bastard gets skewered before th' second fight is over. An' whio do you think is gonna have to haul his goey stinkin' oozy bady back to a temple for to be healed? Well, it's not rightly likely to be <CHARNAME>, to be sure." Horace - "I still get th' shakes just lookin' at him reachin' for a weapon, straight through his own bony ribcage. I think I'm not likely to sleep at night wi' a skeleton for a companion. After all, what do you buy a skeleton to drink? Can't rightly buy him a round. That's just not right." Sheena - "Yeah, right. I know, you think I'm a racist son o' a bitch, but there be two bein's where you'd be right 100% o' th' time. I don't trust no dragon larger than a pseudodragon. An' wi' that... lady...well, th' language is all pretty an' correct, but I keep expectin' to wake up as th' main course for her when she goes all firedrake random-like." Folks he would hate: Tsjuatha - "Stay away from me, necromancer. Y'ain't natural. I respect the Tel'Quessirim, but anyone be dabblin' in the dark arts is not to be trusted." Viconia - "Move one step closer, Drowess, an' you are a dead woman. Sorry, a dead spider. Didn't mean no offence to women by associatin' you with 'em." Edwin - "Come on, Edwin, it ain't that bad. At least in that dress, your legs look good. In fact, that's about the only thing redeemin' about not kickin' you out in front o' the dragon, an' having you scout forrard." Anomen - "The worst of the officer class. Give me a crossbow, an' turn the other direction - I think there's gonna be an accidental 'friendly fire' incident." Faldorn - "Hey, wolf-girl. Get your smelly arse out where I can see you. An' keep your hands away from that spellpouch. Wouldn't want to have to disturb *your* balance, by loppin' off one o' your legs or arms, or such." Miriam - "Bane-blighted bloodsucker. I need to get me a new holy symbol an' some more garlic. An' a stake." SilverStar - "Keep that psychotic creature away from me, eh? Dangerous." Irenicus - "Bloody mad, an' evil. But I guess <CHARNAME> can handle him. As for me, well... when a dog goes mad, they try to cure him, an' if that don't rightly work, they put him down. This whole 'resurrect you opponent an' try an' redeem him' thing, that sounds way too complicated to me. Kill th' Bane-buggerin' bastard, disintegrate his head, toss his bones to th' wolves, then blow up th' wolves. An' blot his name out o' th' history books, just to make sure." Kindrek - "Bloody evil Cyric Buggerin' Bastard. Gotta keep both eyes open while I sleep, wi' him around, I do." Romance Aran will romance any female protagonist of any race save Drow, or any alignment. Again, how he reacts will definitely let the player understand his position. Good men fall for bad women as quickly as for good ones, and sometimes opposites really do attract. But romance on the trail is awkward, with a group of adventurers around, and the road to romance is both rocky and complicated. Exactly how does a strong man feel when his significant other turns out to be infinitely stronger than he, on so many levels? Can the two of you negotiate the attraction into something of an equal relationship, or is this destined to fail? When Aran Whitehand meets the party, he is looking for work having dropped from the rolls of a mercenary regiment.
  7. Is it possible? Back In The Day®, before the FlirtPack, Fade To Black™ handled most things. Even with Aerie getting pregnant, the before and after talks were very un-explicit. From BAERIE, CODE IF ~~ THEN BEGIN 356 // from: 351.1 SAY ~Please, <CHARNAME>...the time is right and I must speak to you of this.~ /* #31623 */ IF ~~ THEN REPLY ~(sigh) Fine. What is it you wish?~ /* #31624 */ GOTO 352 IF ~~ THEN REPLY ~It will have to wait, Aerie. Good night.~ /* #31625 */ GOTO 357 END IF ~~ THEN BEGIN 357 // from: 356.1 SAY ~I...I see my wishes have no bearing on your moods. As...as you wish. I will sleep by myself tonight and from here on. Good night, <CHARNAME>.~ /* #31627 */ IF ~~ THEN DO ~SetGlobal("AerieRomanceActive","GLOBAL",3) RestParty()~ EXIT END IF ~~ THEN BEGIN 358 // from: 355.0 SAY ~C-come close to me, then, <CHARNAME>. Let me feel your hands on my skin...let us lay together so I may experience your love and become a woman at last...~ /* #31632 */ IF ~~ THEN DO ~RestParty()~ EXIT END IF ~~ THEN BEGIN 359 // from: 355.1 SAY ~I...don't know what love is, <CHARNAME>. But...maybe it would be better to wait until all of this is over. The thought of laying with a man frightens me a little, I must admit...~ /* #31633 */ IF ~~ THEN GOTO 360 END IF ~~ THEN BEGIN 360 // from: 359.0 SAY ~Stay with me for the night, then, <CHARNAME>, and hold me to you. I...don't want to be alone, and I so desperately need to be near you...~ /* #31634 */ IF ~~ THEN REPLY ~As you wish...that I am more than willing to do.~ /* #31636 */ DO ~SetGlobal("SleptAerie","GLOBAL",0)~ GOTO 363 IF ~~ THEN REPLY ~Forget it, Aerie...I'm not interested in someone who is so needy.~ /* #31637 */ GOTO 361 END IF ~~ THEN BEGIN 361 // from: 360.1 355.3 355.2 SAY ~So you send me away with...with your cruel words. I...I thought I loved you...and yet you cut me open without hesitation. I...should have known better, I suppose.~ /* #31679 */ IF ~~ THEN GOTO 362 END IF ~~ THEN BEGIN 362 // from: 361.0 SAY ~Very well, <CHARNAME>...I shall go and sleep by myself and console myself that it is better that I never allowed one such as you to touch me. I...shall not trouble you further.~ /* #31680 */ IF ~~ THEN DO ~SetGlobal("AerieRomanceActive","GLOBAL",3) RestParty()~ EXIT END IF ~~ THEN BEGIN 363 // from: 360.0 SAY ~You are sweet to be so patient with me, <CHARNAME>. Let us sleep, then.~ /* #31684 */ IF ~~ THEN DO ~SetGlobal("SleptAerie","GLOBAL",0) RestParty()~ EXIT END IF WEIGHT #23 ~Global("LoveTalk","LOCALS",48) Global("SleptAerie","GLOBAL",0) !StateCheck(Player1,STATE_SLEEPING)~ THEN BEGIN 364 // from: SAY ~So...you are awake at last? I have been...watching you sleep for some time, now. It calms me, watching you...and it gave me time to think.~ [AERIEB1] /* #31685 */ IF ~~ THEN GOTO 365 END IF ~~ THEN BEGIN 365 // from: 364.0 SAY ~I've been...thinking about last night. You were right, of course...it isn't the right time to experience love when we are always in danger of perishing.~ /* #31686 */ IF ~~ THEN GOTO 366 END IF ~~ THEN BEGIN 366 // from: 365.0 SAY ~I was so eager to experience everything new that I...did not think. Thank you for respecting me. I...I love you...and I want our first time together to be something special.~ /* #31687 */ IF ~~ THEN REPLY ~I love you, too, Aerie...and I agree.~ /* #31688 */ GOTO 367 IF ~~ THEN REPLY ~Yes, well...let's just continue our travels, shall we?~ /* #31689 */ GOTO 368 IF ~~ THEN REPLY ~You're out of your mind, Aerie.~ /* #31690 */ GOTO 370 END IF ~~ THEN BEGIN 367 // from: 366.0 SAY ~Let us go, then and find this Irenicus. Once this is over, I want to experience everything with you. I...I never thought I would find something... better than flying. Thank you.~ /* #31691 */ IF ~~ THEN DO ~SetGlobal("AerieRomanceActive","GLOBAL",2)~ EXIT END IF ~~ THEN BEGIN 368 // from: 366.1 SAY ~Of course, <CHARNAME>. Let's...finish your quest, and then we can see where we stand. And where we can go from there, yes?~ /* #31692 */ IF ~~ THEN GOTO 369 END IF ~~ THEN BEGIN 369 // from: 368.0 SAY ~In...in case I die...or in case we part ways...I just wanted to tell you, <CHARNAME>, that I never thought I would find something better than flying. But I have...and thank you.~ /* #31693 */ IF ~~ THEN DO ~SetGlobal("AerieRomanceActive","GLOBAL",2)~ EXIT END IF ~~ THEN BEGIN 370 // from: 366.2 SAY ~I am? I had thought you had cared for me. But...perhaps you kept me away because...because you did not care enough for me. I had not thought of that.~ /* #31694 */ IF ~~ THEN GOTO 371 END IF ~~ THEN BEGIN 371 // from: 370.0 SAY ~I am too quick to assume, <CHARNAME>...and I have much to learn. I wish you would have been gentler with me, but you have taught me much, and I thank you.~ /* #31695 */ IF ~~ THEN GOTO 372 END IF ~~ THEN BEGIN 372 // from: 371.0 SAY ~Let us just...continue on your quest. I shall trouble you no further...and will look to further my experience elsewhere.~ /* #31696 */ IF ~~ THEN DO ~SetGlobal("AerieRomanceActive","GLOBAL",3)~ EXIT END IF WEIGHT #24 ~Global("LoveTalk","LOCALS",48) Global("SleptAerie","GLOBAL",1) !StateCheck(Player1,STATE_SLEEPING)~ THEN BEGIN 373 // from: SAY ~So...you are awake at last? I have been...watching you sleep for some time, now. It calms me, watching you...and it gave me time to think.~ /* #31697 */ IF ~~ THEN GOTO 374 END IF ~~ THEN BEGIN 374 // from: 373.0 SAY ~You...have made a woman out of me, <CHARNAME>. I love you more deeply than I can say and can only thank you for what you have done for me.~ /* #31698 */ IF ~~ THEN GOTO 375 END IF ~~ THEN BEGIN 375 // from: 374.0 SAY ~But...at the same time...I cannot help but think that things need to be slowed. I am so full of emotion...I want to experience too much and am doing it all too quickly.~ /* #31699 */ IF ~~ THEN GOTO 376 END IF ~~ THEN BEGIN 376 // from: 375.0 SAY ~I feel overbalanced, <CHARNAME>. Quayle would never approve of this, I think.~ /* #31700 */ IF ~~ THEN GOTO 377 END IF ~~ THEN BEGIN 377 // from: 376.0 SAY ~My heart clenches at the thought, but we must stop ourselves from going down this path. I need to...to find out more about myself...before I can attach myself to another. I...hope you understand.~ /* #31701 */ IF ~~ THEN REPLY ~I do...but maybe you need to find your own way, Aerie.~ /* #31703 */ GOTO 378 IF ~~ THEN REPLY ~If that's what you want, there is nothing I can do.~ /* #31704 */ GOTO 379 IF ~~ THEN REPLY ~No, Aerie! I love you!~ /* #31705 */ GOTO 381 IF ~~ THEN REPLY ~No, I don't understand! Why are you doing this?!~ /* #31707 */ GOTO 383 END IF ~~ THEN BEGIN 378 // from: 385.0 377.0 SAY ~If...if that is what you think I should do...then perhaps I must. I...I shall miss you, <CHARNAME>. I shall always hold you dear in my heart.~ /* #31712 */ IF ~~ THEN GOTO 382 END IF ~~ THEN BEGIN 379 // from: 377.1 SAY ~Oh, please don't be sad, <CHARNAME>. I shall remain with you and fight by your side... this quest of yours is too important for me not to help you with it.~ /* #31717 */ IF ~~ THEN GOTO 413 END IF ~~ THEN BEGIN 380 // from: 413.0 SAY ~But, come...a new day awaits us, <CHARNAME>. Let us...let us see what it holds.~ /* #31720 */ IF ~~ THEN DO ~SetGlobal("AerieRomanceActive","GLOBAL",2)~ EXIT END With some variations, not much else happens in any of the other Canonical BioWare™ crew. We find more explicit depictions of activity in the chaste writings in those Vampire stories currently popular among the youth - or Panshin's coming of age story, or actually network TV in the US. Then, modding happened, and even early romances had more direct PG13 content, or more. The list and variations are huge now in the community, with decidedly mature content available (by mature, we are defining it the US way: you can kill thousands of critters in horrible ways, steal, beat people up, spy, break laws, even show body parts in various states of dismemberment and corruption - but no showing of naked body parts of any kind other than men's bare chests and women's bare backs from the waist to the neck, and no description of what happens when the aforesaid body parts start doing what comes naturally in any way, shape, or form. Now, the debate on this is fun, and has been done to death. I would ask that we drop the whole "discuss whether or not this is ok to death" part, and focus on the player experience. For this topic, we are looking at being as player-friendly as possible. We want the folks who are happier with the level of the posts in the flirting and Moonlit Swordfight threads (though I have some question in my mind if that gets a bit too graphic in places), pushing the boundaries of the original game without wandering into Viconia Bathing Flirts or Romantic Encounters. What we are looking at is a way of not breaking in-game immersion, but at the same time letting folks who want Romantic Encounters-level romance to be a part of their gaming experience. We have some choices, the most obvious being "don't write stuff that goes farther than QUOTE ~[PC] My love, spend the night with me. Be mine, and I will be yours.~ ~[ARAN] Aye, I would gladly be wi' you, now, an' any time you want. I done fallen for you, an' I am yours.~ RestParty() ~[ARAN] Now, sleepyhead, wake up. That were a wonderful, beautiful night.~ ~[PC] Yes, it was. ~[PC] No, it wasn't. ~[PC] Perhaps. With some training, you will become a wonderful lover. ~[PC] You have made a woman out of me. ~[PC] I love you. ~[PC] I wonder what all the fuiss is about. It was ok, but awkward. " OK, possible, well done in several mods, and it avoids the question of appropriate player choice by giving no options on the level of intensity or graphic nature of the game, but allowing some responses on the PC's part that will be pretty obvious to those with experience. And as it is a mature game and Aran is a mature mod, we can figure that it matches NCIS or regular afternoon TV, as long as the watcher is not watching DeGrassi Junior High or other fare that explores pretty heavy stuff - or watches a soap opera - basically, we can say "Hey. This is ok for most players of the game to watch". Of course, that would be too easy. While writing stuff for RE was embarrasing at times, and definitely way beyond my comfort level, it was fun. And exciting. And probably the toughest challenge I have ever had writing. To be blunt, without help from really, really good friends, it would have never, ever happened. But that fun factor comes back in - we know from modern mature games and mods that blend over into more explicit content, folks are interested. So, I want to give it a shot with Aran, too. But how do I support moving to the next level without making folks who are not interested in having more risque materials suddenly find themselves in a territory that they don't like? Well, option 2 is to make a separate component that adds more mature stuff. That way, at install, a player can choose to play a more vanilla-ice-cream game, push the envelope with more risky-sounding responses, and not worry. A player who would much prefer to play about figuring which part of Aran should be painted with aforesaid vanilla-ice-cream, well, they add in that content. This is the Romantic Encounters solution - if it is not to your taste, don't install it, and you never have to be worried. This, by the way, is the best one from a general coding perspective. You can always set a talk to supercede another, or change a variable that can be evaluated, and add it on in another layer - a quick example, kept PG13 for decorum and modesty, CODE IF ~Global("MyLoveTalk","GLOBAL",14)~ THEN BEGIN lessexplicitstate SAY ~[ARAN] (His lips are warm and alive, caressing yours gently.)~ ++ ~[PC] Oh Aran... hold me closer. I want to be with you tonight, warm in your arms.~ DO ~SetGlobal("MyLoveTalk","GLOBAL",15)~ EXIT END Global("geivememoredescription","GLOBAL",0) Then, in your "allow more adult interaction/depiction" component addition, either set a cutscene to run or add options using EXTEND_BOTTOM on your states (tricky, but possible with STATE_WHICH_SAYS), or simply add a greater weight to the more explicit talk - CODE IF WEIGHT #-1 ~Global("MyLoveTalk","GLOBAL",14)~ THEN BEGIN moreexplicitstate SAY ~[ARAN] (His lips are warm and alive, caressing yours gently.)~ ++ ~[PC] Oh Aran... I happen to have some vanilla ice cream... shall we see how it melts?~ DO ~SetGlobal("MyLoveTalk","GLOBAL",15)~ EXIT END Since the state added afterwards advances the variable too, and it will now run at the top of the stack, you should be able to basically depreciate your old state with the new state. But that means a separate component, and no chance for a player to change their mind mid-stream. Given that folks do mega-installs these days, that can be a serious pain. So, how else can we do it? Well, berelinde came up with a really great suggestion - QUOTE (berelinde) You script a "flirt" to fire before any of these become available where Aran says something bordering on, but not quite, NC17. Give the PC two reply options, and only two reply options "I don't appreciate that kind of language." and "I like a man who speaks his mind... especially if it's naughty." Variable set and no immersion broken in the process. You use that variable as a trigger for the mature content. Side note - get a modding partner with whom to bounce ideas. It is a great, great experience. Now, I am having trouble with getting the message across strictly in-game, but playing with this idea (which means I can write things more naturally, then basically shut down reply options or specific floating talks or even entire branches of dialog, or even better, the player can choose at any point in time to enable or re-enable or shut down stuff that is not to their taste) - like the Anomen Romance conflict runs : For PID enabling/disabling, CODE + ~Gender(Player1,FEMALE) OR(2) Global("c-aranrom","GLOBAL",1) Global("c-aranrom","GLOBAL",2) Global("c-aranmature","GLOBAL",0)~ + ~[PC] I like it when you flirt with me, especially when it is naughty. You should be more explicit.~ + DO ~SetGlobal("c-aranmature","GLOBAL",1)~ + c-aranmature_content // replaced with # when integrated + ~Gender(Player1,FEMALE) OR(2) Global("c-aranrom","GLOBAL",1) Global("c-aranrom","GLOBAL",2) Global("c-aranmature","GLOBAL",1)~ + ~[PC] I like it when you leave much of our flirting discreet.~ + DO ~SetGlobal("c-aranmature","GLOBAL",0)~ + c-aranregular_content // replaced with # when integrated IF ~~ c-aranmature_content SAY ~[ARAN] I think I understand, eh? I may take some liberties or not, but either way you won't mind some o' my language bein' a bit graphic.~ IF ~~ THEN EXIT END IF ~~ c-aranregular_content SAY ~[ARAN] I think I understand, eh? I may take some liberties or not, but either way you want to leave more to your imagination, rather than me spell it out for you.~ IF ~~ THEN EXIT END No flirt starts before FriendTalk 3, so after FriendTalk2, some conversation to set this up first. This is where it gets tricky - and where suggestions are welcome. Warning - if they are posted here, they are likely to be shamelessly integrated The challenge is to find a way of making it clear to the player in a flirt that: 1. by choosing reply 1, the FadeToBlack™ is there, and there will be as close to BioWare™ as possible. That means some of the Moonlight Swrdfight and some of the already in-place flirts will be screened out. 2. by choosing reply 2, the FadeToBlack™ is there, because I would stink at writing pron, but materials at the level of the more adult encounters in RE (Chanelle, Renal, Sheri, etc.) would become available along romance pathways. [by the way, if you are interested in assisting with both feedback and spell/grammar/proofing, I am on target to have the first full Bath At An Inn scene ready tomorrow evening. I am a chicken, and do not feel comfortable with posting things in this open forum that go as far as this particular bath interaction does, so please PM me if you are interested in assisting. Brutal, honest feedback is welcome, but don't ask if you have found RE makes you uncomfortable. By the time the mod is in alpha, we will have a way of making sure you don't have to read it if you don't want to, but in its current state I can't shield stuff.]
  8. The "post joined", or "You kicked me out already" dialog, run from c-aranp.dlg, is a nice quick file to code and write. It is the easiest of all, mostly because you can pick up anyone's mod and rewrite it as you see fit. The structure is likely to be the same. [state 0] first evaluated, takes precedence over other states. If this one is always true, the rest of the file is meaningless - nothing below this point will get evaluated. Let's copy everyone else and put the most general "on- off" switch for Aran possible, the Alignment Test. We want to put a state in that allows Aran to take off forever if he has been kicked out of the party, and the HAPPY.2da alignment table says his alignment would be disgusted and leave. Aran will stick with the job and remain loyal to PC even in the face of heavy evil, but if PC is not loyal in return he has time to think about things and revise. He can't keep up the internal rationalizations and "I'm just doin' my job" that has allowed normal people to do horrible things; he will have been given a choice to get out of the situation. So the standard "HappinessLT" block at the top of the file, that will kick in if the .2da file says "yuck". For neutral good, from the iesdp, a reputation of 1 gives [(good) -300 | (neutral) -300 | (evil) 80], so basically, this state will fire if Aran is kicked out of the party and the party rep is 1. Perhaps I'll go back later and up that number, but right now let's play with this in place. Of course, there are mods that realign this, including BG2 Tweak Pack, but we don't mind - installing one of the "stay forevar" tweaks will work fine because those modify the HAPPTY.2da table of reactions, so the condition isn't met. IF ~HappinessLT(Myself,-290)~ c-aranrepmismatch SAY ~No contracts with you. Sune's Sweet Buttocks, you are a pain in my arse.~ [C-ARAN01] IF ~~ THEN DO ~EscapeAreaDestroy()~ EXIT END OK, it this triggers, he wanders off to the nearest exit and vanishes in a puff of incandescent logic. Speaking of logic, logic says that if an NPC is in your party, the game thinks he or she is in your party. Funny thing, though - logic also states that teachers have great influence over the future and should therefore be paid well, and that ain't true, so go figure. In the BG2 engine, you "reform" [restructure? downsize?] your party, which kicks the NPC out of your party with no dialog and *then* the NPC comes up to you and has the whole "hey, are we still hangin', or do I need to update my resume?". So the next two states deal with those possibilities - Player just reformed the party and NPC wants directions (either to be let back in, hang out somewhere, or leave FOREVAR to go post on another forum), or 2. The NPC has been hanging out somewhere and the player has wandered back to pick him/her up. Now, there is a more "logical" in-game way of doing the kicking-out, via dialog, but it will have to wait for awhile. You can add states like this to the Player-Initiated-Dialog state, a big long single state with a zillion replies that becomes true when everything else has been ruled out and it is the only thing that can be triggered. That works from the Joined dialog file, so the player clicks on the NPC to talk, and one of the options can be "get lost, you hoser". But PIDs are way cool and crazy and need their own topic, or they start turning the party into the kind where jello shots are de rigeur and folks are swinging from the chandeliers. Besides, these things have to be added to this dialog anyways, for when folks reform their party (it still sounds so ominous, like Bolsheviks 'reforming' the Czar and his family into little teeny fragments... darn. Off-topic again. Let's move on to state 1.)
  9. in F:\TEST1\aranw\baf\c-arn25d.baf CODE /* NightTalk: Stars, Constancy Thereof */ IF Global("c-tobnightone","GLOBAL",0) OR(2) Global("c-arangoaded","GLOBAL",0) Global("c-arangoaded","GLOBAL",6) !Global("c-arannightvisit","GLOBAL",1) TimeofDay(NIGHT) AreaType(OUTDOOR) InParty(Myself) !StateCheck(Player1,CD_STATE_NOTVALID) !StateCheck(Myself,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal("c-tobnightone","GLOBAL",1) StartDialogueNoSet(Player1) END in F:\TEST1\aranw\dialog\c-arantobdialog.d CODE /* NightTalk: Stars, Constancy Thereof */ IF ~Global("c-tobnightone","GLOBAL",1)~ THEN BEGIN a4249 SAY ~[ARAN] Now that be a sight. Those stars seem to cover th' whole sky, or what we can see o' it.~ ++ ~[PC] I prefer to keep my eyes focused nearer to reality. The only good use for starlight is exposing your enemies when they are stupid enough to move across open terrain without cover.~ + a4250 ++ ~[PC] They do have a way of reminding us that some things never change. All we do, all we attain, all we suffer.... they just keep shining, completely untouched.~ + a4251 ++ ~[PC] They are very cold. Almost eyes, watching us, judging us, evaluating us.~ + a4251 ++ ~[PC] I think they are like small campfires, a host of ones like ours, warm in the night.~ + a4251 + ~Gender(Player1,MALE)~ + ~[PC] I think they seem like they are mocking me. Kind of like women, all shiny and sparkley, yet cold and distant.~ + a4251 + ~GlobalGT("c-aranrom","GLOBAL",0) GlobalLT("c-aranrom","GLOBAL",3) Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ + ~[PC] They seem... romantic, somehow. Always there, no matter what.~ + a4251 + ~RandomNum(5,5)~ + ~[PC] They certainly have one thing going for them. They don't stand around gawking, wasting time, and blathering.~ + a3188 /* c-aranshutup55 */ + ~RandomNum(5,4)~ + ~[PC] They certainly have one thing going for them. They don't stand around gawking, wasting time, and blathering.~ + a3189 /* c-aranshutup56 */ + ~RandomNum(5,3)~ + ~[PC] They certainly have one thing going for them. They don't stand around gawking, wasting time, and blathering.~ + a3190 /* c-aranshutup57 */ + ~RandomNum(5,2)~ + ~[PC] They certainly have one thing going for them. They don't stand around gawking, wasting time, and blathering.~ + a3191 /* c-aranshutup58 */ + ~RandomNum(5,1)~ + ~[PC] They certainly have one thing going for them. They don't stand around gawking, wasting time, and blathering.~ + a3192 /* c-aranshutup59 */ END IF ~~ a4250 SAY ~[ARAN] Aye. Spoken like a true warrior. Although all killin' an' no imagination probably leaves things a mite bit dull, don't you think?~ ++ ~[PC] I don't know. There are so many fascinating and different ways to kill. Why, just think of all the possibilities acid has for creative application.~ + a4252 ++ ~[PC] True enough. I suppose a little time to see the sights is not a bad way to relax.~ + a4251 + ~OR(3) Global("c-aranrom","GLOBAL",0) Global("c-aranrom","GLOBAL",3) HasItemEquiped("belt05",Player1)~ + ~[PC] I have plenty of other thoughts to occupy my mind right now. Some of them are rather unpleasant, but so far we have come out on top. I will sleep as well as can be expected.~ + a4254 + ~GlobalGT("c-aranrom","GLOBAL",0) GlobalLT("c-aranrom","GLOBAL",3) Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ + ~[PC] I have plenty of other thoughts to occupy my mind right now. Some of them are rather unpleasant, but so far we have come out on top. I will sleep as well as can be expected.~ + a4253 + ~GlobalGT("c-aranrom","GLOBAL",0) GlobalLT("c-aranrom","GLOBAL",3) Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ + ~[PC] You might be right. Sometimes it is nice just to sit and think.~ + a4253 + ~RandomNum(5,5)~ + ~[PC] Given the choice between watching the stars, listening to you, and committing ritual suicide, I am pretty sure ritual suicide comes out a winner.~ + a3188 /* c-aranshutup55 */ + ~RandomNum(5,4)~ + ~[PC] Given the choice between watching the stars, listening to you, and committing ritual suicide, I am pretty sure ritual suicide comes out a winner.~ + a3189 /* c-aranshutup56 */ + ~RandomNum(5,3)~ + ~[PC] Given the choice between watching the stars, listening to you, and committing ritual suicide, I am pretty sure ritual suicide comes out a winner.~ + a3190 /* c-aranshutup57 */ + ~RandomNum(5,2)~ + ~[PC] Given the choice between watching the stars, listening to you, and committing ritual suicide, I am pretty sure ritual suicide comes out a winner.~ + a3191 /* c-aranshutup58 */ + ~RandomNum(5,1)~ + ~[PC] Given the choice between watching the stars, listening to you, and committing ritual suicide, I am pretty sure ritual suicide comes out a winner.~ + a3192 /* c-aranshutup59 */ END IF ~~ a4251 SAY ~[ARAN] They sure be beautiful. So powerful, shinin' down like that. An' so far out o' reach.~ IF ~OR(4) Global("c-aranrom","GLOBAL",0) Global("c-aranrom","GLOBAL",3) HasItemEquiped("belt05",Player1) Gender(Player1,MALE)~ THEN GOTO a4254 IF ~GlobalGT("c-aranrom","GLOBAL",0) GlobalLT("c-aranrom","GLOBAL",3) Gender(Player1,FEMALE) !HasItemEquiped("belt05",Player1)~ THEN GOTO a4253 END IF ~~ a4253 SAY ~[ARAN] You know, you look right fine lit by stars an' th' moon. I can guess why there be so many worshipers o' Selune.~ ++ ~[PC] I think I want to kiss you.~ + a3915 /* FEMALE_MOON_LEADS */ ++ ~[PC] (Impulsively clasp both hands around one of his, pulling it towards you.)~ + a3916 /* ARAN_MOON_LEADS */ ++ ~[PC] I... I am tired. Have a good night, Aran.~ + a4254 ++ ~[PC] I am not Selune. But you could worship me if you like.~ + a3918 /* ARAN_MOON_MIND */ ++ ~[PC] Hey, easy on the compliments. Friends, remember? You are starting to sound all romantic and weepy.~ + a3919 /* MOON_JUST_FRIENDS */ ++ ~[PC] Talking with you here is a nice rest from all of the day's cares. But then again, lots of things besides talking can happen beneath those little twinkling lights.~ + a3918 /* ARAN_MOON_MIND */ ++ ~[PC] You are so... stupid. And pushy. Go away and leave me in peace.~ + a3866 /* FIGHT_EXIT */ END IF ~~ a4252 SAY ~[ARAN] Talos' an' Teos' Twisted Temper... Thanks a bunch, eh? Now I'll be havin' nightmares all night.~ IF ~~ THEN GOTO a4254 END IF ~~ a4253 SAY ~[ARAN] You know, you look right fine lit by stars an' th' moon. I can guess why there be so many worshipers o' Selune.~ ++ ~[PC] I think I want to kiss you.~ + a3915 /* FEMALE_MOON_LEADS */ ++ ~[PC] (Impulsively clasp both hands around one of his, pulling it towards you.)~ + a3916 /* ARAN_MOON_LEADS */ ++ ~[PC] I... I am tired. Have a good night, Aran.~ + a4254 ++ ~[PC] I am not Selune. But you could worship me if you like.~ + a3918 /* ARAN_MOON_MIND */ ++ ~[PC] Hey, easy on the compliments. Friends, remember? You are starting to sound all romantic and weepy.~ + a3919 /* MOON_JUST_FRIENDS */ ++ ~[PC] Talking with you here is a nice rest from all of the day's cares. But then again, lots of things besides talking can happen beneath those little twinkling lights.~ + a3918 /* ARAN_MOON_MIND */ ++ ~[PC] You are so... stupid. And pushy. Go away and leave me in peace.~ + a3866 /* FIGHT_EXIT */ END IF ~~ a4254 SAY ~[ARAN] Well, I'm off. Got th' first watch anyhow. Have a dream or two for me.~ IF ~~ THEN EXIT END Anything in /* */ with existing numbers ties back into the negotiation between Aran and PC for doing stuff found in adult content.
  10. Bogstandard BioWare™ copying for the setup, but then we go slightly off the usual track for the cutscene and talk. For your own research, check LOVEDONE .d's, and HGWRA01's jumping around between all the possibles. CODE /* Master Wraith Talk. */ /* At top of c-arantobdialog.d, */ BEGIN C-ARWRTH Reminder to self - beg/bribe Peachplums for another picture... spectral fighter. CODE /* In .tp2, creature C-ARWRTH */ COPY ~aranw/portraits/peachplums_deadman.bmp~ ~override/c-aw01p3.bmp~ // Dead Mercenary portrait (Peachplums) COPY_EXISTING ~kpchap01.cre~ ~override/c-aw01p3.cre~ SAY NAME1 ~Stedd~ SAY NAME2 ~Stedd~ LAUNCH_PATCH_MACRO ~support_cre_cleanup~ */ in c-arantobdialog.d, CODE /* break in and set up the talk if in a romance */ EXTEND_BOTTOM HGWRA01 18 IF ~Global("c-aranrom","GLOBAL",2) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN DO ~SetGlobal("c-aranlovedone","GLOBAL",6)~ EXTERN HGWRA01 c_wraith_trashtalk END /* Create the EXTERN, as we want only one of these to play */ CHAIN HGWRA01 c_wraith_trashtalk ~What of the inevitable pain you must cause to the one you love? This man, the one whom you call "Aran".~ == C-ARN25J ~[ARAN] What in Cyric's Blighted Breath do this windbag be talkin' about? You be in control o' th' bloodurges...~ EXTERN HGWRA01 24 /* draw off the romance-triggered sob stories to a new one */ EXTEND_BOTTOM HGWRA01 24 IF ~Global("c-aranrom","GLOBAL",2)~ DO ~ClearAllActions() StartCutSceneMode() StartCutScene("C-ACT218")~ EXIT END /* start the waterworks */ CHAIN IF ~NumTimesTalkedTo(0)~ THEN C-ARWRTH c_start_wraith_talk ~[C-ARWRTH] Aran? Whitehand, light a torch or somethin'. It is as dark as hells here...~ [C-ARW001] == C-ARN25J ~[ARAN] What in th' nine hells... you be dead an' buried. Someone get me some holy water right quick, eh? You were no good when you was alive, an' I don't rightly want to see you now you be dead.~ [ARAN_SOUND_HERE] == C-ARWRTH ~[C-ARWRTH] You have come up in th' world. Who is th' wench?~ [C-ARW002] == C-ARN25J ~[ARAN] Keep a guard on your tongue, bastard.~ [ARAN_SOUND_HERE] == C-ARWRTH ~[C-ARWRTH] Oho, a new lover? Stedd sees all now, Whitehand. You sorry weakling, you actually think you can keep her? Does she know?~ [C-ARW003] == C-ARN25J ~[ARAN] Shut your filthy mouth.~ [ARAN_SOUND_HERE] == C-ARWRTH ~[C-ARWRTH] Hah! She doesn't know! You remember, don't you? Th' smell of flesh burnin', th' screams of th' children...~ [C-ARW004] == C-ARN25J ~[ARAN] I did what you ordered. Bane Blight your soul, I didn't know.~ [ARAN_SOUND_HERE] == C-ARWRTH ~[C-ARWRTH] You lie, you piece of dung. You acted so high an' mighty, and then you go blindly followin' without a care or thought in th' world. Th' blood's on your hands, and those screams will haunt you past death's door. Think you will keep her precious lips close to you now, mercenary?~ [C-ARW005] == C-ARN25J ~[ARAN] Gods...~ [ARAN_SOUND_HERE] == C-ARWRTH ~[C-ARWRTH] Murderers all, we happy few. And you with th' weak stomach cryin' like a baby, battin' at the flames while your comrades died. Twice murderous, bastard. Charred flesh was not about to rise, an' we died because you had no stomach for th' collateral damage. Are you cryin' now?~ [C-ARW006] END ++ ~[PC] Don't say those things to Aran! He did what he had to!~ EXTERN HGWRA01 25 ++ ~[PC] I... I knew you had done some difficult things in your past, but you never told me about this, Aran.~ EXTERN C-ARN25J c_wraith_below_belt ++ ~[PC] Stop tormenting Aran, spirit! ~ EXTERN HGWRA01 25 ++ ~[PC] Gorion, stop this! I won't let this go any further!~ EXTERN HGWRA01 25 + ~CheckStatGT(Player1,16,WIS)~ + ~[PC] Aran, this isn't real. Don't listen to it!~ EXTERN C-ARN25J c_wraith_below_belt APPEND C-ARN25J IF ~~ c_wraith_below_belt SAY ~[ARAN] By Ilmater's Tears, that don't help th' feelin's this bastard be slappin' me with. For th' sake o' mercy, can we shut him th' blighted hells up?~ IF ~~ THEN EXTERN HGWRA01 25 END END in c-arn25.baf [code] /* Master Wraith Post-Traumatic Stress Disorder Amelioration Talk */ IF Global("c-aranpostwraith","GLOBAL",0) GlobalGT("WraithPunish","GLOBAL",0) Global("c-aranlovedone","GLOBAL",6) InParty(Myself) InMyArea(Player1) !StateCheck(Player1,CD_STATE_NOTVALID) !StateCheck(Myself,CD_STATE_NOTVALID) CombatCounter(0) !See([ENEMY]) THEN RESPONSE #100 SetGlobal("c-aranpostwraith","GLOBAL",1) END IF Global("c-aranpostwraith","GLOBAL",1) InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) InMyArea(Player1) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 PlaySong(0) PlaySound("C-ARANS") StartDialogueNoSet(Player1) END in c-arantobdialog.d, in APPEND to C-ARN25J, CODE /* ToB Plot Talk : Post Wraith Talk™ */ IF ~Global("c-aranpostwraith","GLOBAL",1)~ c_post_wraith_talk_starts SAY ~[ARAN] Gods.~ ++ ~[PC] They had a little to do with it, I think. But not much. We survived through our own strength.~ DO ~SetGlobal("c-aranpostwraith","GLOBAL",2)~ + c_survived_it ++ ~[PC] Was... was what that ...thing... said. Was it true?~ DO ~SetGlobal("c-aranpostwraith","GLOBAL",2)~ + c_was_it_true ++ ~[PC] Are you crying?~ DO ~SetGlobal("c-aranpostwraith","GLOBAL",2)~ + c_arms_wrap ++ ~[PC] (Throw yourself into his arms and press your face against his chest.)~ DO ~SetGlobal("c-aranpostwraith","GLOBAL",2)~ + c_arms_wrap ++ ~[PC] I don't know what to say.~ + c_survived_it ++ ~[PC] So, a little history lesson for both of us?~ DO ~SetGlobal("c-aranpostwraith","GLOBAL",2)~ + c_survived_it END IF ~~ c_arms_wrap SAY ~[ARAN] (His arms crush you close, his face hidden from your sight.)~ IF ~~ THEN GOTO c_survived_it END IF ~~ c_survived_it SAY ~[ARAN] That thing... it might have been only a powerful spirit, a reflection. But... It spoke o' things we have not talked about.~ ++ ~[PC] It spoke twisted lies to hurt and confuse us, and to separate us.~ + c_tell_the_truth ++ ~[PC] I don't want to hear any more. The past is the past. For both of us, the past is the past.~ + c_tell_the_truth + ~Alignment(Player1,MASK_EVIL)~ + ~[PC] If it spoke only a little truth, then you have more strength in you than I thought.~ + c_evil_strength + ~Alignment(Player1,MASK_GOOD)~ + ~[PC] If it spoke only a little truth, then you have more strength in you than I thought.~ + c_good_strength + ~!Alignment(Player1,MASK_GOOD) !!Alignment(Player1,MASK_GOOD)~ + ~[PC] If it spoke only a little truth, then you have more strength in you than I thought.~ + c_neutral_strength ++ ~[PC] Aran, look at me... Look into my eyes. I love you.~ + c_tell_the_truth ++ ~[PC] You heard a twisted view of my life. I heard a twisted view of yours. It is over, and I never want to discuss it ever again. We need to move on, now. Pick up your gear, and help me get things back in order.~ + c_aye_can_do END IF ~~ c_tell_the_truth SAY ~[ARAN] Truth be th' only way to really clear this burden. What that abomination said, it were true, to a point.~ = ~[ARAN] There be times when you know an order be just plain wrong, an' you have to make a choice. I chose to follow.~ = ~[ARAN] Th' details don't rightly matter, but th' result be an ugly truth. Good men can do horrible evil, just by followin' instead o' thinkin'.~ + ~Alignment(Player1,MASK_EVIL)~ + ~[PC] Then you have more strength in you than I thought.~ + c_evil_strength + ~Alignment(Player1,MASK_GOOD)~ + ~[PC] Then you have more strength in you than I thought.~ + c_good_strength + ~!Alignment(Player1,MASK_GOOD) !!Alignment(Player1,MASK_GOOD)~ + ~[PC] Then you have more strength in you than I thought.~ + c_neutral_strength ++ ~[PC] I don't want to hear any more. The past is the past. For both of us, the past is the past.~ + c_tell_the_truth ++ ~[PC] You really burned innocent children alive, and broke down in battle?~ + c_can_you_handle_the_truth END IF ~~ c_can_you_handle_the_truth SAY ~[ARAN] I'd say it different. I'd say I followed th' orders to set th' village afire. I'd say I thought there might be some innocents there, an' mayhap th' enemy was shieldin' themselves. I'd say that when I saw th' sight an' heard th' screams, I ran to see if I could undo what had been done...~ = ~[ARAN] What I had done.~ = ~[ARAN] But when it be th' truth between my soul an' you, yes. I did.~ ++ ~[PC] Get. away. from. me.~ + c_no_longer_welcome + ~Alignment(Player1,MASK_EVIL)~ + ~[PC] Then you have more strength in you than I thought.~ + c_evil_strength + ~Alignment(Player1,MASK_GOOD)~ + ~[PC] Then you have more strength in you than I thought.~ + c_good_strength + ~!Alignment(Player1,MASK_GOOD) !!Alignment(Player1,MASK_GOOD)~ + ~[PC] Then you have more strength in you than I thought.~ + c_neutral_strength ++ ~[PC] You had no choice. An order is an order. You could not have been sure. It was not your place to make that choice.~ + c_we_all_have_choices ++ ~[PC] Why have you not told me this before now?~ + c_how_can_you_tell ++ ~[PC] I could say that everything that has happened to us is my fault. That would not be truth. It would be self-pity.~ + c_self_pity END IF ~~ c_self_pity SAY ~[ARAN] You could say that it be self pity. But there be a difference in my case. You didn't choose your blood or th' things what followed. Me, I could say I had no choices...~ IF ~~ THEN GOTO c_we_all_have_choices END IF ~~ c_evil_strength SAY ~[ARAN] What do you mean?~ ++ ~[PC] You knew I would see this as an opportunity, a weakness in your character that I could exploit. You held it from me, even while showing me how much you care for me. That kind of inner strength, I can respect. Can you understand that?~ + c_aye_can_do ++ ~[PC] You followed orders, even when you felt that they were wrong. You may have regretted doing so, but you followed. I know now that you will do anything for me, even if it goes against your very soul to do so. That is the kind of control I crave. Can you understand that?~ + c_aye_can_do ++ ~[PC] I do not see things the same way you do, Aran. I know you are hurting, and I hurt because you hurt... but in my eyes, you are blameless. War destroys all it touches, which is why we wield it very carefully. Can you understand that?~ + c_aye_can_do ++ ~[PC] You knew even I have limits on what I am willing to do to further my own ends, and you sought to hide something I would never condone so that you could be with me. I don't like that, but I respect that. Can you understand that?~ + c_aye_can_do ++ ~[PC] You risked everything to tell me the truth. If that is not love, then I do not know what love really is. Can you understand that?~ + c_aye_can_do END IF ~~ c_good_strength SAY ~[ARAN] What do you mean?~ ++ ~[PC] You knew I would not be able to handle the burden of your feelings and my own guilt and frustration. You held this burden away from me. That takes strength.~ + c_mayhap_stronger ++ ~[PC] You risked everything to tell me the truth. If that is not love, then I do not know what love really is. Do you understand what I am saying to you?~ + c_aye_can_do ++ ~[PC] I do not see things the same way you do, Aran. I know you are hurting, and I hurt because you hurt... but in my eyes, you are blameless. War destroys all it touches, which is why we wield it very carefully. Can you understand that?~ + c_aye_can_do ++ ~[PC] I try to do the right thing. But my hands are stained with innocent blood too; there can be no mortal way of stopping the consequences of violent action. But the pain you feel, the guilt, shows a strong conscience. I can love a man who takes responsibility for his actions.~ + c_mayhap_stronger ++ ~[PC] You managed to lie to me every day that we have known each other. You know, I do not need your twisting and hiding the truth. You should leave.~ + c_no_longer_welcome END IF ~~ c_neutral_strength SAY ~[ARAN] What do you mean?~ ++ ~[PC] You knew I would not be able to handle the burden of your feelings and my own guilt and frustration. You held this burden away from me. That takes strength.~ + c_mayhap_stronger ++ ~[PC] I do not see things the same way you do, Aran. I know you are hurting, and I hurt because you hurt... but in my eyes, you are blameless. War destroys all it touches, which is why we wield it very carefully. Can you understand that?~ + c_aye_can_do ++ ~[PC] There is no right or wrong in these things, Aran. The same hand that sweeps away a Tyrant kills innocents. Balance, chaos, order... all of those are a part of life on Faerun. We just have to make sense of this for ourselves, and remember we are just passengers on this plane of existence. Do you understand?~ + c_mayhap_stronger ++ ~[PC] Strength of character. You decided when to tell me what you are capable of. I can love a man who shows that kind of restraint.~ + c_mayhap_stronger ++ ~[PC] You managed to lie to me every day that we have known each other. You know, I do not need your twisting and hiding the truth. You should leave.~ + c_no_longer_welcome END IF ~~ c_we_all_have_choices SAY ~[ARAN] That be a lie. We all have choices, every second o' every day. An' when we make th' wrong ones, we with death in our hands an' blood in our hearts... we kill people. We make that choice.~ ++ ~[PC] Would you ever have told me?~ + c_ever_told ++ ~[PC] Then I am making a choice right now. I think you should leave.~ + c_no_longer_welcome ++ ~[PC] Then I make a choice every minute of every day. I chose to love you.~ + c_i_love_you ++ ~[PC] Aran... You and I know you are not the only person in my life. But I keep choosing to be with you. That should tell you that I can handle both the good and the bad in you. I love you.~ + c_i_love_you ++ ~[PC] I have done worse things than you could ever imagine. War claims all in its path as victims. As I see it, you have no more need of self-recrimination than I need apologize for being the child of a dead god. I can live with that. Can you?~ + c_aye_can_do END IF ~~ c_how_can_you_tell SAY ~[ARAN] I have told no one. Never. Until now.~ ++ ~[PC] Would you ever have told me?~ + c_ever_told ++ ~[PC] And you say you love me. You really think I am that weak.~ + c_that_weak ++ ~[PC] Thank you for telling me the truth. I understand... there are things in all of our pasts that we want buried forever. Do you love me?~ + c_of_course_i_do ++ ~[PC] Aran... You and I know you are not the only person in my life. But I keep choosing to be with you. That should tell you that I can handle both the good and the bad in you. I love you.~ + c_i_love_you END IF ~~ c_that_weak SAY ~[ARAN] Now, hold on, I was tryin' to keep th' guilt off of...~ ++ ~[PC] I can handle guilt. I can handle blood. I was born to it. What I can't handle is someone who claims to love me, but will hide things from me. You should leave. Now.~ + c_no_longer_welcome ++ ~[PC] I... I understand. You did not think I was strong enough. I don't think you realize how strong a woman can be for the man she loves.~ + c_mayhap_stronger ++ ~[PC] Don't you love me?~ + c_of_course_i_do ++ ~[PC] I have held things back from you, too. Did you know that I envied Imoen? That I hated Gorion for keeping me away from a life outside the library? That I have killed without remorse, tricked and lied my way through life, and that in spite of it all I can't stop loving a silly do-gooder who can't seem to see exactly how wrong I am for him? Love stinks, doesn't it.~ + c_mayhap_stronger ++ ~[PC] No, you misunderstand me. I am that weak. I... I can see myself, and I hate that woman. I needed to think you were different. Perhaps it is time I grew up, and realized that we all carry burdens. I... I just need your help, sharing the weight between the two of us.~ + c_mayhap_stronger END IF ~~ c_ever_told SAY ~[ARAN] Told you wi' out all this? On th' truth an' respect I have for you... no. I would not.~ ++ ~[PC] Don't you love me?~ + c_of_course_i_do ++ ~[PC] You were wise. I can't have the blood and guilt you bring added to my burdens. You need to find your own path.~ + c_no_longer_welcome ++ ~[PC] I can handle guilt. I can handle blood. I was born to it. What I can't handle is someone who claims to love me, but will hide things from me. You should leave. Now.~ + c_no_longer_welcome ++ ~[PC] I... I understand. You did not think I was strong enough. I don't think you realize how strong a woman can be for the man she loves.~ + c_mayhap_stronger ++ ~[PC] I have held things back from you, too. Did you know that I envied Imoen? That I hated Gorion for keeping me away from a life outside the library? That I have killed without remorse, tricked and lied my way through life, and that in spite of it all I can't stop loving a silly do-gooder who can't seem to see exactly how wrong I am for him? Love stinks, doesn't it.~ + c_mayhap_stronger END IF ~~ c_of_course_i_do SAY ~[ARAN] O' course I do.~ ++ ~[PC] Then trust me. No secrets. I am a Child of Murder. If I can handle that truth, then I can handle your truth.~ + c_mayhap_stronger ++ ~[PC] Then say no more about this. What is past is past, and we have a future to plan. Don't let old blood drown a new life together.~ + c_mayhap_stronger ++ ~[PC] Then... I need you to leave. I have the weight of my own guilt to carry. I can't handle both yours and mine.~ + c_no_longer_welcome ++ ~[PC] Then kiss me, and forget the past. We have to focus on what is ahead of us, not what is behind us.~ + c_mayhap_stronger END IF ~~ c_no_longer_welcome SAY ~[ARAN] I... ~ = ~[ARAN] ... ~ IF ~~ THEN DO ~SetGlobal("c-aranrom","GLOBAL",3) GivePartyAllEquipment() LeaveParty() EscapeAreaDestroy()~ EXIT END IF ~~ c_mayhap_stronger SAY ~[ARAN] Mayhap you be right. I learn somethin' new about you almost every day.~ IF ~~ THEN GOTO c_i_love_you END IF ~~ c_i_love_you SAY ~[ARAN] I don't think I say this right strong enough, or often enough.~ = ~[ARAN] I love you.~ IF ~~ THEN EXIT END IF ~~ c_aye_can_do SAY ~[ARAN] Aye.~ IF ~~ THEN EXIT END As always, commentary welcome!
  11. OK, letters sidestory. One of the things that makes characters interesting is *not* knowing everything up front. With Aran, that is accomplished a few ways - primarily by the use of RandomNum() as a way of making things a little different every time you try the same talk, or at least giving a chance to have that happen. The second way is "backstory", filled out via some dialog, some storytelling (if asked) and through the possibility of being a born thief and rummaging through his stuff. For male PCs, the letter thing is very short, with some fun after three letters. No need for tons of stuff, as it is unlikely a guy would do more than peruse some letters, figure out Aran isn't spying on him, and let it go. Unfortunately or fortunately, from a storytelling standpoint, I once had a girlfriend who snooped into everything. Natural curiosity combined with a jealous nature combined with low self-image... let's just say, never date proto-sopranos or proto-ballerinas unless you are fully aware of just how far personal lines can be crossed. Luckily, in a story, we don't have to worry about it - if the Heroine™ doesn't 'accidentally' read a letter, someone sends it to her, or (like Downton Abbey) the rumor mill reaches her. With our PC, we can even allow for some roleplay, where she (or he) can play the search any way s/he wants... "I was just cleaning up your stuff. Didn't mean to see it." "So, who is this Elena chick you are writing to? Should I be jealous?' "Who do you think you are, a dirty version of Volo?" There are a few other implementations dropping into these states, but a2913 summarizes this pretty straightforwardly. Dudes see the general letters, and if a female PC is a persistent little stalker, she can get a view of some of the things Aran is thinking about her "behind the scenes" in the form of letters to his sister. CODE IF ~~ a2913 SAY ~[ARAN] (The normal clutter of tools and gear, neatly rolled and folded clothing in oilskins, and the occasional odd trinket catch your eye, but there is little of interest you have not already seen. The scraps of parchment, though, show signs of use.)~ + ~Global("c-pcletter","LOCALS",0)~ + ~[PC] (You examine his writings.)~ DO ~SetGlobal("c-pcletter","LOCALS",1)~ + c-aranletter1 + ~Global("c-pcletter","LOCALS",1)~ + ~[PC] (You examine his writings.)~ DO ~SetGlobal("c-pcletter","LOCALS",2)~ + c-aranletter2 + ~Global("c-pcletter","LOCALS",2)~ + ~[PC] (You examine his writings.)~ DO ~SetGlobal("c-pcletter","LOCALS",3)~ + c-aranletter3 + ~Gender(Player1,FEMALE) CheckStatGT(Player1,12,INT) Global("c-pcletter","LOCALS",3)~ + ~[PC] (You take advantage of the opportunity to rummage in search of interesting things to read.)~ DO ~SetGlobal("c-pcletter","LOCALS",4)~ + c-aranletter4 + ~Gender(Player1,FEMALE) CheckStatGT(Player1,12,INT) Global("c-pcletter","LOCALS",4)~ + ~[PC] (You take advantage of the opportunity to rummage in search of interesting things to read.)~ DO ~SetGlobal("c-pcletter","LOCALS",5)~ + c-aranletter5 + ~Gender(Player1,FEMALE) CheckStatGT(Player1,12,INT) Global("c-pcletter","LOCALS",5)~ + ~[PC] (You take advantage of the opportunity to rummage in search of interesting things to read.)~ DO ~SetGlobal("c-pcletter","LOCALS",6)~ + c-aranletter6 + ~Gender(Player1,FEMALE) CheckStatGT(Player1,12,INT) Global("c-pcletter","LOCALS",6)~ + ~[PC] (You take advantage of the opportunity to rummage in search of interesting things to read.)~ DO ~SetGlobal("c-pcletter","LOCALS",7)~ + c-aranletter7 + ~Gender(Player1,FEMALE) CheckStatLT(Player1,13,INT) Global("c-pcletter","LOCALS",3)~ + ~[PC] (You take advantage of the opportunity to rummage in search of interesting things to read.)~ DO ~SetGlobal("c-pcletter","LOCALS",4)~ + c-aranletterblocked + ~Gender(Player1,FEMALE) CheckStatLT(Player1,13,INT) Global("c-pcletter","LOCALS",4)~ + ~[PC] (You take advantage of the opportunity to rummage in search of interesting things to read.)~ DO ~SetGlobal("c-pcletter","LOCALS",5)~ + c-aranletterblocked + ~Gender(Player1,FEMALE) CheckStatLT(Player1,13,INT) Global("c-pcletter","LOCALS",5)~ + ~[PC] (You take advantage of the opportunity to rummage in search of interesting things to read.)~ DO ~SetGlobal("c-pcletter","LOCALS",6)~ + c-aranletterblocked + ~Gender(Player1,FEMALE) CheckStatLT(Player1,13,INT) Global("c-pcletter","LOCALS",6)~ + ~[PC] (You take advantage of the opportunity to rummage in search of interesting things to read.)~ DO ~SetGlobal("c-pcletter","LOCALS",7)~ + c-aranletterblocked + ~Gender(Player1,MALE) GlobalGT("c-pcletter","LOCALS",2)~ + ~[PC] (You take advantage of the opportunity to rummage through his pack. There are any number of odd scraps of writing and sketches to shuffle through.)~ + c-aranletterallgone IF ~Gender(Player1,FEMALE) GlobalGT("c-pcletter","LOCALS",6)~ THEN GOTO c-aranletterallgone END IF ~~ c-aranletterallgone SAY ~[ARAN] (The scraps contain notes and ideas for a story of sorts, but not one that would be given a place at a family gathering. They read...)~ IF ~RandomNum(4,5)~ THEN GOTO c-aranstoryscrap1 IF ~RandomNum(4,4)~ THEN GOTO c-aranstoryscrap2 IF ~RandomNum(4,3)~ THEN GOTO c-aranstoryscrap3 IF ~RandomNum(4,2)~ THEN GOTO c-aranstoryscrap4 IF ~RandomNum(4,1)~ THEN GOTO c-aranstoryscrap5 END IF ~~ c-aranstoryscrap1 SAY ~[ARAN] 'Deborah sighed gustily as she looked out across the valley. She could not forget the sight of his chest, bronzed and muscular, glistening with sweat as he worked the forge. She knew it was wrong to have such feelings for a commoner of the Dales, but she could not help herself. The blush of wanton desire spread across her cheeks as she imagined him working her, rather than the forge, his hammer rising and falling to the beat of her pulse and the racing of her heart.'~ IF ~~ THEN EXIT END IF ~~ c-aranstoryscrap2 SAY ~[ARAN] "No, no!" Deborah's broken pleas slipped from her lips, even as they pressed themselves to him. "I can not! I have never..." His strong hands held her poised above him, ready to go where no man had gone before. His desire was palpable. Note: where no man had gone before? Where no man had explored? To drive into the unknown?~ IF ~~ THEN EXIT END IF ~~ c-aranstoryscrap3 SAY ~[ARAN] 'There were no words as Deborah created crafted crufted crinfalled There were no sonunds there were scratch this. Note: look for good descriptors that can translate to Dwarven without taking on the wrong meanings. Pradeep of Westhaven might buy this thing if I can just get the writing open for gnomish and dwarven translation. Second Note: remember that dwarves find beards appealing on both women and men. May have to rewrite. Third note, get a good proofreader before I send anything.'~ IF ~~ THEN EXIT END IF ~~ c-aranstoryscrap4 SAY ~[ARAN] 'She flung herself in front of him, begging to be taken, begging to be his. Buck sat stone-faced, unmoving. "Do you think that a commoner has no feelings? I share everything with you, and you sleep with him. My forge may take on many projects, but only one heart commands it. Who's heart commands your forge, Deborah?'~ IF ~~ THEN EXIT END IF ~~ c-aranstoryscrap4 SAY ~[ARAN] 'Buck's bronzed form glistened in the lamplight, his dark beard covering everything. Deborah could not help herself. Her eyes dropped lower, lower. Her face burned in the darkness, a beacon in the stone cave. "It is glowing", she whispered. "Aye." he answered.'~ IF ~~ THEN EXIT END /* Letter Responses */ IF ~~ c-aranletter1 /* aran letter #1 (everyone, c-alttr8.itm) */ SAY ~[ARAN] (The rough parchment crinkles under your fingertips as you read through the carefully shaped lines of writing...)~ = ~[ARAN] Mae Govannen Mae govannen. An lema? Amin naa lle nai. I'narr en gothrim glinuva nuin I'anor. Ohtar hanwa edan yesta sii'lle vakha. Amin tengwa Naug, i'lambe tel' Eldalie. Dwarven, Elven, and Common Trade Language spoken and written, contracts translated, copywork accepted. Experienced Caravan Guard and Scrivner. Reasonable rates. Inquire at Ten Veils Public House for Whitehand. Have Sword, Will Travel. No Job Too Small. No Dragons. Experienced Caravan Guard, Scrivner, OutRider, Oarsman. Trade Contracts and Copywork Drawn. Reasonable Rates. Inquire at Public House for Whitehand.~ ++ ~[PC] (You carefully slip the letter back where you found it.)~ EXIT ++ ~[PC] (You take the letter.)~ DO ~SetGlobal("c-arlettertake","GLOBAL",1) SetGlobalTimer("c-aranlettertalk","GLOBAL",ONE_DAY)~ EXIT // c-alttr2.itm ++ ~[PC] (You hunt through his writing kit and find his quill, and print 'No Secrets' in Common across the top of his letter. Then you slip the letter back into his pack.)~ DO ~SetGlobal("c-arannosecrets","GLOBAL",1)~ EXIT END IF ~~ c-aranletter2 /* aran letter #2 (everyone, c-alttr2.itm) */ SAY ~[ARAN] (The rough parchment crinkles under your fingertips as you read through the carefully shaped lines of writing...)~ = ~[ARAN] My Dearest Elena, I read your message with great happiness. Congratulations on your being advanced to choice! By the time you read this there will only be a few more months and you will be in your final year of apprenticeship. And Mystra is a good Goddess to serve, I hear. I always thought you would lean towards The Wise One, Oghma, and go with the Estelmer family nobility as benefactors, but you know your own heart. If your calling is to Mystra, then I guess you couldn't do any better than to Eltorchul family. There are some stories about a few of them, but they generally get written about as good people, for nobles and wands. Good but not lockstep; some of them are pretty wild, if trail stories and news broadsides talk about the same family. The Thunderstaffs follow Mystra, but from my end - plenty of warmages from that family, that is for sure! I was pretty sure you wouldn't end up following them, anyways. I am really glad your benefactor was happy, too. I thought it was like a trade apprenticeship, and you would be with The Lady Mage all the way. I guess I didn't understand about the schools, and how you work your way up. I love the emerald, and I will figure out what you mean about saying the inscriptions in private once we are on the trail. I hope this isn't one of your practical jokes, though. That is too fine a gem just to put a joke on. And the colors were beautiful. It lasted a full thirty seconds before dissolving into smoke, and it was a deep, shiny green with gold and silver and sky blue. Plus, it only erased a little bit of the parchament, so I got to read most of the message. That is so much better than the one where you tried the acid-flowers, and it burned through the whole letter. I know you want to have each message destroy itself, though I do not understand why all mages seem to need such secrecy. I do have some news. I have started working with a new group. There is not much to say yet, but it is not a regular mercenary group. <CHARNAME>, the one who leads, is different. I will have more to say later, I am sure. In the meantime, keep up your studies, and I will try to send you some of the spell components you asked about as best I can. Judging by the look of things, I may be able to get some very rare components for you just by keeping my eyes open and wits sharp. Yours Faithfully, Aran~ ++ ~[PC] (You carefully slip the letter back where you found it.)~ EXIT ++ ~[PC] (You take the letter.)~ DO ~SetGlobal("c-arlettertake","GLOBAL",1) SetGlobalTimer("c-aranlettertalk","GLOBAL",ONE_DAY)~ EXIT ++ ~[PC] (You hunt through his writing kit and find his quill, and print 'No Secrets' in Common across the top of his letter. Then you slip the letter back into his pack.)~ DO ~SetGlobal("c-arannosecrets","GLOBAL",1)~ EXIT END IF ~~ c-aranletter3 /* aran letter #3 (everyone, c-alttr3.itm) */ SAY ~[ARAN] (The rough parchment crinkles under your fingertips as you read through the carefully shaped lines of writing...)~ = ~[ARAN] My Dearest Elena, I am writing from the trail, so please excuse the occasional blot or crease staining the writing. There is so much to report, but most of it is not to be trusted to letters. When I next see you, remind me to tell you about <PLAYER1>. Things are working out well enough on so far. Well as well as can be expected given our challenges. I have not had as much combat in so short a timeframe since the pitched battles back near Baldur's Gate. Even in the Axes, there were months with no combat, and now it seems to happen every day. I am glad to hear that your roommate is not making your life easy. I know that sounds unsupportive, and I am sure you don't appreciate it, but from my standpoint it means you are telling me things and not hiding the challenges and problems. You are smart enough to get past this. Just don't do what you did to Kimili when she called you those names. I bet now that you have some real training, it would not be a few curls set on fire... you might accidentally incinerate her head. I did hear from Nathan the other day, and his letter asked after you. I told him you were away in the Dale lands, rather than the truth. I know you think that he is cute, but I know him. He is not a nice person. I may sound overprotective, but he has done some things you just do not want to know about. Well, I must close, as I am out of room, and low on supplies. Time to mix up some more ink, too. As always. Yours Faithfully, Aran~ ++ ~[PC] (You carefully slip the letter back where you found it.)~ EXIT ++ ~[PC] (You take the letter.)~ DO ~SetGlobal("c-arlettertake","GLOBAL",1) SetGlobalTimer("c-aranlettertalk","GLOBAL",ONE_DAY)~ EXIT ++ ~[PC] (You hunt through his writing kit and find his quill, and print 'No Secrets' in Common across the top of his letter. Then you slip the letter back into his pack.)~ DO ~SetGlobal("c-arannosecrets","GLOBAL",1)~ EXIT END IF ~~ c-aranletter4 /* aran letter #4 (rom, c-alttr4.itm) */ SAY ~[ARAN] (The rough parchment crinkles under your fingertips as you read through the carefully shaped lines of writing, but it takes awhile to figure out his cipher. He has started using a quaint childlike encoding.)~ = ~[ARAN] My Dearest Elena, I hope that all is well with you. For me, I am sorely in need of your guidance. I know we have written about this several times, but I need to clear my head and think and you are always good at helping me do that. I cannot stop thinking about her. I cannot stop watching her. It has me off balance, even worse than when I fell for that half-elven bard you warned me against. I simply do not understand how I could be pulled so far under her spell in such a short time. I know I am not an apprentice, but I certainly feel like one. I know I wrote to you of my feelings, and I know we joked about the difficulties of falling for one's employer, but now I am serious. I do not know if you would like her, or not. But do not believe the stories that must be floating around about what we are doing. All I can say is that she has captivated my attention in a way no other woman has. Yes, even more than SilverEyes. I just have difficulties seeing what I can offer her in return. I have no wealth or title, no real prospects, and I do not even know if she truly would have me. But that is how serious my situation seems to have become. For Sune's Blessing and for the love of your brother, help me. I need to know what a woman of power really wants. Yours faithfully, Aran~ ++ ~[PC] (You carefully slip the letter back where you found it.)~ EXIT ++ ~[PC] (You take the letter.)~ DO ~SetGlobal("c-arlettertake","GLOBAL",1) SetGlobalTimer("c-aranlettertalk","GLOBAL",ONE_DAY)~ EXIT ++ ~[PC] (You hunt through his writing kit and find his quill, and print 'No Secrets' in Common across the top of his letter. Then you slip the letter back into his pack.)~ DO ~SetGlobal("c-arannosecrets","GLOBAL",1)~ EXIT END IF ~~ c-aranletter5 /* aran letter #5 (rom, c-alttr5.itm) */ SAY ~[ARAN] (The rough parchment crinkles under your fingertips as you read through the carefully shaped lines of writing, but it takes awhile to figure out his cipher. He has started using a quaint childlike encoding.)~ = ~[ARAN] My Dearest Elena, I hope that all is well with you, and with your pet lizard (yes, I know he is a pseudodragon, but someone has to put her in her place!). I am happy your work in runescribing is coming along, but please remember about spell duration. Half of your last message burned through your last three letters to me, and nearly turned my pack into a bonfire. I know you prefer secrecy, but surely I can keep one or two of your missives? There are many things going on right now, and I am not at liberty to write much about them. Our goals are being met, though the victories seem very costly. Perhaps it is more that I have made a stronger commitment to this quest than I have before. Your advice was appreciated. I am happy you see me that way, but I am pretty sure that you did not really mean "just kiss her and keep kissing her until she either kills you or professes her love". I understand what you are saying about power being of many kinds, and that sometimes just being yourself is what she might need. I do not know the best way to proceed right now, but I will take your advice under advisement and continue as best I can. In the meantime, I will be enclosing a small packet of wildspeare flowers for your component pouch when I get a chance to send this. I hope that it helps your studies. Please try not to turn Jill into a flowerpot again. I know that the polymorph spell usually results in squirrels, berrygobblers, or chipmunks rather than inanimate objects, so study hard and next time it might go better. Yours faithfully, Aran.~ ++ ~[PC] (You carefully slip the letter back where you found it.)~ EXIT ++ ~[PC] (You take the letter.)~ DO ~SetGlobal("c-arlettertake","GLOBAL",1) SetGlobalTimer("c-aranlettertalk","GLOBAL",ONE_DAY)~ EXIT ++ ~[PC] (You hunt through his writing kit and find his quill, and print 'No Secrets' in Common across the top of his letter. Then you slip the letter back into his pack.)~ DO ~SetGlobal("c-arannosecrets","GLOBAL",1)~ EXIT END IF ~~ c-aranletter6 /* aran letter #6 (rom, c-alttr6.itm) */ SAY ~[ARAN] (The rough parchment crinkles under your fingertips as you read through the carefully shaped lines of writing, but it takes awhile to figure out his cipher. He has started using a quaint childlike encoding.)~ = ~[ARAN] My Dearest Elena, Congratulations on winning your competition! I had no idea that things were so competitive at the academy, and I am very glad that the Priests of Ilmater were there when that boy got caught in the fireball. I am so happy you won, and you even gave me ideas for a new set of tactics to use. I doubt I will often be able to spread oil or grease before a battle, but the use of multiple layers of magic is not something I have studied very much. The way things are going around here, we may need all the tactical advantages I can come up with. As for your enquiries, she is holding her own against the power of her blood. I do not have any real answers for you as to whether she sees me as someone who she could be with forever, or just someone she can use temporarily. I hear her words, and I see her responses, but I often am not quite sure where she really is coming from. She may be shouting her truth at me all the time, for all I know, but I am simply not sure if I am hearing reality or something I have constructed all in my head. You know as well as I do that I have done that before, and the results have been less than positive. There will be time enough to write more later. I will be enclosing a few odds and ends gleaned from our last few combats, but I am unsure as to how to stop them from breaking when transported to you. If the letter you are holding is a bright black on one corner, then I would seek out the Priests for healing immediately. I am never sure why you want me to send you these things, as my training has been in writing, not herbalism, but you know that I would do anything for you. Yours faithfully, Aran~ ++ ~[PC] (You carefully slip the letter back where you found it.)~ EXIT ++ ~[PC] (You take the letter.)~ DO ~SetGlobal("c-arlettertake","GLOBAL",1) SetGlobalTimer("c-aranlettertalk","GLOBAL",ONE_DAY)~ EXIT ++ ~[PC] (You hunt through his writing kit and find his quill, and print 'No Secrets' in Common across the top of his letter. Then you slip the letter back into his pack.)~ DO ~SetGlobal("c-arannosecrets","GLOBAL",1)~ EXIT END IF ~~ c-aranletter7 /* aran letter #7 (rom, c-alttr7.itm) */ SAY ~[ARAN] (The rough parchment crinkles under your fingertips as you read through the carefully shaped lines of writing, but it takes awhile to figure out his cipher. He has started using a quaint childlike encoding.)~ = ~[ARAN] My Dearest Elena, I hope my letter finds you in good health and spirits. I will get straight to the point and remind you that you are too special and to smart to fall into any traps. Be careful. I do not know anything about Court and have never really seen a Masked Lord or even an un-masked one, but I have been around long enough to be suspicious of anyone who makes bold passes at you. I wish I were there, so that he would know that you have a protector. I know you can take care of yourself, but it still worries me. If you need proof, remember how I have acted around Giselle and Rani, and how you had to send a spark at me to stop me from behaving badly with your friends. Yes, I know I have a double standard, but I have always been very interested in all of this romantic sparking, while you have avoided it like the plague. And our situations are not as similar as you made it sound. <CHARNAME> is more complicated than what we are talking about. If it were just for fun, that would be one thing, but I seem to have developed some attachments that make things more painful for me if I do things that she might not like. I always try to fit what she seems to want, but it is hard sometimes. In fact, it seems almost impossible at times. But I trust in Tymora, and She will make the coin toss. What is meant to be, is meant to be. In your case, though, your benefactor might not take kindly to that particular young man. Do not take this the wrong way, but you have to ask yourself if he is really interested in you, or if he wants information. I trust you to make the right choice for you, of course. I would send for you to join us for a little bit, so you could get away and think, but I am afraid things here have gotten very difficult. Our adversaries are the stiff of legends and folktales, only they turn out to be real. Usually, they also turn out to be able to crush me into goo. No matter what is going on there, things are worse here. Do not worry for me, though. I have always had an eye out for trouble, and I think I enjoy feeling part of something that will make a difference. Yours faithfully, Aran~ ++ ~[PC] (You carefully slip the letter back where you found it.)~ EXIT ++ ~[PC] (You take the letter.)~ DO ~SetGlobal("c-arlettertake","GLOBAL",1) SetGlobalTimer("c-aranlettertalk","GLOBAL",ONE_DAY)~ EXIT ++ ~[PC] (You hunt through his writing kit and find his quill, and print 'No Secrets' in Common across the top of his letter. Then you slip the letter back into his pack.)~ DO ~SetGlobal("c-arannosecrets","GLOBAL",1)~ EXIT END IF ~~ c-aranletterblocked SAY ~[ARAN] (The rough parchment crinkles under your fingertips as you read through the carefully shaped lines of writing...)~ = ~[ARAN] (Unfortunately, Aran has begun writing in a language or cipher you cannot understand. You will have to ask him to read the letter to you.)~ ++ ~[PC] (You carefully slip the letter back where you found it.)~ DO ~SetGlobal("c-aranletterblocked","LOCALS",1)~ EXIT ++ ~[PC] (You take the letter.)~ DO ~SetGlobal("c-arlettertake","GLOBAL",1) SetGlobalTimer("c-arlettertake","GLOBAL",ONE_DAY)~ EXIT ++ ~[PC] (You hunt through his writing kit and find his quill, and print 'No Secrets' in Common across the top of his letter. Then you slip the letter back into his pack.)~ DO ~SetGlobal("c-arannosecrets","GLOBAL",1)~ EXIT END /* add bcs block to trigger, Global("c-arannosecrets","GLOBAL",1) */ IF ~Global("c-arannosecrets","GLOBAL",1)~ THEN BEGIN a2908 SAY ~[ARAN] Hey, there, I got a question for you. Do you mind if I rummage about in your undergarments a bit, an' poke through your stuff? Mayhap I can ink up some o' your gear, random like?~ [c-aws107] ++ ~[PC] I meant no harm. You scribble and scrawl all the time, and I was just curious. I want to know what is going on.~ DO ~SetGlobal("c-arannosecrets","GLOBAL",2)~ + a2909 ++ ~[PC] I want to know if any member of this party is discussing anything with the outside world. Even little things.~ DO ~SetGlobal("c-arannosecrets","GLOBAL",2)~ + a2909 ++ ~[PC] Don't keep any secrets from me. I will not be happy if you hide anything, anything at all.~ DO ~SetGlobal("c-arannosecrets","GLOBAL",2)~ + a2909 ++ ~[PC] Well, perhaps I went a little overboard. But I don't like to be kept in the dark, and it seems like you are writing things I should know about.~ DO ~SetGlobal("c-arannosecrets","GLOBAL",2)~ + a2909 ++ ~[PC] I hold the coin for the party. I want to know how you are using it, and to what purpose.~ DO ~SetGlobal("c-arannosecrets","GLOBAL",2)~ + a2909 END IF ~~ a2909 SAY ~[ARAN] Right, then. I blighted well thought a letter to my sister were naught buy my own business. You want somethin' translated, I'll do it. I don't give a rat's arse if you want to poke an' pry, but th' inference be that you don't trust me. Lovitar's Lash, that hurts a lad.~ IF ~~ THEN EXIT END /* add bcs block to trigger, ("c-arlettertake","GLOBAL",1) */ IF ~Global("c-arlettertake","GLOBAL",1)~ THEN BEGIN a2910 SAY ~[ARAN] Hey, there, I got a question for you. Do you know who has been messin' about in my pack, smudgin' up my writin' space?~ [c-aws108] ++ ~[PC] Yes, I do. I did. What are these letters you keep writing all about?~ DO ~SetGlobal("c-aranlettertaken","GLOBAL",2)~ EXIT ++ ~[PC] No, I don't.~ DO ~SetGlobal("c-aranlettertaken","GLOBAL",2)~ EXIT ++ ~[PC] You must be mistaken. I did not leave a single smudge or telltale sign of my browsing.~ DO ~SetGlobal("c-aranlettertaken","GLOBAL",2)~ + a2909 ++ ~[PC] Search me.~ DO ~SetGlobal("c-aranlettertaken","GLOBAL",2)~ + a2911 END IF ~~ a2911 SAY ~[ARAN] I would, but other than rufflin' my feathers, there be no real harm done. There be precious little what be private in a group like this. If you want to know what I be writin' to my sister, you don't have to poke about. You could just ask, eh?~ IF ~~ THEN EXIT END Note to anyone looking for a good editor - jEdit rocks. Very configurable, free, and even I can manage lots of project files cross-platform. Serious editor for serious folks... I am barely touching its possibilities.
  12. OK, because I am falling behind and delaying for a comprehensive list of non-canonical non-BioWare™ crossmod references for a full tutorialization of the various dialog files and their usages, a Monday posting of a Friend Talk that has been stewing for awhile. Since it is FT 8, it might need some sprucing up to allow for an active romance. If you are reading along for coding ideas, remember that the eventual order is BEGIN ~dialogfile~ all I_C_T[2,3,4] all APPEND s all CHAIN s This is not in that particular order yet, as it is easier for me to check dialog flow visually when it is in this order. Some coding things to think about: 1. the big reminds us that WeiDU line counting works best if you indent code and if you leave a carriage return at the end of the file. Windows folks sometimes forget those things. He has tried to compensate for it in later WeiDU versions, but since it is good practice anyways... 2. Usually friend talks are basic 1 - on - 1 banters between PC and NPC. I am choosing to see friendtalks as group discussions, but still - a little goes a long, long way. If everyone comments everywhere, ther can be troubles, especially as each group banter entry involves the modder making assumptions abut the characterization of the BioWare™ NPC. So while I want to digress into a side banter of Korgan and Aran trying to out-swear eachother, that realy belongs as a floater banter rather than sidelining a friendtalk. 3. The trend in many NPCs is to tackle a set of questions. I am running more topical/scenic on my attempts here, but this one realy does ave a question: Why do you swear so much, Aran? The coding challenge/author fun is figuring out how to tailor the response to accont for PC class and Aran's possible Cleric class. I am making the assumption that as a general non-kitted neutral good Cleric, Tymora will be Aran's choice. This means if someone makes him a Loremaster of Ogma, well - "conceptual incompatibility". Here, I am going to not go crazy over it. Perhaps later there will be a way of swapping in kitspecific stuff, but right now I will just make things as general as possible. /* BG2 FriendTalk 8 c-aranfriendbg2 = 15 */ /* "Bhallspawn, Shmallspawn. Meh.", or, Gods and Monsters. */ CHAIN IF ~Global("c-aranfriendbg2","GLOBAL",15)~ THEN ~C-ARANJ~ c-aranft8 ~[ARAN] Tempus' Shield, that tears it. That is the last time I get leatherwork cut rate. This blighted bootlace is parting. Anyone got a spare?~ DO ~SetGlobal("c-aranfriendbg2","GLOBAL",16) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_ROM)~ == ~JAHEIRAJ~ IF ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID)~ THEN ~[JAHEIRA] You should be better prepared. Think ahead next time, Aran.~ == ~AERIEJ~ IF ~InParty("Aerie") InMyArea("Aerie") !StateCheck("Aerie",CD_STATE_NOTVALID)~ THEN ~[AERIE] I - I'm sorry, I don't have anything extra.~ == ~KORGANJ~ IF ~InParty("Korgan") InMyArea("Korgan") !StateCheck("Korgan",CD_STATE_NOTVALID)~ THEN ~[KORGAN] It will cost you a trade bar.~ == ~EDWINJ~ IF ~InParty("Edwin") InMyArea("Edwin") !StateCheck("Edwin",CD_STATE_NOTVALID)~ THEN ~[EDWIN] (Idiot.) Perhaps we would move faster if you held still while I carved a new one from your hide.~ == ~MINSCJ~ IF ~InParty("Minsc") InMyArea("Minsc") !StateCheck("Minsc",CD_STATE_NOTVALID)~ THEN ~[MINSC] Here, Aran, I have a bootlace!~ == ~C-ARANJ~ IF ~InParty("Minsc") InMyArea("Minsc") !StateCheck("Minsc",CD_STATE_NOTVALID)~ THEN ~[ARAN] By the fire giant's gods, whomever they are... Minsc, you are a big, big boy. Thanks. I'll take a third o' that length.~ == ~CERNDJ~ IF ~InParty("Cernd") InMyArea("Cernd") !StateCheck("Cernd",CD_STATE_NOTVALID)~ THEN ~[CERND] You do not need leather to bind that. Nature provides many alternatives with similar strength, and the avoidance of killing an animal.~ == ~C-ARANJ~ IF ~InParty("Cernd") InMyArea("Cernd") !StateCheck("Cernd",CD_STATE_NOTVALID)~ THEN ~[ARAN] Mystra's Magnificent Mouth, Cernd... given the choice between my feet in battle an' the animal, I am considerin' the animal a distant second.~ END + ~!Class(Player1,CLERIC_ALL)~ + ~For the god's sake, slow down with the swearing, will you?~ EXTERN ~C-ARANJ~ c-aranft8general + ~OR(2) Class(Player1,PALADIN) Class(Player1,CLERIC_ALL) !Kit(Player1,GODTALOS) !Kit(Player1,GODHELM) !Kit(Player1,GODLATHANDER)~ EXTERN ~C-ARANJ~ ~Why are you blaspheming over something so minor, Aran?~ + c-aranft8specific + ~Class(Player1,CLERIC_ALL) Kit(Player1,GODHELM)~ + ~Here. But why are you blaspheming over something so minor, Aran?~ EXTERN ~C-ARANJ~ c-aranft8helm + ~Class(Player1,CLERIC_ALL) Kit(Player1,GODLATHANDER)~ + ~Here. But why are you blaspheming over something so minor, Aran?~ EXTERN ~C-ARANJ~ c-aranft8lathander + ~Class(Player1,CLERIC_ALL) Kit(Player1,GODTALOS)~ + ~Here. But why are you blaspheming over something so minor, Aran?~ EXTERN ~C-ARANJ~ c-aranft8talos + ~OR(2) Class(Player1,RANGER) Class(Player1,DRUID)~ + ~Here. But why are you blaspheming over something so minor, Aran?~ EXTERN ~C-ARANJ~ c-aranft8nature ++ ~You take every opportunity to swear, don't you, Aran.~ EXTERN ~C-ARANJ~ c-aranft8general + ~RandNum(5,1)~ + ~Alright, move along, everyone. The sellsword is having troubles again. Catch up fast, Aran.~ EXTERN ~C-ARANJ~ c-aranshutup1 + ~RandNum(5,2)~ + ~Alright, move along, everyone. The sellsword is having troubles again. Catch up fast, Aran.~ EXTERN ~C-ARANJ~ c-aranshutup2 + ~RandNum(5,3)~ + ~Alright, move along, everyone. The sellsword is having troubles again. Catch up fast, Aran.~ EXTERN ~C-ARANJ~ c-aranshutup3 + ~RandNum(5,4)~ + ~Alright, move along, everyone. The sellsword is having troubles again. Catch up fast, Aran.~ EXTERN ~C-ARANJ~ c-aranshutup4 + ~RandNum(5,5)~ + ~Alright, move along, everyone. The sellsword is having troubles again. Catch up fast, Aran.~ EXTERN ~C-ARANJ~ c-aranshutup5 /* Thought-Check: This chain will end up with 3 PC responses for non-clerics, druids, rangers; 4 for druids and rangers; 3 for clerics; 4 for paladins */ CHAIN ~C-ARANJ~ c-aranft8general ~[ARAN] Three things you shouldn't take from a man, <CHARNAME>... his swearin', his drink, and his weapon.~ == ~HAERDAJ~ IF ~InParty("HaerDalis") InMyArea("HaerDalis") !StateCheck("HaerDalis",CD_STATE_NOTVALID)~ THEN ~[HAERDALIS] Ah, fair fledgeling, I think you should simply say 'his voice'. And of course, no man or woman should ever lose that. ~ == ~KELDORJ~ IF ~InParty("Keldorn") InMyArea("Keldorn") !StateCheck("Keldorn",CD_STATE_NOTVALID)~ THEN ~[KELDORN] Invoking the gods is a natural stress release, Aran. But as you grow more powerful, the gods tend to listen more closely. They may take exception to having their name used so freely.~ == ~MAZZYJ~ IF ~InParty("Mazzy") InMyArea("Mazzy") !StateCheck("Mazzy",CD_STATE_NOTVALID)~ THEN ~[MAZZY] My mother often told me that swearing was not to be taken lightly, for it speaks to your soul as well as the gods.~ == ~NALIAJ~ IF ~InParty("Nalia") InMyArea("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID)~ THEN ~[NALIA] Swearing is both vulgar and common. A gentleman does not use such language.~ == ~C-ARANJ~ IF ~InParty("Nalia") InMyArea("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID)~ THEN ~[ARAN] I thought you were into helpin' th' 'common man', there, Nalia. I never claimed to be no gentleman.~ == ~NALIAJ~ IF ~InParty("Nalia") InMyArea("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID)~ THEN ~[NALIA] Teaching the commoners respect for the gods goes along with teaching respect for themselves, Aran.~ == ~VALYGARJ~ IF ~InParty("Valygar") InMyArea("Valygar") !StateCheck("Valygar",CD_STATE_NOTVALID)~ THEN ~[VALYGAR] Why risk the gods wrath?~ == ~VICONIJ~ IF ~InParty("Viconia") InMyArea("Viconia") !StateCheck("Viconia",CD_STATE_NOTVALID)~ THEN ~[VICONIA] Speak your words loudly, sellsword. I want to see your face just before an Avatar destroys you.~ == ~ANOMENJ~ IF ~InParty("Anomen") InMyArea("Anomen") !StateCheck("Anomen",CD_STATE_NOTVALID)~ THEN ~[ANOMEN] Your language offends me. Then again, your presence in general offends me.~ == ~C-ARANJ~ IF ~InParty("Anomen") InMyArea("Anomen") !StateCheck("Anomen",CD_STATE_NOTVALID)~ THEN ~[ARAN] Bugger off, jackass. Come talk wi' me when you got somethin' more than the foul smell o' breakin' wind from your mouth.~ == ~KORGANJ~ IF ~InParty("Korgan") InMyArea("Korgan") !StateCheck("Korgan",CD_STATE_NOTVALID)~ THEN ~[KORGAN] Let the sorry bastard say his piece.~ END ++ ~Don't you ever worry about the gods hearing your talk? Don't you ever expect help or advice or something to come of your call?~ EXTERN ~C-ARANJ~ c-aranft8attention ++ ~Hey, it is your business if you go around haphazardly calling random gods. But when one answers, you had better be prepared for the surprise.~ EXTERN ~C-ARANJ~ c-aranft8attention ++ ~Without faith, you are nothing. ~ EXTERN ~C-ARANJ~ c-aranft8attention + ~Class("c-aran",CLERIC_ALL)~ I thought you were a cleric, Aran. That should mean you only swear by your own god.~ EXTERN ~C-ARANJ~ c-aranft8arancleric ++ ~I didn't intend that to be a request. I don't want the attention drawn to us.~ EXTERN ~C-ARANJ~ c-aranft8attention ++ ~I am not taking any of those, Aran. Just settle down and choose one god or goddess, will you?~ EXTERN ~C-ARANJ~ c-aranft8attention APPEND ~C-ARANJ~ IF ~~ c-aranft8specific SAY ~[ARAN] I know you are faithful to your god, <CHARNAME>... but I figure a few words in the air won't hurt anythin'.~ ++ ~Don't you ever worry about the gods hearing your talk? Don't you ever expect help or advice or something to come of your call?~ + c-aranft8faith ++ ~Haphazardly calling random gods is dangerous to your soul. IF you do not call on one god, who will claim you from Kelemvor's judgement?~ + c-aranft8faith ++ ~Without faith, you are nothing. Literally. As in abandoned from the Great Wheel. IF you would like, we can pray together, and perhaps it will help you decide.~ + c-aranft8faith ++ ~I didn't intend that to be a request. I don't want the attention drawn to us.~ + c-aranft8faith END IF ~~ c-aranft8helm SAY ~[ARAN] Helm is a tough god, <CHARNAME>... a fine soldierin' one at that. But there's times where he doesn't quite cover it. I figure a few words in the air won't hurt anythin'. ~ ++ ~You should worry about the gods hearing your talk. Do you not expect help or advice or something to come of your call?~ + c-aranft8faith ++ ~Haphazardly calling random gods is dangerous to your soul. IF you do not call a just and fair god like Helm, who will claim you from Kelemvor's judgement?~ + c-aranft8faith ++ ~Without faith, you are nothing. Literally. As in abandoned from the Great Wheel. IF you would like, we can pray together, and perhaps Helm with bear you up on his shield.~ + c-aranft8faith ++ ~I didn't intend that to be a request, Aran. I don't want the attention drawn to us.~ + c-aranft8faith END IF ~~ c-aranft8lathander SAY ~[ARAN] Lathander is a gentle god, <CHARNAME>... a fine one for new beginnings. And the gods know I need some new beginnings. But there's times where he doesn't quite cover it. I figure a few words in the air won't hurt anythin'.~ ++ ~Don't you ever worry about the gods hearing your talk? Don't you ever expect help or advice or something to come of your call?~ + c-aranft8faith ++ ~Haphazardly calling random gods is dangerous to your soul. IF you do not call a gentle and strong god like Lathander, who will claim you from Kelemvor's judgement?~ + c-aranft8faith ++ ~Without faith, you are nothing. Literally. As in abandoned from the Great Wheel. If you would like, we can pray together, and perhaps Lathander will grant you a new beginning.~ + c-aranft8faith ++ ~I didn't intend that to be a request, Aran. I don't want the attention drawn to us.~ + c-aranft8faith END IF ~~ c-aranft8talos SAY ~[ARAN] Talos is a wild god, <CHARNAME>... one for power an' strength. Good to call on in battle. I figure a few words in the air won't hurt anythin'. ~ ++ ~You are a fool to chatter on so. The gods will hear your talk. ~ + c-aranft8faith ++ ~Haphazardly calling random gods is dangerous to your soul. IF you do not call a powerful god like Talos, no god will claim you from Kelemvor's judgement.~ + c-aranft8faith ++ ~Without faith, you are nothing. Literally. As in abandoned from the Great Wheel. Pray to Talos with me, sellsword. Perhaps you will weather this storm we call 'life.'~ + c-aranft8faith ++ ~I didn't intend that to be a request, sellsword. I don't want the attention drawn to us.~ + c-aranft8faith END IF ~~ c-aranft8nature SAY ~[ARAN] All you tree huggers do is talk about the balance and such. But you are good folks to watch a friend's back in battle that's for sure. I figure a few words in the air won't hurt the great balance, or whatever. ~ ++ ~Tree hugger, eh? Thanks alot. Don't you ever worry about the gods hearing your talk? Don't you ever expect help or advice or something to come of your call?~ + c-aranft8faith ++ ~True balance requires choice, Aran. Haphazardly calling random gods is dangerous to your soul. ~ + c-aranft8faith ++ ~Without faith in Nature and her balance, you are nothing. Literally. As in abandoned from the Great Wheel. If you would like, we can meditate together, and perhaps you will find some peace.~ + c-aranft8faith ++ ~I didn't intend that to be a request, sellsword. I don't want the attention drawn to us.~ + c-aranft8faith END IF ~~ c-aranft8faith SAY ~[ARAN] Look, I don't mean nothin'. I have faith in the gods. No offense, but I favor Tymora the most, an' I figure she would like the gamble. It's a soldier's perogative to swear, and I may take advantage a bit, but I don't mean you no harm. But I have to ask, why do you choose service your god? Seems like all they do is play with us mortals like toys. ~ ++ ~I serve my chosen deity as I have always done. My faith grants me the ability to help others see the true path...~ + c-aranft8help ++ ~I serve my chosen deity as I have always done. My faith grants me discipline and control over myself.~ + c-aranft8control ++ ~I serve my chosen deity as I have always done. My faith grants me dominion over others and glories in my eventual rise to master of all.~ + c-aranft8ascend ++ ~I serve my chosen deity as I have always done. My faith grants me great power.~ + c-aranft8power ++ ~I serve my chosen deity for now. My faith in myself will be enough someday, and perhaps I will become a god.~ + c-aranft8ascend ++ ~I am not sure if you are ready to hear about my faith.~ + c-aranft8nothear END IF ~~ c-aranft8arancleric SAY ~[ARAN] Look, I don't mean nothin'. No offense to you, but I favor Tymora the most, an' I figure she likes the gamble. She sends me down some powers, so she can't be that angry about it. It's a soldier's perogative to swear, and I may take advantage a bit, but I don't mean you no harm. By the way, you ever considered followin' Tymora?~ + ~ReputationLT(Player1,11)~ + ~I might be interested. What does Tymora offer me?~ + c-aranft8actionevil + ~ReputationGT(Player1,10) ReputationLT(Player1,15)~ + ~I might be interested. What does Tymora offer me?~ + c-aranft8actionneutral + ~ReputationGT(Player1,14)~ + ~I might be interested. What does Tymora offer me?~ + c-aranft8actiongood ++ ~Hey, that is getting a little personal. Do not try to sway my soul from its destined path, Aran. ~ + c-aranft8nosway ++ ~I serve my chosen deity for now. My faith in myself will be enough, and perhaps someday I will become a god myself.~ + c-aranft8ascend ++ ~I am not sure if you are ready to hear about my faith.~ + c-aranft8nothear END IF ~~ c-aranft8actionevil SAY ~[ARAN] You are playin' wi' me now, <CHARNAME>. Tymora might offer somethin', but she judges by actions. Right now, looks like you don't give decent odds on her investment. You'd have to clean up the way you are goin' and move more towards bright gold rather than deep shadow. But, if you ever do move in that direction, I'm right here to help out a bit.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8actionneutral SAY ~[ARAN] Well, she can offer some decent odds on fair gambles, <CHARNAME>. IF you are really interested, then it might be a good move for you. She don't hold with extremes, except for takin' risks. You seem like th' sort to take a risk now an' then. Hey, you brought me along - that counts double!~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8actiongood SAY ~[ARAN] Well now, Tymora does like a good bet, an' you have the 'good' part down, at least as far as your actions are speakin'. She don't hold with extremes, though, except for takin' risks. So, come talk sometime.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8nosway SAY ~[ARAN] Aye, I did jump too quick now, didn't I. I guess I have a bit to learn about the whole preachin' thing. I didn't mean nothin'.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8help SAY ~[ARAN] Tymorra's Coin, that is a fine idea. I like helpin' folks. Just I get the idea most clerics think that involves changin' gods.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8control SAY ~[ARAN] Tymorra's Coin, that is a strange proposition. I prefer to let things hang out a bit. More fun that way.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8ascend SAY ~[ARAN] Tymorra's Coin, and I thought *I* was the one with th' loose lacing.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8power SAY ~[ARAN] Tymorra's Coin, you better be careful. Seems to me gods have a tendency to give folks power and just to see if they have the sense not to use it.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8nothear SAY ~[ARAN] Fair enough. There's always other times to speak on this kind o' thing.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8attention SAY ~[ARAN] Clerics get all th' attention, far as I can see. Plus, I favor Tymora the most. I figure she would like the gamble.~ IF ~~ THEN GOTO c-aranft8final END IF ~~ c-aranft8final SAY ~[ARAN] Besides, I am all done up. Give me a hand up, eh? We better get movin'.~ IF ~~ THEN EXIT END END // of append block
  13. DisplayStringHead() or, classic commentary that sneaks past conversation In all of the i.e. engine games, there is a "shortcut" to side commentary - stuff that is either sotto voce or minor sidebar commentary not really worth a full interruption of the action for a full dialog treatment. This shortcut is displaying a short string, very short, over the head of the speaker, for example the *groan* and *gasp* comments in the healer's hut at the beginning of IWD2, or in its most direct usage, Lilacor's occassional comments (though that actually uses a related command, not DSH(), but you get the point. Now, at one time in i.e. moding history, everyone seemed to be in love with this usage, especially with items - a talking item, way cool! But, as things have gone on, this kind of thing in BG2 has been only used occasionally, and with some pretty specific intent. Let's look at it, though, because it could help out with some side comments and take a burden off of building a tone of little two-liner interchanges. As always, we can always turn it off via setting or unsetting a blocking variable, so players who hate this can drop the content, and folks who like it can add it in. When too Much Is Too Much Perhaps this might make it into banter territory - short and sweet. But does the party really needs to stop and hear all that? there is not much point to it, and it is scenery dialog. But this one really, really cannot be worth a single dialog box popping... or even Now, most modders don't add this stuff much - except for some cutscenes work, hardly ever. A little goes a long, long way, and frankly the game uses the same vehicle for "out-of-character pointers", so it can be distracting. Lilacor is a PITA I seldom enjoy for long, even though he is an interesting personality... or the first 5 playthroughs... So who has used this and how can we see what it is all about? BioWare™ BG2 Usage Surprisingly, according to a search of all decompiled .bcs shipped with BGII-SoA and updated to ToB, 1,398 times in .bcs. Wow. OK, there are alot of BG files included in that number, but still - a pretty darned high incidence of usage for something that is not particularly noticeable. Most of the usage is simple stuff, scenery stuff, but here are two quick samples: usage as stage direction or hint for the player This example is how the dividing troll, well, "divides". file BGII - SoA\bg2_bcs\TROLUO01.BAF IF HPLT(Myself,10) THEN RESPONSE #100 DisplayStringHead(Myself,49970) // To your horror the troll's corpse heaves, and with a violent splash two smaller trolls emerge from the body. SmallWait(1) CreateVisualEffectObject("ICCSWOUI",Myself) Wait(1) CreateCreatureObject("trollsm2",Myself,0,0,0) // Troll CreateCreatureObject("trollsm2",Myself,0,0,0) // Troll CreateVisualEffectObject("ICCSWOUI",Myself) DestroySelf() END usage as scenery dialog not worthy of a conversation Here, the Beastmaster in the Gladiator pits bemoans the loss of his companion, without pausing to interrupt the combat with a long banter and digressive diatribe about the fundamental unfairness of clobbering an animal with an automatic rifle instead of using nature's equipment and taking her on with just your own bare hands, followed by a small eulogy, while for some reason all combat ceases and people chat about waiting for the fight to restart: file BGII - SoA\bg2_bcs\BEAST.BAF IF See([PC]) Dead("Tabitha") !StateCheck(Myself,STATE_CHARMED) Global("cry","LOCALS",0) THEN RESPONSE #100 DisplayStringHead(Myself,2544) // My Tabitha...loyal to the end. Your death I shall avenge, on that I swear. Enemy() SetGlobal("cry","LOCALS",1) END and of course, the usage for our favorite talking sword, in baldur.bcs NOTE: [DON'T DO THIS EVAR EVAR EVVVVARRRRRR!!!! You had better know your crap thoroughly before you mess with the master script, or you risk really messing up the game for EVERYONE... way not cool... and it runs all the time, and a big baldur.bcs slows everything down, so even if you don't screw it up, you slow down everyone else whether your mod is active or not, or the player is using your content or not - you basically just added a permanent ankle weight to the whole game, so it had better be absolutely necesssary and bloody well worth it, too. Use multiple area scripts with checks for your content being active. Use your NPC script. Heck, use whatever you can figure, and if you can't figure it out, ask every modder you have ever heard of. Seriously. Even if you weight it correctly, and set an immediate blocking variable like InParty("myNPC"). Sorry, rant over. ] file BGII - SoA\bg2_bcs\BALDUR.BAF, the related "DisplayStringHeadOwner()", so that if an item is equipped it will DSH() on the actor... IF Delay(600) CombatCounter(0) OR(6) HasItemEquipedReal("sw2h14",Player1) // Lilarcor HasItemEquipedReal("sw2h14",Player2) // Lilarcor HasItemEquipedReal("sw2h14",Player3) // Lilarcor HasItemEquipedReal("sw2h14",Player4) // Lilarcor HasItemEquipedReal("sw2h14",Player5) // Lilarcor HasItemEquipedReal("sw2h14",Player6) // Lilarcor THEN RESPONSE #10 DisplayStringHeadOwner("sw2h14",20580) // I may be an intelligent sword, but I've had no formal edumication. RESPONSE #10 DisplayStringHeadOwner("sw2h14",20779) // Can we go kill something now, huh? RESPONSE #10 DisplayStringHeadOwner("sw2h14",20780) // How about now? No? RESPONSE #10 DisplayStringHeadOwner("sw2h14",20956) // Come on let's kill something NOW! RESPONSE #10 DisplayStringHeadOwner("sw2h14",24939) // mmmm.... now? RESPONSE #10 DisplayStringHeadOwner("sw2h14",25349) // What about now? RESPONSE #10 DisplayStringHeadOwner("sw2h14",31258) // Now? Please? Pretty please? RESPONSE #10 DisplayStringHeadOwner("sw2h14",31259) // I don't know what you were expecting, but as a sword I'm pretty one-dimensional in what I want. RESPONSE #10 DisplayStringHeadOwner("sw2h14",31260) // Can we go whack something now? RESPONSE #10 DisplayStringHeadOwner("sw2h14",31638) // Let's whack something eeeeevvvvillllll.... RESPONSE #10 DisplayStringHeadOwner("sw2h14",31639) // Why don't we go kill that over there? RESPONSE #10 DisplayStringHeadOwner("sw2h14",31640) // You know, I was a Moonblade once. RESPONSE #10 DisplayStringHeadOwner("sw2h14",31641) // You really need to clean me. I like to shine! RESPONSE #10 DisplayStringHeadOwner("sw2h14",31646) // Are we going to kill something now, maybe? Huh? RESPONSE #10 DisplayStringHeadOwner("sw2h14",31649) // You know, my last owner always said I was sharp and edgy. He was such an ass. RESPONSE #10 DisplayStringHeadOwner("sw2h14",31651) // I don't chop wood. I am not an axe. RESPONSE #10 DisplayStringHeadOwner("sw2h14",31652) // Now! Now! Kill something now!! Yeah! RESPONSE #10 DisplayStringHeadOwner("sw2h14",31654) // Booooo-ring! RESPONSE #10 DisplayStringHeadOwner("sw2h14",31655) // (sigh) RESPONSE #10 DisplayStringHeadOwner("sw2h14",31656) // (double sigh) RESPONSE #10 DisplayStringHeadOwner("sw2h14",6433) // Wanna go kill that over there? C'mon, let's kill somthin'! END IF Delay(125) !CombatCounter(0) OR(6) HasItemEquipedReal("sw2h14",Player1) // Lilarcor HasItemEquipedReal("sw2h14",Player2) // Lilarcor HasItemEquipedReal("sw2h14",Player3) // Lilarcor HasItemEquipedReal("sw2h14",Player4) // Lilarcor HasItemEquipedReal("sw2h14",Player5) // Lilarcor HasItemEquipedReal("sw2h14",Player6) // Lilarcor THEN RESPONSE #10 DisplayStringHeadOwner("sw2h14",839) // You deal, I'll cut! RESPONSE #10 DisplayStringHeadOwner("sw2h14",844) // Let's see what's inside this one! Yeah! RESPONSE #10 DisplayStringHeadOwner("sw2h14",849) // Come get some! Boo-yah! RESPONSE #10 DisplayStringHeadOwner("sw2h14",869) // Choke up, dolt, your grip is all wrong! RESPONSE #10 DisplayStringHeadOwner("sw2h14",2308) // Hands up, kiddies, who wants to die?! RESPONSE #10 DisplayStringHeadOwner("sw2h14",2389) // Mmmm... tastes like chicken! RESPONSE #10 DisplayStringHeadOwner("sw2h14",4393) // Sissy fighter! You grab, I'll scratch! RESPONSE #10 DisplayStringHeadOwner("sw2h14",31659) // Muwahahaha-ha-ha!! RESPONSE #10 DisplayStringHeadOwner("sw2h14",31660) // You can't be serious! RESPONSE #10 DisplayStringHeadOwner("sw2h14",7908) // Ooo, that'll leave a mark! RESPONSE #10 DisplayStringHeadOwner("sw2h14",8480) // Murder! Death!! KILL!!! RESPONSE #10 DisplayStringHeadOwner("sw2h14",9687) // Who's your daddy! RESPONSE #10 DisplayStringHeadOwner("sw2h14",9800) // We got a gusher! RESPONSE #10 DisplayStringHeadOwner("sw2h14",10725) // Are YOU talking to ME?!! RESPONSE #10 DisplayStringHeadOwner("sw2h14",11255) // Some of my finest work! RESPONSE #10 DisplayStringHeadOwner("sw2h14",12671) // I'm the best at what I do, and what I do ain't pretty! RESPONSE #10 DisplayStringHeadOwner("sw2h14",31662) // Yeah! Hit it! Hit it again! RESPONSE #10 DisplayStringHeadOwner("sw2h14",31663) // I am invincible! Invincible, I say! RESPONSE #10 DisplayStringHeadOwner("sw2h14",32426) // Wouldn't it be cool if you could dual-wield me? RESPONSE #10 DisplayStringHeadOwner("sw2h14",19304) // YOINK! Got yer nose! RESPONSE #10 DisplayStringHeadOwner("sw2h14",19441) // My brother is a +12 Hackmaster! RESPONSE #10 DisplayStringHeadOwner("sw2h14",19638) // I love the smell of daisies in the morning! RESPONSE #10 DisplayStringHeadOwner("sw2h14",20059) // Swing harder! Swing harder!! RESPONSE #10 DisplayStringHeadOwner("sw2h14",20396) // Bring 'em on! I ain't done! RESPONSE #10 DisplayStringHeadOwner("sw2h14",20457) // Oh yeah! RESPONSE #10 DisplayStringHeadOwner("sw2h14",31658) // Let's dance! RESPONSE #10 DisplayStringHeadOwner("sw2h14",34689) // Kill it! Kill it quick before they're all gone! RESPONSE #10 DisplayStringHeadOwner("sw2h14",36145) // Kill kill kill! Yeah! Cool!! RESPONSE #10 DisplayStringHeadOwner("sw2h14",41815) // ...and this one's for grandma, who said I'd never amount to anything more than a butterknife!! RESPONSE #10 DisplayStringHeadOwner("sw2h14",6434) // Hot butta! RESPONSE #10 DisplayStringHeadOwner("sw2h14",6435) // You feel lucky, punk? RESPONSE #10 DisplayStringHeadOwner("sw2h14",6441) // Oooh, I'm shaking! Haha! RESPONSE #10 DisplayStringHeadOwner("sw2h14",6442) // Oooh, throw a coin in that fountain! Hahaha! END Well, ok, what about mods? One of my favorite ones uses it in a way that I would not consider - I would rather some of Tashia's stuff was actually set up as dialog or banters, but some of them are pretty enjoyable as throw-away lines: I like her flirting, with some cool one-liner put-downs, using a random response and resetting the LOCALS value to zero for a new cycle - pretty darned cool, since they are one-liners, and don't need a bunch of responses: IF Global("DoFlirt","LOCALS",5) THEN RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@280) // Excusez-moi, je... sans vouloir vous offenser... mais vous êtes un de ces étrangers dont tout le monde parle, n'est-ce pas ? Un aventurier venu du nord ? RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@281) // Le parchemin de Helm dispara”t avec la destruction de l'avatar de Démogorgon. RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Myself,@282) // P-par pitié, ne me faites pas de mal ! Je... je suis venu vous voir parce que j'ai entendu parler de votre grand pouvoir, étranger. Vous... vous êtes bien un aventurier venu du nord, n'est-ce pas ? RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@283) // RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@284) // RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@285) // Mais oui, bien sûr. Tout le monde peut voir que vous êtes un homme extraordinaire, pardonnez-moi. RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@286) // Et toi, tu dois être celui dont parlait le garçon près du cimetière. RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@287) // On vous a parlé de moi ? Oui, c'est vrai que c'est une petite ville. Et à l'écart de tout, c'est-ce que j'ai pensé... suffisamment pour que personne ne me trouve ici. Quelle grossière erreur ! RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@288) // C'est une aubaine que quelqu'un d'aussi puissant que vous soit venu dans ce coin perdu. Je pensais qu'Amkethran serait suffisamment loin de tout pour que personne ne m'y trouve, mais je me trompais ! RESPONSE #10 SetGlobal("DoFlirt","LOCALS",0) DisplayStringHead(Player1,@289) // Je ne veux pas vous importuner, étranger, mais je cours un très grave danger ! J'ai besoin de votre aide ! J'implore de vous une faveur, messire, sinon ma fille et moi allons sûrement mourir ! END Where I disagree with the usage is when there are several lines passed back and forth. Not the ones that might be mini-banters, like this funny little jibing of Jaheira's snoring: IF InParty(Myself) PartyRested() AreaType(DUNGEON) See("Jaheira") InParty("Jaheira") !Global("SnoreJaheira","GLOBAL",1) THEN RESPONSE #100 SetGlobal("SnoreJaheira","GLOBAL",1) DisplayStringHead(Myself,@123) // No such index Wait(3) DisplayStringHead("Jaheira",@124) // No such index Wait(3) DisplayStringHead(Myself,@125) // No such index Wait(3) DisplayStringHead("Jaheira",@126) // No such index Wait(3) DisplayStringHead(Myself,@127) // No such index END but the ones where Player1 is scripted the response. I hate that. Even for one liners, if there is going to be a reply, unless Player1 has been brainsucked and dominated, there really is no reason I can think of to not give the player some choice. I like this sequence in-game, but then, I like Tashia and I like those responses. But I play certain types of characters. I would rather have choices to match more roleplaying options. One I would rewrite as a banter: IF Global("SleepComment","LOCALS",3) THEN RESPONSE #100 SetGlobal("SleepComment","LOCALS",0) SetGlobal("PillowTalk","LOCALS",1) StartCutSceneMode() MoveViewObject("Tashia",INSTANT) FaceObject(Player1) DisplayStringHead(Myself,@77) // No such index Wait(3) DisplayStringHead(Myself,@78) // No such index Wait(2) DisplayStringHead(Player1,@79) // No such index Wait(2) DisplayStringHead(Myself,@80) // No such index Wait(2) DisplayStringHead(Player1,@81) // No such index Wait(2) DisplayStringHead(Myself,@82) // No such index Wait(3) DisplayStringHead(Myself,@83) // No such index EndCutSceneMode() END The most common mod usage is for combat script, like this snippet of Amber that gives a potion to a fellow player if the conditions are right (Comments by Darios): // ********************************************************************** // * Segment Name: dai_AmberHealLIPotions.baf // ********************************************************************** //Pass a potion to the Love Interest - this may not always work due to IE limitations //This is triggered by a 2001call from DPLAYER3.BCS or from gs_2001Call.baf //Works for both PCS and non-PCS parties //If Amber has a potion..... problem is, this will make her pass all potions of type //This is an IE limitation: GiveItem always gives all items of the specified type //Superior healing IF ActionListEmpty() !CombatCounter(0) Heard(Player1,2001) Global("M#AmberRomanceActive","GLOBAL",2) Global("M#AmberMatch","GLOBAL",1) !StateCheck(Player1,STATE_OUT_OF_ACTION) !HasItem("potn08",Player1) !HasItem("potn52",Player1) !HasItem("potn55",Player1) HasItem("potn55",Myself) THEN RESPONSE #100 GiveItem("potn55",Player1) DisplayStringHead(Myself,@58) // Quickly, my love! Drink this! END All these can get the job done written into the .baf files. Just check which versionn of WeiDU you are using - up until recently, you *had* to add USING to your traification stuff with compiling .baf files, even if you used AUTO_TRA. I am not sure if it is necesary now, but I will have to wait a bit to test or get comments, so it is probably safest to use COMPILE ~mybaf.baf~ USING ~mybaf.tra~ DisplayStringHead(Myself,~They at least no is wuss around here.~) DisplayStringHead(Myself,%They at least no is wuss around here.%) DisplayStringHead(Myself,@247) /* or, if there already is a string reference to use, */ DisplayStringHead(Myself,46150) // quaffs a potion You can also call an entire conversation this way, back and forth. Take a look at these two cool blocks from Zrayen's "Beyond The Law". This one kicks the party hard (though safer action is to kick them out of the party and then set them as enemies) if the script sees the listed conditions: // If the PC attacks Brega or Bylanna or Prelate Radiant Heart IF OR(2) InParty("Kiyone") InParty("Kova") OR(8) Allegiance("habrega",ENEMY) Allegiance("bylanna",ENEMY) Allegiance("hprelate",ENEMY) Allegiance("Z#ARDEL",ENEMY) Allegiance("Z#Baev",ENEMY) Dead("hprelate") Dead("bylanna") Dead("habrega") THEN RESPONSE #100 DisplayStringHead("Kiyone", @804) DisplayStringHead("Kova", @805) ActionOverride("Kiyone", Enemy()) ActionOverride("Kova", Enemy()) END and this one does a randomly different statement when it is run: IF GlobalGT("GovtMeetGuards","GLOBAL",3) THEN RESPONSE #10 SetGlobal("GovtMeetGuards","GLOBAL",2) DisplayStringHead("Kiyone", @810) ReputationInc(-1) RESPONSE #10 SetGlobal("GovtMeetGuards","GLOBAL",2) DisplayStringHead("Kiyone", @811) ReputationInc(-1) RESPONSE #10 SetGlobal("GovtMeetGuards","GLOBAL",2) DisplayStringHead("Kiyone", @812) ReputationInc(-1) END Chloe uses it to inform the player that they have Transgressed Against The Will Of God (Or At Least The Modder) by trying to use Chloe's special item: // FIRE FIRE FIRE!! Hehehehe, FIRE, yeah FRY 'EM! // SW 1 IF !HasItemEquiped("CHLOSW1","Chloe") HasItemEquiped("CHLOSW1",Player1) THEN RESPONSE #100 DisplayStringHead(Player1,~Only a chosen of Akadia can wield this weapon. You have commited sacriledge~) CreateVisualEffectObject("SPSCHGI",Player1) CreateVisualEffectObject("SPHOLYWD",Player1) CreateVisualEffectObject("SPHOLYMT",Player1) CreateVisualEffectObject("SPGENHLA",Player1) CreateVisualEffectObject("SKYBOLT",Player1) CreateVisualEffectObject("SPFIREPI",Player1) CreateVisualEffectObject("SPFIRSDI",Player1) ActionOverride(Player1,ReallyForceSpell(Player1,WIZARD_FIREBALL)) Kill(Player1) END (Hey, put a half-crazy god-child in your party and take her stuff, and I guess you really get what you deserve, even if it is a game killing TKO... I reallyy hope you saved. You did save, didn't you...) Opportunities for Aran Well, there are some things that really don't need much. I have some odd things here and there for fun, like this one, which could be dropped from a single line called in dialog to a simple one liner DSH(): in .baf /* Shade Lord (Darios) */ IF Killed([0.UNDEAD.SHADOW.SHADOW.0.FEMALE]) // Shade Lord Global("c-silencearan","GLOBAL",0) Global("c-aranshadelord","LOCALS",0) OR(2) AreaCheck("AR1400") // Temple ruins AreaCheck("AR1404") // Temple ruins restored InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal("c-aranshadelord","LOCALS",1) END in .d /* Shade Lord (Darious) */ IF ~Global("c-aranshadelord","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranshade1 SAY ~[ARAN] Ah, light! Lathandar's Luminated Lamp, that's a right fine thing to see. I was beginnin' to think we'd never see naught but shadow, darkness, an' death.~ IF ~~ THEN DO ~SetGlobal("c-aranshadelord","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT END becomes /* Shade Lord (Darios) */ IF Killed([0.UNDEAD.SHADOW.SHADOW.0.FEMALE]) // Shade Lord Global("c-silencearan","GLOBAL",0) Global("c-aranshadelord","LOCALS",0) OR(2) AreaCheck("AR1400") // Temple ruins AreaCheck("AR1404") // Temple ruins restored InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 DisplayStringHead(Myself,~Ah, light! Lathandar's Luminated Lamp, that's a right fine thing to see. I was beginnin' to think we'd never see naught but shadow, darkness, an' death.~) SetGlobal("c-aranshadelord","LOCALS",1) SetGlobalTimer("c-aransmalltalk","GLOBAL",300) END Or what about exchanges that are too short for dialog? /* Korgan Doppleganger */ IF See([0.0.DOPPLEGANGER]) Global("c-silencearan","GLOBAL",0) Global("c-arandopple","LOCALS",0) InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) InParty("korgan") !StateCheck("korgan",CD_STATE_NOTVALID) !StateCheck("korgan",CD_STATE_NOTVALID) THEN RESPONSE #100 DisplayStringHead("korgan",~That be one ugly bastard.~) Wait(2) DisplayStringHead(Myself,~Hey! He looks just like me!~) Wait(2) DisplayStringHead("korgan",~That's what I said.~) Wait(2) SetGlobal("c-aranarandopple","LOCALS",1) SetGlobalTimer("c-aransmalltalk","GLOBAL",300) END Or perhaps something for the ladies in service... /* ..And Your Beady Little Eyes on the Road Ahead (10 points for song reference) */ IF CombatCounter(0) Global("c-silencearan","GLOBAL",0) See("kpmaid01") Global("c-aranchanelle","LOCALS",0) InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 DisplayStringHead(Myself,~Well, now, you are a pretty lass...~) Wait(2) DisplayStringHead("kpmaid01",~Watch those hands, sirrah.~) Wait(2) SetGlobal("c-aranchanelle","LOCALS",1) SetGlobalTimer("c-aransmalltalk","GLOBAL",300) END Or even a minor interlude with a friend... /* Childish Jokes Are Almost Always Funny */ IF Global("c-silencearan","GLOBAL",0) OR(2) GlobalGT("c-arananomen","LOCALS",0) // banter fired, needs G<>L check GlobalGT("c-anomenaran","LOCALS",0) // banter fired, needs G<>L check Global("c-arananomenf","LOCALS",0) InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) InParty("anomen") !StateCheck("anomen",CD_STATE_NOTVALID) !StateCheck("anomen",CD_STATE_NOTVALID) THEN RESPONSE #100 DisplayStringHead(Myself,~*BUUURRPPPP*~) Wait(2) DisplayStringHead("anomen",~Control yourself, Whitehand. That is churlish behavior.~) Wait(2) DisplayStringHead(Myself,~Sir, Yes Sir. No more loud burpin', Sir.~) Wait(3) DisplayStringHead(Myself,~*fffbbbbbt*~) Wait(2) SetGlobal("c-arananomenc","LOCALS",1) SetGlobalTimer("c-aransmalltalk","GLOBAL",300) END This just might have some possibilities.
  14. AreaCheck resources, formatted and commented: /* SoA Area Checks */ AreaCheck("AR0011") // Candlekeep Dream 1 (Do you remember Candlekeep?) AreaCheck("AR0012") // Candlekeep Library (Main Door Trigger) AreaCheck("AR0013") // Candlekeep Library (Stairway Triggers Up and Down) AreaCheck("AR0014") // Candlekeep Library (Stairway Trigger Down) AreaCheck("AR0015") // Baldur's Gate Estate (Tutorial starts here) AreaCheck("AR0016") // Baldur's Gate Estate (Tutorial area) AreaCheck("AR0017") // Baldur's Gate Estate (Tutorial area) AreaCheck("AR0018") // Baldur's Gate Estate Cellar (Tutorial area) AreaCheck("AR0020") // City Gates AreaCheck("AR0021") // Crooked Crane 1st Floor AreaCheck("AR0022") // Crooked Crane 2nd Floor AreaCheck("AR0028") // Candlekeep Dream (After PC Soultheft) AreaCheck("AR0041") // Random Encounter City AreaCheck("AR0042") // Random Encounter Outdoor AreaCheck("AR0043") // Random Encounter Outdoor (With rocks) AreaCheck("AR0044") // Random Encounter Outdoor (sand) AreaCheck("AR0045") // Random Encounter City AreaCheck("AR0046") // Random Encounter City (bridge) AreaCheck("AR0069") // Government Building (Cowled Cutscene -- "Why is this man not gagged?") AreaCheck("AR0070") // Spellhold (Irenicus Cutscene -- "I cannot be caged...") AreaCheck("AR0071") // Spellhold (Imoen Soultheft Cutscene -- "Silence do, you have no purpose...") AreaCheck("AR0072") // Ust Natha Temple (Irenicus/Bodhi, Ardula/Phaere Cutscene) AreaCheck("AR0082") // Lich Grave in Bridge District Inn AreaCheck("AR0083") // Candlekeep Library (Dream: PC learns to control the Slayer) AreaCheck("AR0084") // Candlekeep Library (Stairway trigger down) AreaCheck("AR0085") // Tree of Life AreaCheck("AR0086") // Wooded Area AreaCheck("AR0087") // Elven Dining Room AreaCheck("AR0201") // Ghouls village under Temple District AreaCheck("AR0202") // The Unseeing Eye Cult Hideout AreaCheck("AR0203") // Temple of the Forgotten God -- Amaunator (Unseeing Eye Plot) AreaCheck("AR0204") // The Forgotten Believers -- Temple City (Unseeing Eye Plot) AreaCheck("AR0205") // The Beholder Hideout (Unseeing Eye Plot) AreaCheck("AR0206") // The Halfling Village in the Sphere AreaCheck("AR0300") // The Docks AreaCheck("AR0301") // Mae'Var's Hide Out AreaCheck("AR0302") // Mae'Var's Inn 1st Floor -- Entrance AreaCheck("AR0303") // Mae'Var's Inn 2nd Floor -- Training Area AreaCheck("AR0304") // Mae'Var's Inn 3rd Floor -- Edwin AreaCheck("AR0305") // Shadow Thieves Guild Entrance AreaCheck("AR0306") // Renal Bloodscalp's Hideout AreaCheck("AR0307") // Aran Linvail's Hideout AreaCheck("AR0308") // Harper's 1st Floor AreaCheck("AR0309") // Harper's 2nd Floor AreaCheck("AR0310") // Pirates' Hideout in Sea Bouny Tavern AreaCheck("AR0311") // Living Room (Entry points outside and up) -- Gaelan? AreaCheck("AR0312") // Sleeping Room (Entry poin down) -- Arledrian AreaCheck("AR0313") // Sea Bounty Tavern 1st Floor AreaCheck("AR0314") // Sea Bounty Tavern 2nd Floor AreaCheck("AR0315") // Living Room (Favour for Edwin -- Mae'Var Plot) AreaCheck("AR0316") // Sleeping Room (Favour for Edwin -- Mae'Var Plot) AreaCheck("AR0317") // Sleeping Room (Favour for Edwin -- Mae'Var Plot) AreaCheck("AR0318") // Storage Room AreaCheck("AR0319") // Temple of Oghma AreaCheck("AR0321") // Thief Stronghold (Hideout) AreaCheck("AR0322") // Thief Stronghold (1st Floor) AreaCheck("AR0323") // Thief Stronghold (2nd Floor) AreaCheck("AR0324") // Thief Stronghold (3rd Floor) AreaCheck("AR0325") // Corthala House 1st Floor AreaCheck("AR0326") // Corthala House 2nd Floor AreaCheck("AR0327") // Shadow Thief Entrance (sided with Bodhi) AreaCheck("AR0328") // Shadow Thief 1st Floor (sided with Bodhi) AreaCheck("AR0329") // Aran's Hideout (sided with Bodhi) AreaCheck("AR0330") // House 1st Floor (Kangaxx) AreaCheck("AR0331") // House Cellar (Kangaxx) AreaCheck("AR0332") // Barracks in the Docks AreaCheck("AR0333") // Barracks in the Docks AreaCheck("AR0334") // Cromwell's Shop AreaCheck("AR0335") // Sleeping Room AreaCheck("AR0400") // Slums AreaCheck("AR0401") // Jansen Cellar AreaCheck("AR0402") // Jansen 1st Floor AreaCheck("AR0403") // Jansen 2nd Floor AreaCheck("AR0404") // Sewers beneath Coronet -- Lilarcor AreaCheck("AR0405") // Slaver's Ship Building AreaCheck("AR0406") // Copper Coronet AreaCheck("AR0407") // Prebek's House AreaCheck("AR0408") // Temple of Ilmater AreaCheck("AR0409") // Living Room (Ployer's home) AreaCheck("AR0410") // Sphere: Navigator's room -- Lavok's Hideout AreaCheck("AR0411") // Sphere: Entrance floor AreaCheck("AR0412") // Sphere: Ice and Fire Room AreaCheck("AR0413") // Sphere: Enginge Room AreaCheck("AR0414") // Sphere: Demon Plane AreaCheck("AR0415") // Living Room 1st Floor AreaCheck("AR0416") // Living Room 2nd Floor AreaCheck("AR0417") // Living Room AreaCheck("AR0418") // Myconids AreaCheck("AR0419") // Myconid AreaCheck("AR0420") // Sphere: Lizardmen Hideout AreaCheck("AR0500") // Bridge District AreaCheck("AR0501") // Tanner's Hideout 1st Floor AreaCheck("AR0502") // Tanner's Hideout Cellar AreaCheck("AR0503") // Tanner's Hideout Dock AreaCheck("AR0504") // Saerk's House 1st Floor AreaCheck("AR0505") // Saerk's House 2nd Floor AreaCheck("AR0506") // Noble House 1st Floor AreaCheck("AR0507") // Kidnappers' Hideout 1st Floor AreaCheck("AR0508") // Kidnappers' Hideout 2nd Floor AreaCheck("AR0509") // Five Flagons Inn 1st Floor AreaCheck("AR0510") // Five Flagons Inn Theater AreaCheck("AR0511") // Five Flagons Inn 2nd Floor AreaCheck("AR0512") // Temple of Helm AreaCheck("AR0513") // Calbor's Inn at Bridge District 1st Floor AreaCheck("AR0514") // Inn at Bridge District 2nd Floor AreaCheck("AR0515") // Inn at Bridge District 3rd Floor AreaCheck("AR0516") // Planar Prison AreaCheck("AR0517") // Planar Prison Cell AreaCheck("AR0518") // Planar Prison Cell AreaCheck("AR0519") // Planar Prison Cell AreaCheck("AR0520") // Planar Prison Cell AreaCheck("AR0521") // Planar Prison Cell AreaCheck("AR0522") // Five Flagons Inn (Stronghold) AreaCheck("AR0523") // Five Flagons Theater (Stronghold) AreaCheck("AR0525") // House 1st Floor AreaCheck("AR0526") // Sarcophagus Cellar AreaCheck("AR0527") // House 1st Floor AreaCheck("AR0528") // House 2nd Floor AreaCheck("AR0529") // Neb's Hideout AreaCheck("AR0530") // Storehouse AreaCheck("AR0531") // Commoner House AreaCheck("AR0600") // Circus Tent (phased) AreaCheck("AR0601") // Air Plane in Irenicus's Dungeon AreaCheck("AR0602") // Irenicus's Dungeon 1st Floor AreaCheck("AR0603") // Irenicus's Dungeon 2nd Floor AreaCheck("AR0604") // Circus Tent 1st Floor AreaCheck("AR0605") // Circus Tent 2nd Floor AreaCheck("AR0606") // Circus Tent 3rd Floor AreaCheck("AR0607") // Circus Tent restored AreaCheck("AR0700") // Waukeen's Promenade AreaCheck("AR0701") // The Sewers AreaCheck("AR0702") // Adventurer's Mart AreaCheck("AR0703") // Temple of Ilmater AreaCheck("AR0704") // Mithrest Inn AreaCheck("AR0705") // Mekrath's Hideout in the Sewers (Haer'Dalis Plot) AreaCheck("AR0706") // Armourer/Fletcher AreaCheck("AR0707") // Enge's Shop AreaCheck("AR0708") // Cernd's former home AreaCheck("AR0709") // Den of the Seven Vales 1st Floor AreaCheck("AR0710") // Fennecia's Home AreaCheck("AR0711") // Illithid Hideout in the Sewers (The Hidden Plot) AreaCheck("AR0712") // Den of the Seven Vales 2nd Floor AreaCheck("AR0713") // Store or Inn at Promenade AreaCheck("AR0714") // Debris at Waukeen's Promenade (Irenicus Cutscene in the beginning) AreaCheck("AR0800") // Graveyard AreaCheck("AR0801") // Bodhi's Hideout (sided with Aran) AreaCheck("AR0802") // Netherscroll, Korgan's Book, Edwin AreaCheck("AR0803") // Bodhi's Lair (sided with Aran) AreaCheck("AR0804") // Pai'Na's Hideout AreaCheck("AR0805") // Crypt AreaCheck("AR0806") // Crypt AreaCheck("AR0807") // Crypt AreaCheck("AR0808") // Bodhi's Hideout (Abduction Plot, getting Imoen's soul) AreaCheck("AR0809") // Bodhi's Lair (Abduction Plot, getting Imoen's soul) AreaCheck("AR0810") // Crypt AreaCheck("AR0811") // Crypt AreaCheck("AR0812") // Crypt AreaCheck("AR0813") // Crypt AreaCheck("AR0900") // Temple District AreaCheck("AR0901") // Temple of Helm AreaCheck("AR0902") // Temple of Lathander AreaCheck("AR0903") // Order of the Radiant Heart AreaCheck("AR0904") // Temple of Talos AreaCheck("AR0905") // Pimlico's Estate AreaCheck("AR0906") // Guarded Compound 1st Floor AreaCheck("AR0907") // Guarded Compound 2nd Floor AreaCheck("AR1000") // Government District AreaCheck("AR1001") // Delryn's Estate AreaCheck("AR1002") // Councel Building AreaCheck("AR1003") // Firecam's Estate AreaCheck("AR1004") // Deril's Estate (Cernd Plot) AreaCheck("AR1005") // Prison AreaCheck("AR1006") // Jysstev's Estate (Oisig Plot) AreaCheck("AR1007") // Noble House AreaCheck("AR1008") // Twisted Rune AreaCheck("AR1009") // Noble House (Isaea Roenall's) AreaCheck("AR1010") // Temple of Waukeen AreaCheck("AR1100") // Umar Hills AreaCheck("AR1101") // Valygar's Cabin AreaCheck("AR1102") // Merella's Cabin AreaCheck("AR1103") // Jermien's Cabin AreaCheck("AR1104") // Mayor Lloyd's Cabin AreaCheck("AR1105") // Imnesvale Inn AreaCheck("AR1106") // Umar's Cave AreaCheck("AR1107") // Ranger-Protector's Cabin (Stronghold) AreaCheck("AR1200") // Windspear Hills AreaCheck("AR1201") // Firkraarg's Entrance AreaCheck("AR1202") // Firkaarg's Maze AreaCheck("AR1203") // Firkraag's Hideout AreaCheck("AR1204") // Garren Windspear's Cabin AreaCheck("AR1300") // De'Arnise Keep Destroyed AreaCheck("AR1301") // De'Arnise Cellar AreaCheck("AR1302") // De'Arnise Keep 1st Floor AreaCheck("AR1303") // De'Arnise Keep 2nd Floor (Destroyed) AreaCheck("AR1304") // De'Arnise Keep (Restored, Stronghold) AreaCheck("AR1305") // De'Arnise Keep (Stronghold) AreaCheck("AR1306") // De'Arnise Keep (Stronghold) AreaCheck("AR1307") // De'Arnise Keep (Stronghold) AreaCheck("AR1400") // Shadow Temple Land (restored, Ranger) AreaCheck("AR1401") // Shadow Temple AreaCheck("AR1402") // Shadow Dragon Hideout AreaCheck("AR1403") // Wolfwere Hideout AreaCheck("AR1404") // Shadow Temple Land shadowed AreaCheck("AR1500") // Spellhold AreaCheck("AR1501") // Cave (Spellhold Test) AreaCheck("AR1502") // Fire Room (Spellhold Test) AreaCheck("AR1503") // Spore Room (Spellhold Test) AreaCheck("AR1504") // Crushing Trap Room (Spellhold Test) AreaCheck("AR1505") // Lever Room (Spellhold Test) AreaCheck("AR1506") // Troll Cave (Spellhold Test) AreaCheck("AR1507") // Kobold Room (Spellhold Test) AreaCheck("AR1508") // Final Judgement Spellhold Test AreaCheck("AR1509") // Myconid Room (Spellhold Test) AreaCheck("AR1510") // Sahuagin Room (Spellhold Test) AreaCheck("AR1511") // Elven Table while Spellhold Test AreaCheck("AR1512") // Bodhi's Hunt Level 1 AreaCheck("AR1513") // Bodhi's Hunt Level 2 AreaCheck("AR1514") // Bodhi's Hunt Level 3 (1st Slayer Change Happens here) AreaCheck("AR1515") // Spellhold (Irenicus' Living Room) AreaCheck("AR1516") // Spellhold (Soultheft Level) AreaCheck("AR1600") // Brynnlaw AreaCheck("AR1601") // Desharik's Estate AreaCheck("AR1602") // Brynnlaw's Inn AreaCheck("AR1603") // Brynnlaw's Shop AreaCheck("AR1604") // Temple of Umberlee AreaCheck("AR1605") // CW's House AreaCheck("AR1606") // House of Desharik's Lover AreaCheck("AR1607") // Githyanki Assault AreaCheck("AR1608") // Cellar of Brothel AreaCheck("AR1609") // Courtesan Room AreaCheck("AR1610") // Brothel Prison AreaCheck("AR1611") // Brothel AreaCheck("AR1612") // Brothel Kitchen AreaCheck("AR1613") // Brothel HQ AreaCheck("AR1700") // Small Teeth Pass AreaCheck("AR1800") // North Forest AreaCheck("AR1900") // Druid Grove Area AreaCheck("AR1901") // Druid Grove AreaCheck("AR1902") // Storehouse (Ihtafeer's Storehouse) AreaCheck("AR1904") // Troll Hill AreaCheck("AR1905") // Store Tower AreaCheck("AR2000") // Trademeet AreaCheck("AR2001") // The Smithy AreaCheck("AR2002") // Fentan's House AreaCheck("AR2006") // Tiri's Home AreaCheck("AR2007") // High Merchant's Estate AreaCheck("AR2008") // Temple of Waukeen AreaCheck("AR2009") // High Merchant Prison AreaCheck("AR2010") // Trademeet's Inn AreaCheck("AR2011") // Alibakkar's Estate AreaCheck("AR2012") // Lurraxol's Estate AreaCheck("AR2013") // Trademeet Crypt AreaCheck("AR2014") // Djinni's Tent AreaCheck("AR2015") // Merchant Tent AreaCheck("AR2016") // Raffee's Tent AreaCheck("AR2017") // Courtesan Tent AreaCheck("AR2018") // Tent (no exit) 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("AR2300") // Sahuagin City AreaCheck("AR2400") // Mind Flayers in Underdark AreaCheck("AR2401") // Cave Between Underdark and Exit from Underdark AreaCheck("AR2402") // Kuo Toa in Underdark AreaCheck("AR2500") // Elven Temple at Underdark Exit AreaCheck("AR2600") // Thetyr Wood AreaCheck("AR2601") // Meet Drizzt Do'Urden AreaCheck("AR2602") // Cave in Woods to Suldanesselar AreaCheck("AR2603") // Coran's Cabin AreaCheck("AR2700") // Ancient Spirits? AreaCheck("AR2800") // Suldanesselar AreaCheck("AR2801") // House of High Priestess of Suldanesselar AreaCheck("AR2802") // House in Suldanesselar AreaCheck("AR2803") // Rillifane Temple AreaCheck("AR2804") // To the Tree of Life (Entrance Hidden) AreaCheck("AR2805") // To the Tree of Life (Entrance Revealed) AreaCheck("AR2806") // Tree of Life AreaCheck("AR2807") // Black Dragon's Hideout AreaCheck("AR2808") // House in Suldanesselar AreaCheck("AR2810") // House in Suldanesselar AreaCheck("AR2811") // House in Suldanesselar AreaCheck("AR2812") // Temple of Rillifane after the Battle AreaCheck("AR2900") // The Abyss AreaCheck("AR2901") // Fear (Abyss) AreaCheck("AR2902") // Pride (Abyss) AreaCheck("AR2903") // Greed (Abyss) AreaCheck("AR2904") // Selfish (Abyss) AreaCheck("AR2905") // Sarevok (Abyss) AreaCheck("AR2906") // Jon Battle ? /* ToB Area List */ AreaCheck("AR3000") // Watcher's Keep AreaCheck("AR3001") // Watcher's Keep -- Altar level AreaCheck("AR3003") // Watcher's Keep -- Compass level AreaCheck("AR3004") // Watcher's Keep AreaCheck("AR3005") // Watcher's Keep -- tieflings AreaCheck("AR3006") // Watcher's Keep -- Succubus AreaCheck("AR3007") // Watcher's Keep --Cambion AreaCheck("AR3008") // Watcher's Keep -- Baalor (Paladin Sword) AreaCheck("AR3009") // Watcher's Keep -- Wild Magic ? AreaCheck("AR3010") // Watcher's Keep -- Tanar'ri -- Obelisk AreaCheck("AR3011") // Watcher's Keep -- Bard's Gloves, Manman's Journal AreaCheck("AR3012") // Watcher's Keep -- Tahazzar AreaCheck("AR3013") // Watcher's Keep -- Ka'rashur AreaCheck("AR3014") // Watcher's Keep -- White Dragon Scales AreaCheck("AR3015") // Watcher's Keep -- Aesgareth AreaCheck("AR3016") // Watcher's Keep -- Chromatic Demon; Elementalist Level AreaCheck("AR3017") // Watcher's Keep -- Carston and the machine AreaCheck("AR3018") // Watcher's Keep -- Saladrex (Dragon) AreaCheck("AR3019") // Watcher's Keep -- Helmite Level -- Last Seals AreaCheck("AR3020") // Watcher's Keep -- Imprisoned One AreaCheck("AR3021") // Watcher's Keep -- Ilithids AreaCheck("AR3022") // Watcher's Keep -- Anti-Paladins AreaCheck("AR3023") // Watcher's Keep -- "Adventure Level" (Mini Map!!!) AreaCheck("AR3024") // Watcher's Keep -- Dragon -- Fear Challenge AreaCheck("AR3025") // Watcher's Keep -- Orcs -- Ixil's Nail AreaCheck("AR3026") // Watcher's Keep -- Imp -- Game AreaCheck("AR3027") // Watcher's Keep -- Crypt -- Demi-Lich AreaCheck("AR4000") // Spirit Heads AreaCheck("AR4500") // Pocket Plane AreaCheck("AR5000") // Saradush AreaCheck("AR5001") // Gromnir 1st Level AreaCheck("AR5002") // Gromnir's Hideout AreaCheck("AR5003") // Saradush Tavern (Tankard Tree) AreaCheck("AR5004") // Temple of Waukeen AreaCheck("AR5005") // Gromnir's Barracks AreaCheck("AR5006") // Saradush Prison AreaCheck("AR5007") // Basement Entrance to Gromnir's Hideout AreaCheck("AR5008") // Kiser's Home AreaCheck("AR5009") // House (no exit?) AreaCheck("AR5010") // Countess Santele's Home AreaCheck("AR5011") // Arcana Archives AreaCheck("AR5012") // House AreaCheck("AR5013") // Sewers beneath Saradush AreaCheck("AR5014") // Kiser's Home -- Cellar AreaCheck("AR5015") // Saradush Militia Entrance AreaCheck("AR5016") // Saradush Castle Jail (Kiser Plot) AreaCheck("AR5200") // Fire Giant Entrance Area AreaCheck("AR5201") // Fire Giant Keep AreaCheck("AR5202") // Nyalee's Hideout; Gorion Wraith AreaCheck("AR5203") // Yaga-Shura's Camp AreaCheck("AR5204") // Yaga-Shura's Keep AreaCheck("AR5500") // Amkethran AreaCheck("AR5501") // Amkethran Inn AreaCheck("AR5502") // Kerrick the Smith's House AreaCheck("AR5503") // Chyil's House AreaCheck("AR5504") // Smuggler Cave AreaCheck("AR5505") // Balthazar's Home AreaCheck("AR5506") // Commoner's Home AreaCheck("AR5507") // Empty Home AreaCheck("AR5508") // Faheed's Home AreaCheck("AR5509") // Amkethran Crypt AreaCheck("AR6000") // Abazigal's Entrance AreaCheck("AR6001") // Abazigal's Lair Entrance Hall AreaCheck("AR6002") // Abazigal's Lair -- Cells AreaCheck("AR6003") // Abazigal's Lair -- Iycanth the Mad, Bondari AreaCheck("AR6004") // Abazigal's Lair -- Fll'Yissetat AreaCheck("AR6005") // Abazigal's Hideout AreaCheck("AR6008") // Frost Salamander Cave AreaCheck("AR6011") // Orbs and Gauth AreaCheck("AR6012") // Pool Home -- breath under water AreaCheck("AR6100") // Area outside Sendai's Hideout AreaCheck("AR6101") // Main Entrance Sendai's Lair AreaCheck("AR6102") // Sendai's Lair -- Slavemaster AreaCheck("AR6103") // Sendai's Lair -- Spiders AreaCheck("AR6104") // Sendai's Lair -- Crossway AreaCheck("AR6105") // Sendai's Lair -- Diaytha, Abishai AreaCheck("AR6106") // Sendai's Lair -- Captain Egeissag AreaCheck("AR6107") // Sendai's Lair -- Mithykyl AreaCheck("AR6108") // Sendai's Lair -- Sendai AreaCheck("AR6109") // Sendai's Lair -- Drow AreaCheck("AR6110") // Sendai's Lair -- Odamaron AreaCheck("AR6111") // Woodcutter's House -- Sendai's Area AreaCheck("AR6200") // The Throne of Bhaal AreaCheck("AR6300") // Oasis in Tethyr AreaCheck("AR6400") // River Area
  15. WARNING. This thread contains swearing, poor depiction of prurient actions, reference to anatomy, and even a bawdy song. Do not read this thread if any of that offends you. You can also skip it is derivitave writing, poor spelling, and a high number of typos offends you, but I would much rather have you help me root those things out than skip the whole thing Underdark. A Pain in a Modder's Bottom. The entire Chaper 5 sequence is hard to work out. A player could be right there at very low level having raced for Imoen in Spellhold, they could be at very high level and 99% finished a romance (or two), and there is the whole "hey, how do I account for the Drow appearance being on, off, or ignored?". Then there is the lovely idea that some players will want to flirt and talk, but most normal denizens of Faerun see Underdark as a place of hell on earth, so to speak. Drow and Koa Toa and other strange beasties are the stuff of nightmares, and this is their home. Not many people say "Hey, all this danger and rot around us is kind of exciting - let's get it on!", unless they are about to become Slasher Victim #217, Second Class, Screaming, Death By Chainsaw. Or perhaps Girl Who Shows Bra And Therefore Dies In A Fountain Of Blood™. There are lots of ways of dealing with this, from NPCs that are specifically Underdark - Only, to the Flirtpack's single response "Not now honey, that mushroom over there is looking at us and trying to figure out how to kill us", to Edwin's Flirts which embrace the Drow appearence and script it with CODE + ~G("EdwinRomanceActive", 2) G("PlayerLooksLikeDrow", 1) Global("ERDrow", "LOCALS", 0)~ + ~Ask Edwin how he likes being a Drow.~ DO ~SetGlobal("ERDrow", "LOCALS", 1) ActionOverride(Player1, SetDialog("ERPlayer"))~ + Drow1 So, let's play around with Aran and his reactions to Underdark. On the one hand, if it is a female <CHARNAME> and she says "come here, big boy", he is going to want to grab her and make lots of little <CHARNAME>s, or at least try to. On the other hand, she currently looks like a Drow. And like any decent Faerunian human, the only good Drow in existence is drizzt, and most folks think he is just a myth, or a lie - without a disguse, he can't walk more than a few paces without being accosted - at least in most of the early books. And if <CHARNAME> is a dude, the flirts are left out, and things become easier - a disguise is a disguise. But there needs to be some kind of reaction because when your best bud looks like the enemy and is in enemy uniform, it is dark, smoky, and spooky, lit occasionally by phosphorus glow, etc... can you say "friendly fire"? So, a stab at building some interesting stuff into the Underdark. By now, most of the dialog code should be easy to read, after all the walkthroughs - nothing particularly new or interesting code-wise here, other than playing with some LOCALS and an occasional fun jaunt into hijack-states-land. We can save the Friendship Talks specific to Underdark for another day. here is the second or third pass at the PID (including Underdark-specific flirts).
  16. Telling stories. I could go into a long intro here about the psychology and sociology of male and female bonding using storytelling, establishment of social hierarchies and patterns of mutual attraction as shown through trading of backgrounds, etc.... but really, it's just a toy, not a thesis. So, stories... folks like them. Let's let Aran have some more to share. We have some little "reveals" in place, where storytelling has a point, like Anomen vs Aran over swearing and the vignette about stuffing a stuffy officer in the hold of a trading ship bound for Calimport; we have a past/former/chick-is-toast story for the romance, and here and there we have other small reveals that slip little bits of insight into the character within the existing mod dialog. But one thing that people do while camping, hiking, sitting around in the workroom/lounge, etc., is tell stories to entertain and distract. War stories in particular, among people who are friends and 'been there, done that". Like singing, or telling jokes, or discussing things, these stories can serve as a distraction or as a way of opening up; most of the time, they don't involve bragging (though I am sure we all have a friend who drives everyone nuts by telling stories that do brag - or worse, things like "So, this one time, at Band Camp"... no points for the cultural referent, and shame on you for watching teen raunch flicks in the first place ). We have an extensive backstory for Aran already available to mine for ideas, and all of the areas he has visited for more ideas - writing the stories is not the problem. Keeping them short enough, putting them deep enough in the dialog structure so only players who really, really want that deep an engagement with Aran's dialog will see them (we don't want action-oriented players to have to be going "crap, he is talking again.... hit the spacebar 12 times quickly, and maybe we can page through all this and get to the good stuff"). We also want some of them to be scattered about, and some of them to be available via PID or friendtalk as a panel of stories, so if a player is in the mood for a diversion he or she can ask for a few of them in a single sitting. There ends up being three or four simple approaches to this. The first is to write a dialog response that asks or leads directly to the story, and never refer to it again: 1. The Straightforward Single-Shot Story CODE ++ ~[PC] So, Aran, tell me about this lost love of yours. Was she pretty?~ + c-arans_lost_love_story This is simple, allows the PC one crack at hearing the story, and even can be varied by allowing players to reference the information later, as other materials in Aran's workthreads around here have already shown: CODE ++ ~[PC] So, Aran, tell me about this lost love of yours. Was she pretty?~ DO ~SetGlobal("c-arans_lost_love_story_told","GLOBAL",1)~ + c-arans_lost_love_story with later on, CODE + ~Global("c-arans_lost_love_story_told","GLOBAL",1)~ + ~[PC] You would think you would never look at another redhead in your life, after what's-her-name up in Moonshea broke your heart and croaked.~ + c-oh_yeah_I_really_appreciate_being_reminded_you_jackass We can expand this with three other variants, much like Cromwell's or Cespy's materials run, by creating a pool of potential stories and then either creating a list or creating a loop - or running it the way PIDs create more interest, using a Random approach. Lists A simple list just gives the player a set of options. the simplest of these goes like this: CODE ++ ~[PC] So, Aran, tell me a story.~ + c-aran_story_time // <-- snip --> IF ~~ c-aran_story_time SAY ~[ARAN] Well, to be sure, I can tell a tale, tall or not. What do you be wantin' to hear about?~ /* Pool of Stories to Tell */ ++ ~[PC] Tell me a story about cooking.~ + c-carbonanottold ++ ~[PC] Tell me a story about getting to Calimport the fiorst time you saw it.~ + c-arancalimportnottold ++ ~[PC] Tell me a story about that inn where we picked you up. What was his name... Gerris?~ + c-arangerrisnottold ++ ~[PC] Tell me a story about your childhood.~ + c-arandadtradenottold ++ ~[PC] Tell me a story about how you joined the Flaming Fist.~ + c-aranfistfightnottold ++ ~[PC] Tell me a story about fighting in the Moonshea Isles.~ + c-aranmoonfightnottold ++ ~[PC] On second thought, your stories are not that entertaining. Let's just keep going.~ EXIT END This works well - it can be repeated, or linked back in any number of ways, and is very efficient. If a player wants to hear a specific story again, it is right there. We could get fancy, and make a story unavailable after each one by adding globals, which is the way many folks handle giving information - clear out the talks already taken, so that the remaining ones are left for the player to follow. BUT - real folks don't walk around handing out a menu of available "stories". And sometimes they are in the mood or remember different ones. And very seldom do I find myself saying to a friend "Hey, tell me a story about how you became a musician". So, a more interactive approach would be to use the loop CODE ++ ~[PC] So, Aran, tell me a story.~ + c-aran_story_time // <-- snip --> IF ~~ c-aran_story_time SAY ~[ARAN] Well, to be sure, I can tell a tale, tall or not. Let's see...~ /* Pool of Stories to Tell */ IF ~Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) Global("c-aranmoonfight","LOCALS",1)~ GOTO c-all_stories_told IF ~Global("c-arancarbonara","LOCALS",0)~ GOTO c-carbonanottold IF ~Global("c-arancalimport","LOCALS",0)~ GOTO c-arancalimportnottold IF ~Global("c-arangerris","LOCALS",0)~ GOTO c-arangerrisnottold IF ~Global("c-arandadtrade","LOCALS",0)~ GOTO c-arandadtradenottold IF ~Global("c-aranfistfight","LOCALS",0)~ GOTO c-aranfistfightnottold IF ~Global("c-aranmoonfight","LOCALS",0)~ GOTO c-aranmoonfightnottold END IF ~~ c-carbonanottold SAY ~[ARAN] Well, I could tell you about th' rats an' th' Coster waggon...~ = ~[ARAN] <STORY_GOES_HERE>>~ IF ~~ THEN DO ~SetGlobal("c-arancarbonara","LOCALS",1)~ EXIT END IF ~~ c-all_stories_told SAY ~[ARAN] Well, I already done told you all th' stories I can think of. I'll think on it, but right now I be stumped.~ IF ~~ THEN EXIT END This "loop" is designed so that each time a different state calls to it, the bottom-most story gets "peeled off" - it plays, sets a global, and the next time through the first reply from the bottom is evaluated false and skipped, allowing the second one to play. This construction is good for PIDs and such, or for (in this case up to 6 ) multiple references in several talks, as every time a player asks to hear a story, a new one is played, until all are exhausted. It has some drawbacks, too - you can't repeat a story, so one misplaced click and it is either reload from a previous save or break out NI or DLTCEP or wade through the .tras - it also does not mirror more natural talk patterns, where people can refer to or say "hey, that Moonshea stuff you were talking about... how did that go again?" The Random approach is repeatable as well, with a different focus. Here, only one story is told in the state, and it can be referred to any number of times, but if every story has been told you can still draw the player off of it: CODE ++ ~[PC] So, Aran, tell me a story.~ + c-aran_story_time // <-- snip --> IF ~~ c-aran_story_time SAY ~[ARAN] Well, to be sure, I can tell a tale, tall or not. Let's see...~ /* Pool of Stories to Tell */ IF ~RandomNum(6,1)~ GOTO c-carbonanottold IF ~RandomNum(6,2)~ GOTO c-arancalimportnottold IF ~RandomNum(6,3)~ GOTO c-arangerrisnottold IF ~RandomNum(6,4)~ GOTO c-arandadtradenottold IF ~RandomNum(6,5)~ GOTO c-aranfistfightnottold IF ~RandomNum(6,6)~ GOTO c-aranmoonfightnottold IF ~Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) Global("c-aranmoonfight","LOCALS",1)~ GOTO c-all_stories_told END IF ~~ c-carbonanottold SAY ~[ARAN] Well, I could tell you about th' rats an' th' Coster waggon...~ = ~[ARAN] <STORY_GOES_HERE>>~ IF ~~ THEN DO ~SetGlobal("c-arancarbonara","LOCALS",1)~ EXIT END IF ~~ c-all_stories_told SAY ~[ARAN] Well, I already done told you all th' stories I can think of. I'll think on it, but right now I be stumped.~ IF ~~ THEN EXIT END This has some fun in that Aran can tell random stories, and even repeat himself, as people often do. After all possible stories are told, the dialog politely lets the player know that no matter how many million times they click, all potential pathways have been taken. But this one, well - let's just say that it is bad enough in RL to hear the story of how Jerry got into Harvard for the 17000th time.... so this one is a little too real for me. So, let's play with the loop variant, add a CHAIN to explore how we might allow a player to get an old story retold, and in general "prettify" the whole concept. Let's see what we can do to extend it to allow some repetiton and more interactivity for the player, too. CODE APPEND ~C-ARANJ~ /* <<WHATEVER_STATE_I_AM_COMING_FROM>> has three replies added- */ + ~!Class("c-aran",BARD_ALL)~ + ~[PC] This is depressing and dark. Come on, Aran, liven things up a bit. Tell me a story.~ + c-aran_tell_untold_story + ~Class("c-aran",BARD_ALL)~ + ~[PC] This is depressing and dark. Come on, Aran, liven things up a bit. Tell me a story.~ + c-aran_tell_untold_story_bard + ~OR(6) ~Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) Global("c-aranmoonfight","LOCALS",1)~ + ~[PC] Hey, Aran, I remember you telling a story... can you tell it to me again?~ + c-aran_tell_told_story /* and then, the reply sequence to the above... */ IF ~~ c-aran_tell_untold_story SAY ~[ARAN] I can do that, though I be no bard. Let me see...~ IF ~Global("c-arancarbonara","LOCALS",0)~ GOTO a1433 IF ~Global("c-arancalimport","LOCALS",0)~ GOTO a1432 IF ~Global("c-arangerris","LOCALS",0)~ GOTO c-arangerrisnottold IF ~Global("c-arandadtrade","LOCALS",0)~ GOTO c-arandadtradenottold IF ~Global("c-aranfistfight","LOCALS",0)~ GOTO c-aranfistfightnottold IF ~Global("c-aranmoonfight","LOCALS",0)~ GOTO c-aranmoonfightnottold IF ~Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) Global("c-aranmoonfight","LOCALS",1)~ GOTO c-aran_all_stories_told END IF ~~ c-aran_tell_untold_story_bard SAY ~[ARAN] I can do that. Just remember, my bardic days be relatively new, so I don't have them all embellished an' prettified, wi' proper pronunciation an' projection. Sorry about that spittle, there. Somethin' about 'p' words, eh?~ = ~[ARAN] Let me see...~ IF ~Global("c-arancarbonara","LOCALS",0)~ GOTO a1433 IF ~Global("c-arancalimport","LOCALS",0)~ GOTO a1432 IF ~Global("c-arangerris","LOCALS",0)~ GOTO c-arangerris IF ~Global("c-arandadtrade","LOCALS",0)~ GOTO c-arandadtrade IF ~Global("c-aranfistfight","LOCALS",0)~ GOTO c-aranfistfight IF ~Global("c-aranmoonfight","LOCALS",0)~ GOTO c-aranmoonfight IF ~Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) Global("c-aranmoonfight","LOCALS",1)~ GOTO c-aran_all_stories_told END /* (Of course, they could also be split up and added to several states, if wanted - it is likely that in the final implementation there will be more stories, and certainly two on this list will be screened out if the player has already had the friendtalk that tells of Calimport or the romance talk that tells about the trading incident. ) */ IF ~~ c-aran_all_stories_told SAY ~[ARAN] I can think o' naught that I haven't told you already. Mayhap I can tell you one o' them again?~ ++ ~[PC] No thanks. If you are out of stories, then I hope you come up with some riddles or something, or this will be a very long trip through the Underdark.~ + <<exitstate>> ++ ~[PC] That sounds interesting. Go ahead, tell me something you have already told. Your stories are always interesting.~ + c-aran_tell_told_story ++ ~[PC] I think we have had enough talk. Let's move on.~ + <<exitstate>> ++ ~[PC] Thank the gods you have run out. You stink at telling stories anyways. I was getting tired of humoring you~ + c-aranshutup75 ++ ~[PC] Never mind. I was joking, anyways. I'd rather cut my own throat than hear you blater on about things.~ + c-aranshutup74 END END // of append to c-aranj /* here, we play with CHAIN to allow an expandable state. It only gets triggered if one of those inner conditions is met, so it can build a longer conversation each time a story is told. */ CHAIN ~C-ARANJ~ c-aran_tell_told_story ~[ARAN] Sure thing. I can tell you what I be rememberin', anyways. Let's see...~ == ~C-ARANJ~ IF ~Global("c-arancarbonara","LOCALS",1)~ THEN ~[ARAN]I could tell you about th' rats an' th' Coster waggon again...~ == ~C-ARANJ~ IF ~Global("c-arancalimport","LOCALS",1)~ THEN ~[ARAN] I could tell you about th' first time I got myself to Calimport again, if you want.~ == ~C-ARANJ~ IF ~Global("c-arangerris","LOCALS",1)~ THEN ~[ARAN] I do remember tellin' you about Gerris an' me workin' short haul from Neverwinter to th' Moonshea Isles. That be a tale.~ == ~C-ARANJ~ IF ~Global("c-arandadtrade","LOCALS",1)~ THEN ~[ARAN] I done told you about my father gettin' trapped in th' trade contract... you want to be hearin' it again?~ == ~C-ARANJ~ IF ~Global("c-aranfistfight","LOCALS",1)~ THEN ~[ARAN] I think I told you o' th' time we run off those northmen up in th' Isles, unless you want to be hearin' it again.~ == ~C-ARANJ~ IF ~Global("c-aranmoonfight","LOCALS",1)~ THEN ~[ARAN] I told you about gettin' in wi' th' Fist, but do you want to be hearin' it again?~ == ~C-ARANJ~ ~[ARAN] That be all I can remember tellin' you about, anyhow.~ END + ~Global("c-arancarbonara","LOCALS",1)~ + ~[PC] Tell the story about the rats.~ + a1433 + ~Global("c-arancalimport","LOCALS",1)~ + ~[PC] Tell me about Calimport.~ + a1432 + ~Global("c-arangerris","LOCALS",1)~ + ~[PC] That Gerris fellow - the one you talked about when we first met. Tell me that story again.~ + c-arangerris + ~Global("c-arandadtrade","LOCALS",1)~ + ~[PC] Tell me about the trading gone bad.~ + c-arandadtrade + ~Global("c-aranfistfight","LOCALS",1)~ + ~[PC] Tell me how you ended up in the Flaming Fist again.~ + c-aranfistfight + ~Global("c-aranmoonfight","LOCALS",1)~ + ~[PC] Tell me about that battle up in Moonshea again.~ + c-aranmoonfight ++ ~I think we have had enough talk. Let's move on.~ EXIT APPEND ~C-ARANJ~ IF ~~ c-arangerrisstory SAY ~[ARAN] Gerris were a right fine companion, way back at th' start o' th' Moonshea work I did, an' right before th' Iron Throne got busy makin' life miserable for honest folk. He trained wi' the Old Order, though sometimes he acted more Sun Soul than anythin' else... an' I be right sorry his daughter an' I , we made things right complicated. Happy, though, on account o' it put me in your path, eh?~ = ~[ARAN] But a long time ago Gerris an' I were workin' across to Moonshea on one o' them short-haul galleys what ply that route out o' Neverwinter. Gerris, he trained me right proper, too, an th' cookin' front. He had to be right creative, on account o' most o' th' crew were Luskan fisherfolk, an' thought a good meal were dried fish an' small beer.~ = ~[ARAN] Well, one o' th' older oarsmen, he took a dislike to Gerris right off. There was naught Gerris could do to please th' bastard. He tried cookin' just what th' oarsman wanted, an' makin' it as special as he could, on account o' a trade galley be a small place, an' a little bad feelin' gets magnified right large.~ = ~[ARAN] The bugger would have naught in th' way o' reconciliation, though, and kept gettin' into Gerris' face. Finally, Gerris told him that if he didn't shape up, Gerris would put a curse on him.~ = ~[ARAN] O' course, th' oarsman laughed it off, an' punched Gerris right proper. Gerris didn't say naught, just took the punch, then made some sort o' gesture. Th' two stalked off, an' everyone gave 'em both as wide a berth as possible.~ = ~[ARAN] Well, two days later, th' oarsman came runnin' up from th' head... that be th' latrine, on a boat, a bathroom, right? Well, he came up just hollerin' bloody murder, ran past us, an' dove over th' side. We looked downon him, an' lo an' behold, that bastard was passin' flame instead o' gas!~ = ~[ARAN] We fished him out proper, an' soon he was as right as rain, but Gerris, he just shook his head an' sighed, askin' after th' man's health. He made a few passes wi' his hands in th' air, an' from then on, noone messed wi' him nor wi' me.~ = ~[ARAN] Now, I don't rightly think there were no magic in Geris' hands, him followin' monks ways so short a time. So when I saw him back wi' his wife an' daughter when I got to Amn a few years later, I got him right drunk an' asked him how he did it. An' that's how I learned that a small amount o' fireberries be a great spice... but you put too many in a man's portion, you'd best be gettin' a new set o' clothes lined up right quick, an' some healin' salves on hand. ~ IF ~~ THEN DO ~SetGlobal("c-arangerris","LOCALS",1)~ EXIT END IF ~~ c-aranmoonfight // PLACEHOLDER SAY ~[ARAN] ~ = ~[ARAN] ~ IF ~~ THEN DO ~SetGlobal("c-aranmoonfight","LOCALS",1)~ EXIT END /* Boy, I have been playing a little Mount & Blade, i think... */ IF ~~ c-aranfistfight SAY ~[ARAN] Well, I had just come off o' Moonshea, about as down as a lad can be. My ladylove dead, th' Moonshea companies disbandin' on account o' we thrashed th' Iron Throne bastards... well, more like you thrashed Sarevok an' wiped out their command structure, but th' fightin' in the field was still fierce for a bit afterwards. Sometimes it takes awhile for an army to realize that th' war be over.~ = ~[ARAN] Anyways, I was wanderin' around Nashkel, when th' Guildmaster calls me in an' gives me some work punchin' north on th' Trade way. Small caravan, just a full fist, not anythin' big. A tag along, really, as there were a load o' more powerful costers what had hired th' Flamin' Fist to protect some serious tradin' waggons headed up Neverwinter way, an' we were just really for show more than anythin'. But it was work, so I was not goin' to be turnin' it down, eh? We headed out mid-winter, tryin' our luck.~ = ~[ARAN] Well, we made it up into th' hills north o' Nashkel, an' were just south o' Beregost when we ran into a snow squall in th' middle o' a clear day. Me an' Kalavi... she were th' Stave, but she fought well enough, as she had just recently taken up wi' Ilmater and had been a seasoned fighter same as me... we knew there was more to this than just some freak weather, on account o' no snow squall we ever saw had lightnin' accomanyin' it.~ = ~[ARAN] We spurred up ahead straight into th' storm, keepin' our eyes open, her wi' a big staff an' me wi' my trusty sword ready. Th' wind was somethin' fierce, an' we almost wew about to turmn back out when we broke clear into a bubble o' protection o' some sort. We found ourselves suddenly in th' open, at full gallop across a field o' icy cobblestones, runnin' right up th' arse o' two ice trolls an' a whole mess o' orcs.~ = ~[ARAN] Lucky for us Tymora's Coin was spinnin' our direction. They was too busy payin' attention to th' 'Fist in field plate whackin' at 'em, an' th mage what was holdin' off that magical storm wi' some kind o' big bubble shield. Good thing, too, on account o' we coulnd't have stopped short nohow, not at that speed an' wi' all that ice. Kalavi, she started sayin' somethin', some spell I suppose, but thought better o' it fast enough - tryin' to hold a spell while on horseback is way above what most seasoned clerics can do, an' she had no more than four or five spells total granted by her Cryin' God. Me, I don't fight cavalry-style, but beggars can't rightly be choosers, so I leaned forward an' swung wide, hopin' I wasn't about to kill my own mount leavin' me on th' wrong side o' th' shield wall, so to speak.~ = ~[ARAN] Kalavi came in fast an' brought her staff up like some kind o' fancy lance, an' I'll be damned if it didn't do th' trick. She hit at full gallop, nailin' one o' th' ice trolls in th' head an' knockin' it unconscious wi' one hit, an' then her mount leaped clean over th' shield wall, where she could join in on th' fun proper. Took out one o' th' strongest adversaries, did a nice trick, an' it were a pretty sight.~ = ~[ARAN] Me, on th' other hand... well, i hadn't ever fought no ice Trolls before. So I lopped it's head off beautifully, nice clean arc, before i slipped too far forward an' ended up takin' a right fast rollin' tumble off my horse. She jumped th' line an' was safe, but there I was, all th' wind knocked out o' me, actin' as a bowlin' ball in among the orcs. Well, I scared th' crap out o' some o' them, an' they took to their heels... so I thought I was all in th' clear. I rolled right up to my feet, dusted myself off, an' started walkin' forward to th' line. All those Fist an' Kalavi started whoopin' an' hollerin', and so I just sort o' took a bow, thinkin' they was cheerin' me for scatterin' th' whole mob. Just as I did, I feel a whiff o' ice cold air on th' back o' my neck, an' tripped forward flat on my face.~ = ~[ARAN] Well, long story short, I didn't know that ice trolls just grow back if there be no fire nor acid scattered. My lucky little bow an' trip saved me my sorry hide, as there was now two Ice trolls clawin' at me. Th' Fist an' Kalavi clobbered 'em both pincushionin' them wi' arrows an' sling stones spelled wi' fire, savin' my sorry arse. But th' officer in charge o' th' Fist didn't realize it were my own clumsiness an' a twist o' Tymora's Coin what did the trick. She thought I clobbered th' troll, bowled over th' orcs, took a casual bow in front o' th' two trolls, an cool as a cucumber stopped dropped, an' rolled to allow th' rest o' th' unit to take 'em out. She hired us both on th' spot, an' we never told naught about it.~ IF ~~ THEN DO ~SetGlobal("c-aranfistfight","LOCALS",1)~ EXIT END END // of append to c-aranj Now, a little tweaking, and a test in-game to see if the story can be consolidated into less screens, or perhaps tightened up, and we have successfully created a set of stories that can be used as a resource for several talks, with replication only if the palyer requests. Using the variables, we can even add replies into other states that reference the information, just the way we tell our friends things in referent to their personal experiences.... CODE + ~Global("c-aranfistfight","LOCALS",1)~ + ~[PC] Oh no you don't... you stay back here and get those fire arrows ready. You don't want a repeat of that whole Ice troll incident, now do you?~ + c_great_you_used_my_story_against_me_you_bugger + ~Global("c-arangerris","LOCALS",1)~ + ~[PC] Hells no, you are not doing the cooking tonight. You have been fighting with Viconia again, and Gerris taught you way too many ways to get even!~ + c_who_me?_I_would_never_do_such_horrible_things
  17. In the interests of keeping myself moving towards actual completion, I am tossing this up even though it is not complete. I just had very little time to give to the project; in order to push, i need to post whatever is done even close to reasonably up. So, for feedback and error correction, here goes: Aran or Zelda: The Return of the Text Adventure? OK, don't do this. Really. The idea was to build a really cool little text adventure entry, a moonlit swordfight, following the advice of the ladies at P&T. Then I got the idea that swordfights can be done by foil or by language. An oddity of construction - I started this as a sketch, then followed berelinde's advice on using squentially numbered states to make sure no stitch gets dropped. This means the original final state is now actually state 50 out of X, so the basic plans flow in an odd net around the final exits - and some additional exits are tucked close to the end. On the good side, it has lots of possibilities from the player choice standpoint. There is just about everything tossed in there save perhaps Stat-checked opposed roll responses (I realized it was getting way, way too big without adding that complexity). On the bad side, it is a game-within-a-game, and most folks are not into huge long clickfest text adventures popping up in their game. On the worst side of all, it does rely on stage direction - (He whips his sword up to his lips in salutation.). There is a whole thread on why this is Bad™ at PPG, and the primary reason behind Bri and Lord Ernie's text rebuilt of Tashia seems to be the updating of the original text away from these "action" style dialogs - in fact, the only place these are really considered ok is within flirts. But for now, frankly, cutscenes suck for this kind of thing, and I am not a good enough writer to make the scenes pop into people's heads with just the soundtrack, and no visual. It is probably because the engine was never, ever designed for this kind of thing. C'est la vie, non? Oui. So, here goes a massively overdone Text Adventure, called "Sparring". I do not expect the male bonding version to be as elaborate - the male version vould be done in all action, with a few grunts, and The Brotherhood would be cool with it. But for the budding romance-novelist reader, this might ticle your fancy. /* Romance interlude: Sparring Challenge */ /* StoryTelling through Interactive Text Adventure */ /* Begin Sparring, romance version */ IF ~Global("c-aransparslt","GLOBAL",1)~ THEN BEGIN c-asparlt SAY ~[ARAN] You be a mite late, there, <CHARNAME>. I was just about to turn in, eh?~ ++ ~[PC] Do you always spar with your shirt off?~ + c-asparlt1 ++ ~[PC] Judging from the sheen of sweat on your chest, it looks like you have been working hard. Do you want to postpone this?~ + c-asparlt2 ++ ~[PC] Think of it as early for tomorrow. The moon is still up, and I am here now.~ + c-asparlt3 ++ ~[PC] I think I would rather not spar tonight, Aran. I am going to turn in.~ + c-asparlt5 ++ ~[PC] You are a little slow, aren't you. When I said 'spar', I was thinking of more amorous pursuits.~ + c-asparlt6 END IF ~~ c-asparlt1 SAY ~[ARAN] Well, now, sometimes I do, sometimes no. But I don't think I'll be askin' you to do the same. That blouse looks right pretty, it does. Especially as I can see right through it in this moonlight.~ ++ ~[PC] (Quickly pull your jerkin closer around you.) Are you going to gawk, or are you going to fight?~ + c-asparlt7 ++ ~[PC] (Cross over in front of him.) All part of my plan to distract you and win, of course.~ + c-asparlt7 ++ ~[PC] (Loosen your blouse, allowing the silk to billow gently in the night breeze.) I simply need the freedom to move. A gentleman would not look so closely.~ + c-asparlt7 ++ ~[PC] You are being silly again, Aran. Stop joking around. You can see very well that I am still in my armor.~ + c-asparlt10 ++ ~[PC] (blush) Aran, I... I... ~ + c-asparlt11 END IF ~~ c-asparlt2 SAY ~[ARAN] No, no... I was stretchin' out, is all. I don't rightly suppose I should ask you to match me, eh? Well, no matter... ~ + ~Class(Player1,MAGE_ALL)~ + ~[PC] Any decent mage will tell you that a good, well tailored robe is the first line of defense. I think you should stop talking and start sparring, Aran.~ + c-asparlt4 + ~Class(Player1,FIGHTER_ALL)~ + ~[PC] Warcries, distracting sounds, blabbering on about my beauty, all valid combat tactics, Aran. But really, aren't we both a little to seasoned for such distractions? Put your sword to use instead of your tongue.~ + c-asparlt4 + ~Class(Player1,THIEF_ALL)~ + ~[PC] In my profession, it is important to learn when to hide one's assets, and when to display them. Less talk and much more action, please.~ + c-asparlt4 + ~Class(Player1,CLERIC_ALL) Alignment(Player1,MASK_GOOD)~ + ~[PC] I think you should stop talking and start fighting, Aran. Good intentions pale in comparison with actions.~ + c-asparlt4 + ~Class(Player1,CLERIC_ALL) Alignment(Player1,MASK_EVIL)~ + ~[PC] I think you should stop talking and start fighting, Aran. The gods prefer actions over platitudes. Besides, you need to be taught your place.~ + c-asparlt4 + ~Class(Player1,CLERIC_ALL) !Alignment(Player1,MASK_GOOD) !Alignment(Player1,MASK_EVIL)~ + ~[PC] I think you should stop talking and start fighting, Aran. I shall endeavor to show you the essense of spiritual focus, or at least give you a good drubbing.~ + c-asparlt4 + ~Class(Player1,PALADIN_ALL)~ + ~[PC] A good spar to clear the head and focus the mind. Come, now, Aran. Let us have a clean fight.~ + c-asparlt4 + ~Class(Player1,SORCERER)~ + ~[PC] Somehow I think it might be fun to try a good old-fashioned swordfight. I will try to avoid melting your blade, or setting your trousers on fire.~ + c-asparlt4 + ~Class(Player1,MONK)~ + ~[PC] Hand to hand is more my forte, but perhaps this will be interesting. I will spar with you.~ + c-asparlt4 + ~Class(Player1,BARD_ALL)~ + ~[PC] I should be asking to spar musically, or perhaps with poetry, Aran, but I am afraid I have heard your singing. I think you should stop talking and start fighting.~ + c-asparlt4 ++ ~[PC] I think I will keep my top on, thank you.~ + c-asparlt4 ++ ~[PC] I think I would rather not spar tonight, Aran. I am going to turn in.~ + c-asparlt5 ++ ~[PC] You could ask. But my answer would be no. Besides, that is a highly unromantic suggestion.~ + c-asparlt6 END IF ~~ c-asparlt3 SAY ~[ARAN] That you be. An' in th' moonlight, I don't know what be prettier... you, or a full contract tight-bound.~ ++ ~[PC] Are you comparing me to a bundle of dried, ink-covered sheepskin?~ + c-asparlt12 ++ ~[PC] Me. I am prettier. See? (Spin slowly, raising your arms).~ + c-asparlt13 // 4th wall, Buckaroo Bonsai - http://www.imdb.com/title/tt0086856/ - , but it fits too well not to use ++ ~[PC] Laugh all you want, monkey boy. I have come to show you your inadequacies!~ + c-asparlt4 ++ ~[PC] Talk is cheap. Show me you can fight.~ + c-asparlt4 ++ ~[PC] Talk is cheap. (Punch him hard in the gut.)~ + c-asparlt18 ++ ~[PC] You do not seem to get the idea. I am interested in friendship, nothing more. Are we going to spar, or talk?~ + c-asparlt4 END IF ~~ c-asparlt4 SAY ~[ARAN] Aye, then. Here, catch.~ ++ ~[PC] (Catch rapier by the hilt and place it to your lips, saluting him.)~ + c-asparlt9 ++ ~[PC] (Catch rapier and extend it away and to your left, ready to fight.)~ + c-asparlt9 ++ ~[PC] (Catch rapier and instantly lunge forward with a direct thrust.)~ + c-asparlt33 ++ ~[PC] (Barely catch rapier, fumbling with it.) How do you work this thing, anyways?~ + c-asparlt14 ++ ~[PC] (Clumsily catch rapier, gouging your finger on part of the hilt.) Oh!~ + c-asparlt25 END IF ~~ c-asparlt5 SAY ~[ARAN] Aye, then, that be fine. Do you want anythin' else?~ ++ ~[PC] Now what might I want when I am headed for my bedroll?~ + c-asparlt22 ++ ~[PC] No, I am fine. Have a good night, Aran.~ + c-asparlt52 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather.~ + c-asparlt23 ++ ~[PC] I want... I... I do not know what I want.~ + c-asparlt22 END IF ~~ c-asparlt6 SAY ~[ARAN] Now, what could be more amorous than to be swordfightin' in th' moonlight? Where be your sense o' romance, o' foreplay, o' gettin' all hot an' bothered?~ ++ ~[PC] The whole idea turns me off completely. I think I will just go to bed.~ + c-asparlt23 ++ ~[PC] No, I am fine with avoiding complications. Have a good night, Aran.~ + c-asparlt52 ++ ~[PC] You do not seem to get the idea. I am interested in friendship, nothing more. Are we going to spar, or talk?~ + c-asparlt4 ++ ~[PC] You have a point. But I think I am ready for that match, now.~ + c-asparlt4 ++ ~[PC] I can think of many more romantic notions, Aran. Do you think fighting is the way into my heart?~ + c-asparlt80 END IF ~~ c-asparlt7 SAY ~[ARAN] Now then, I don't rightly have th' practice equipment for Waterdeep Twin Swords style, just starlight... err. Just *straight* practice foils for duellin' wi' out harm.~ ++ ~[PC] 'starlight'?~ + c-asparlt8 ++ ~[PC] That will do just fine.~ + c-asparlt4 ++ ~[PC] Cut the clumsy attempts at seduction, sellsword. Save it for your tavern slatterns.~ + c-asparlt8 ++ ~[PC] Wait a minute. You have not finished all your chores. There are still some cooking pots you have not cleaned, and there is firewood to gather.~ + c-asparlt23 END IF ~~ c-asparlt8 SAY ~[ARAN] Must be somethin' wrong wi' me. Sorry. Caught sight o' your eyes, an' got distracted. Won't happen again. Here, let's get goin', eh - en garde!~ ++ ~[PC] (Circle around to his left.)~ + c-asparlt30 ++ ~[PC] (Wait patiently, watching him closely.)~ + c-asparlt31 ++ ~[PC] (Stand very still, motionless in the moonlight.)~ + c-asparlt32 ++ ~[PC] (Thrust savagely.)~ + c-asparlt33 ++ ~[PC] (Kick hard towards his knee.)~ + c-asparlt35 END IF ~~ c-asparlt9 SAY ~[ARAN] Here, let's get goin', eh - en garde!~ ++ ~[PC] (Circle around to his left.)~ + c-asparlt30 ++ ~[PC] (Wait patiently, watching him closely.)~ + c-asparlt31 ++ ~[PC] (Stand very still, motionless in the moonlight.)~ + c-asparlt32 ++ ~[PC] (Thrust savagely.)~ + c-asparlt33 ++ ~[PC] (Kick hard towards his knee.)~ + c-asparlt35 END IF ~~ c-asparlt10 SAY ~[ARAN] Well, a man can have imagination, can't he? I was just hopin' to get you out of all that armor, is all.~ ++ ~[PC] (Unstrap your armor, dropping it where it falls, advancing towards him.) If you insist. We will see if your swordplay matches your bold words.~ + c-asparlt13 ++ ~[PC] Less talk, boyo. Toss me a weapon, and let's see how this all works out.~ + c-asparlt13 ++ ~[PC] Nice try. I shall retain my modesty, thank you. And stop flexing your chest like that, it is distracting.~ + c-asparlt13 ++ ~[PC] Stop thinking with the wrong sword. I believe the phrase is 'en garde'?~ + c-asparlt4 ++ ~[PC] You do not seem to get the idea. I am interested in friendship, nothing more. Are we going to spar, or talk?~ + c-asparlt4 ++ ~[PC] Stop, please... you are embarassing me...~ + c-asparlt12 END IF ~~ c-asparlt11 SAY ~[ARAN] Sune's Delight, <CHARNAME>, I be right sorry. Here, have a jerkin to cover up. I didn't mean to upset you. You just can tear a man's heart right out wi' your beauty, is all.~ ++ ~[PC] I am not beautiful.~ + c-asparlt19 ++ ~[PC] I know.~ + c-asparlt4 ++ ~[PC] Shall we spar?~ + c-asparlt4 ++ ~[PC] Are you going to teach me how to spar?~ + c-asparlt14 ++ ~[PC] You say such strange things sometimes.~ + c-asparlt4 END IF ~~ c-asparlt12 SAY ~[ARAN] Hey, now, that came out all wrong, that did! Though your skin be as beautiful as a blank sheet o' vellum, ready for new scribin'.~ ++ ~[PC] Why, thank you. And your compliments are as smooth as a crumpled dishrag.~ + c-asparlt4 ++ ~[PC] You can save the feeble attempts at compliments. Throw me a foil, and let's spar.~ + c-asparlt4 ++ ~[PC] My dearest Aran, you have so much to learn about women. Perhaps a sound thrashing will help.~ + c-asparlt4 ++ ~[PC] I am not beautiful.~ + c-asparlt19 ++ ~[PC] Actually, could you show me how to hold a foil? I never really learned...~ + c-asparlt14 ++ ~[PC] You keep talking like I am interested in you. I am interested in friendship, nothing more. Are we going to spar, or talk?~ + c-asparlt4 END IF ~~ c-asparlt13 SAY ~[ARAN] I do believe you, there. No contest - you look right pretty, you do. An' there's somethin' about moonlight or starlight what sets you off right dangerously, it does.~ ++ ~[PC] Laugh all you want, monkey boy. I have come to show you your inadequacies!~ + c-asparlt4 ++ ~[PC] Talk is cheap. Show me you can fight.~ + c-asparlt4 ++ ~[PC] Talk is cheap. (Punch him hard in the gut.)~ + c-asparlt18 ++ ~[PC] That is quite poetic, Sir Aran. When did you begin studying courtship and chivalry?~ + c-asparlt8 ++ ~[PC] Actually, Aran, I have never fenced before. Do you think you could teach me?~ + c-asparlt14 END IF ~~ c-asparlt14 SAY ~[ARAN] Aye, it would be a pleasure to teach you. Here, hold it like this...~ ++ ~[PC] Just like this? (Move into his arms, awkwardly holding the foil at arms length.)~ + c-asparlt15 ++ ~[PC] Just like this? (Move into his arms, nestling back into his chest.)~ + c-asparlt15 ++ ~[PC] Just like this? (Nervously stand in front of him, holding the foil down.)~ + c-asparlt17 ++ ~[PC] Just like this? (Smile sweetly at him, and punch him hard in the gut.)~ + c-asparlt18 ++ ~[PC] HEY. Hands off, Aran. I am interested in friendship, nothing more. Are we going to spar, or are you going to keep making passes at me?~ + c-asparlt4 END IF ~~ c-asparlt15 SAY ~[ARAN] Aye. Only you need to hold your wrist like this... an' your waist, it be better here... sorry, didn't rightly mean to touch you there... now gentle-like, lean in like this...~ ++ ~[PC] (Rest your head back on his shoulder, falling into a slow dance of movements.)~ + c-asparlt6 ++ ~[PC] That will do. I can take it from here - let's spar.~ + c-asparlt4 ++ ~[PC] It would be very nice, except your hands keep wandering. I am interested in friendship, nothing more. Are we going to spar, or talk?~ + c-asparlt4 ++ ~[PC] (Rest your head back on his shoulder, nuzzling his neck.)~ + c-asparlt56 ++ ~[PC] I think I would rather not spar tonight, Aran. I am going to turn in.~ + c-asparlt5 END IF ~~ c-asparlt16 SAY ~[ARAN] There you go. Nothin' to it. You dance right fine, an' duelin's just like dancin', only with a point, eh? I mean, a point system. I guess there be a point to dancin', too.~ ++ ~[PC] (Lean your head back onto his shoulder and offer your lips to him.)~ + c-asparlt56 ++ ~[PC] That will do. I can take it from here - let's spar.~ + c-asparlt4 ++ ~[PC] Enough. Interesting approach, but I have had enough of it. But I do think there are some things you can do for me. Let's see... there are still some cooking pots you have not cleaned, and there is firewood to gather.~ + c-asparlt23 END IF ~~ c-asparlt17 SAY ~[ARAN] Well, no. You don't have no shield, so you want to get a good profile, an' make as small a target as possible.~ ++ ~[PC] Is that what you are staring at? My 'profile'?~ + c-asparlt86 ++ ~[PC] I think I am ready to try this out.~ + c-asparlt9 ++ ~[PC] Show me what you have, boyo. Is your blade as fast as your tongue?~ + c-asparlt79 END IF ~~ c-asparlt18 SAY ~[ARAN] *gasp* What in th' nine hells was that?~ ++ ~[PC] Weakness. You let your guard down, Aran, and I was right there to take advantage. Are we going to spar?~ + c-asparlt4 ++ ~[PC] Fun. Here, let me do it again...~ + c-asparlt60 ++ ~[PC] A warning. I came here to fight, not talk.~ + c-asparlt4 ++ ~[PC] I do not know. You confuse me so much that sometimes, I just feel like I have to hit you or I will explode. Throw me a foil.~ + c-asparlt4 END IF ~~ c-asparlt19 SAY ~[ARAN] (Aran catches your chin quickly, turning your face to his) To me, you are right beautiful. Hanali Celanil an' Sune are but pale comparisons, <CHARNAME>.~ ++ ~[PC] (Kiss him.)~ + c-asparlt56 ++ ~[PC] (Break away quickly.) Are we going to spar, or talk?~ + c-asparlt4 ++ ~[PC] (Look him directly in the eyes.) Big words. But a real man would not talk. He would take what he wants.~ + c-asparlt74 ++ ~[PC] (Look him directly in the eyes, and slam your fist into his gut.)~ + c-asparlt18 ++ ~[PC] And you, sir, are nearly as cute as you think you are. Nearly.~ + c-asparlt20 END IF ~~ c-asparlt20 SAY ~[ARAN] Well, I do thank you, I think. Now, do you want to spar, or not, eh?~ ++ ~[PC] No, I am fine. Have a good night, Aran.~ + c-asparlt52 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather.~ + c-asparlt23 ++ ~[PC] I want.. I ... I do not know what I want.~ + c-asparlt22 ++ ~[PC] Are you going to teach me how to spar?~ + c-asparlt4 END IF ~~ c-asparlt21 SAY ~[ARAN] Well, I do thank you for th' lesson, I think. Now, do you want to spar, or not, miss 'poisonous fanged viper'?~ ++ ~[PC] No, I am fine. Have a good night, Aran.~ + c-asparlt52 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather. You should go do that, instead. I doubt you could please me any other way.~ + c-asparlt23 ++ ~[PC] I want.. I ... I do not know what I want.~ + c-asparlt22 ++ ~[PC] Show me what you can do, Aran. Amuse me.~ + c-asparlt4 END IF ~~ c-asparlt22 SAY ~[ARAN] Perhaps a bit o' company?~ ++ ~[PC] No, no thank you. Look, this was a mistake. I am headed back to camp. Have a good night, Aran.~ + c-asparlt52 ++ ~[PC] On second thought, I think I might need some energy worked off. Why don't we spar.~ + c-asparlt4 ++ ~[PC] My, you just push your luck at every opportunity, don't you?~ + c-asparlt23 ++ ~[PC] No, thank you. But I do think there are some things you can do for me. Let's see... there are still some cooking pots you have not cleaned, and there is firewood to gather.~ + c-asparlt23 END IF ~~ c-asparlt23 SAY ~[ARAN] Melliki's Quick temper, I done just.. just.. oh, hells. Fine. Go to bed. I be gettin' on wi' th' chores, like a good little blighted boy. (Damn females, anyways. Th' bloody creatures never did have no sense, an' they are a right pain in th' left buttock, they are).~ ++ ~[PC] Good night, Aran.~ + c-asparlt52 ++ ~[PC] Did you say something?~ + c-asparlt54 ++ ~[PC] (Damned males, anyways... they never clean up after themselves, and never have the good sense to kiss a girl goodnight when she is practically throwing herself at them).~ + c-asparlt53 END IF ~~ c-asparlt24 SAY ~[ARAN] Bane's Blood, did I hurt you? Here, let me see that...~ ++ ~[PC] (Punch him hard in the gut.)~ + c-asparlt18 ++ ~[PC] Ow! You just broke one of my nails. I spent a long time getting them just the right length. And that is not easy while adventuring!~ + c-asparlt25 ++ ~[PC] That hurt. Perhaps giving you a sound thrashing will help ease the pain.~ + c-asparlt9 ++ ~[PC] Look, obviously I am not that proficient with this weapon. Perhaps you would teach me how to hold it?~ + c-asparlt14 END IF ~~ c-asparlt25 SAY ~[ARAN] Well, I'm right sorry, I am. I didn't mean to hurt you none. Is there somethin' I can do to make up for it?~ ++ ~[PC] Kiss it better. (Hold your hand out to him imperiously.)~ + c-asparlt26 ++ ~[PC] Look, obviously I am not that proficient with this weapon. Perhaps you would teach me how to hold it?~ + c-asparlt14 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather. I don't want to do any silly old sparring anyways. I'm going to bed.~ + c-asparlt23 ++ ~[PC] No, no... a minor annoyance. Prepare to be defeated.~ + c-asparlt9 END IF ~~ c-asparlt26 SAY ~[ARAN] (He gently takes you hand, and kisses each fingertip.)~ = ~[ARAN] Is that better?~ ++ ~[PC] Perhaps. But it hurts a little higher up.~ + c-asparlt27 ++ ~[PC] No, no... it is fine now. A minor annoyance. Prepare to be defeated.~ + c-asparlt9 ++ ~[PC] I bet you do that to everyone's fingers.~ + c-asparlt87 END IF ~~ c-asparlt27 SAY ~[ARAN] (He gently kisses the inside of your palm and carefully kisses each wrist.)~ = ~[ARAN] Is that better?~ ++ ~[PC] Perhaps. But it hurts a little higher up.~ + c-asparlt28 END IF ~~ c-asparlt28 SAY ~[ARAN] (He gently kisses his way up to your mouth, leaning in and savoring your lips.)~ = ~[ARAN] Is that better?~ ++ ~[PC] (Punch him hard in the gut.)~ + c-asparlt18 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather. I don't want to do any silly old sparring anyways. I'm going to bed.~ + c-asparlt23 ++ ~Yes, it is fine. Let's spar now!~ + c-asparlt9 ++ ~Yes, it is fine. But I think I want you to teach me how to hold this thing.~ + c-asparlt14 ++ ~[PC] Perhaps. But it now aches a little lower down...~ + c-asparlt29 END IF ~~ c-asparlt29 SAY ~[ARAN] Aye, now you be after sparrin' o' a different kind, I see. For that, I'd have to get rid o' some o' these obstacles...~ ++ ~[PC] (Open the front of your clothing carefully, avoiding eye contact.)~ + c-asparlt48 ++ ~[PC] (Tear your clothing from your shoulders, baring yourself in the moonlight.)~ + c-asparlt48 ++ ~[PC] I will not yield to you. But I will take what I want from you, right this moment.~ + c-asparlt48 ++ ~[PC] I think I have had enough excitement. I call this a draw. We will have to do this again sometime.~ + c-asparlt46 ++ ~[PC] But I think I am ready for that match, now. Toss me a foil, and we shall see if you can concentrate on the task at hand.~ + c-asparlt4 END IF ~~ c-asparlt30 SAY ~[ARAN] (His rapier dances forward, boring towards your left shoulder.)~ ++ ~[PC] (Guard closely, on the defensive, parrying each of his thrusts.) + c-asparlt36 ++ ~[PC] (Twist your wrist, deflecting his blow and flicking your blade towards his throat.)~ + c-asparlt38 ++ ~[PC] (Spin lightly, ducking under his whispering blade and coming up with a thrust from underneath.)~ + c-asparlt40 ++ ~[PC] (Step back quickly, then advance with a flurry of quick strokes.)~ + ####################### ++ ~[PC] (Thrust savagely past his guard.)~ + c-asparlt41 END /* Let's approximate circling eachother until someone moves... */ IF ~~ c-asparlt31 SAY ~[ARAN] (Soft moonlight falls across his face as he circles to the right, swordpoint towards you)~ + ~RandomNum(3,3)~ + ~[PC] (Wait patiently, watching him closely.)~ + c-asparlt31 + ~RandomNum(3,2)~ + ~[PC] (Wait patiently, watching him closely.)~ + c-asparlt32 + ~RandomNum(3,1)~ + ~[PC] (Wait patiently, watching him closely.)~ + c-asparlt36 ++ ~[PC] (Thrust savagely towards his left knee.)~ + c-asparlt33 ++ ~[PC] (Stand very still, motionless in the moonlight.)~ + c-asparlt32 ++ ~[PC] I thought that you were a fighter, Aran. What is the matter, are you afraid I am too delicate a flower to fight?~ + c-asparlt32 ++ ~[PC] I do not know about this, Aran. You look... you... I want to...~ + c-asparlt36 END IF ~~ c-asparlt32 SAY ~[ARAN] Well, now, do you need some instruction? I thought we was sparrin', not passin' th' time. Not that you don't make th' perfect picture, I must admit.~ ++ ~[PC] (Thrust savagely towards his right shoulder.)~ + c-asparlt43 ++ ~[PC] (Kick hard towards his knee.)~ + c-asparlt35 ++ ~[PC] (Step back quickly, then advance with a flurry of quick strokes.)~ + c-asparlt41 ++ ~[PC] I tire of this. I want a different kind of thrust and parry. (drop your foil and fling yourself hard into his arms)~ + c-asparlt37 ++ ~[PC] The perfect picture of your demise, you mean?~ + c-asparlt35 END /* Let's change up things a little if the state gets repeated a few times... */ IF ~~ c-asparlt33 SAY ~[ARAN] (a spark strikes as his counterstroke sends your swordpoint off to the left)~ ++ ~[PC] (Guard closely, on the defensive, parrying each of his thrusts)~ + c-asparlt36 + ~RandNum(2,2)~ + ~[PC] (Step back quickly, then advance with a flurry of quick strokes)~ + c-asparlt36 + ~RandNum(2,1)~ + ~[PC] (Step back quickly, then advance with a flurry of quick strokes)~ + c-asparlt63 ++ ~[PC] (twist your wrist, deflecting his riposte and flicking your blade towards his throat)~ + c-asparlt38 + ~Global("c-aransp1","LOCALS",0)~ + ~[PC] Had enough, oh feeble wielder of swords? I can thrust and parry all night, you know. It does not look like you have the stamina.~ DO ~SetGlobal("c-aransp1","LOCALS",1)~ + c-asparlt34 + ~Global("c-aransp1","LOCALS",1)~ + ~[PC] Didn't we do this already? You have to learn to be more creative, Aran.~ DO ~SetGlobal("c-aransp1","LOCALS",2)~ + c-asparlt34 END IF ~~ c-asparlt34 SAY ~[ARAN] Hah. Now do you be talkin' swordlay, or playin' wi' words? Not that it rightly matters - I can tire you out either way you intended, you know.~ + ~Global("c-aransp2","LOCALS",0)~ + ~[PC] Promises, promises... (Kick hard towards his knee.)~ DO ~SetGlobal("c-aransp2","LOCALS",1)~ + c-asparlt35 + ~Global("c-aransp2","LOCALS",1)~ + ~[PC] Yes, yes... you said that before.~ DO ~SetGlobal("c-aransp2","LOCALS",2)~ + c-asparlt35 ++ ~[PC] (drop your rapier and fling yourself hard into his arms.)~ + c-asparlt37 + ~RandNum(2,2)~ + ~[PC] (Spin lightly, ducking under his whispering blade and coming up with a thrust from underneath.)~ + c-asparlt40 + ~RandNum(2,1)~ + ~[PC] (Spin lightly, ducking under his whispering blade and coming up with a thrust from underneath.)~ + c-asparlt63 ++ ~[PC] (Thrust savagely towards his right shoulder.)~ + c-asparlt43 END /* Don;t forget dudettes may be getting sick oftthings and want out... */ IF ~~ c-asparlt35 SAY ~[ARAN] (hard muscle blocks your path, and the riposte stabs towards your right side)~ ++ ~[PC] (Step back quickly, then advance with a flurry of quick strokes)~ + c-asparlt41 ++ ~[PC] (Spin lightly, ducking under his whispering blade and coming up with a thrust from underneath)~ + c-asparlt40 ++ ~[PC] (Spin lightly, ducking under his whispering blade and coming up with a thrust from underneath)~ + c-asparlt40 ++ ~[PC] (circle around to his left)~ + c-asparlt30 ++ ~[PC] Enough! I do not want to do this any more.~ + c-asparlt55 END IF ~~ c-asparlt36 SAY ~[ARAN] (The point of his blade whistles close past your guard, seeking your left inner thigh.)~ ++ ~[PC] (Guard closely, on the defensive, parrying each of his thrusts.)~ + c-asparlt36 ++ ~[PC] (Step back quickly, then advance with a flurry of quick strokes.)~ + c-asparlt41 ++ ~[PC] (Step inside of his thrust, then dance out of the way, circling around to his left.)~ + c-asparlt30 ++ ~[PC] Stop. I do not want to spar. I want you.~ + c-asparlt47 asparlt44 ++ ~[PC] (Spin lightly, ducking under his whispering blade and coming up with a thrust from underneath.)~ + c-asparlt63 END /* There is no crying in baseball... keep focus on a PC strong enough to want to spar, because one who is just into flirting won't have followed this line at all */ IF ~~ c-asparlt37 SAY ~[ARAN] (Aran staggers, suprised, arms enfolding you.)~ = [ARAN] What in Bane's... <CHARNAME>?~ ++ ~[PC] *whisper* I do not want to spar. I just want you.~ + c-asparlt47 ++ ~[PC] HAH! (Spin out of his arms, duck down, grab the foil, and flick it towards Aran's throat.)~ + c-asparlt42 ++ ~[PC] TRUCE!~ + c-asparlt55 ++ ~[PC] I think I just got cut...~ + c-asparlt24 ++ ~[PC] I am tired. Tired of everything. Look, Aran, just hold me. As a friend? Just hold me.~ + c-asparlt67 END IF ~~ c-asparlt38 SAY ~[ARAN] (He dances back, then counters, rapier hissing in low and straight.)~ ++ ~[PC] (Kick hard towards his groin, following up with a stab towards his heart.)~ + c-asparlt35 ++ ~[PC] Is that all you have? (kick hard towards his knee.)~ + c-asparlt35 ++ ~[PC] Wait a second... hold on, I have to do something... (adjust your clothing to show off your leg to mid-thigh, and then instantly launch an attack when he is distracted)~ + c-asparlt35 ++ ~[PC] Oh, ouch! I just cut myself.~ + c-asparlt39 END /* Remember the tricksters... */ IF ~~ c-asparlt39 SAY ~[ARAN] Celanil's Sweet Lips, let me see.... are you hurt?~ ++ ~[PC] HAH! (as he moves forward dropping his guard, place the tip of your foil at the base of his throat.)~ + c-asparlt47 ++ ~[PC] It is just a little cut. But I think you should kiss it better.~ + c-asparlt45 ++ ~[PC] It is nothing. Besides, you have a scratch or two, too. But I think I have had enough for one night. Have a good rest, Aran.~ + c-asparlt52 ++ ~[PC] There will be blood tonight! (advance with a ferocious whirlwind of quick strokes.)~ + c-asparlt44 END /* Remember the ladies who started this thing with no experience fencing... */ IF ~~ c-asparlt40 SAY ~[ARAN] (One strong hand reaches out to grab your shoulder as his foil batters yours down)~ ++ ~[PC] (Drop your rapier and fling yourself hard into his arms.)~ + c-asparlt37 ++ ~[PC] (Twist away quickly, then advance with a flurry of quick strokes.)~ + c-asparlt41 ++ ~[PC] Ah ah ah... no touchie-feely the girl, now.... (counter quickly, and slice inward towards his side.)~ + c-asparlt41 ++ ~[PC] So, what were you thinking of fixing for dinner tomorrow? Aran-ke-bobs? Because I almost skewered you there.~ + c-asparlt63 ++ ~[PC] This is... a good bit... harder than it... looks.~ + c-asparlt63 END /* Gratuitous sexual references are fun, too... */ IF ~~ c-asparlt41 SAY ~[ARAN] (He falls back, blade countering blade, teeth bared savagely in the moonlight)~ ++ ~[PC] (Thrust savagely towards his right shoulder.)~ + c-asparlt43 ++ ~[PC] (Twist away quickly, then advance with a flurry of quick strokes.)~ + c-asparlt44 ++ ~[PC] Is that a rabbit in your pocket, or are you just happy to see me?~ + c-asparlt68 END IF ~~ c-asparlt42 SAY ~[ARAN] (He springs forward, blade countering blade, pushing you back.)~ ++ ~[PC] (Spin lightly, ducking under his whispering blade and coming up with a thrust from underneath.)~ + c-asparlt40 ++ ~[PC] (kick hard towards his knee.)~ + c-asparlt35 ++ ~[PC] (Guard closely, on the defensive, parrying each of his thrusts.)~ + c-asparlt36 END IF ~~ c-asparlt43 SAY ~[ARAN] (the clash of steel rings as his counterstroke sends your swordpoint off to the right)~ ++ ~[PC] (Send a spinning kick towards his head.)~ + c-asparlt35 ++ ~[PC] (Lunge forward to pink his right shoulder.)~ + c-asparlt41 ++ ~[PC] (Guard closely, on the defensive, parrying each of his thrusts.)~ + c-asparlt36 ++ ~[PC] (Drop your rapier and fling yourself hard into his arms.)~ + c-asparlt37 ++ ~[PC] (Spin lightly, then check yourself and lunge forward, foil tip to the right leg.)~ + c-asparlt40 ++ ~[PC] (Step back quickly, then advance with a flurry of quick strokes.)~ + c-asparlt41 END /* Needs more entry points - summative state for fight */ IF ~~ c-asparlt44 SAY ~[ARAN] (White moonlight flashes along swiftly moving blades as they meet point and counterpoint, weaving their harsh music. Stacatto clashes of metal upon metal, ostinato breaths becoming shorter and labored, no thought but the weave of body with body... until suddenly you find yourself locked chest to chest, leg to leg, straining against eachother.) = ~[ARAN] Do you want to be beggin' quarter?~ ++ ~[PC] Not likely. Look down, Aran. I think you will find I have everything in hand...~ + c-asparlt62 ++ ~[PC] Never!~ + c-asparlt45 ++ ~[PC] I will not yield. But I will take what I want.~ + c-asparlt47 ++ ~[PC] I think I have had enough excitement. I call this a draw. We will have to do this again sometime.~ + c-asparlt46 ++ ~[PC] Do you?~ + c-asparlt47 END IF ~~ c-asparlt45 SAY ~[ARAN] Now, then, you be a mite winded, there - I can see right down your front, you know. You move right beautifully when you pant like that.~ ++ ~[PC] (Lean hard into him, kissing him ferociously)~ + c-asparlt47 ++ ~[PC] (Butt your head forward hard towards his nose)~ + c-asparlt59 ++ ~[PC] I yield to you, Aran. In every way.~ + c-asparlt48 ++ ~[PC] I have you right where I want you. Surrender now, and I will be merciful.~ + c-asparlt47 ++ ~[PC] I thought this was a friendly sparring practice.~ + c-asparlt46 END /* Teasing Aran is iok, but he has his breaking point... */ IF ~~ c-asparlt46 SAY ~[ARAN] I... hey, I... Sune's Sweet Skin, <CHARNAME>, do you be jokin' wi' me? You drive me to a frenzy, an' now I desire you more than any man ought. What do you want o' me?~ ++ ~[PC] Absolutely nothing. I have exactly what I want. Have a nice night, Aran. And thank you for the practice session.~ EXIT ++ ~[PC] What do you think, Aran? Am I teasing? (Slowly begin to disrobe)~ + c-asparlt48 ++ ~[PC] I... I do not know what I want. There are so many reasons that I cannot do this...~ + c-asparlt51 ++ ~[PC] Somehow, it always comes down to sex with you. I said I wanted to be friends, but you keep interpreting everything as an invitation to move into my bedroll. Let me spell it out for you - N O T I N T E R E S T E D. ~ + END IF ~~ c-asparlt47 SAY ~[ARAN] (He steps away, dropping his sword, falling to his knees before you.)~ = ~[ARAN] I surrender. An' what will you do wi' th spoils, <CHARNAME>?~ ++ ~[PC] Absolutely nothing. I have exactly what I want. Have a nice night, Aran. And thank you for the practice session.~ EXIT ++ ~[PC] I was thinking of an armistace. (Kneel with him, drawing one gentle finger lightly down his chest, following it with your gaze.)~ + c-asparlt49 ++ ~[PC] I... (grab the back of his head and tug back fiercely) ...will do exactly... (bury his face close to your heart) ... as I please.~ + c-asparlt50 ++ ~[PC] I... I think I will surrender in return...~ + c-asparlt50 ++ ~[PC] Practice a completely different form of combat.~ + c-asparlt50 END IF ~~ c-asparlt48 SAY ~[ARAN] <CHARNAME>...~ = ~[ARAN] (His face is a mask of desire, and his lips burn hot on your cheeks and lips.)~ ++ ~[PC] Hold on. I need to clear my head. I cannot do this!~ + c-asparlt51 ++ ~[PC] (Lean your head forward and fold both hands against his chest.)~ + c-asparlt50 ++ ~[PC] (Loop one leg around his, and twist quickly, bringing yourself under him as you fall to the ground.)~ + c-asparlt50 ++ ~[PC] (Loop one leg around his, and twist quickly, bringing yourself on top of him as you fall to the ground.)~ + c-asparlt50 ++ ~[PC] (Bite his lips fiercely, tasting warm blood as your teeth clash together in mounting desire.)~ + c-asparlt50 END IF ~~ c-asparlt49 SAY ~[ARAN] <CHARNAME>...~ = ~[ARAN] (His face is a mask of desire, and his lips burn hot on your cheeks and lips)~ ++ ~[PC] Hold on. I need to clear my head. I cannot do this!~ + c-asparlt51 ++ ~[PC] (Drop everything and fold both hands against his chest.)~ + c-asparlt50 ++ ~[PC] (Loop your arms around his neck and twist quickly, bringing yourself under him.)~ + c-asparlt50 ++ ~[PC] (Loop your arms around his neck and twist quickly, bringing yourself on top of him.)~ + c-asparlt50 ++ ~[PC] (Bite his lips fiercely, tasting warm blood as your teeth clash together in mounting desire.)~ + c-asparlt50 END /* The "PG - 13" Romantic Encounter Ending 47b, Female Romacing Male, No Nudity Or Graphic Depiction Of Naughty Stuff,. Reclassified from 1275a, Classic Romance Tricks, "Fade To Black". */ IF ~~ c-asparlt50 SAY ~[ARAN] (Clothes fly into tangles of twisted cloth, and modesty is thrown to the wind and the stars.)~ IF ~~ THEN DO ~SetGlobal("c-aransexspar","GLOBAL",1) RestParty()~ EXIT END /* Damn, girl, you are teasing him way hard, then dropping the whole "but I am not sure," thing - put the poor bugger out if his misery, already ! */ IF ~~ c-asparlt51 SAY ~[ARAN] (His face hardens, breath coming in short fierce bursts) Aye. You can, if you want to. But you don't want to, so I needs be controllin' myself. This sparrin' be over, I think.~ IF ~~ THEN EXIT END /* No comment. */ IF ~~ c-asparlt52 SAY ~[ARAN] Aye, then, same to you. I think I am goin' to go get some energy worked out o' my system, eh? I will see you back at camp.~ IF ~~ THEN EXIT END /* A page form RL - everyon walks waya muttering sometimes, and sometimes the partner challenges them on it... */ IF ~~ c-asparlt53 SAY ~[ARAN] Did you say somethin', <CHARNAME>?~ ++ ~[PC] No, not a thing. Good night, Aran.~ EXIT ++ ~[PC] I said, 'damned males, anyways... they never clean up after themselves, and never have the good sense to kiss a girl goodnight when she is practically throwing herself at them'.~ + c-asparlt19 ++ ~[PC] I said, 'If Aran does not kiss me right this minute, I will make his life a living hell for all eternity'.~ + c-asparlt19 END IF ~~ c-asparlt54 SAY ~[ARAN] No, naught. I was just mutterin' to myself.~ IF ~~ THEN EXIT END IF ~~ c-asparlt55 SAY ~[ARAN] Right, we can take a break. What are you after, anyways, <CHARNAME>? You be not quite into th' sparrin', I think. Why did you come out here?~ ++ ~[PC] I just needed a moment to regroup. (Flick your foil point towards his throat.)~ + c-asparlt42 ++ ~[PC] I... I do not know. I was bored, and wanted amusement?~ + c-asparlt57 ++ ~[PC] I... I do not know. I thought I wanted to have someone want me, desire me. But now I really just feel like that will make things worse. I think I should go now.~ + c-asparlt5 ++ ~[PC] I came here to be made love to, silly. So shut up and get to it!~ + c-asparlt48 ++ ~[PC] I came out here because you are a friend, Aran. And I need all of those I can get right now.~ + c-asparlt58 END IF ~~ c-asparlt56 SAY ~[ARAN] Hey, What are you after, <CHARNAME>? You be not quite into th' sparrin', I think. Why did you come out here, anyways?~ ++ ~[PC] I... I do not know. I was bored, and wanted amusement?~ + c-asparlt57 ++ ~[PC] I... I do not know. I thought I wanted to have someone want me, desire me. But now I really just feel like that will make things worse. I think I should go now.~ + c-asparlt5 ++ ~[PC] I came here to be made love to, silly. So shut up and get to it!~ + c-asparlt48 ++ ~[PC] I came out here because you are a friend, Aran. And I need all of those I can get right now.~ + c-asparlt58 ++ ~[PC] (Kiss his neck and move deeper into his arms.)~ + c-asparlt74 END IF ~~ c-asparlt57 SAY ~[ARAN] That makes sense, but you be phrasin' that as a question. Are you sure there be no other ways I could entertain you?~ ++ ~[PC] No, I am fine. Have a good night, Aran. + c-asparlt52 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather. You should go do that, instead. I doubt you could please me any other way.~ + c-asparlt23 END IF ~~ c-asparlt58 SAY ~[ARAN] Well, that's is not rightly for sale, <CHARNAME>, an' I prize it a mite higher than most do, I wager. But I already done given you th' whole contract on my friendship, no strings attached. I must be somethin' right stupid in my actions not to have shown that by now.~ = ~[ARAN] Let's get you back to camp, an' get somethin' nice an' warm in your stomach. I bet we could find a mite bit o' Firewine to warm up th' tea, an' lighten your mood. You go on ahead. I'll clear this gear away right proper.~ IF ~~ THEN EXIT END IF ~~ c-asparlt59 SAY ~[ARAN] OUCH! Ilmater's Sufferin', that bloody well hurt! What in th' nine hells are you after, <CHARNAME>?~ ++ ~[PC] I am taking advantage of your weakness. You let your guard down, Aran, and I was right there to take advantage. Are we going to spar? I think you need to be taught more.~ + c-asparlt38 ++ ~[PC] Fun. Here, let me do it again...~ + c-asparlt60 ++ ~[PC] I do not know. But back away, and let's get fighting again.~ + c-asparlt38 ++ ~[PC] I... I do not know. I was bored, and wanted amusement?~ + c-asparlt57 ++ ~[PC] I... I do not know. I thought I wanted to have someone want me, desire me. But now I really just feel like that will make things worse. I think I should go now.~ + c-asparlt5 ++ ~[PC] I came here to be made love to, silly. So shut up and get to it!~ + c-asparlt48 ++ ~[PC] I came out here because you are a friend, Aran. And I need all of those I can get right now.~ + c-asparlt58 END /* Hit me once, shame on me. Hit me twice, and I will avoid it. Note to self - probably need an otion for the Evil side where he likes it. A little. */ IF ~~ c-asparlt60 SAY ~[ARAN] Not on your life, girl... I'm done wi' getting my nose boke on account o' you gotta let off some steam. You got anythin' else you want me to do for you? Mayhap somethin' that don't rightly hurt so much?~ ++ ~[PC] No, I am fine. Have a good night, Aran. + c-asparlt52 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather. You should go do that, instead. I doubt you could please me any other way.~ + c-asparlt23 ++ ~[PC] I want... I... I do not know what I want.~ + c-asparlt22 ++ ~[PC] But lovemaking is supposed to hurt a little, don't you think?~ + c-asparlt48 ++ ~[PC] I came out here because you are a friend, Aran. And I need all of those I can get right now.~ + c-asparlt61 END IF ~~ c-asparlt61 SAY ~[ARAN] Funny thing is, <CHARNAME>, you got strange ways o' showin' it, but I do believe you.~ = ~[ARAN] Look, sometimes we be seein' different things in th' way o' how life is supposed to be, I guess. But whether I like your actions or no, an' whether you be god, bad, or indifferent, there be somethin' about you I like right fine.~ = ~[ARAN] You might use that against me later on, I wager, but hells... I done flipped your coin to Tymora early on, an' it came back heads. I'll call you friend long after you've forgotten I exist. Let's get you back to camp, an' get somethin' nice an' warm in your stomach.~ IF ~~ THEN EXIT END IF ~~ c-asparlt62 SAY ~[ARAN] Aye, that you do. I think this be a good time for me to surrender, eh?~ IF ~~ THEN GOTO c-asparlt47 END /* OK, passthrough state to send things in odd directions.... */ IF ~~ c-asparlt63 SAY ~[ARAN] (Blades clash, ringing in your ears.)~ IF ~RandNum(4,1)~ THEN GOTO c-asparlt64 IF ~RandNum(4,2)~ THEN GOTO c-asparlt65 IF ~RandNum(4,3)~ THEN GOTO c-asparlt66 IF ~RandNum(4,4)~ THEN GOTO c-asparlt44 END /* Words or Swords? Boo would be confused... */ IF ~~ c-asparlt64 SAY ~[ARAN] Aye, you are gettin' th' hang o' this, eh?~ ++ ~[PC] Hang you and your paternalistic crap! (Send a spinning kick towards his head.)~ + c-asparlt35 ++ ~[PC] Oh, I am getting the hang of this. But I heard that you have troubles... you are not so well hung as you claim? (lunge forward to pink his right shoulder)~ + c-asparlt41 ++ ~[PC] I... I am not so sure... (Guard closely, on the defensive, parrying each of his thrusts)~ + c-asparlt36 ++ ~[PC] No, not at all. But you seem to be having troubles winning, yourself. (Drop your rapier and fling yourself hard into his arms.)~ + c-asparlt37 ++ ~[PC] Child's play. A fitting moniker, seeing as I am sparring with you. (Spin lightly, then check yourself and lunge forward, foil tip to the right leg)~ + c-asparlt40 ++ ~[PC] Stop for a bit. Truce!~ + c-asparlt55 END /* Nothing says romance like commenting on the sweatiness of a ladies' workout clothes. By the way, judging by my wife's reaction, the appropriate response would be "shut up and get out, idiot." But this is fantasy,, so we turn the tables. */ IF ~~ c-asparlt65 SAY ~[ARAN] You know, I do believe there be nothin' prettier than a lass what be sweatin' so fierce.~ ++ ~[PC] We 'lasses' do not sweat. We glow. We 'Mist'. (Send a spinning kick towards his head.)~ + c-asparlt35 ++ ~[PC] That is nice to hear. You look pretty, too. Tired yet? (Lunge forward to pink his right shoulder.)~ + c-asparlt41 ++ ~[PC] I can think of prettier things... like figuring out what your next line of attack will be... (Guard closely, on the defensive, parrying each of his thrusts)~ + c-asparlt36 ++ ~[PC] Nice picture. Pity you stink like a mule when you sweat. (Fling yourself hard into his arms, atempting to knock him down.)~ + c-asparlt37 ++ ~[PC] Didn't your mother ever teach you to keep your mouth closed when you need to concentrate? (Spin lightly, then check yourself and lunge forward, foil tip to the right leg.)~ + c-asparlt40 ++ ~[PC] Stop for a bit. Truce!~ + c-asparlt55 END IF ~~ c-asparlt66 SAY ~[ARAN] I do believe you blighted well nicked me!~ ++ ~[PC] Quick, shall we call a healer for your little booboo? (send a spinning kick towards his head)~ + c-asparlt35 ++ ~[PC] I'm so terribly sorry. That was the point, right? (Lunge forward to pink his right shoulder)~ + c-asparlt41 ++ ~[PC] I'm sorry... do you want to stop? (Guard closely, on the defensive, parrying each of his thrusts)~ + c-asparlt36 ++ ~[PC] Oh, Aran! (drop your rapier and fling yourself hard into his arms)~ + c-asparlt37 ++ ~[PC] Well, when you play with me, you play with fire. Or ice. Or lightning. In fact, you could cut to the chase and just say you are running with scissors. (Spin lightly, then check yourself and lunge forward, foil tip to the right leg.)~ + c-asparlt40 ++ ~[PC] Stop for a bit. Truce!~ + c-asparlt55 END /* Also known in college circles as "teddy-bearing". Or at least it was, back in the day. God, I'm old. */ IF ~~ c-asparlt67 SAY ~[ARAN] <CHARNAME>, I can do that, I can. I can hold you right proper. An' I value your friendship above any treasure what's been thought of.~ = ~[ARAN] (You stand together for a time in the moonlight, holding eachother.)~ IF ~~ THEN EXIT END IF ~~ c-asparlt68 SAY ~[ARAN] No rabbit, but now I know where you are lookin', I can use that to my advantage...~ ++ ~[PC] (Slash towards his head.)~ + c-asparlt35 ++ ~[PC] (Lunge forward to pink his right shoulder.)~ + c-asparlt41 ++ ~[PC] (Guard closely, on the defensive, parrying each of his thrusts.)~ + c-asparlt36 ++ ~[PC] Oh, Aran - why look when I can feel! (Drop your rapier and fling yourself hard into his arms.)~ + c-asparlt37 ++ ~[PC] Just be careful. I am not sure we want the makings of rabbit stew. (Spin lightly, then check yourself and lunge forward, foil tip to the right leg.)~ + c-asparlt40 ++ ~[PC] Stop for a bit. Truce!~ + c-asparlt55 END /* Foreplay, WWE style. */ IF ~~ c-asparlt69 SAY ~[ARAN] Well, if you want to play that way... (His arm catches you solidly across the chest, knocking you over.)~ ++ ~[PC] Well, know that I am down here, do you want to come and join me?~ + c-asparlt83 ++ ~[PC] Oooohh... just the way I like them. Rough, stupid, and easily provoked... (sweep his legs, slamming him to the ground.)~ + c-asparlt70 ++ ~[PC] Ouch! Gods, Aran, I was only joking.~ + c-asparlt24 ++ ~[PC] Stop for a bit. Truce!~ + c-asparlt55 END IF ~~ c-asparlt70 SAY ~[ARAN] (Aran staggers, suprised, slamming to the ground next to you.)~ = [ARAN] What in Bane's... <CHARNAME>?~ ++ ~[PC] *whisper* I do not want to spar. I just want you.~ + c-asparlt47 ++ ~[PC] HAH! (Spin out of his arms, roll, grab the foil, and point it at Aran.)~ + c-asparlt56 ++ ~[PC] Well, when you play with me, you play with fire. Or ice. Or lightning. In fact, you could cut to the chase and just say you are running with scissors.~ + c-asparlt72 ++ ~[PC] (Begin unfastening your clothes.) If you need instruction, then I have sadly misjudged you, Aran. Do what comes naturally, of course.~ + c-asparlt50 ++ ~[PC] I think I have had enough excitement. I call this a draw. We will have to do this again sometime.~ + c-asparlt46 END IF ~~ c-asparlt71 SAY ~[ARAN] I do believe you blighted well tricked me! That hurt, it did. What do you want, anyways? It don't rightly look like you want to spar.~ ++ ~[PC] Well, when you play with me, you play with fire. Or ice. Or lightning. In fact, you could cut to the chase and just say you are running with scissors.~ + c-asparlt72 ++ ~[PC] (Begin unfastening your clothes.) If you need instruction, then I have sadly misjudged you, Aran. Do what comes naturally, of course.~ + c-asparlt50 ++ ~[PC] *whisper* I do not want to spar. I just want you.~ + c-asparlt47 ++ ~[PC] I think I have had enough excitement. I call this a draw. We will have to do this again sometime.~ + c-asparlt46 END IF ~~ c-asparlt72 SAY ~[ARAN] True enough. Well, you done got me here. Mayhap I can make th' most o' my opportunity...~ == ~[ARAN] (With a sudden twist he is on top of you, crushing you, his arms holding yours hard above your head.) Surrender, or do I take my winnin's right now?~ ++ ~[PC] Get off me, idiot. Game over. If you value your life, that is.~ + c-asparlt73 ++ ~[PC] I... (roll over, pinning him) ...will do exactly... (bury your face in his neck) ... as I please.~ + c-asparlt50 ++ ~[PC] Take what you will..~ + c-asparlt50 ++ ~[PC] I think I have had enough excitement. I call this a draw. We will have to do this again sometime.~ + c-asparlt46 END IF ~~ c-asparlt73 SAY ~[ARAN] (He rolls away, coming to his knees before you.)~ = ~[ARAN] I surrender. An' what will you do wi' th spoils, <CHARNAME>?~ ++ ~[PC] Absolutely nothing. I have exactly what I want. Have a nice night, Aran. And thank you for the practice session.~ EXIT ++ ~[PC] I was thinking of an armistace. (Roll over and kneel with him, drawing one sharp fingernail lightly down his chest, following it with your gaze.)~ + c-asparlt49 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather. You should go do that, instead. I doubt you could please me any other way.~ + c-asparlt23 ++ ~[PC] I... (roll up, grab the back of his head and tug him back down to you fiercely) ...will do exactly... (bury your face in his neck) ... as I please.~ + c-asparlt50 ++ ~[PC] Practice a completely different form of combat.~ + c-asparlt50 ++ ~[PC] (Begin unfastening your clothes.) If you need instruction, then I have sadly misjudged you, Aran. Do what comes naturally, of course.~ + c-asparlt50 END IF ~~ c-asparlt74 SAY ~[ARAN] I thought you might say that. Problem is, I don't rightly believein forcin' that sort o' thing.~ ++ ~[PC] You are so weak. I have exactly what I want - proof you do not have the strength to overpower me and take what you want. Have a nice night, Aran. And thank you for the practice session.~ EXIT ++ ~[PC] What if I was play-acting the whole resistance thing... (Draw one sharp fingernail lightly down his chest, following it with your gaze.)~ + c-asparlt49 ++ ~[PC] Well, there are still some cooking pots you have not cleaned, and there is firewood to gather. You should go do that, instead. I doubt you could please me any other way.~ + c-asparlt23 ++ ~[PC] I, on the other hand, have absolutely no compunction about taking exactly when I want, how I want it.~ + c-asparlt50 ++ ~[PC] Well, enough fun. I think this enough sparring for one night, in any area. Have a good night, Aran.~ + c-asparlt52 ++ ~[PC] (Begin unfastening your clothes.) If you need instruction, then I have sadly misjudged you, Aran. Do what comes naturally, of course.~ + c-asparlt50 END IF ~~ c-asparlt75 SAY ~[ARAN] Hey, if you keep goin' on like that, there will be a mite bit o' different kind o' sparrin' goin' on tonight...~ ++ ~[PC] And the light dawns... gods, man, I am literally sprawled at your feet, here for the taking. Are you slow, or do you need instruction?~ + c-asparlt72 ++ ~[PC] Well, we do not want to have any of that, now, do we. This is boring anyways. Look, let's just get a few rounds of swordfighting in, and be done with it.~ + c-asparlt4 ++ ~[PC] On second thought, the whole idea turns me off completely. I think I will just go to bed.~ + c-asparlt23 END /* Hmmm... simulating that pause - speak - pause - overlap confusion, when you both are not quite sure what to say, and waiting for someone to take the next big step? Let's give it a shot... */ IF ~~ c-asparlt76 SAY ~[ARAN] I think you might be...~ ++ ~[PC] ...a little unsure of myself? Hardly. Just hold me, Aran. Make me feel alive. Just be a good friend and hold me.~ + c-asparlt67 ++ ~[PC] ...a little confusing to you? I am confused, too. Look, let's just get a few rounds of swordfighting in, and be done with it.~ + c-asparlt4 ++ ~[PC] This was a bad idea. I think I will just go to bed. Alone.~ + c-asparlt23 ++ ~[PC] (Kiss him again and move deeper into his arms.)~ + c-asparlt49 END /* I watched the pPrincess Bride once too often, and now it resides in my head with 5th grdae jokes... */ IF ~~ c-asparlt77 SAY ~[ARAN] Hah! Good one! You done missed me, miss 'misty miss'. Take that!~ ++ ~[PC] I hate jokes like that. Hold still, so I can swat you!~ + c-asparlt44 ++ ~[PC] That is not fair! You made me laugh! (Swipe at Aran with the blade.)~ + c-asparlt78 ++ ~[PC] (Send a spinning kick towards his head)~ + c-asparlt35 ++ ~[PC] (Guard closely, on the defensive, parrying each of his thrusts)~ + c-asparlt36 ++ ~[PC] (Spin lightly, then check yourself and lunge forward, foil tip to the right leg)~ + c-asparlt40 ++ ~[PC] (Step back quickly, then advance with a flurry of quick strokes)~ + c-asparlt41 END IF ~~ c-asparlt78 SAY ~[ARAN] All be fair in love an' war - an' what we got goin' on now counts as both, in my book!~ ++ ~[PC] The only love I have for you is the love of watching you lose, big boy.~ + c-asparlt44 ++ ~[PC] Well in that case, expect no quarter fom me! (Stab at Aran with the foil point.)~ + c-asparlt44 ++ ~[PC] (Send a spinning kick towards his head)~ + c-asparlt35 ++ ~[PC] (Guard closely, on the defensive, parrying each of his thrusts)~ + c-asparlt36 ++ ~[PC] (Spin lightly, then check yourself and lunge forward, foil tip to the right leg)~ + c-asparlt40 ++ ~[PC] (Step back quickly, then advance with a flurry of quick strokes)~ + c-asparlt41 END IF ~~ c-asparlt79 SAY ~[ARAN] Well now, if you be interested in that, I think that we be doin' th' wrong kind o' sparrin', eh? But let's stick to th' business at hand. ~ IF ~~ THEN GOTO c-asparlt9 END /* Point, counterpoint, chocolate, and flowers */ IF ~~ c-asparlt80 SAY ~[ARAN] Look, I am not rightly sure how to try to romance you, <CHARNAME>. There be so many ways you are not quite th' normal... err... Helm's Beard, that came out wrong...~ ++ ~[PC] So you think calling me abnormal is the way to get me interested. Fascinating.~ + ++ ~[PC] You do no have to try so hard, you know. You could just kiss me.~ + c-asparlt83 ++ ~[PC] Aran, I keep telling you we are just friends. If you are here to spar, then let's spar. With foils, not with words, please.~ + c-asparlt4 ++ ~[PC] You could try flowers, or chocolate, or just listening to me, you know.~ + c-asparlt81 ++ ~[PC] I think I am ready for that sparring match, now.~ + c-asparlt4 END /* Weak arguments against flowers and chocolate. Hey, we qare making him too human - next he weill say "I didn't see any at the 7-11", or "I got some for your sister, but forgot some for you... */ IF ~~ c-asparlt81 SAY ~[ARAN] Aye, I could do that. But flowers, they don't speak to your strength. They seem all scawy when compared to you, too. An' chocolate be nice, but it seems soft an' usual, which... oh, by th' nine blighted hells, I'm walkin' my feet right into my mouth, aren't I.~ ++ ~[PC] But I like chocolate. And I like flowers. ~ + ########## ++ ~[PC] I was joking, Aran. Flowers are a waste of time, and chocolate is overrated. I value actions and deeds over useless gestures.~ + ++ ~[PC] Do not worry, Aran. You were born with both feet planted firmly in your mouth. I will simply have to ~ + ########## ++ ~[PC] I get what you mean, Aran. But I think yu will do better by just tossing me a foil and starting the practice. If I let you ramble on about me, soon I will be an unusual thorny flower with non-choclate petals with a nice bottom. And you will be spending the next three tendays apologising. We should just practice fighting!~ + c-asparlt4 END IF ~~ c-asparlt82 SAY ~[ARAN] Well, in that case, let me show you how th' whole fencin' and sparrin' practice be illustrative o' my strength, agility, an' usefulness, eh? With a bit o' Tymora's Luck, you might look on me a mite more favorable.~ IF ~~ THEN GOTO c-asparlt4 END /* Dunno. Supposed to be for the PC who expects him o be forceful and take the lead. Not thrilled yet. */ IF ~~ c-asparlt83 SAY ~[ARAN] That I could, I guess. It be a might forward, but then again, mayhap you want me to be a bit overbearin', eh?~ ++ ~[PC] It spoils all the fun if you have to be coached. Just do what you know you want to do, Aran. Quickly, fiercely, and thoroughly.~ + c-asparlt49 ########## END IF ~~ c-asparlt84 SAY ~[ARAN] Sticks an' stones will hurt my bones, but a quick jab wi' th' sharp end o' a foil can harm a lad, you know. Actually, I know, on account o' I just got me a little nick, back there.~ ++ ~[PC] So do you yield?~ + c-asparlt47 ++ ~[PC] It is not the only thing that you have that's little...~ + ########## ++ ~[PC] I'm sorry, I didn't mean to hurt you!~ + ########## END IF ~~ c-asparlt85 SAY ~[ARAN] No, I be ready for more. (His blade whips across your left shoulder, seeking your arm.)~ ++ ~[PC] ~ + ########## END IF ~~ c-asparlt86 SAY ~[ARAN] That be my story, an' I'm stickin' to it. Here, try this. Knees slightly bent, side towards me, an' blade down towards my knee. This be a dancer's weapon, not for use on th' shield wall.~ ++ ~[PC] I tire of this. I want a different kind of thrust and parry. (Drop your foil and fling yourself hard into his arms.)~ + c-asparlt37 ++ ~[PC] I am ready to fight. I do not need more instruction.~ + c-asparlt9 ++ ~[PC] I have been playing with you, Aran. Hull taught me well, back in Candlekeep. I will try not to hurt you too badly.~ + c-asparlt9 END IF ~~ c-asparlt87 SAY ~[ARAN] As opposed to jut your fingers, or as opposed to me kissin' somethin' else?~ ++ ~[PC] Spare me the talk of your many boisterous adventurers, Aran. They are all probably made up, anyways.~ + c-asparlt88 ++ ~[PC] Enough talk, just teach me to spar.~ + c-asparlt14 ++ ~[PC] Put your blade up, and we will see who can fight, who can talk, and who can do both at the same time.~ + c-asparlt4 END /* Let's let PC take him for a ride... */ IF ~~ c-asparlt88 SAY ~[ARAN] I do tell some tall tales. But for you, there be nothin' but truth. I have had my share o' lovers, but you are in a class by yourself.~ ++ ~[PC] So I am stupid, held out with need of a personal tutor?~ + c-asparlt89 ++ ~[PC] I do not care about the truth. I want you.~ + c-asparlt48 ++ ~[PC] I do not want the truth, and I most certainly do not want you.~ + c-asparlt91 ++ ~[PC] Gods, Aran, all this talk, talk, talk... you are confusing me so much. I think I need to go, now. Good night.~ + c-asparlt52 ++ ~[PC] So you have had me? I was unaware of that. Was I an acceptable lover?~ + c-asparlt89 ++ ~[PC] This conversation is over. Do not speak another word.~ EXIT END /* And drop him off a cliff... */ IF ~~ c-asparlt89 SAY ~[ARAN] Now, I didn't mean... ~ ++ ~[PC] You did not mean, or you did not think?~ + c-asparlt90 ++ ~[PC] Surrender while you are behind, because I do not think you will get out of this one. Perhaps I will be merciful.~ + c-asparlt47 ++ ~[PC] Oh, another thing you do with all the girls - stammer and stutter. So you have no spine at all, and any pretty face and sharp tongue can slay you in an instant?~ + c-asparlt90 END /* Onot the rocks... */ IF ~~ c-asparlt90 SAY ~[ARAN] I... ~ ++ ~[PC] Come on, Aran, if you want to keep up with me, keep up.... did you mean to tell me I was stupid and a poor lover in need of special instruction only you could give me?~ + c-asparlt23 ++ ~[PC] I think you have annoyed me enough for one night. Good night.~ EXIT ++ ~[PC] It hurts when you talk like that. I do not like all this fencing with words. I can play the game, but I hate it. If you like me, kiss me. If you do not, walk away now.~ + c-asparlt48 END IF ~~ c-asparlt91 SAY ~[ARAN] Good gods, woman, you are a study in contradictions, you are. You twist my words around right proper, an' now you talk about wantin' me?~ ++ ~[PC] I said I did not want you. Clear the wax out of your ears. Good night.~ EXIT ++ ~[PC] I think we both are a little confused, by now. Look, just put up your sword and fight, ok?~ + c-asparlt9 END IF ~~ c-asparlt92 SAY ~[ARAN] ~ ++ ~[PC] ~ + END IF ~~ c-asparlt93 SAY ~[ARAN] ~ ++ ~[PC] ~ + END IF ~~ c-asparlt94 SAY ~[ARAN] ~ ++ ~[PC] ~ + END IF ~~ c-asparlt95 SAY ~[ARAN] ~ ++ ~[PC] ~ + END IF ~~ c-asparlt96 SAY ~[ARAN] ~ ++ ~[PC] ~ + END IF ~~ c-asparlt97 SAY ~[ARAN] ~ ++ ~[PC] ~ + END IF ~~ c-asparlt98 SAY ~[ARAN] ~ ++ ~[PC] ~ + END IF ~~ c-asparlt99 SAY ~[ARAN] ~ ++ ~[PC] ~ + END IF ~~ c-asparlt100 SAY ~[ARAN] ~ ++ ~[PC] ~ + END
  18. In <<this thread>> we were tracing ways of adding in install choices for players. in the meantime, the bigg has come up with some new WeiDU possibilities that allow some interesting ways of "swinging" code into separate branches based on setting/reading variables and matching against their values. Basically, the same kind of thinking that PATCH_IF statements use, but on a larger scale. Never one to do something and let it just sit, let's recast the player choices on install using this new method. He has a bunch of these new commands that might be interesting to heavy coders, but for gadabouts like me, ACTION_MATCH is the simplest to understand and shows basically what he is allowing in various forms by supporting this kind of code behavior. note: Doing this is fun for me, but in this particular case it is hitting a fly with an ICBM. I suspect other code which relies on massive internal checking and patching based on a whole series of variables could be cleaned up using this kind of construction, done better - the code below is very clunky and linear, and does not take advantage of the heaviest potential gains, where separate 'building blocks" could be swapped in based on multiple matches or "guarding conditions" or whatever the big Boyz and Girlz use for terminology. Basically, stuff like IF (A) AND (NOT B) AND © AND (D) AND (NOT E) IF (NOT A) AND (NOT B) AND © AND (D) AND (NOT E) IF (NOT A) AND (B) AND © AND (NOT D) AND (NOT E) etc. etc. can be set up with a series of individual matched blocks of code, and put into play that way rather than creating a whole series of individual 'cases'. The end Result of This As Applied To Aran CODE BEGIN ~Aran Whitehand, "No Choices Wanted" (Fighter)~ FORCED_SUBCOMPONENT ~Choose Which Aran Configuration to install...~ REQUIRE_COMPONENT ~setup-aranw.tp2~ ~0~ ~Aran Whitehand must be installed for this to work.~ OUTER_SET class_choice = 5 LAUNCH_ACTION_MACRO customized_cre_choice ACTION_IF FILE_EXISTS_IN_GAME ~ar6111.are~ THEN BEGIN // ToB .cre file COPY_EXISTING ~c-aran7.cre~ ~override/c-aran13.cre~ WRITE_LONG 0x18 2500000 // current XP 2500000, ToB start WRITE_ASCII 0x2cc ~C-ARN25A~ #8 /* dialogue */ WRITE_ASCII 0x280 ~C-ARAN~ #32 /* DV */ WRITE_ASCII 0x248 ~C-ARN25~ #8 /* override script */ END BEGIN ~Aran Whitehand, Mage Dual-Class stats configuration (Tinker)~ FORCED_SUBCOMPONENT ~Choose Which Aran Configuration to install...~ REQUIRE_COMPONENT ~setup-aranw.tp2~ ~0~ ~Aran Whitehand must be installed for this to work.~ OUTER_SET class_choice = 1 LAUNCH_ACTION_MACRO customized_cre_choice ACTION_IF FILE_EXISTS_IN_GAME ~ar6111.are~ THEN BEGIN // ToB .cre file COPY_EXISTING ~c-aran7.cre~ ~override/c-aran13.cre~ WRITE_LONG 0x18 2500000 // current XP 2500000, ToB start WRITE_ASCII 0x2cc ~C-ARN25A~ #8 /* dialogue */ WRITE_ASCII 0x280 ~C-ARAN~ #32 /* DV */ WRITE_ASCII 0x248 ~C-ARN25~ #8 /* override script */ END BEGIN ~Aran Whitehand, Cleric Dual-Class stats configuration (Tailor)~ FORCED_SUBCOMPONENT ~Choose Which Aran Configuration to install...~ REQUIRE_COMPONENT ~setup-aranw.tp2~ ~0~ ~Aran Whitehand must be installed for this to work.~ OUTER_SET class_choice = 2 LAUNCH_ACTION_MACRO customized_cre_choice ACTION_IF FILE_EXISTS_IN_GAME ~ar6111.are~ THEN BEGIN // ToB .cre file COPY_EXISTING ~c-aran7.cre~ ~override/c-aran13.cre~ WRITE_LONG 0x18 2500000 // current XP 2500000, ToB start WRITE_ASCII 0x2cc ~C-ARN25A~ #8 /* dialogue */ WRITE_ASCII 0x280 ~C-ARAN~ #32 /* DV */ WRITE_ASCII 0x248 ~C-ARN25~ #8 /* override script */ END BEGIN ~Aran Whitehand, Fighter stats configuration (Soldier)~ FORCED_SUBCOMPONENT ~Choose Which Aran Configuration to install...~ REQUIRE_COMPONENT ~setup-aranw.tp2~ ~0~ ~Aran Whitehand must be installed for this to work.~ OUTER_SET class_choice = 3 LAUNCH_ACTION_MACRO customized_cre_choice ACTION_IF FILE_EXISTS_IN_GAME ~ar6111.are~ THEN BEGIN // ToB .cre file COPY_EXISTING ~c-aran7.cre~ ~override/c-aran13.cre~ WRITE_LONG 0x18 2500000 // current XP 2500000, ToB start WRITE_ASCII 0x2cc ~C-ARN25A~ #8 /* dialogue */ WRITE_ASCII 0x280 ~C-ARAN~ #32 /* DV */ WRITE_ASCII 0x248 ~C-ARN25~ #8 /* override script */ END BEGIN ~Aran Whitehand, Thief Dual-Class stats configuration (Spy)~ FORCED_SUBCOMPONENT ~Choose Which Aran Configuration to install...~ REQUIRE_COMPONENT ~setup-aranw.tp2~ ~0~ ~Aran Whitehand must be installed for this to work.~ OUTER_SET class_choice = 4 LAUNCH_ACTION_MACRO customized_cre_choice ACTION_IF FILE_EXISTS_IN_GAME ~ar6111.are~ THEN BEGIN // ToB .cre file COPY_EXISTING ~c-aran7.cre~ ~override/c-aran13.cre~ WRITE_LONG 0x18 2500000 // current XP 2500000, ToB start WRITE_ASCII 0x2cc ~C-ARN25A~ #8 /* dialogue */ WRITE_ASCII 0x280 ~C-ARAN~ #32 /* DV */ WRITE_ASCII 0x248 ~C-ARN25~ #8 /* override script */ END For an "allow me to choose" subcomponent, or we let players just skip all the crap: ACTION_READLN and Other Macros as Building Blocks Instead of the code in the previous thread, first we pull everything we can out into discreet blocks and turn them into "get information from the user" macros and "work on the .cre" macros. That allows us to individualize the class choice ones, change the order, and most of all get everything set up, then copy the .cre once and apply all the changes in one swoop. CODE DEFINE_ACTION_MACRO aran_wealth_selection BEGIN OUTER_FOR( aran_wealth = 0; ~%aran_wealth%~ STRING_COMPARE_REGEXP ~^[123]$~; )BEGIN PRINT ~Please choose from the following choices to modify starting armor and weapons available to him: [1] Aran is down-and-out poor and has sold off most of his good equipment. [2] Aran has kept most of his good gear. [3] Aran has kept the best gear available to a successful mercenary. Please select 1, 2, or 3 and press enter.~ ACTION_READLN aran_wealth END END DEFINE_ACTION_MACRO aran_armor_choice BEGIN OUTER_FOR( aran_armor_choice = 0; ~%aran_armor_choice%~ STRING_COMPARE_REGEXP ~^[12345]$~; )BEGIN PRINT ~Please choose from the following starting armor choices for Aran: [1] Leather [2] Studded Leather [3] Chain [4] Splint [5] Plate Please select 1, 2, 3, 4, or 5 and press enter.~ ACTION_READLN aran_armor_choice END END DEFINE_ACTION_MACRO aran_mage_choice BEGIN OUTER_FOR( weapon_choices = 0; ~%weapon_choices%~ STRING_COMPARE_REGEXP ~^[123]$~; )BEGIN // one way of setting up for READLN PRINT ~You are probably going to Dual-Class Aran to Mage. He currently has proficiencies as follows: ** Long Sword ** Quarterstaff ** Dagger Please choose from the following starting weapon choices and press enter: [1] Long Sword, Shield, Dagger [2] Long Sword, Shield, Quarterstaff [3] Long Sword, Shield, Potions of healing~ ACTION_READLN ~weapon_choices~ END END DEFINE_ACTION_MACRO aran_cleric_choice BEGIN OUTER_FOR( weapon_choices = 0; ~%weapon_choices%~ STRING_COMPARE_REGEXP ~^[1234]$~; )BEGIN // one way of setting up for READLN PRINT ~You are probably going to Dual-Class Aran to Cleric. He currently has proficiencies as follows: * Long Sword * Hammer * Mace * Flail ** Sword and Shield Style Please choose from the following starting weapon choices: [1] Long Sword, Shield, Mace [2] Long Sword, Shield, Quarterstaff [3] Long Sword, Shield, Hammer [4] Long Sword, Shield, Flail~ ACTION_READLN ~weapon_choices~ END END DEFINE_ACTION_MACRO aran_fighter_choice BEGIN OUTER_FOR( weapon_choices = 0; ~%weapon_choices%~ STRING_COMPARE_REGEXP ~^[123456]$~; )BEGIN // one way of setting up for READLN PRINT ~You are probably going to leave Aran as a fighter. He currently has proficiencies as follows: ** Long Sword ** Bastard Sword * Long Bow * Sword and Shield Please choose from the following starting weapon choices: [1] Long Sword, Shield, Dagger [2] Long Sword, Shield, Long Bow [3] Long Sword, Shield, Potions of healing [4] Bastard Sword, Shield, Dagger [5] Bastard Sword, Shield, Long Bow [6] Long Sword, Shield, Hammer~ ACTION_READLN ~weapon_choices~ END END DEFINE_ACTION_MACRO aran_thief_choice BEGIN OUTER_FOR( weapon_choices = 0; ~%weapon_choices%~ STRING_COMPARE_REGEXP ~^[12345]$~; )BEGIN // one way of setting up for READLN PRINT ~You are probably going to Dual-Class Aran as a Thief. He currently has proficiencies as follows: ** Long Sword ** Short Sword * Dagger * Crossbow Please choose from the following starting weapon choices: [1] Long Sword, Shield, Dagger [2] Long Sword, Shield, Crossbow [3] Long Sword, Shield, Potions of healing [4] Short Sword, Shield, Dagger [5] Short Sword, Shield, Crossbow~ ACTION_READLN ~weapon_choices~ END END Now, we have user choices defined, and we can apply them in a new macro, customized_cre_choice. Here, we are looking to "swing" the code into different branches based on the class, chosen, because we are working with two unique building blocks. While wealth and armor are the same for each, we need to bring a different base .cre into play, and the proficiency set (and weapons choices) vary by the base .cre chosen. So we need to a. look at what the player chose, b. swing a block of code temporarily down an alternate track based on that c. remind the player what they chose (and list it in the .DEBUG for troubleshooting) d. then bring everything back to order. So, CODE ACTION_MATCH ~var~ WITH 1 BEGIN <<do case 1 >> END 2 BEGIN <<or else do case 2 >> END DEFAULT <<or if neither 11 nor 2, then do case 3/default actions >> END In Aran's implementation (tested and works; horribly clumsy though), instead of talking I commented stuff: CODE /* Installing one of the 5 forced subcomponents does OUTER_SET class_choice = 1 or 2 or 3 or 4 or 5 (5 = no player choices wanted). */ DEFINE_ACTION_MACRO customized_cre_choice BEGIN // define the instruction set to be called in other places ACTION_MATCH ~%class_choice%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 1 // the first check. If %class_choice% = 1, the next stuff will work, else check the next BEGIN /* mage dual-class build */ LAUNCH_ACTION_MACRO aran_wealth_selection LAUNCH_ACTION_MACRO aran_mage_choice LAUNCH_ACTION_MACRO aran_armor_choice ACTION_MATCH ~%aran_wealth%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 3 BEGIN PRINT ~Aran is successful~ END 2 BEGIN PRINT ~Aran is of average wealth~ END DEFAULT PRINT ~Aran is down-and-out poor~ END ACTION_MATCH ~%aran_armor_choice%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 1 BEGIN PRINT ~Leather Armor~ END 2 BEGIN PRINT ~Studded Leather Armor~ END 3 BEGIN PRINT ~Chain Mail~ END 4 BEGIN PRINT ~Splint Mail~ END DEFAULT PRINT ~Plate Armor~ END /* we are using READLN values to set a variable - the mod range of possible combos is 1 to 15 inclusive, so we can't just read it directly */ ACTION_MATCH ~%weapon_choices%~ // check this value WITH // against the following 3 cases, so 1 BEGIN OUTER_SET ~aran_weapon_set~ = 1 // Long Sword, Shield, Dagger PRINT ~Long Sword, Shield, Dagger~ PRINT ~~ END 2 BEGIN OUTER_SET ~aran_weapon_set~ = 2 // Long Sword, Shield, Quarterstaff PRINT ~Long Sword, Shield, Quarterstaff~ PRINT ~~ END 3 BEGIN OUTER_SET ~aran_weapon_set~ = 3 // Long Sword, Shield, Potions of healing PRINT ~Long Sword, Shield, Potions of Healing~ PRINT ~~ END DEFAULT // this should never run, but as an emergency fallback OUTER_SET ~aran_weapon_set~ = 6 // Long Sword, Shield, Long Bow PRINT ~Long Sword, Shield, Long Bow~ PRINT ~~ END COPY ~aranw/cre/c-arnmge.cre~ ~override/c-aran7.cre~ // copy the base .cre into the game, and LAUNCH_PATCH_MACRO ~aran_cre_setup~ // patch in player choices using this pre-defined code END // of dual-to-mage swing 2 // the second check. If %class_choice% = 2, the next stuff will work, else check the next BEGIN /* cleric dual-class build */ LAUNCH_ACTION_MACRO aran_wealth_selection LAUNCH_ACTION_MACRO aran_cleric_choice LAUNCH_ACTION_MACRO aran_armor_choice ACTION_MATCH ~%aran_wealth%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 3 BEGIN PRINT ~Aran is successful~ END 2 BEGIN PRINT ~Aran is of average wealth~ END DEFAULT PRINT ~Aran is down-and-out poor~ END ACTION_MATCH ~%aran_armor_choice%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 1 BEGIN PRINT ~Leather Armor~ END 2 BEGIN PRINT ~Studded Leather Armor~ END 3 BEGIN PRINT ~Chain Mail~ END 4 BEGIN PRINT ~Splint Mail~ END DEFAULT PRINT ~Plate Armor~ END ACTION_MATCH ~%weapon_choices%~ // check this value WITH // against the following 3 cases, with 4 or anything else defaulting to a '"standard choice" 1 BEGIN OUTER_SET ~aran_weapon_set~ = 4 // Long Sword, Shield, Mace PRINT ~Long Sword, Shield, Mace~ PRINT ~~ END 2 BEGIN OUTER_SET ~aran_weapon_set~ = 2 // Long Sword, Shield, Quarterstaff PRINT ~Long Sword, Shield, Mace~ PRINT ~~ END 3 BEGIN OUTER_SET ~aran_weapon_set~ = 12 // Long Sword, Shield, Hammer PRINT ~Long Sword, Shield, Mace~ PRINT ~~ END DEFAULT // this will run on 4, or as an emergency fallback OUTER_SET ~aran_weapon_set~ = 5 // Long Sword, Shield, Flail PRINT ~Long Sword, Shield, Flail~ PRINT ~~ END COPY ~aranw/media/c-arnclr.cre~ ~override/c-aran7.cre~ // the cleric stat L7 .cre LAUNCH_PATCH_MACRO ~aran_cre_setup~ // patch in player choices using this pre-defined code END // of dual-to-cleric swing 3 // the third check. If %class_choice% = 3, the next stuff will work, else check the next BEGIN /* fighter single-class build */ LAUNCH_ACTION_MACRO aran_wealth_selection LAUNCH_ACTION_MACRO aran_fighter_choice LAUNCH_ACTION_MACRO aran_armor_choice ACTION_MATCH ~%aran_wealth%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 3 BEGIN PRINT ~Aran is successful~ END 2 BEGIN PRINT ~Aran is of average wealth~ END DEFAULT PRINT ~Aran is down-and-out poor~ END ACTION_MATCH ~%aran_armor_choice%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 1 BEGIN PRINT ~Leather Armor~ END 2 BEGIN PRINT ~Studded Leather Armor~ END 3 BEGIN PRINT ~Chain Mail~ END 4 BEGIN PRINT ~Splint Mail~ END DEFAULT PRINT ~Plate Armor~ END ACTION_MATCH ~%weapon_choices%~ // check this value WITH // against the following 3 cases, with 4 or anything else defaulting to a '"standard choice" 1 BEGIN OUTER_SET ~aran_weapon_set~ = 1 // Long Sword, Shield, Dagger PRINT ~Long Sword, Shield, Dagger~ PRINT ~~ END 2 BEGIN OUTER_SET ~aran_weapon_set~ = 6 // Long Sword, Shield, Long Bow PRINT ~Long Sword, Shield, Long Bow~ PRINT ~~ END 3 BEGIN OUTER_SET ~aran_weapon_set~ = 3 // Long Sword, Shield, Potions of healing PRINT ~Long Sword, Shield, Potions of healing~ PRINT ~~ END 4 BEGIN OUTER_SET ~aran_weapon_set~ = 7 // Bastard Sword, Shield, Dagger PRINT ~Bastard Sword, Shield, Dagger~ PRINT ~~ END 5 BEGIN OUTER_SET ~aran_weapon_set~ = 8 // Bastard Sword, Shield, Long Bow PRINT ~Bastard Sword, Shield, Long Bow~ PRINT ~~ END DEFAULT // this will run on 6, or as an emergency fallback OUTER_SET ~aran_weapon_set~ = 12 // Long Sword, Shield, Hammer PRINT ~Long Sword, Shield, Hammer~ PRINT ~~ END COPY ~aranw/cre/c-arnftr.cre~ ~override/c-aran7.cre~ // the fighter stat L7 .cre LAUNCH_PATCH_MACRO ~aran_cre_setup~ // patch in player choices using this pre-defined code END // of just-a-fighter swing 4 // the second check. If %class_choice% = 4, the next stuff will work, else check the next BEGIN /* thief dual-class build */ LAUNCH_ACTION_MACRO aran_wealth_selection LAUNCH_ACTION_MACRO aran_thief_choice LAUNCH_ACTION_MACRO aran_armor_choice ACTION_MATCH ~%aran_wealth%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 3 BEGIN PRINT ~Aran is successful~ END 2 BEGIN PRINT ~Aran is of average wealth~ END DEFAULT PRINT ~Aran is down-and-out poor~ END ACTION_MATCH ~%aran_armor_choice%~ // the thing we are checking to allow the code to "swing" to variants, the "case" WITH 1 BEGIN PRINT ~Leather Armor~ END 2 BEGIN PRINT ~Studded Leather Armor~ END 3 BEGIN PRINT ~Chain Mail~ END 4 BEGIN PRINT ~Splint Mail~ END DEFAULT PRINT ~Plate Armor~ END ACTION_MATCH ~%weapon_choices%~ // check this value WITH // against the following 3 cases, with 4 or anything else defaulting to a '"standard choice" 1 BEGIN OUTER_SET ~aran_weapon_set~ = 1 // Long Sword, Shield, Dagger PRINT ~Long Sword, Shield, Dagger~ PRINT ~~ END 2 BEGIN OUTER_SET ~aran_weapon_set~ = 9 // Long Sword, Shield, Crossbow PRINT ~Long Sword, Shield, Crossbow~ PRINT ~~ END 3 BEGIN OUTER_SET ~aran_weapon_set~ = 3 // Long Sword, Shield, Potions of healing PRINT ~Long Sword, Shield, Potions of healing~ PRINT ~~ END 4 BEGIN OUTER_SET ~aran_weapon_set~ = 10 // Short Sword, Shield, Dagger PRINT ~Short Sword, Shield, Dagger~ PRINT ~~ END DEFAULT // this will run on 5, or as an emergency fallback OUTER_SET ~aran_weapon_set~ = 11 // Short Sword, Shield, Crossbow PRINT ~Short Sword, Shield, Crossbow~ PRINT ~~ END COPY ~aranw/cre/c-arnthf.cre~ ~override/c-aran7.cre~ // the thief stat L7 .cre LAUNCH_PATCH_MACRO ~aran_cre_setup~ // patch in player choices using this pre-defined code END // of dual-to-thief swing DEFAULT // the fall-through check. If %class_choice% was not 1, 2, 3, or 4, the default code will run PRINT ~No class choice was chosen... installing Aran's Default (Fighter, moderate wealth, long sword and bow)~ /* Set up the variables for a default .cre so BWP folks don't have to deal with READLN */ OUTER_SET ~aran_wealth~ = 2 // experienced mercenary with some resources OUTER_SET ~aran_weapon_set~ = 6 // Long Sword, Shield, Long Bow OUTER_SET ~aran_armor_choice~ = 4 // splint COPY ~aranw/cre/c-arnftr.cre~ ~override/c-aran7.cre~ // the fighter stat L7 .cre LAUNCH_PATCH_MACRO ~aran_cre_setup~ // patch in player choices using this pre-defined code END // of default swing END // of define action macro This usage is interesting to me in that it shows how you can nest both macros and ACTION_MATCH WITH . It is a criminal waste of space to use this for just PRINT materials the way I have; the better usage would be to fully convert the various PATCH_IF statements and that whole pyramid of materials found in aran_cre_setup into a better/tighter logic chain, so that i could do away with SUBCOMPONENT entirely. Using this idea, the whole thing could be built into one component, and we could ask "Default, or choice?" and then if a person chose choice, they could run everything through a single run of code that asked and adjusted for responses. To do this, instead of using LAUNCH_PATCH_MACRO ~aran_cre_setup~ the currently unchanged contents of aran_cre_setup's PATCH_IF statements would be integrated into the above.
  19. 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.
  20. 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
  21. 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)
  22. 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...
  23. 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!
  24. 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.)
  25. 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]
×
×
  • Create New...