Jump to content

Interjections for Aran


cmorgan

Recommended Posts

Interjections for Aran: an exercise in unwanted commentary and the introduction of feet to mouth whenever possible.

 

I am not going to blog out all the interjections - but let's tackle a series before I go off and start tossing code around like a crazed wombat. Let's steat with the obvious -

 

Aran isn't in the vanilla game.

The other NPCs are.

They have commentary built into decisions and they respond to other NPCs.

I want Aran to do the same.

 

SO -

 

Interjections. Show excitement, or emotion... schoolhouse rock

 

but in this case, they are a way of slipping a new dialog state into the existing dialog.

 

OK, so we have a set of dialogs with Firkrag. We want to insert Aran into the conversation, making him part of the scene. There are a couple of ways to do this, but the most simple is to use INTERJECT_COPY_TRANS, shortcut = I_C_T. For a full listing of the I_C_T family, take a look at K'aeloree's "Coding Interjections" Tutorial on the subject. Really. I mean, do it now. It helps. You can always use your Back button on your browser, and get right back here. Yep. that's it - click on the link...

 

I_C_T'ing into a state to add dialog and/or variables. Gratuitous Shakespeare quote, and "he slipped it in..."

 

In our research into game files, we come across Firkrag's dialog files. There are 3 - the first is when he is hiring the adventurers ~FIRKRA01~, the second is when he is in his lair ~FIRKRA02~, and the third is set up and used under specific conditions (which I don't really care about right now) and is named the incredibly creative resource handle of ~FIRKRA03~. Go figure.

 

So first we decompile the dialogs and see what ocurs where. I should set up a super-cool-ultra-modder .at file to do this, but frankly, DLTCEP is good enough for the likes of me - just load it up, load the dialog, and export 'em. Hmmm... I see a good spot:

IF ~~ THEN BEGIN 5 // from: 4.0
 SAY #33935 /* ~I offer a grand sum, worthy of a <PRO_MANWOMAN> of your stature. I offer 10000 gold if you can free my land of this scourge. It is a fortune, you will agree.~ */
 IF ~~ THEN REPLY #33936 /* ~10000? That is an astounding sum for simple monster hunting.~ */ GOTO 6
 IF ~~ THEN REPLY #33937 /* ~Why me and not some other company? You could have anyone at that price.~ */ GOTO 7
 IF ~~ THEN REPLY #33938 /* ~You have a deal. Where are your lands and when should I go?~ */ GOTO 8
END

IF ~~ THEN BEGIN 6 // from: 5.0
 SAY #33942 /* ~It is a small price for safety. It is not as though I am without funds. I merely believe in paying for quality. You will be wealthy in my service, rest assured.~ */
 IF ~~ THEN GOTO 10
END

IF ~~ THEN BEGIN 7 // from: 5.1
 SAY #33947 /* ~Ah, but you would not lump yourself together with common mercenaries, would you? No, I require someone with finesse and skill, as well as strength. You are ideal.~ */
 IF ~~ THEN GOTO 10
END

IF ~~ THEN BEGIN 8 // from: 5.2
 SAY #33949 /* ~Good. There really was no other choice to make. I will direct you to the place you are to go. Do not tarry too long. There are people's lives at stake.~ */
 IF ~~ THEN GOTO 9
END

IF ~~ THEN BEGIN 9 // from: 10.0 8.0
 SAY #33962 /* ~I have no doubt your service will be exemplary. If all goes well, we shall all receive exactly what we deserve. My lands are on your map; the Windspear Hills await.~ */
 IF ~!IsValidForPartyDialog("Minsc")
!IsValidForPartyDialog("Yoshimo")
!IsValidForPartyDialog("Jaheira")~ THEN DO ~RevealAreaOnMap("AR1200")
EscapeArea()
~ UNSOLVED_JOURNAL #11821 /* ~Journey to the Windspear Hills.

I was approached by a Lord Jierdan Firkraag, whose lands outside of Athkatla are being plagued by ogre bandits.  He has asked that I journey to the Windspear Hills and kill these ogres, and has offered a 10,000 gp reward for the deed.~ */ EXIT
 IF ~IsValidForPartyDialog("Minsc")~ THEN DO ~RevealAreaOnMap("AR1200")
EscapeArea()~ UNSOLVED_JOURNAL #11821 /* ~Journey to the Windspear Hills.

I was approached by a Lord Jierdan Firkraag, whose lands outside of Athkatla are being plagued by ogre bandits.  He has asked that I journey to the Windspear Hills and kill these ogres, and has offered a 10,000 gp reward for the deed.~ */ EXTERN ~MINSCJ~ 96
 IF ~!IsValidForPartyDialog("Minsc")
IsValidForPartyDialog("Yoshimo")~ THEN DO ~RevealAreaOnMap("AR1200")
EscapeArea()~ UNSOLVED_JOURNAL #11821 /* ~Journey to the Windspear Hills.

I was approached by a Lord Jierdan Firkraag, whose lands outside of Athkatla are being plagued by ogre bandits.  He has asked that I journey to the Windspear Hills and kill these ogres, and has offered a 10,000 gp reward for the deed.~ */ EXTERN ~YOSHJ~ 42
 IF ~!IsValidForPartyDialog("Minsc")
!IsValidForPartyDialog("Yoshimo")
IsValidForPartyDialog("Jaheira")~ THEN DO ~RevealAreaOnMap("AR1200")
EscapeArea()~ UNSOLVED_JOURNAL #11821 /* ~Journey to the Windspear Hills.

I was approached by a Lord Jierdan Firkraag, whose lands outside of Athkatla are being plagued by ogre bandits.  He has asked that I journey to the Windspear Hills and kill these ogres, and has offered a 10,000 gp reward for the deed.~ */ EXTERN ~JAHEIRAJ~ 356
END

IF ~~ THEN BEGIN 10 // from: 7.0 6.0
 SAY #33967 /* ~You are the choice I make, and the offer stands whether you go now or not. There is no other decision that makes sense. ~ */
 IF ~~ THEN GOTO 9
END

 

Bioware chose to have commentary after the quest, rather than during. Let's see what Aran has to add:

 

[ARAN] That is a huge sum o' coin, for a simple contract, <CHARNAME>. I'd put some funds aside for resurrection an' restoration. I never did see a high priced contract where the client told the whole story.

 

This ends up being best put in between several possible pathways, states 6, 7, and 8, or at the end (9). The comment could come before or after.

 

/* Firkrag Trap Set */
I_C_T ~FIRKRA01~ 6  c-aranfirtrap // repeat for 7, 8
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] That is a huge sum o' coin, for a simple contract, <CHARNAME>. I'd put some funds aside for resurrection an' restoration. I never did see a high priced contract where the client told the whole story.~
END

 

Since I_C_T accepts only one state instead of a list, we replicate for each usage:

/* Firkrag Trap Set */
I_C_T ~FIRKRA01~ 6  c-aranfirtrap // repeated for 6, 7, 8
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] That is a huge sum o' coin, for a simple contract, <CHARNAME>. I'd put some funds aside for resurrection an' restoration. I never did see a high priced contract where the client told the whole story.~
END

I_C_T ~FIRKRA01~ 7  c-aranfirtrap // repeated for 6, 7, 8
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] That is a huge sum o' coin, for a simple contract, <CHARNAME>. I'd put some funds aside for resurrection an' restoration. I never did see a high priced contract where the client told the whole story.~
END

I_C_T ~FIRKRA01~ 8  c-aranfirtrap // repeated for 6, 7, 8
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] That is a huge sum o' coin, for a simple contract, <CHARNAME>. I'd put some funds aside for resurrection an' restoration. I never did see a high priced contract where the client told the whole story.~
END

 

There is no way of cycling back to those three reply states, so it will only fire off once - plus, as we find out in a moment, there are safeguards in place to stioop it ever repeating anyways.

 

Or, to make things simpler, we could just hit state 9 and add it all in. We won't break anything. THIS is why I_C_T rocks. Unlike INTERJECT <<something>> COPY_TRANS <<back>>, I_C_T is designed to avoid breaking other folk's interjections, even the original BioWare ones.

 

/* Firkrag Trap Set */
I_C_T ~FIRKRA01~ 9  c-aranfirtrap
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] That is a huge sum o' coin for a simple contract, <CHARNAME>. I'd put some funds aside for resurrection an' restoration. I never did see a high priced contract where the client told the whole story.~
END

 

and we are all set, right?

 

Well, not for me. On some states there are "transfers of action", so that if the last speaker is Aran, he gets the actions. If the state had Enemy() or EscapeArae() assigned to Firkag, and Aran is last, then Aran escapes or turns hostile to the party, bleh. Now, in this particular case, look at state 6, 7, and 8, and there is no trouble. But on 9 - I_C_T'ing into state 9, with all those actions to be taken, could be a PITA. Aran's final statement would play, then he would escape the area...

 

Now, we could use I_C_T2, where no actions are transferred, but the most compatibility-friendly way of dealing with this is to simply add a "passback" to the original speaker. That way if someone else adds variables or actions "upstream", so to speak, they simply filter back through to Firkaag. Since I like dialog, whenever possible I am choosing to add the conversational responses of the original NPC as well. I just like banter. So let's extend Firkag's reaction:

 

/* Firkrag Trap Set */
I_C_T ~FIRKRA01~ 9  c-aranfirtrap
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] That is a huge sum o' coin, for a simple contract, <CHARNAME>. I'd put some funds aside for resurrection an' restoration. I never did see a high priced contract where the client told the whole story.~
== ~FIRKRA01~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[FIRKRAG] Indeed, my offer is generous to a fault. I merely wish to pay for the best, and have the job done correctly the first time.~
END
Link to comment

I_C_T'ing = Instant Variable: no water needed!

 

Now, here is a cool sideline - if this interjection happens, then a new variable comes into the game, c-aranfirtrap = 1. The statename is used by WeiDU to create a variable to allow the interjection to play once and then COPY_TRANS back to the originating state, in a closed loop. So now we can have some fun when we meet up with Firkag later, and he is fully revealed:

 

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-aranfirtrap","GLOBAL",1)~ THEN ~[ARAN] I told you that were too much coin for a simple contract.~

 

This would only play if that conversation played. In fact, if we only wanted Aran to comment after, we could play with setting our own variable, and having a talk trigger later on in response from Aran's BCS. This is a great way to have Aran refer to something that has happened before in the game. Since his I_C_T only happens if he is there, his participation is confirmed and a player who picks him up later on n the game won't have him randomly talking about something he was not with the party for. We could even lock down the particular state to a specific choice, by I_C_T-ing into a reply state that branches one way or another.

 

I_C_T3'ing otherwise known as Mass Confusion - Save vs Wall of Text at -4

 

Let's play with the Instant Variable® idea, and go on to the meeting with Firkag when he turns out to be another long-winded villain who has nefariously duped PC and her friends into strange behaviors and sold the results to Faerun's Funniest Home Videos for a tidy profit. Here is the initial state for ~FIRKRA02~:

 

BEGIN ~FIRKRA02~

IF ~NumTimesTalkedTo(0)
~ THEN BEGIN 0 // from:
 SAY #43148 /* ~Welcome.  You have come as I wanted.  It has been an interesting game, but to tell the truth, I tire of it.~ [FIRKRA08] */
 IF ~~ THEN REPLY #43149 /* ~Monster! Why have you done this to me? Why try to ruin my reputation?~ */ GOTO 1
 IF ~~ THEN REPLY #43150 /* ~So here I am. Why have you done this. Why have you forced this confrontation?~ */ GOTO 1
 IF ~~ THEN REPLY #43151 /* ~As do I. I do not even know the reason for it!~ */ GOTO 1
END

 

Now let's sketch out a fun dialog - a standard writing convention, a' la' Buffy the Vampire Slayer, Star Trek, West Wing, SportsNight, or Stargate SG1 (I seem to remember a similar sequence of mocking casual banter when faced with impossible odds in many sources, but those sprang to mind right away), placed into context:

 

EDIT: Darn it. I ran a search, and I *knew* I wasn't this funny. It is basically a banter from SportsNight. I must be channeling Sorkin, which is pretty cool trick, as he is still very much alive and kicking. But it is funny, and FR-ized, so it stays in. I'm not selling this, so it meets the "do I really give a ra..." *ahem* "I don't particularly care, as I am basing all of this writing on cool ideas that probably have been fed to me by better writers through exposure to them". I'm not going to be a pro writer, and I am definitely not passing this off as a work of High Art.

 

[ARAN]

~[ARAN] That is the biggest damned thing I have ever seen. Are we goin' to fight *that*?~

 

[KELDORN] OR [CERND] OR [KORGAN] or [VALYGAR]

~Ten feet. That's very tall. Do you know how tall that really is?~

 

[ARAN]

~[ARAN] Tiamat's Twisting Tentacles, it's bloody well ten feet.~

 

[JAHEIRA] OR [EDWIN] OR [CERND]

~[JAHEIRA] He is actually 10 feet 9 inches.~

~[EDWIN] He is actually 10 feet 9 inches. (Rube. We are engaging a dragon, and he jests about size.)~

 

[ARAN]

~[ARAN] But it's those last 9 inches that'll kill you.~

 

[AERIE]

~[AERIE] He - He's huge... he is three elves high.~

 

[VICONIA]

~[VICONIA] He is easily three Drow high - a magnificent specimen, and a fitting sacrifice.~

 

[KELDORN] OR [CERND] OR [KORGAN] or [VALYGAR]

~[KELDORN] He sounds more impressive at 10 feet 9 inches.~

~[CERND] He sounds more impressive at 10 feet 9 inches.~

~[KORGAN] 10 feet 9 inches sounds more fancy.~

~[VALYGAR] He sounds more impressive at 10 feet 9 inches.~

 

[MINSC]

~[MINSC] That is a big butt-kicking task. My boot may not be big enough.~

~[bOO] *squeak*~ [<<BOOSOUND>>]

~[MINSC] Boo thinks I should use my sword, not my boot.~

 

[ARAN]

~[ARAN] All right, I'm stickin' with 10 feet 9 inches, includin' those fangs. Now, how many o' what kind o' thing would we have to line up end to end to get a practice run at this?~

 

[FIRKAAG]

~[FIRKAAG] Very amusing. Perhaps I shall tell your spirits exactly how many of your crisping bodies I had to stack up to match my height.~

 

We read back through the pathways, to make sure it makes sense with the various combinations of PCs present or not present, and then begin building the conditions.

 

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-aranfirtrap","GLOBAL",0)~ THEN ~[ARAN] That is the biggest damned thing I have ever seen. Are we goin'  to fight *that*?~
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-aranfirtrap","GLOBAL",1)~ THEN ~[ARAN] I told you that were too much coin for a simple contract. That is the biggest damned thing I have ever seen. Are we goin' to fight *that*?~

[KELDORN] OR [CERND] OR [KORGAN] or [VALYGAR]
~Ten feet. That's very tall. Do you know how tall that really is?~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[ARAN] Tiamat's Twisting Tentacles, it's bloody well ten feet.~

[JAHEIRA] OR [EDWIN]
~[JAHEIRA] He is actually 10 feet 9 inches.~
~[EDWIN] He is actually 10 feet 9 inches. (Rube. We are engaging a dragon, and he jests about size.)~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[ARAN] But it's those last 9 inches that'll kill you.~
== ~BAERIE~ IF ~InParty("aerie") InMyArea("aerie") !StateCheck("aerie",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[AERIE] He - He's huge... he is three elves high.~ 
== ~BVICONI~ IF ~InParty("viconia") InMyArea("viconia") !StateCheck("viconia",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[VICONIA] He is easily three Drow high - a magnificent specimen, and a fitting sacrifice.~

[KELDORN] OR [CERND] OR [KORGAN] or [VALYGAR]
~[KELDORN] He sounds more impressive at 10 feet 9 inches.~
~[CERND] He sounds more impressive at 10 feet 9 inches.~
~[KORGAN] 10 feet 9 inches sounds more fancy.~
~[VALYGAR] He sounds more impressive at 10 feet 9 inches.~

== ~BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[MINSC] That is a big butt-kicking task. My boot may not be big enough.~
== ~BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[BOO] *squeak*~ [<<BOOSOUND>>]
== ~BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[MINSC] Boo thinks I should use my sword, not my boot.~
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[ARAN] All right, I'm stickin' with 10 feet 9 inches, includin' those fangs. Now, how many of what kind o' thing would we have to line up end to end to get a practice run at this?~
== ~FIRKRA02~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ 
~[FIRKAAG] Very amusing. Perhaps I shall tell your spirits exactly how many of your crisping bodies I had to stack up to match my height.~
END

 

The troublesome blocks are the "only if the others are not present" ones. Standard BioWare uses

IsValidForPartyDialog("Minsc") || !IsValidForPartyDialog("Minsc")

or the related "IfValidForPartyDialog" but that trigger turned out to be flaky, so CamDawg invented that CD_STATE_NOTVALID setup which is much more robust. It would be nice to just code the remaining blocks this way:

 

/* [JAHEIRA] OR [EDWIN] */
IF ~!InParty("edwin") ~ THEN
vs
IF ~!InParty("jaheira")~

 

and be done with it. But experience has taught us odd things happen while the game runs - and the safest way to handle it is to fill out all the conditions. This leads to massive lists fo conditions on states. The good news is that a huge list of [!]AreaCheck() in BG1NPC's "Go To An Inn" component proves that the engine can handle large lists of conditions. So,

 

To get the line, first Aran is in the party/in the area/not messed up:

InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)

 

then the speaker of the line is in the party/in the area/not messed up

InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID)

 

and then finally the other speaker is any one of the three, reversed:

OR(3) !InParty("edwin") !InMyArea("edwin") StateCheck("edwin",CD_STATE_NOTVALID)

 

and we have a relatively foolproof/crashproof condition set.

 

== ~BJAHEIR~ IF ~
InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID)
OR(3) !InParty("edwin") !InMyArea("edwin") StateCheck("edwin",CD_STATE_NOTVALID)
~ THEN
~[JAHEIRA] He is actually 10 feet 9 inches.~

== ~BEDWIN~ IF ~
InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("edwin") InMyArea("edwin") !StateCheck("edwin",CD_STATE_NOTVALID)
OR(3) !InParty("jaheira") !InMyArea("jaheira") StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN
~[EDWIN] He is actually 10 feet 9 inches. (Rube. We are engaging a dragon, and he jests about size.)~

 

We can extend this out for the "one of the boyz" section, with the following caveat - if someone has all four of the boyz plus Aran, then the content won't play without an additional line that takes this into account, so an added reply if they are all there and they are all valid covers every base from just Aran to all 5.

/* There Can Be Only One */
== ~BKELDOR~ IF ~
InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("keldorn") InMyArea("keldorn") !StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~


== ~BKORGAN~ IF ~
InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~

== ~BVALYGA~ IF ~
InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("valygar") InMyArea("valygar") !StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~

== ~BCERND~ IF ~
InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("cernd") InMyArea("cernd") !StateCheck("cernd",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)~

/* There Can Be Only One, but we are all here */
== ~BKELDOR~ IF ~
InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("keldorn") InMyArea("keldorn") !StateCheck("keldorn",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)
InParty("valygar") InMyArea("valygar") !StateCheck("valygar",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)~

 

Now you know why people don't often do this kind of interaction - the conditions and logic chains will drive you nuts. Many times, people code these as separate scenarios, each triggered off of a .bcs block setting the appropraite variable. Or they will simpilfy and make it a one-to-one banter, where things work nicely without twisting your brain. But this was fun, so I tried it out.

 

What's more, I_C_T is designed for one simple interchange; since I want every line of the dialog evaluated independently, I really want I_C_T3 on this one. (Again, I really, really recommend you read K'aeloree's "Coding Interjections" Tutorial before you try this at home.)

 

The interjection set up in code:

I_C_T3 ~FIRKRA02~ 0 c-aranfirkfight
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-aranfirtrap","GLOBAL",0)~ THEN ~[ARAN] That is the biggest damned thing I have ever seen. We are goin' to fight *him*?~
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-aranfirtrap","GLOBAL",1)~ THEN ~[ARAN] I told you that were too much coin for a simple contract. That's the biggest damned thing I have ever seen. We are goin' to fight *him*?~
== ~BKELDOR~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("keldorn") InMyArea("keldorn") !StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~ THEN
~[KELDORN] Ten feet. That is very tall. Do you know how tall that really is?~
== ~BKORGAN~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~ THEN
~[KORGAN] Ten feet. Very tall. Very, very tall.~
== ~BVALYGA~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("valygar") InMyArea("valygar") !StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~ THEN
~[VALYGAR] Ten feet. That is very tall. Do you know how tall that really is?~
== ~BCERND~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("cernd") InMyArea("cernd") !StateCheck("cernd",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)~ THEN
~[CERND] Ten feet. That is very tall. Do you know how tall that really is?~
== ~BKELDOR~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("keldorn") InMyArea("keldorn") !StateCheck("keldorn",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)
InParty("valygar") InMyArea("valygar") !StateCheck("valygar",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)~ THEN
~[KELDORN] Ten feet. That is very tall. Do you know how tall that really is?~
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] Tiamat's Twisting Tentacles, it's bloody well ten feet.~
== ~BJAHEIR~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID) OR(3) !InParty("edwin") !InMyArea("edwin") StateCheck("edwin",CD_STATE_NOTVALID)~ THEN ~[JAHEIRA] He is actually 10 feet 9 inches.~
== ~BEDWIN~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("edwin") InMyArea("edwin") !StateCheck("edwin",CD_STATE_NOTVALID) OR(3) !InParty("jaheira") !InMyArea("jaheira") StateCheck("jaheira",CD_STATE_NOTVALID)~ THEN ~[EDWIN] He is actually 10 feet 9 inches. (Rube. We are engaging a dragon, and he jests about size.)~
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[ARAN] But it's those last 9 inches that'll kill you.~
== ~BAERIE~ IF ~InParty("aerie") InMyArea("aerie") !StateCheck("aerie",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[AERIE] He - He's huge... he is three elves high.~ 
== ~BVICONI~ IF ~InParty("viconia") InMyArea("viconia") !StateCheck("viconia",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[VICONIA] He is easily three Drow high - a magnificent specimen, and a fitting sacrifice.~
== ~BKELDOR~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("keldorn") InMyArea("keldorn") !StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~ THEN 
~[KELDORN] He sounds more impressive at 10 feet 9 inches.~
== ~BKORGAN~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~ THEN 
~[KORGAN] 10 feet 9 inches sounds more fancy.~
== ~BVALYGA~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("valygar") InMyArea("valygar") !StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)
OR(3) !InParty("cernd") !InMyArea("cernd") StateCheck("cernd",CD_STATE_NOTVALID)~ THEN
~[VALYGAR] He sounds more impressive at 10 feet 9 inches.~
== ~BCERND~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("cernd") InMyArea("cernd") !StateCheck("cernd",CD_STATE_NOTVALID)
OR(3) !InParty("korgan") !InMyArea("korgan") StateCheck("korgan",CD_STATE_NOTVALID)
OR(3) !InParty("valygar") !InMyArea("valygar") StateCheck("valygar",CD_STATE_NOTVALID)
OR(3) !InParty("keldorn") !InMyArea("keldorn") StateCheck("keldorn",CD_STATE_NOTVALID)~ THEN
~[CERND] He sounds more impressive at 10 feet 9 inches.~
== ~BKELDOR~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)
InParty("keldorn") InMyArea("keldorn") !StateCheck("keldorn",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)
InParty("valygar") InMyArea("valygar") !StateCheck("valygar",CD_STATE_NOTVALID)
InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)~ THEN
~[KELDORN] He sounds more impressive at 10 feet 9 inches.~
== ~BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[MINSC] That is a big but-kicking task. My boot may not be big enough.~
== ~BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[BOO] *squeak*~ [<<BOOSOUND>>]
== ~BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[MINSC] Boo thinks I should use my sword, not my boot.~
== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
~[ARAN] All right, I'm stickin' with 10 feet 9 inches, includin' those fangs. Now, how many of what kind o' thing would we have to line up end to end to get a practice run at this?~
== ~FIRKRA02~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ 
~[FIRKAAG] Very amusing. Perhaps I shall tell your spirits exactly how many of your crisping bodies I had to stack up to match my height.~
END
Link to comment

An easier way to mess with this set of ideas is to simply put in Aran's reaction, then multiple responses to the idea from other party members. These are all 1 <> 1 interactions, just added into one big I_C_T3. An I_C_T3 is an I_C_T for multiple NPC materials, all of which you want to have play if the conditions are correct. It passes the action on, so the last state should be a "passback" state. So let's go mess with Jonny-Boy, way down deep in the depths of Detroit (ok that's not fair - how about Flint :thumbsup:).

 

Simple I_C_T3 for Fun and Gratuitous Commentary: a nice time for all "To battle, with no regrets!"

 

We can have some fun here without breaking the Fourth Wall if we are careful. And if we are very careful, we can poke at the wall very hard, but not break it... :thumbsup:

 

Everybody and their brother/sister/etc. talks here at the big climactic fight. So let's have Aran throw some words around, and extend it a bit, and basically tick Jon-Jon into a little tiff. Again, seen countless times in countless sources - but cliche can be fun, so let's have a blast!

 

/* Aran in Hell: Irenicus 7, 8, 9, 10. */

 

[ARAN] This is the part where you stop talkin', an' we smile, an' then you smile, an' then you get chopped up into liiitle teensy-teensy pieces and served wi' a dry Chianti FR 1276. Preferably chilled.

 

//

[iMOEN] Hey, Aran, when did you get all fancy, with yer 'Chianti FR 1276' an' all?

 

[ARAN] Well, you see a fancy-pants mage, and you get all fancy. Goes with the territory, I guess.

 

//

[KORGAN] Bugger the wine. But you be owin' me a keg o' Traskan Ale when I kill him first.

 

[ARAN] Make it a bet, then. Two bottles FR 1276 if I kill the Cyric-buggerin' bastard, a keg to you if you get in there first.

 

//

[KELDORN] Well and finely stated, my friend. But let us not waste more breath. We shall need it to destroy this foul creature.

 

[ARAN] Sounds like a plan to me. You take th' high road, an' I'll take th' low road, an' I'll be in th' cen-ter, a-fore ye!

 

//

[ARAN] Minsc, my friend, you want t' wager which one o' us clobbers him first?

 

[MINSC] Boo says that we should wager afterwards, with dice made from his tailbone. Then every time we kick the dice, we will be BUTT-KICKING FOR GOODNESS!

 

//

[AERIE] That is disgusting, Aran. Kill him and eat him? How can you say such horrible things. I - I thought I knew you.

 

[ARAN] Aerie, m'dear, it was a joke. Gallows humor, an' all that. We are just going to kill him, not gnaw on his bones, or anythin'. Just tryin' to rattle him a little. Understand?

 

[AERIE] Oh, I understand. Irenicus, you will fall before us, and we shall... we shall... nibble your bum!

 

[ARAN] Closer, anyways, Aerie. Though I think we were goin' more for the 'fearsome foe' than the 'perilous rabid bunny rabbit' approach. But let's go with it.

 

//

[ARAN] Jaheira, do you want in on th' action? A little side bet on who takes fancy-pants over there an' tears him a new arsehole?

 

[JAHEIRA] I think not. I have spent so much time watching you talk, that I have decided to see if it really works.

 

[ARAN] See if what really works?

 

[JAHEIRA] I am attempting to determine if you can actually succeed in talking him to death.

 

//

[iRENICUS] I think I shall enjoy this, if only to SHUT YOU IMBECILES UP!

 

So each one of these pairs is a "call and response" pattern.

 

and coded up,

I_C_T3 ~HELLJON~ 7 c-araninhell

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] This is the part where you stop talkin', an' we smile, an' then you smile, an' then you get chopped up into liiitle teensy-teensy pieces and served wi' a dry Chianti FR 1276. Preferably chilled.~

== ~IMOEN2J~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("imoen2") InMyArea("imoen2") !StateCheck("imoen2",CD_STATE_NOTVALID)~ THEN ~[IMOEN] Hey, Aran, when did you get all fancy, with yer 'Chianti FR 1276' an' all?~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("imoen2") InMyArea("imoen2") !StateCheck("imoen2",CD_STATE_NOTVALID)~ THEN ~[ARAN] Well, you see a fancy-pants mage, and you get all fancy. Goes with the territory, I guess.~

== ~KORGANJ~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)~ THEN ~[KORGAN] Bugger the wine. But you be owin' me a keg o' Traskan Ale when I kill him first.~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("korgan") InMyArea("korgan") !StateCheck("korgan",CD_STATE_NOTVALID)~ THEN ~[ARAN] Make it a bet, then. Two bottles FR 1276 if I kill the Cyric-buggerin' bastard, a keg to you if you get in there first.~

== ~KELDORNJ~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("keldorn") InMyArea("keldorn") !StateCheck("keldorn",CD_STATE_NOTVALID)~ THEN ~[KELDORN] Well and finely stated, my friend. But let us not waste more breath. We shall need it to destroy this foul creature.~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("keldorn") InMyArea("keldorn") !StateCheck("keldorn",CD_STATE_NOTVALID)~ THEN ~[ARAN] Sounds like a plan to me. You take th' high road, an' I'll take th' low road, an' I'll be in th' cen-ter, a-fore ye!~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID)~ THEN ~[ARAN] Minsc, my friend, you want t' wager which one o' us clobbers him first?~

== ~MINSCJ~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID)~ THEN ~[MINSC] Boo says that we should wager afterwards, with dice made from his tailbone. Then every time we kick the dice, we will be BUTT-KICKING FOR GOODNESS!~

== ~AERIEJ~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("aerie") InMyArea("aerie") !StateCheck("aerie",CD_STATE_NOTVALID)~ THEN ~[AERIE] That is disgusting, Aran. Kill him and eat him? How can you say such horrible things. I - I thought I knew you.

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("aerie") InMyArea("aerie") !StateCheck("aerie",CD_STATE_NOTVALID)~ THEN ~[ARAN] Aerie, m'dear, it was a joke. Gallows humor, an' all that. We are just going to kill him, not gnaw on his bones, or anythin'. Just tryin' to rattle him a little. Understand?~

== ~AERIEJ~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("aerie") InMyArea("aerie") !StateCheck("aerie",CD_STATE_NOTVALID)~ THEN ~[AERIE] Oh, I understand. Irenicus, you will fall before us, and we shall... we shall... nibble your bum!~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("aerie") InMyArea("aerie") !StateCheck("aerie",CD_STATE_NOTVALID)~ THEN ~[ARAN] Closer, anyways, Aerie. Though I think we were goin' more for the 'fearsome foe' than the 'perilous rabid bunny rabbit' approach. But let's go with it.~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID)~ THEN ~[ARAN] Jaheira, do you want in on th' action? A little side bet on who takes fancy-pants over there an' tears him a new arsehole?~

== ~JAHEIRAJ~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID)~ THEN ~[JAHEIRA] I think not. I have spent so much time watching you talk, that I have decided to see if it really works.~

== ~c-aranj~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID)~ THEN ~[ARAN] See if what really works?~

== ~JAHEIRAJ~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID)~ THEN ~[JAHEIRA] I am attempting to determine if you can actually succeed in talking him to death.~

== ~HELLJON~ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[IRENICUS] I think I shall enjoy this, if only to SHUT YOU IMBECILES UP!~

END

I_C_T3 ~HELLJON~ 8 c-araninhellirenicus 
<<SAME>>
END

I_C_T3 ~HELLJON~ 9 c-araninhellirenicus 
<<SAME>>
END

I_C_T3 ~HELLJON~ 10 c-araninhellirenicus 
<<SAME>>
END
Link to comment

[ Posting the related baf in in Creating the .bcs (script) ]

Pre-coding Related dialogs:

temporary file: SoA_scripted_reactions.d

/* This is fun - Let's paint the town red! */
IF ~Global("c-arandrunk","GLOBAL",1)~ THEN BEGIN c-arandrunk1
SAY ~[ARAN] ~
++ ~[PC] ~ DO ~SetGlobal("c-arandrunk","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Hey, those skirts are short - cool. */
IF ~Global("c-arandrunk","GLOBAL",3)~ THEN BEGIN c-arandrunk2
SAY ~[ARAN] ~
++ ~[PC] ~ DO ~SetGlobal("c-arandrunk","GLOBAL",4) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* We have to stop doing this. Where's the FR AA Chapter? */
IF ~Global("c-arandrunk","GLOBAL",5)~ THEN BEGIN c-arandrunk3 
SAY ~[ARAN] ~
++ ~[PC] ~ DO ~SetGlobal("c-arandrunk","GLOBAL",6) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Liches Are Scary */
IF ~Global("c-aranlich","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranlich1
SAY ~[ARAN] Jergal's Mouldy Wrappings, that bastard could take a hit, he could. I guess th' whole 'live forever' thing didn' rightly work out for him, though. He should have remembered that sometimes th' gods are right bastards, an' grant you exactly what you think you want, eh?~
IF ~~ THEN DO ~SetGlobal("c-aranlich","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* 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

/* Aran Dragon-Slayer (Darios) */

IF  ~Global("c-arandragon","LOCALS",1)~ THEN BEGIN c-arandragon1
SAY ~[ARAN] I don't believe it.~
IF ~RandomNum(4,1)~ THEN DO ~SetGlobal("c-arandragon","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ GOTO c-arandragon1a
IF ~RandomNum(4,2)~ THEN DO ~SetGlobal("c-arandragon","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ GOTO c-arandragon1b	
IF ~RandomNum(4,3)~ THEN DO ~SetGlobal("c-arandragon","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ GOTO c-arandragon1c	
IF ~RandomNum(4,4)~ THEN DO ~SetGlobal("c-arandragon","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ GOTO c-arandragon1d
END

IF ~~ c-arandragon1a
SAY ~[ARAN] By Kelemvor's Scythe, a friggin' Great Wyrm.~
IF ~~ THEN GOTO c-arandragon1e
END

IF ~~ c-arandragon1b
SAY ~[ARAN] By Tyr's Eye, a friggin' Great Wyrm.~
IF ~~ THEN GOTO c-arandragon1e
END

IF ~~ c-arandragon1c
SAY ~[ARAN] By Ilmater's Blood, a friggin' Great Wyrm.~
IF ~~ THEN GOTO c-arandragon1e
END

IF ~~ c-arandragon1d
SAY ~[ARAN] By Helm's Shield, a friggin' Great Wyrm.~
IF ~~ THEN GOTO c-arandragon1e
END

IF ~~ c-arandragon1e
SAY ~[ARAN] I can't believe we just killed a dragon.~
++ ~[PC] Come on. We have faced harder foes.~ + c-arandragon1f
++ ~[PC] I can't believe it either. But we did it.~ + c-arandragon1f
++ ~[PC] Look, get hold of yourself. It was just an overgrown earthworm. We killed it. End of story.~ + c-arandragon1f
++ ~[PC] If you didn't believe we could do it, why did you join in the battle?~ + c-arandragon1f
++ ~[PC] Yep. One dead dragon. Are you cooking tonight? Dragon steaks might just be on the menu.~ + c-arandragon1f
END

CHAIN ~c-aranj~ c-arandragon1f
~[ARAN] Hold on a second, will you, while I sit down again.~
== ~AERIEJ~ IF ~InParty("Aerie") InMyArea("Aerie") !StateCheck("Aerie",CD_STATE_NOTVALID)~ THEN ~[AERIE] Aran, are you hurt?~
== ~c-aranj~ IF ~InParty("Aerie") InMyArea("Aerie") !StateCheck("Aerie",CD_STATE_NOTVALID)~ THEN ~[ARAN] I don't know. I mean, sure. But more than a little rattled a bit. Check the others first, eh?~
== ~AERIEJ~ IF ~InParty("Aerie") InMyArea("Aerie") !StateCheck("Aerie",CD_STATE_NOTVALID)~ THEN ~[AERIE] All right.~
== ~ANOMENJ~ IF ~InParty("Anomen") InMyArea("Anomen") !StateCheck("Anomen",CD_STATE_NOTVALID)~ THEN ~[ANOMEN] A mighty opponent, and a just victory. Might has made Right.~ 
== ~HAERDAJ~ IF ~InParty("HaerDalis") InMyArea("HaerDalis") !StateCheck("HaerDalis",CD_STATE_NOTVALID)~ THEN ~[HAERDALIS] Oh, my sweetlings, my sparrows. This is a victory that shall reach ears even on planes of existence where ears themselves are but stories told to frighten children!~ 
== ~YOSHJ~ IF ~InParty("Yoshimo") InMyArea("Yoshimo") !StateCheck("Yoshimo",CD_STATE_NOTVALID)~ THEN ~[YOSHIMO] A worthy adversary. I would prefer that we find less worthy challenges in the future.~
== ~CERNDJ~ IF ~InParty("Cernd") InMyArea("Cernd") !StateCheck("Cernd",CD_STATE_NOTVALID)~ THEN ~[CERND] It is a shame to have to destroy such a fine dragon. But all of us are tested, even as the tree scorched by forest fire is tested. And we prevailed.~
== ~EDWINJ~ IF ~InParty("Edwin") InMyArea("Edwin") !StateCheck("Edwin",CD_STATE_NOTVALID)~ THEN ~[EDWIN] A paltry task. I would have taken care of him myself, had I not tripped on my hem while casting.~
== ~c-aranj~ IF ~InParty("Edwin") InMyArea("Edwin") !StateCheck("Edwin",CD_STATE_NOTVALID)~ THEN ~[ARAN] Got it. That's why you went all green and white, started shivering, and started spouting those curse words. I thought you was scared. But I guess I was mistaken.~
== ~c-aranj~ ~[ARAN] We fought hard, and won, to be sure. But I just don't know, <CHARNAME>. Is there really anything more frightening, more rightly terrifying, than an adult dragon? I suspect not. Bloody glad any o' us survived.~
== ~JAHEIRAJ~ IF ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID)~ THEN ~[JAHEIRA] Actually, there are much worse things to encounter than dragons. There are pit fiends, and swarms of tanari, and...~
== ~c-aranj~ IF ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID)~ THEN ~[ARAN] Jaheira...~  
== ~JAHEIRAJ~ IF ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID)~ THEN ~[JAHEIRA] Yes, Aran?~
== ~c-aranj~ IF ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID)~ THEN ~[ARAN] You aren't helping.~
== ~JAHEIRAJ~ IF ~InParty("Jaheira") InMyArea("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID)~ THEN ~[JAHEIRA] Oh.~
END
IF ~~ THEN EXIT

/*  Basilisk Baiting */
IF ~Global("c-aranbasilisk","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranbasilisk1
SAY ~[ARAN] Whoever done said 'if looks could kill' must not o' run into one o' those buggers, eh? I wonder what two o' them sparkin' must be like. 'Honey, do I look nice to you?' 'Why, yes, darlin' - oops. Well, so much for a first date. I wonder if she has a sister what's blind?'~
IF ~~ THEN DO ~SetGlobal("c-aranbasilisk","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Poisonous Cloakwood Ettercaps */
IF ~Global("c-aranettercap","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranettercap1
SAY ~[ARAN] An' here I thought I was shut o' those poison-spittin' etter-crappers. Cloakwood had its fair share o' them, plus some wyverns an' a spider or two, too. I think I prefer undead. t least they aren't all sticky. Well, mostly. ~
IF ~~ THEN DO ~SetGlobal("c-aranettercap","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Golems are Big Boys */
IF ~Global("c-arangolem","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-arangolem1
SAY ~[ARAN] By Grumbar's Clay Fist, golems are a pain in the arse. But th' bigger they are, th' harder they fall, eh? Just as long as you are out o' th' way when it happens, things work out fine.~
IF ~~ THEN DO ~SetGlobal("c-arangolem","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Zombies: Looks Like Me After A Night On The Town */
IF ~Global("c-aranzombie","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranzombie1
SAY ~[ARAN] Beshaba's, Breath, that last zombie done give me th' shivers. It was like lookin' in a mirror after a night playin' Fox an' Hounds across th' docks district in Neverwinter. Actually, that's not rightly fair. Th' zombie looked a mite better.~
IF ~~ THEN DO ~SetGlobal("c-aranzombie","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Real Great Employer, buddy. Someone pass me the Daystar. */
IF ~Global("c-aranworkbod","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranworkbod1
SAY ~[ARAN] ~
IF ~~ THEN DO ~SetGlobal("c-aranworkbod","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Real Great Employer, buddy. But at least he's not undead. I think. */
IF ~Global("c-aranworkaran","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranworkaran1
SAY ~[ARAN] Shadow Thieves. Blodscalp. Linvale. You know, that's one serious kettle o' stew to jump in. Not that you can't handle it, <CHARNAME>... I just be thinkin' I need to start sleepin' in my armour, on account o' th' 'friends' we be gatherin'.~
IF ~~ THEN DO ~SetGlobal("c-aranworkaran","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Phaere is a hawt chick (male PC); is no good for you (female PC); better not have touched you (Romance) */
IF ~Global("c-aranphaere","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranphaere1
SAY ~[ARAN] Well, now there be a sight you do not rightly see every day. A Drowess takin' an interest in a human what doesn't involve flayin' skin off o' th' human.~
IF ~Gender(Player1,FEMALE)~ THEN DO ~SetGlobal("c-aranphaere","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ GOTO c-aranphaere1f
IF ~Gender(Player1,MALE)~ THEN DO ~SetGlobal("c-aranphaere","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ GOTO c-aranphaere1m	
END

IF ~~ c-aranphaere1m
SAY ~[ARAN] So, give up th' goods, <CHARNAME>... what happened? It looked like she was more than a mite interested in beddin' you, boyo.~
+ ~ReputationGT(Player1,15)~ + ~[PC] A gentleman never tells.~ + c-aranphaere1mge
+ ~ReputationGT(Player1,8) ReputationLT(Player1,16)~ + ~[PC] A gentleman never tells.~ + c-aranphaere1mgn
+ ~ReputationLT(Player1,9)~ + ~[PC] A gentleman never tells.~ + c-aranphaere1mgg	
++ ~[PC] Let's just say the lady was satisfied with our... discussion.~ + c-aranphaere1md
++ ~[PC] Hey, Drowess, remember? Do you really think I would allow my guard to drop that far?~ + c-aranphaere1mn
++ ~[PC] Well, we started out with feathers, and progressed to the black leather and whips... do you want me. to continue?~ + c-aranphaere1mw
END

IF ~~ c-aranphaere1mge
SAY ~[ARAN] Come on, <CHARNAME> - you tend to be one mean son o' a bitch. It never stopped you before.~
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1mgn
SAY ~[ARAN] Come on, <CHARNAME> - since when were we goin' to start bein' gentlemen?~
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1mgg
SAY ~[ARAN] True enough, <CHARNAME>. You do be a gentleman. Good on you, then, takin' a walk on th' wild side. Not sure I'd choose a Drowess, but since you be loosenin' up a little, I got a girl in Nashkel I can introduce you to I think you will like right fine!~
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1md
SAY ~[ARAN] I won't say a Drowess be th' right choice o' bedpartner, but next inn, I'll buy an' you talk. I done heard they can kill you by erotic enslaught.~
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1mn
SAY ~[ARAN] True enough, <CHARNAME>. Should o' thought o' that myself. Pity, though - think o' th' stories you culd have told th' boys, eh? ~
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1mw
SAY ~[ARAN] Hells yes, man... spill it! Hold on.. I need to sharpen my quill, an'  write this down. Start over. You said there was feathers? ~
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1f
SAY ~[ARAN] I know a woman's got to do what a woman's got to do. But I'd be careful o' 'gifts' from Drow, no matter how... err... physically impressive.~
+ ~ReputationGT(Player1,15)~ + ~[PC] A lady never tells.~ + c-aranphaere1fge
+ ~ReputationGT(Player1,8) ReputationLT(Player1,16)~ + ~[PC] A lady never tells.~ + c-aranphaere1fgn
+ ~ReputationLT(Player1,9)~ + ~[PC] A lady never tells.~ + c-aranphaere1fgg	
++ ~[PC] Do not worry, Aran. I did not do anything I might be ashamed of later.~ + c-aranphaere1fa
++ ~[PC] I take research seriously, Aran. And I think I have some new ideas for you to try out. Do not worry - I will teach you!~ + c-aranphaere1ft
++ ~[PC] Do you actually think I would sleep with anyone against my own wishes?~ + c-aranphaere1fw
++ ~[PC] This is none of your business.~ + c-aranshutup12
END

IF ~~ c-aranphaere1fge
SAY ~[ARAN] Come on, <CHARNAME> - you tend to be one mean bitch. That's what makes you so desireable, eh? Well, if you need to practice any o' th' moves you learned, you kow where to find me. I'm a right good student, I am.~ 
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1fgn
SAY ~[ARAN] Well, m'Lady <CHARNAME> - a walk on th' wild side might have been right fun, if you did. But I can be right wild too, if you was to want that kind o' attention. And wi' me, you know I'm not goin' to stab you in th' back. (There be a crude joke there, but I'm not goin' to go there, eh?).~ 
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1fgg
SAY ~[ARAN] True enough, <CHARNAME>. You do be a lady. Mayhap I'm just jealous, a bit. Wild flings, an' such, well, if you get into th' mood for such, you could look closer to home for that. I'm not rightly chopped liver, you know.~ 
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1fa
SAY ~[ARAN] Well, that be a relief.  I think.~ 
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1ft
SAY ~[ARAN] Well, I guess when life hands you lemons, make some lemonade, eh? You teach me, an' I'll show you no Drow bastard can keep up wi' a real man, no matter how many tricks they be taught.~ 
IF ~~ THEN EXIT
END

IF ~~ c-aranphaere1fw
SAY ~[ARAN] True enough, <CHARNAME>. Should o' thought o' that myself. I don't rightly think someone as powerful an' beautiful as you be would lose control o' th' situation. So if somethin' happened, I shut up an' soldier, an' if somethin' didn't, I shut up an' soldier. Guess I'm just a nosy bugger at heart!~
IF ~~ THEN EXIT
END

/* Slums Slavers (Darios, extended) */
IF ~Global("c-aranslaver","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranslaver1
SAY ~[ARAN] Jergal's Mouldy Wrappings, that stinks. Usually, I'm all for 'when in Calimport, act as a Calimshan'. But slavery's just wrong, no matter where an' when.~
IF ~~ THEN DO ~SetGlobal("c-aranslaver","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Setting Aran as Leader (Darios) */		
IF ~Global("c-aranleader","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranleader1
SAY ~[ARAN] Well, now, that be right kind o' you to put me as leader. I'll take point if you want me to, but you still be callin' th' shots, eh? On account o' I don't rightly trust my own judgement at times. I'm likely to go pokin' my nose into somethin' you don't want to disturb.~
IF ~~ THEN DO ~SetGlobal("c-aranleader","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* You look dead on your feet */
IF ~Global("c-aranpctired","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranpctired1
SAY ~[ARAN] Umberlee's Fickle Breath, you look tired, <CHARNAME>. We had better find some place t' rest a bit, eh? Some nice tea, a bit to eat, sleep... does a body good, you know.~
IF ~~ THEN DO ~SetGlobal("c-aranpctired","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Temple Comments */

/* Oghma Temple */
IF ~Global("c-aranoghma","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranoghma1
SAY ~[ARAN] Greetin's, oh Great an' Wise Oghma, Keeper of Lore an' Flame o' Knowledge - how's my girl doin' eh? Nice to see that there's still a ton o' things to read, an' visitin' the old girl's haunts is always a right fine experience. I'll be over here, browsin' through th' stacks.~
IF ~~ THEN DO ~SetGlobal("c-aranoghma","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Ilmater Temple */
IF ~Global("c-aranilmater","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranilmater1
SAY ~[ARAN] Home o' th' Cryin' God, an' any poor soul what's washed up here. Not that I'm judgin', mind you. A follower or two o' his has pulled me out o' more than one tight spot, an' not always after a battle. I'd better make a donation.~
IF ~~ THEN DO ~SetGlobal("c-aranilmater","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Helm Temple */
IF ~Global("c-aranhelm","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranhelm1
SAY ~[ARAN] Hey, someone kick me if I open my mouth in here, eh? Somehow, I don't rightly think th' Just One looks kindly on my playin' fast an' loose wi' his name.~
IF ~~ THEN DO ~SetGlobal("c-aranhelm","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Lathandar Temple */
IF ~Global("c-aranlath","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranlath1
SAY ~[ARAN] Ah, bright an' shinin' glory for the Sun Lord, eh? You got to love a god what lets you turn over a new leaf every day. Speakin' o' which, excuse me a second - there be a right fine lookin' young Lathanderite over there, an' I think she's lookin' favorable at me.~
++ ~[PC] Move one inch towards her, Aran, and I will have you thrown out of here on your ear.~ DO ~SetGlobal("c-aranlath","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranlath1a
++ ~[PC] Hey, put in a word for me with her redheaded friend, will you?~ DO ~SetGlobal("c-aranlath","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranlath1b
++ ~[PC] Do you ever think of anything but swearing, drinking, eating, sex, and fighting?~ DO ~SetGlobal("c-aranlath","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranlath1c
++ ~[PC] Can someone hit Aran for me? I anm not able to reach him from here.~ DO ~SetGlobal("c-aranlath","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranlath1a
END

IF ~~ c-aranlath1a
SAY ~[ARAN] Sorry, sorry, just jokin'. Shuttin' up now. See, this is me, shuttin' up!~
IF ~~ THEN EXIT
END

IF ~~ c-aranlath1b
SAY ~[ARAN] You don't rightly want me to play matchmaker, <CHARNAME>. I have Chauntea's own touch. Th' last two I paired up be raisin' four children an' a dog on a small farm north o' Beregost!~
IF ~~ THEN EXIT
END

IF ~~ c-aranlath1c
SAY ~[ARAN] What else is there, eh? ~
IF ~~ THEN EXIT
END

/* Talos Temple - skipped because of possible quest interruptions */

/* Umberlee Temple */
IF ~Global("c-aranumberlee","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranumberlee1
SAY ~[ARAN] By th' Queen-Bi... err... mayhap I just shut my mouth. Sje might just decide to grant me an audience I'm not ready to have. Mayhap I should wait outside, or stuff somethin' in my mouth, or somethin'.~
 IF ~~ THEN DO ~SetGlobal("c-aranumberlee","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Waukeen Temple */
IF ~Global("c-aranwaukeen","LOCALS",1) Global("c-silencearan","GLOBAL",0)~ THEN BEGIN c-aranwaukeen1
SAY ~[ARAN] Now here's a goddess worth lookin' to. She be no Tymora, bless her Golden Coin, but between Tymora's Luck, Waukeen's Bounty, an' Ilmater's Mercy, there's naught a man can do but prosper, eh?~
IF ~~ THEN DO ~SetGlobal("c-aranwaukeen","LOCALS",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ EXIT
END

/* Nalia Quest Interjection: Old Bat Blabbers */
ADD_TRANS_ACTION ~DELCIA~ 16 ~SetGlobal("c-aranoldbat","LOCALS",1)~

APPEND ~C-ARANJ~

IF ~Global("c-aranoldbat","LOCALS",1)~ THEN BEGIN c-aranoldbat1
SAY ~[ARAN] By the nine planes o' hell, that is one horrible old biddy. Th' Keep's been taken, and she be talkin' to the rescue party like that. Reminds me of my mother, only wi' out the charm and panache.~
= ~[ARAN] Clangedden's Beard. I don't know whether to laugh at that old bat, or send her up front in th' next battle to scare the trolls. No wonder Nalia is so... err... shuttin' up now.~
++ ~That would be a good idea, Aran. It saves me telling you to take your foot out of your mouth.~ DO ~SetGlobal("c-aranOldBat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranshutup16
++ ~I agree, Aran. But that isn't quite the most diplomatic thing to say, is it?~ DO ~SetGlobal("c-aranoldbat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-OldBatDiplomatic
+ ~RandomNum(4,1)~ + ~If I wanted your opinion, I would have asked for it.~ DO ~SetGlobal("c-aranoldbat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranshutup17
+ ~RandomNum(4,2)~ + ~If I wanted your opinion, I would have asked for it.~ DO ~SetGlobal("c-aranoldbat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranshutup27
+ ~RandomNum(4,3)~ + ~If I wanted your opinion, I would have asked for it.~ DO ~SetGlobal("c-aranoldbat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranshutup18
+ ~RandomNum(4,4)~ + ~If I wanted your opinion, I would have asked for it.~ DO ~SetGlobal("c-aranoldbat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-aranshutup28
++ ~Perhaps you should go take care of the problem more permanently.~ DO ~SetGlobal("c-aranoldbat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-OldBatViolent
+ ~InParty("Nalia")~ + ~Do you have a problem with Nalia?~ DO ~SetGlobal("c-aranoldbat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-OldBatDiplomatic
++ ~Hey, leave her alone. She has been through a horrible ordeal.~ DO ~SetGlobal("c-aranoldbat","GLOBAL",2) SetGlobalTimer("c-aransmalltalk","GLOBAL",300)~ + c-OldBatDiplomatic
END

IF ~~ c-OldBatDiplomatic
SAY ~[ARAN] No, no. I have no problem wi' Nalia, and no problem wi' her aunt. I just pity the poor fool what ends up wi' that old bat as a mother-in-law, is all. Given th' choice between the trolls an' her, I am not sure which is the better.~
IF ~~ THEN EXIT
END

IF ~~ c-OldBatViolent
SAY ~[ARAN] Hey, I was just commentin', is all. I don't rightly hold with assassination. Besides, she's a tough old bird. She might come back an' haunt me.~
IF ~~ THEN EXIT
END

END

 

/edit 1 : filled in all but the sequence of three "encounters while Aran is drunk". Need to remember to make one where aran is not, but PC is. Good for romance, but just as good for friendship - but these are more tahn one or two lines, so need mulling.

 

Reminder to self - re-evaluate order when moving into larger files, paying attention to CHAIN placement - it is simpler to transfer writing to code linearly this way, but I am horribly mixing APPEND and CHAIN calls.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...