Jump to content

Recommended Posts

Have Pen, Will Travel.

 

We need Aran to have a sideline scribing scroll for PC. We can work on lovenotes and doodles and starry-eyed descriptions for the lady PCs later, us dudes need some meat and potatoes too. We are creating a uniqueness, a marker that sets him apart as special, but nothing that sets him apart as all-powerful. So what happens if a guy is born with only a smattering of connection to The Weave, but not enough to truly move into wild magic? Perhaps the more he studies his language and scribing, the more he unconsciously flexes those connections, until (with a great deal of effort and concentration, in conjunction with skilled study by either himself if he is a mage or someone else if they are)... he can prepare scrolls that are hospitable enough to the undercurrent of magic that they can come into power through collaboration.

 

OK, a little heavy on the BS there, but hey, I started out a DM, and if there isn't a heavy layer of that stuff lying around, how is anything going to grow? ;)

 

So, the "special ability" is to be able to create scrolls, whether or not he is actually following the classes in MAGE_ALL. What about the other magics, like druidic/cleric? Nope - I have an ok backstory and I am sticking to it. If the dude is gathering weak links to the weave and using it to create scrolls, the divine magics are out, because they expect true divine intervention or agency. In 2E terms, mages craft magic from knowledge and control, clerics craft from faith and divine gifting. Since mages are controlling aspects of the weave to make things work, but do not have that divine intervention, then Aran should be able to 'mimic' the mage's works, and with his connection do well enough that collaboration (either with his own spellbook and knowledge or with someone else's) 'trick' the magic into occupying the scroll. No divine agent would look down and say "whoa, dude, cool scroll - far out, man! Sure, I will send down that 'Cyric's Nuclear Option of Doom' right away, even though you don't follow Cyric, because you are JUST THAT KEWEL, DUDE!". So, mage spells only. And now we have an FR rationale and backstory to play with (slightly bent, but not completely broken - hey, *I'm* not having tons of half-drow running around Faerun happily being good and playing well with the local constabulary! Don't poke me, I don't want any trouble!)

 

Creating a Special Ability

 

Well, there are a bunch of things out there that can handle this in different ways.

 

Rogue Rebalancing allows you the choice of spells and potions to build, with the following (by the way, this is my new "go look at this' for fellow modders - aVENGER (RR) comments everything, and his code in a highlighter is a darned good minimalist painting, all ordered and clean, and easy to follow even when exactly what he is doing doesn't hit your brain.... which means it is organized in a painstaking way that will allow you to learn by watching what he does and following it, instead of going "why that, and what does it get associated with?". For the how-not-to example, just read the last sentence. He does things the opposite of that grammatical construction.)

 

Here is where he gets busy in the .tp2, and I don't even need to explain - he does it for me:

COPY	~RR/RR_STIM/ITEMS/RR#INV.ITM~	  ~override~ // Invulnerability item for cutscene creatures
COPY	~RR/RR_CORE/ACTORS/RR#ALCH.CRE~	~override~ // Alchemy invisible creature (used for initiating the dialogue)
COPY	~RR/RR_CORE/SPELLS/RR#ALCH.EFF~	~override~ // Alchemy invisible creature summoning EFF
COMPILE ~RR/RR_CORE/COMPILE/RR#ALCH.D~ // Alchemy invisible creature dialogue file (used for choosing potions)
COMPILE ~RR/RR_CORE/COMPILE/RR#ALCH.BAF~ // Alchemy invisible creature AI script (used for initiating the dialogue)
COPY	~RR/RR_CORE/SPELLS/RR#ALCHT.SPL~   ~override~ // Alchemy (Thief version)
 SAY UNIDENTIFIED_DESC @8100 SAY DESC @8100

 

From this, even before we go poking about the files, we can infer some things. First, he is using the "invisible creature" trick, where you build a .cre and make it invulnerable and invisible, and script it to spawn/self-destruct in game, thus giving your NPC (and/or PC) the ability to talk to yourself. JCompton did that with some cool Boo dialogs, and lots of people have done this with all sorts of things - Galactygon's Spell Pack over at BWL uses it in spell scripting to create all sorts of things like ofscreen targeting and pathing, in BG1NPC Domi used it to make Gorion's letter "talk", etc. - basically, the "invisible creature" trick is one of the big 'everybody does this to make hard-to-get-to-work stuff work' trick. Just a reminder - don't use cutspy.cre as your base. It is flagged as not interactable. I found that one out the hard way, trying to figure out why dialog wouldn't fire. That was several hours of my life wasted.

 

Do we need to do all this? I mean, that looks like extra work, and we want to finish before 2062AD...

 

Well, no. We do not. The same concept could simply be scripted out in dialog, with the following formula:

  1. Set a variable to 1 to show Aran can scribe a scroll, and set a timer (say, 1 in-game week, for instance) to limit the number of times a player can use the ability.
  2. When the variable is at 1 and the timer is expired, it enables a PID choice.
  3. When the PID choice is chosen, go to the kind of dialog setup listed below, and at the end loop back to 1.

 

Or, if we want to be really, really picky, set up the timer and creation of scroll in a .bcs block, so that

  1. When a variable is 0, Aran can scribe spells, and a PID option shows up for it.
  2. Choosing the PID option runs a set of "choice" dialog states, sets the appropriate variable to 1, the type of scroll attached to a specific number, so (for instance)
    c-aranscribe = 1 = scroll of invisibility
    c-aranscribe = 2 = scroll of haste
    etc.
    and set a timer (say, 1 in-game week, for instance) to limit the number of times a player can use the ability.
  3. When the variable is at 1 and the timer is expired, it is picked up by a .bcs block, which either creates the item on Aran and gives him a DisplayStringHead() that indicates he has finished scribing the scroll, or does a StartDialogNoSet(Player1) that fires a banter giving the scroll to Player 1 - and of course sets the variable back to 0, ready for the next round.

 

But then again, that Special Ability Icon is way cool, and makes my NPC look pro, so how would that work?

 

OK, but first let's go see how aVENGER (RR) creates the dialog, because it will be useful in both invisible .cre and straightforward dialog approaches. Again, all his comments, not mine -

 

file RR#ALCH.D

// creator  : aVENGER
// argument : RR#ALCH

BEGIN ~RR#ALCH~

IF ~NumTimesTalkedTo(0)~ THEN BEGIN a0
SAY @8121 // (With cleverness innate to the class, an experienced rogue has seen enough potions in his or her adventuring career to simulate the creation of one. However, the costs for any raw materials that are used in the process must be paid.)
=
@8122 // (This ability allows a rogue to brew one of the potions from the following list:)

IF ~Class(LastTalkedToBy(Myself),THIEF_ALL) PartyGoldGT(199)~ THEN REPLY @8130 DO ~TakePartyGold(200) GiveItemCreate("POTN36",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Master Thievery (200 gp)

IF ~Class(LastTalkedToBy(Myself),THIEF_ALL) PartyGoldGT(174)~ THEN REPLY @8131 DO ~TakePartyGold(175) GiveItemCreate("POTN39",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Perception (175 gp)

IF ~Class(LastTalkedToBy(Myself),THIEF_ALL) PartyGoldGT(124)~ THEN REPLY @8132 DO ~TakePartyGold(225) GiveItemCreate("POTN10",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Invisibility (125 gp)

IF ~Class(LastTalkedToBy(Myself),BARD_ALL) PartyGoldGT(249)~ THEN REPLY @8140 DO ~TakePartyGold(250) GiveItemCreate("POTN37",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Mind Focusing (250 gp)

IF ~Class(LastTalkedToBy(Myself),BARD_ALL) PartyGoldGT(349)~ THEN REPLY @8141 DO ~TakePartyGold(350) GiveItemCreate("POTN21",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Clarity (350 gp)

IF ~Class(LastTalkedToBy(Myself),BARD_ALL) PartyGoldGT(249)~ THEN REPLY @8142 DO ~TakePartyGold(250) GiveItemCreate("POTN42",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Regeneration (250 gp)

IF ~PartyGoldGT(349)~ THEN REPLY @8133 DO ~TakePartyGold(350) GiveItemCreate("POTN24",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Defense (350 gp)

IF ~PartyGoldGT(224)~ THEN REPLY @8134 DO ~TakePartyGold(225) GiveItemCreate("POTN52",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Extra Healing (225 gp)

IF ~PartyGoldGT(49)~ THEN REPLY @8135 DO ~TakePartyGold(50) GiveItemCreate("POTN20",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Antidote (50 gp)

IF ~PartyGoldGT(249)~ THEN REPLY @8136 DO ~TakePartyGold(250) GiveItemCreate("POTN14",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Oil of Speed (250 gp)

IF ~Class(LastTalkedToBy(Myself),THIEF_ALL) PartyGoldGT(249)~ THEN REPLY @8137 DO ~TakePartyGold(250) GiveItemCreate("POTN13",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Oil of Fiery Burning (250 gp)

IF ~Class(LastTalkedToBy(Myself),BARD_ALL) PartyGoldGT(124)~ THEN REPLY @8143 DO ~TakePartyGold(125) GiveItemCreate("POTN45",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Freedom (125 gp)

IF ~PartyGoldGT(374)~ THEN REPLY @8138 DO ~TakePartyGold(375) GiveItemCreate("POTN56",LastTalkedToBy(Myself),1,1,1) DestroySelf()~ EXIT // Potion of Frost Giant Strength (375 gp)

IF ~~ THEN REPLY @8150 DO ~DestroySelf()~ EXIT // (Do not brew any potions.)
END

 

We don't need to see the dialog strings to see how this could be useful this kind of dialog structure is - and how easy this could be to adapt for any number of things. Want a smithing character? Set this up in PID or a specific talk. An alchemist? Voila - most of the code work is right there, all set up. By the way, if you want a really interesting way of making things more or less expensive based on the current party status, try BG1NPC Bardic reputation Adjustment. Berelinde set up this little coding number, changing out costs by reputation through dialog branching. I am going to make the text small, so watch out for squinting eyes:

 

in

 

/* the deal is done */
APPEND ~X#LP1REP~
IF ~~ THEN X#Troubador1MakeBad
SAY @110
+ ~Reputation(Player1,20)~ + @111 + X#T1MB20.1
+ ~Reputation(Player1,19)~ + @112 + X#T1MB19.1
+ ~Reputation(Player1,18)~ + @112 + X#T1MB18.1
+ ~Reputation(Player1,17)~ + @112 + X#T1MB17.1
+ ~Reputation(Player1,16)~ + @112 + X#T1MB16.1
+ ~Reputation(Player1,15)~ + @112 + X#T1MB15.1
+ ~Reputation(Player1,14)~ + @112 + X#T1MB14.1
+ ~Reputation(Player1,13)~ + @112 + X#T1MB13.1
+ ~Reputation(Player1,12)~ + @112 + X#T1MB12.1
+ ~Reputation(Player1,11)~ + @112 + X#T1MB11.1
+ ~Reputation(Player1,10)~ + @112 + X#T1MB10.1
+ ~Reputation(Player1,9)~ + @112 + X#T1MB9.1
+ ~Reputation(Player1,8)~ + @112 + X#T1MB8.1
+ ~Reputation(Player1,7)~ + @112 + X#T1MB7.1
+ ~Reputation(Player1,6)~ + @112 + X#T1MB6.1
+ ~Reputation(Player1,5)~ + @112 + X#T1MB5.1
+ ~Reputation(Player1,4)~ + @112 + X#T1MB4.1
+ ~ReputationLT(Player1,4)~ + @112 + X#T1MBNotPossible
+ ~Reputation(Player1,20)~ + @113 + X#T1MB20.2
+ ~Reputation(Player1,19)~ + @113 + X#T1MB19.2
+ ~Reputation(Player1,18)~ + @113 + X#T1MB18.2
+ ~Reputation(Player1,17)~ + @113 + X#T1MB17.2
+ ~Reputation(Player1,16)~ + @113 + X#T1MB16.2
+ ~Reputation(Player1,15)~ + @113 + X#T1MB15.2
+ ~Reputation(Player1,14)~ + @113 + X#T1MB14.2
+ ~Reputation(Player1,13)~ + @113 + X#T1MB13.2
+ ~Reputation(Player1,12)~ + @113 + X#T1MB12.2
+ ~Reputation(Player1,11)~ + @113 + X#T1MB11.2
+ ~Reputation(Player1,10)~ + @113 + X#T1MB10.2
+ ~Reputation(Player1,9)~ + @113 + X#T1MB9.2
+ ~Reputation(Player1,8)~ + @113 + X#T1MB8.2
+ ~Reputation(Player1,7)~ + @113 + X#T1MB7.2
+ ~Reputation(Player1,6)~ + @113 + X#T1MB6.2
+ ~Reputation(Player1,5)~ + @113 + X#T1MB5.2
+ ~Reputation(Player1,4)~ + @113 + X#T1MBALittle
+ ~ReputationLT(Player1,4)~ + @113 + X#T1MBNotPossible
+ ~Reputation(Player1,20)~ + @114 + X#T1MB20.3
+ ~Reputation(Player1,19)~ + @114 + X#T1MB19.3
+ ~Reputation(Player1,18)~ + @114 + X#T1MB18.3
+ ~Reputation(Player1,17)~ + @114 + X#T1MB17.3
+ ~Reputation(Player1,16)~ + @114 + X#T1MB16.3
+ ~Reputation(Player1,15)~ + @114 + X#T1MB15.3
+ ~Reputation(Player1,14)~ + @114 + X#T1MB14.3
+ ~Reputation(Player1,13)~ + @114 + X#T1MB13.3
+ ~Reputation(Player1,12)~ + @114 + X#T1MB12.3
+ ~Reputation(Player1,11)~ + @114 + X#T1MB11.3
+ ~Reputation(Player1,10)~ + @114 + X#T1MB10.3
+ ~Reputation(Player1,9)~ + @114 + X#T1MB9.3
+ ~Reputation(Player1,8)~ + @114 + X#T1MB8.3
+ ~Reputation(Player1,7)~ + @114 + X#T1MB7.3
+ ~Reputation(Player1,6)~ + @114 + X#T1MB6.3
+ ~Reputation(Player1,5)~ + @114 + X#T1MBModerate
+ ~Reputation(Player1,4)~ + @114 + X#T1MBALittle
+ ~ReputationLT(Player1,4)~ + @114 + X#T1MBNotPossible
END

IF ~~ THEN X#T1MB20.1
SAY @115
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB19.1
SAY @118
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB18.1
SAY @119
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(999)~ + @117 DO ~TakePartyGold(1000) DestroyGold(1000) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB17.1
SAY @120
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB16.1
SAY @121
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1Final
END


IF ~~ THEN X#T1MB15.1
SAY @122
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(399)~ + @117 DO ~TakePartyGold(400) DestroyGold(400) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB14.1
SAY @123
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(199)~ + @117 DO ~TakePartyGold(200) DestroyGold(200) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB13.1
SAY @124
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(299)~ + @117 DO ~TakePartyGold(300) DestroyGold(300) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB12.1
SAY @125
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(399)~ + @117 DO ~TakePartyGold(400) DestroyGold(400) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB11.1
SAY @126
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB10.1
SAY @127
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB9.1
SAY @128
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB8.1
SAY @129
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB7.1
SAY @130
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB6.1
SAY @131
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1999)~ + @117 DO ~TakePartyGold(2000) DestroyGold(2000) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB5.1
SAY @132
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(2499)~ + @117 DO ~TakePartyGold(2500) DestroyGold(2500) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB4.1
SAY @133
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(4999)~ + @117 DO ~TakePartyGold(5000) DestroyGold(5000) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB20.2
SAY @134
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(2399)~ + @117 DO ~TakePartyGold(2400) DestroyGold(2400) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB19.2
SAY @135
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1899)~ + @117 DO ~TakePartyGold(1900) DestroyGold(1900) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB18.2
SAY @136
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1299)~ + @117 DO ~TakePartyGold(1300) DestroyGold(1300) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB17.2
SAY @137
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB16.2
SAY @138
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-2)~ + X#Troubador1Final
END


IF ~~ THEN X#T1MB15.2
SAY @139
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB14.2
SAY @140
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(449)~ + @117 DO ~TakePartyGold(450) DestroyGold(450) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB13.2
SAY @141
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(599)~ + @117 DO ~TakePartyGold(600) DestroyGold(600) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB12.2
SAY @142
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB11.2
SAY @143
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(999)~ + @117 DO ~TakePartyGold(1000) DestroyGold(1000) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB10.2
SAY @144
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1399)~ + @117 DO ~TakePartyGold(1400) DestroyGold(1400) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB9.2
SAY @145
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1799)~ + @117 DO ~TakePartyGold(1800) DestroyGold(1800) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB8.2
SAY @146
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(2399)~ + @117 DO ~TakePartyGold(2400) DestroyGold(2400) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB7.2
SAY @147
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(2999)~ + @117 DO ~TakePartyGold(3000) DestroyGold(3000) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB6.2
SAY @148
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(3999)~ + @117 DO ~TakePartyGold(4000) DestroyGold(4000) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB5.2
SAY @149
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(6499)~ + @117 DO ~TakePartyGold(6500) DestroyGold(6500) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB20.3
SAY @150
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(2799)~ + @117 DO ~TakePartyGold(2800) DestroyGold(2800) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB19.3
SAY @132
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(2499)~ + @117 DO ~TakePartyGold(2500) DestroyGold(2500) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB18.3
SAY @131
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1999)~ + @117 DO ~TakePartyGold(2000) DestroyGold(2000) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB17.3
SAY @151
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB16.3
SAY @138
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-3)~ + X#Troubador1Final
END


IF ~~ THEN X#T1MB15.3
SAY @152
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB14.3
SAY @153
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB13.3
SAY @154
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB12.3
SAY @155
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB11.3
SAY @156
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(1599)~ + @117 DO ~TakePartyGold(1600) DestroyGold(1600) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB10.3
SAY @157
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(2199)~ + @117 DO ~TakePartyGold(2200) DestroyGold(2200) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB9.3
SAY @158
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(2799)~ + @117 DO ~TakePartyGold(2800) DestroyGold(2800) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB8.3
SAY @159
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(3699)~ + @117 DO ~TakePartyGold(3700) DestroyGold(3700) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB7.3
SAY @160
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(3999)~ + @117 DO ~TakePartyGold(4000) DestroyGold(4000) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MB6.3
SAY @161
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(7499)~ + @117 DO ~TakePartyGold(7500) DestroyGold(7500) ReputationInc(-3)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MBALittle
SAY @162
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(4999)~ + @117 DO ~TakePartyGold(5000) DestroyGold(5000) ReputationInc(-1)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MBModerate
SAY @163
++ @116 + X#Troubador1NoCoin
+ ~PartyGoldGT(7499)~ + @117 DO ~TakePartyGold(7500) DestroyGold(7500) ReputationInc(-2)~ + X#Troubador1Final
END

IF ~~ THEN X#T1MBNotPossible
SAY @164
IF ~~ THEN EXIT
END

IF ~~ THEN X#Troubador1NoCoin
SAY @165
IF ~~ THEN EXIT
END

IF ~~ THEN X#Troubador1Final
SAY @166
IF ~~ THEN DO ~SetGlobal("X#TT1Deactivate","GLOBAL",1)~ EXIT
END

END

 

 

So we can see how a merger of these two ideas can create dialog that can be very tightly tailored to the party, yet give a huge range of options. In this respect, it is a huge step up from Cromwell and Cespy forging, from a role-playing perspective - perhaps your Quest Blacksmith really likes dwarves and hates elves, so his forging prices and availability scale (or perhaps he offers different products to dwarves than elves, or figures out what store to start based on party gold)? Or perhaps reputation has an effect on what types of skills and services are offered? Or what if your crafter NPC operated by level, getting better items to forge, and crosschecked by the reputation of Player1, so that evil <CHARNAME>s got offered Daggers of Hideous Bloodletting, and Paladiny <CHARNAME>s got Daggers Of Riteous Providence? *cough* *cough* sorry, got carried away for a second there. Anyways, back to aAVENGER (RR).

 

The AI for the invisible .cre is nicely set up, so summoning the .cre to access the dialog ("using the ability" in player terms) has the following script:

IF
OR(2)
  !Detect(LastSummonerOf(Myself))
  StateCheck(LastSummonerOf(Myself),CD_STATE_NOTVALID)
THEN
RESPONSE #100
	DestroySelf()
END

IF
OR(4)
  Detect([EVILCUTOFF])
  ActuallyInCombat()
  CombatCounterGT(0)
  AttackedBy([ANYONE],DEFAULT)
THEN
RESPONSE #100
	DisplayStringNoNameHead(LastSummonerOf(Myself),@8120) // This ability cannot be used in a hostile environment
	DestroySelf()
END

IF
NumTimesTalkedTo(0)
Exists(LastSummonerOf(Myself))
!StateCheck(LastSummonerOf(Myself),CD_STATE_NOTVALID)
THEN
RESPONSE #100
	StartDialogueNoSet(LastSummonerOf(Myself))
END

 

That means block 1 deletes the .cre if the summoner disappears, if there is some kind of combat going on, or if a fireball trap just went off in the vacinity toasting the .cre... but if everything is a-ok, then the invisible .cre will start dialog with the actor that brought it into existence, accessing those options.

 

OK, so far we have

 

option 1 - build it through dialogs and timers, resolving it with either immediate creation and a "cooldown period", or commission and creation after the end of the timered "creation interval".

 

option 2 - set up a spell that Aran can cast from either an innate ability/special ability slot or a dialog option that launches this invisible .cre and allows access to the menu.

 

We haven't figured out *how* the .cre gets summoned yet, but we know it is attached to the way HLAs work, and we know that because aVENGER (RR) is looking at modifying and expanding existsing HLAs, which brings in the idea that perhaps cloning existing HLAs and adding them to Aran might be fun too, but I am nipping that line of inquiry in the bud because it involves much more research than even I find interesting. That is a level of script-guru stuff that I would rather beg the Big Boyz And Big Girlz to help me with if I ever have to. I don't mind going to the dentist, but I sure as heck don't volunteer for root canals without anaesthetic!

 

Hey, so far this is pretty fun. Why don't we give it a twist further into the deep, and instead of using dialog or existing HLAs, build a level-advancing special ability that uses the special ability slots? Who does that? Well, Amber does.

 

Emulating HLA Behaviors With Custom Stuff.

Here is a snippet of Darios & Miera's Amber m#amber.baf, starting at line 3144.

// Amber's racial special abilities
IF
XPGT(Myself,220000)
GlobalLT("M#AmberLvl","GLOBAL",11)
THEN
RESPONSE #100
ApplySpellRES("M#INCFR",Myself)	
IncrementGlobal("M#AmberLvl","GLOBAL",1)
END

IF
XPGT(Myself,440000)
GlobalLT("M#AmberLvl","GLOBAL",12)
THEN
RESPONSE #100
ApplySpellRES("M#INCFR",Myself)
IncrementGlobal("M#AmberLvl","GLOBAL",1)
END

IF
XPGT(Myself,660000)
GlobalLT("M#AmberLvl","GLOBAL",13)
THEN
RESPONSE #100
ApplySpellRES("M#INCFR",Myself)	
IncrementGlobal("M#AmberLvl","GLOBAL",1)
END

IF
XPGT(Myself,880000)
GlobalLT("M#AmberLvl","GLOBAL",14)
THEN
RESPONSE #100
ApplySpellRES("M#INCFR",Myself)
IncrementGlobal("M#AmberLvl","GLOBAL",1)
END

IF
XPGT(Myself,1100000)
GlobalLT("M#AmberLvl","GLOBAL",15)
THEN
RESPONSE #100
ApplySpellRES("M#INCFR",Myself)
IncrementGlobal("M#AmberLvl","GLOBAL",1)
END

IF
XPGT(Myself,1320000)
GlobalLT("M#AmberLvl","GLOBAL",16)
THEN
RESPONSE #100
AddSpecialAbility("M#CONTAG")
ApplySpellRES("M#INCFR",Myself)
IncrementGlobal("M#AmberLvl","GLOBAL",1)
END

So what is happening here? Well, Darios and Miera are taking advantage of the same set of resources that aVENGER(RR) is modifying. They are creating a leveling structure outside of HLA tables to create a custom HLA that improves as we go up in level. in this case, they want Amber to get progressively more fire resistant, and gain some tiefling abilities, but since BG2 didn't create tieflings as a race, they are adding these abilities to her this way:

 

160 ApplySpellRES(S:RES*, O:Target)

This action causes the active creature to cast the specified spell at the target object. The spell is applied instantly; no casting animation is played. The spell cannot be interrupted. For the RES version of the action, the spell name can not consist of only numbers, should be written in upper case and should be no more than 7 characters long. Note that for normal spellcasting the probability dice values for effects are rolled for each spell, whereas spells applied in the same scripting block by ApplySpell use a single dice value.

 

279 AddSpecialAbility(S:ResRef*)

This action adds the specified spell to the active creature. The message <creature_name> has gained a special ability: "Ability" is displayed in the message log.

 

OK, so the script is adding a spell. In the first case, skipping the whole spell-adding-to-ids thing, and just using the spell as a way of adding a permanent effect to the target, and in the second adding it as a special ability, with its own cool icon, and space on the menu. Yeah, right. How? How is that spell called, and what does it actually do?

 

Opening up NI, we find that a custom spell M#INCFR is added by Amber as a Fire Resistance Bonus (30) with a living Actor as target.

Type: Fire resistance bonus (30)

Target: Self (1)

Power: 0

Value: 1

Modifier type: Increment (0)

Timing mode: Instant/Permanent until death (1)

Dispel/Resistance: No dispel/bypass resistance (0)

Duration: 0

Probability 1: 100

Probability 2: 0

Unknown: 00 00 00 00 00 00 00 00 h

# dice thrown/maximum level: 0

Dice size/minimum level: 0

Save type: ( No save )

Save bonus: 0

Unknown: 00 00 00 00 h

 

 

OK, we have the custom spell we can build a resource that adds an effect, and then use ApplySpellRES(S:RES*, O:Target) to dump it onto our NPC via script.

 

Now for the Special Ability -

 

This one has an icon (SPWI409B.BAM) assigned, and is named "Contageous Eye", has its spell type set as innate, and a secondary type = disabling, and a whole set of effects (disease, playing a character string, etc. - all sorts of stuff). Lots of fun stuff to go poke around with in NI or DLTCEP.

 

So to add in a Special Ability that casts like a spell, we can do all sorts of stuff, and add it as an innate ability by simply scripting that AddSpecialAbility(S:ResRef*).

 

But what about summoning that .cre? The spell itself does that - how?

 

Let's go back and look more closely at aVENGER (RR)'s Alchemy work.

 

What does his RR#ALCHT.SPL do?

Type: Melee (1)

Unknown: 00 h

Ability location: Innate slots (4)

Icon: SPCL918B.BAM

Target: Caster (5)

# targets: 0

Range (feet): 1

Minimum level: 1

Casting speed: 0

Bonus to hit: 0

Dice size: 6

# dice thrown: 0

Unknown: 00 00 h

Damage type: Piercing (1)

# effects: 3

Effects index: 0

# charges: 1

Unknown: 01 00 h

Projectile: None (1)

Effect: Type: Use EFF file (177),Target: Self (1),Power: 0,IDS target: EA.IDS - 2 / Unknown value - 0,

Effect: Type: Play visual effect (215),Target: Self (1),Power: 0,Unknown: 00 00 00 00 h,

Effect: Type: Play sound (174),Target: Self (1),Power: 0,Unknown: 00 00 00 00 h,Unknown: 00 00 00 00 h,

ok, so it plays a sound, throws some color around, and accesses an EFF file.

 

and what does that RR#ALCH.EFF do?

Type Summon creature (67)

Target Self (1)

Allegiance From CRE file (2)

Timing mode Instant/Permanent until death (1)

Probability 1 100

Resource RR#ALCH.CRE

Save type ( No save )

Dispel/Resistance No dispel/bypass resistance (0)

Caster location: X -1 (all the same)

 

So now we have a way of doing this in an innate slot, as well - we can create a leveling script that allows him to call a .cre into being, so if we wanted to we could make the .cre called dependent on both level and type, swapping all sorts of .cres in an invisible .cre shell game if we wanted to - we could even drive the player nuts, and make not only the choices random but the type of spell random (or dependent on what classes are in the party). We could get really crazy with this, if we wanted.

Edited by cmorgan

Share this post


Link to post

Of Course, we didn't have to work this hard: we could have just added the thief HLA directly...

 

GA_spcl919.

 

It is in the IESDP. Using scripting, add it in, and the standard HLA is available to anyone that you care to assign it to. But the "long form" of discovery is much more entertaining, and since when was Aran ever supposed to be about doing what vanilla *anything* does? That choice I am scrapping - in fact, I scrapped it way up at the top, because aVENGER (RR) wrote out his changes to the Alchemy and Potion HLA stuff here. It makes it even more clear that the inclusion of this HLA being available once a day (and its limited scope - Aran could not scribe a scroll of a spell he didn't know, so players not giving him cleric or priest spells get no scrolls) makes using the vanilla HLA suboptimal at best, useless at worst for a character whose central intent is to be flexible enough to suit four different configurations, only one of which could use this ability. Roleplaying is supposed to be a trump for him, so off we go to custom-content land. This also brings up a big point for beginning modders -

 

IF YOU WANT TO DO SOMETHING, LOOK AROUND FIRST!!!!

 

I started Aran as a fun blogging of code/tutorial/personal challenge. He's fun. I had a cool idea that he could scribe scrolls, but I had no real clue how to do it other than GiveItemCreate(). So I poked around on forums and in existing code until, lo and behold, there were dudes and dudettes talking about HLAs, and other dudes and dudettes talking about how to script kits without CLAB, and before you know it, there are answers. There are even examples. The good thing about being around modding an older game is that there have been lots of very smart, very talented people trying to do impossible things for years. And, guess what - there are a ton of times that they have succeeded. So, if you look sideways at the code, and look beyond the strict content to how modders tricked the engine into doing what they wanted, you have a wealth of examples to learn from and adapt to new uses.

 

Historical Note: The Old Days

Had The Same Questions .

But luckily, they solved most of the hassles for us, so all we have to do is poke around in some corners, and shake things a bit, and see what rattles!

 

 

Choices

Well, let's make some choices here.

 

Frequency

On the one hand, BG2 adds the ability at high levels to create potions every day (or multiples if you take multiple HLAs). This does not fit 2E , where it takes time. But it is in the game. So, a decision to be made on that point. Game or 2E style?

 

Availability

BG2 gives you the HLA ability to scribe a scroll of something you know. That is the case for 2E, too - either go to a Sage or a Mage, pay him alot of money, gather some exotic ingredients (worth a day or two or RP sessions at least) and then hopefully you get your scroll. Or work deep in your own lab for a week or so (or more - some campaigns made it 1 week/level of spell). Do we let him just create this stuff out of thin air, or work for a period of time with another mage or cleric or paladin or druid? And which of those?

 

Balance

Who cares. Seriously. I am creating Companion NPC that can do an impossible thing - be a non-mage wandering about battling monsters, staying up late into the night and scribing scrolls that he can't read, let alone cast. I didn't give him fancy +17 hackmasters, or even a quest-enhanced weapon, and he isn't half-anything, with no massive angsty ex-girlfriends, family troubles, Sekret Planz To Take Over the World, or even your regular old "Hey, wow... I am the son of a god, too! Let's do lunch!". And at this point, with the number of cool mods out there and the number of tweaking options available to players, I doubt very much I could even judge what a good balancing decision would be. This is strictly and explicitly a roleplaying option, for fun. So, to misquote historical referent, "Write it all and let players sort out balance issues".

 

Implementation

We have the creation of a custom HLA, which we can use to summon a .cre that will provide tailored options - and a whole bunch of possibilities attached to that. We could script it out on a timer, either through PID>BCS bounce or PID>PID implementation. We could make it part of a banter, heck, the dialog options could take many different forms, all based on the same dialog template -

 

So, what's it going to be?

 

Aran's Scribing

 

Well, I was going to go with the HLA approach, but because of the timing issues with HLAs I would need to step out to the Big Moddarz and ask how to extend/delay the refresh of an innate ability from overnight to several days. We might play with that idea later, but I want to finish this set of ideas up tonight, and I have to sign off soon - perhaps I'll come back and relook at this later. Until then, I think the best thing to do is to do the PID request, followed by a .bcs triggered talk that delivers the scroll. So, I hope the analysis of options helped out someone, because in the end, I am rolling back to the good old tried-and-true Dialog Option :) .

 

 

Here is today's start, coming from the toggled PID lines (really only one option at a time shows up):

 

+ ~Global("c-aranscribe","GLOBAL",0)~ + ~[PC] Can you scribe a scroll for me?~ + c-aranscribe1
+ ~Global("c-aranscribe","GLOBAL",1) RandNum(5,1)~ + ~[PC] Is that scroll done yet?~ + c-aranscribing1
+ ~Global("c-aranscribe","GLOBAL",1) RandNum(5,2)~ + ~[PC] Is that scroll done yet?~ + c-aranscribing2
+ ~Global("c-aranscribe","GLOBAL",1) RandNum(5,3)~ + ~[PC] Is that scroll done yet?~ + c-aranscribing3
+ ~Global("c-aranscribe","GLOBAL",1) RandNum(5,4)~ + ~[PC] Is that scroll done yet?~ + c-aranscribing4
+ ~Global("c-aranscribe","GLOBAL",1) RandNum(5,5)~ + ~[PC] Is that scroll done yet?~ + c-aranscribing5

 

and the draft following lines:

IF ~~ c-aranscribing1
SAY ~[ARAN] Keep your shirt on, eh? I'm still workin' on it. I said a week, an' I hold to my contracts, written or spoken.~
IF ~~ THEN EXIT
END

IF ~~ c-aranscribing2
SAY ~[ARAN] Aye. It is finished. See, I just magically added a whole extra bunch o' time to today, an' somehow a whole week passed in an instant, an' while I was at it, I grew bunnie ears an' married a Drowess.~ 
IF ~~ THEN EXIT
END

IF ~~ c-aranscribing3
SAY ~[ARAN] No.~
IF ~~ THEN EXIT
END

IF ~~ c-aranscribing4
SAY ~[ARAN] Ilmater's Sufferin', do you ask questions like 'are we there yet?' 'how long until th' next town?' 'why is th' grass green?' 'why is Aran about to make a blighted rude gesture in your general direction?' What are you, <PRO_BOYGIRL>, a four year old?~
IF ~~ THEN EXIT
END

IF ~~ c-aranscribing5
SAY ~[ARAN] Now, I'm rightly a patient man. Well, sort o' patient. So I'm goin' to say this again, slow - like, just in case you didn't quite understand me. O - n - e  W - e - e - k. See, I even added sign language, just in case you be deaf!~
IF ~~ THEN EXIT
END


IF ~~ c-aranscribe1
SAY ~[ARAN] Aye, I can scribe some scrolls, sometimes. If someone knows some mage or cleric spell, an' we work together for a week, I can usually come up wi' a decent usable scroll. It's a mite slower than gettin' th' experienced folks to do it, but it works - an' I do it for free, on account o' I just really do enjoy th' work. I'll even buy my own supplies, or make 'em. What do you want me to work on, eh?~
++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + c-aranscribeno
+ ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + c-aranscribem
+ ~Class("c-aran",MAGE_ALL)~ + ~Hey, you are a mage youself - why does this take so long? I hear high level mages can run one of these out in a day!~ + c-aranscribee
+ ~!Class("c-aran",MAGE_ALL)~ + ~[PC] Hey, you are no mage - you can not scribe a scroll of something you do not have the magic to cast!~ + c-aranscribenm
+ ~!Class("c-aran",CLERIC_ALL)~ + ~[PC] Can you scribe cleric scrolls?~ + c-aranscrcler1
+ ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Can you scribe cleric scrolls?~ + c-aranscrcler2
END

IF ~~ c-aranscrcler1
SAY ~[ARAN] No, it don't rightly work that way. See, this be more copywork than inspiration, an' trickin' th' magic into thinkin' it be th' right place to be don't rightly work so well when there be a god actively grantin' th' power. Trickin' gods, well, that's a bit more dangerous than most people want to be tryin'.~
++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + c-aranscribeno
+ ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + c-aranscribem
+ ~Class("c-aran",MAGE_ALL)~ + ~Hey, you are a mage youself - why does this take so long? I hear high level mages can run one of these out in a day!~ + c-aranscribee
+ ~!Class("c-aran",MAGE_ALL)~ + ~[PC] Hey, you are no mage - you can not scribe a scroll of something you do not have the magic to cast!~ + c-aranscribenm
END

IF ~~ c-aranscrcler2
SAY ~[ARAN] Perhaps, maybe someday, when my god decides to get that whole side o' my faith active. But not through this process, ever. See, this be more copywork than inspiration, an' trickin' th' magic into thinkin' it be th' right place to be don't rightly work so well when there be a god actively grantin' th' power. Trickin' gods, well, that's a bit more dangerous than most people want to be tryin'.~
++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + c-aranscribeno
+ ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + c-aranscribem
+ ~Class("c-aran",MAGE_ALL)~ + ~Hey, you are a mage youself - why does this take so long? I hear high level mages can run one of these out in a day!~ + c-aranscribee
+ ~!Class("c-aran",MAGE_ALL)~ + ~[PC] Hey, you are no mage - you can not scribe a scroll of something you do not have the magic to cast!~ + c-aranscribenm
END

IF ~~ c-aranscribeno
SAY ~[ARAN] Sure, I will take a break. I have a mite o' letter writin' to catch up on, anyways.~
IF ~~ THEN EXIT
END

IF ~~ c-aranavailscrollf
SAY ~[ARAN] Aye, then. Mystra's Grey Eyes, it looks like I have my work cut out for me. Then again. I do rightly enjoy th' challenge.~
IF ~~ THEN EXIT
END

IF ~~ c-aranscribee
SAY ~[ARAN] Look, I get th' same skills as anyone else what studies magic. I get strong enough an' experienced enough, th' bloody things write themselves right out o' my head an' onto the balnk parchament, pretty as you please.~
= ~[ARAN] This work, it be right different. This be more copywork, an' then trickin' th' magic into thinkin' it be th' right place to be, sort of. There's advantages to this, though. It be cheaper, it needs no high level magickin' an' most o' all, no one has to rest for th' spell. Th' magic, it just builds up, see?~
+ ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] Alright, we have some mage spells available in the party, so scribe one of those.~ + c-aranscribem
++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + c-aranscribeno
END

IF ~~ c-aranscribenm
SAY ~[ARAN] Look, I got a touch, I do. I know a mage what's strong enough an' experienced enough, they just prepare an' then th' bloody things write themselves right out o' their head an' onto the blank parchament, pretty as you please.~
= ~[ARAN] This work, it be right different. This be more copywork, an' then trickin' th' magic into thinkin' it be th' right place to be, sort of. There's advantages to this, though. It be cheaper, it needs no high level magickin' an' most o' all, no one has to rest for th' spell. Th' magic, it just builds up, see?~
+ ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] Alright, we have some mage spells available in the party, so scribe one of those.~ + c-aranscribem
++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + c-aranscribeno
END

IF ~~ c-aranscribem	
SAY ~[ARAN] Right then, you got someone in particular you want me to work with?~
++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + c-aranscribeno
+ ~Class(Player1,MAGE_ALL)~ + ~[PC]
+ ~Class(Player2,MAGE_ALL) !Name("c-aran",Player2)~ + ~[PC] 
+ ~Class(Player3,MAGE_ALL) !Name("c-aran",Player3)~ + ~[PC] 
+ ~Class(Player4,MAGE_ALL) !Name("c-aran",Player4)~ + ~[PC] 
+ ~Class(Player5,MAGE_ALL) !Name("c-aran",Player5)~ + ~[PC] 
+ ~Class(Player6,MAGE_ALL) !Name("c-aran",Player6)~ + ~[PC] 
+ ~Class("c-aran",MAGE_ALL)~ + ~[PC]

 

AAAAANNND here we run into another choice. Do we use the roleplay option to narrow choices down? That could be fun, if I really wanted a longer interplay with complaints about working with Viconia if she was magefied, or anyone else switched in there with Level1NPCs.... but for right now, I am not wanting to add tons of complexity to an already heavy menu sequence. I think a better option for my sanity would to use

 

0x40DA HaveSpellParty(I:Spell*Spell)

Returns true if any of the party members have the specified spell memorised, which must be listed in the spell.ids.

 

and then capitalize on the roleplaying aspect that not all materials would be available. Let's let him rummage around for a bit, and try a sequence of these kinds of blocks:

 

IF ~~ c-aranscribem	
SAY ~[ARAN] Right then, I'll take a look at what I can make...~
+ ~RandomNum(5,1)~ + c-aranavailscroll1
+ ~RandomNum(5,2)~ + c-aranavailscroll2	
+ ~RandomNum(5,3)~ + c-aranavailscroll3
+ ~RandomNum(5,4)~ + c-aranavailscroll4
+ ~RandomNum(5,5)~ + c-aranavailscroll5

 

We need to break down the list of available mage spels to manageable, readable blocks, so a randomization of the top level lets us do stuff like this:

 

/* block 1 of 5, 12 checks for availability per block */
IF ~~ c-aranavailscroll1
SAY ~[ARAN] Based on what we have memorized in th' party, an' what materials I have right here, I can start on one o' these here I done wrote down for you. You chose, an' I'll get it to you after less than a tenday stretch, by just a mite.~
+ ~HaveSpellParty(WIZARD_GREASE)~ + ~[PC] Start on 'Grease'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",1) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_REFLECTED_IMAGE)~ + ~[PC] Start on 'Reflected Image'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",2) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_ARMOR)~ + ~[PC] Start on 'Armor'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",3) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_LUCK)~ + ~[PC] Start on 'Luck'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",4) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_MELF_ACID_ARROW)~ + ~[PC] Start on 'Acid Arrow'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",5) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_CLOUDKILL)~ + ~[PC] Start on 'Cloudkill'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",6) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_LARLOCH_MINOR_DRAIN)~ + ~[PC] Start on 'Minor Drain'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",7) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_BURNING_HANDS)~ + ~[PC] Start on 'Burning hands'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",8) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_STONE_SKIN)~ + ~[PC] Start on 'Stoneskin'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",9) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_SLOW)~ + ~[PC] Start on 'Slow'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",10) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_MELF_METEOR)~ + ~[PC] Start on 'Melf's Meteor'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",11) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf
+ ~HaveSpellParty(WIZARD_GLITTERDUST)~ + ~[PC] Start on 'Glitterdust'.~ DO ~SetGlobal("c-arnscrl","GLOBAL",12) Global("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-arnscrltime","GLOBAL",FIVE_DAYS)~ + c-aranavailscrollf

+ ~!HaveSpellParty(WIZARD_GREASE)
!HaveSpellParty(WIZARD_REFLECTED_IMAGE)
!HaveSpellParty(WIZARD_ARMOR)
!HaveSpellParty(WIZARD_LUCK)
!HaveSpellParty(WIZARD_MELF_ACID_ARROW)
!HaveSpellParty(WIZARD_CLOUDKILL)
!HaveSpellParty(WIZARD_LARLOCH_MINOR_DRAIN)
!HaveSpellParty(WIZARD_BURNING_HANDS)
!HaveSpellParty(WIZARD_STONE_SKIN)
!HaveSpellParty(WIZARD_SLOW)
!HaveSpellParty(WIZARD_MELF_METEOR)
!HaveSpellParty(WIZARD_GLITTERDUST)
~ + ~[PC] This list is blank, Aran...~ + c-ascrnone

IF ~~ c-ascrnone
SAY ~[ARAN] Aye - well, that last combat done smashed half my ink an' it will be a day or two before I can make some more. Try me again when we are all rested an' up to speed, eh?~
IF ~~ THEN EXIT
END

 

We can extend this, but that gives random access to possibly 60 spells he can scribe immediately, without cost, without necessarily being the class himself - and it doesn't preclude access to the regular class HLAs either. At one potential scroll every 5 game days, that can add up fast.

 

 

The related .baf entries, for when they are done,

 

/* Grease scroll */
IF 
GlobalTimerExpired("c-arnscrltime","GLOBAL")
Global("c-aranscribe","GLOBAL",1)
Global("c-arnscrl","GLOBAL",1) // Grease chosen
InParty(Myself)
!StateCheck(Myself,CD_STATE_NOTVALID)
InMyArea(Player1)
!StateCheck(Player1,CD_STATE_NOTVALID)
THEN
RESPONSE #100
	SetGlobal("c-aranscribe","GLOBAL",0)
	SetGlobal("c-arnscrl","GLOBAL",0)
	GiveItemCreate("SCRL66",Myself,1,1,1) // Grease
	DisplayStringHead(Myself,~Aye, now, that scroll be finished, if you want it.~)
END

/* Glitterdust Scroll */
IF 
GlobalTimerExpired("c-arnscrltime","GLOBAL")
Global("c-aranscribe","GLOBAL",1)
Global("c-arnscrl","GLOBAL",12) // glitterdust chosen
InParty(Myself)
!StateCheck(Myself,CD_STATE_NOTVALID)
InMyArea(Player1)
!StateCheck(Player1,CD_STATE_NOTVALID)
THEN
RESPONSE #100
	SetGlobal("c-aranscribe","GLOBAL",0)
	SetGlobal("c-arnscrl","GLOBAL",0)
	GiveItemCreate("<<scroll_id_here>>",Myself,1,1,1) // <<scroll_name_here>>
	DisplayStringHead(Myself,~Aye, now, that scroll be finished, if you want it.~)
END

 

Unrelated Side note: how is this for a real .cre producer - no messing around here, this is clearly defining a .cre using existing resources. aVENGER (RR) lays it down with style (sorry its so small, but go look at his .tp2):

// Arledrian's Silverblaze Quest
COPY_EXISTING ~ARLED.CRE~ ~override~ // Arledrian
 WRITE_ASCII 0x34 ~RR#ARLDS~ #8 // Sets Arledrian's small portrait
 REMOVE_CRE_ITEM ~rndtre04~ // removes the random treasure 04 item 
 REMOVE_CRE_ITEM ~bow05~ // removes the Short Bow (which messes up his DW) 
 REMOVE_CRE_ITEM ~sw1h08~ // removes the Short Sword +1
 REMOVE_CRE_ITEM ~arow02~ // removes the Arrows +1
 REPLACE_CRE_ITEM ~CHAN02~ #0 #0 #0 ~UNSTEALABLE~ ~ARMOR~  // replaces Arledrian's armor with Chain Mail +1
 ADD_CRE_ITEM ~DAGG02~ #0 #0 #0 ~UNSTEALABLE~ ~WEAPON1~ EQUIP	  // Replaces Arledrian Short Sword +1 with a Dagger +1
 ADD_CRE_ITEM ~DAGG15~ #0 #0 #0 ~UNSTEALABLE~ ~SHIELD~ // Gives Arledrian Dagger +2
 ADD_CRE_ITEM ~RR#SILV~ #0 #3 #0 ~NONE~ ~INV1~  // Gives Arledrian the Silverblaze dagger
 ADD_CRE_ITEM ~POTN10~ #1 #0 #0 ~UNSTEALABLE~ ~QITEM1~  // Gives Arledrian 1x Potion of Invisibility
 ADD_CRE_ITEM ~POTN52~ #1 #0 #0 ~NONE~ ~QITEM2~ // Gives Arledrian 1x Potion of Extra Healing
 WRITE_LONG 0x14 3000 // XP value (when killed)
 WRITE_LONG 0x18 161000  // current XP
 WRITE_SHORT 0x24 67 // current hit points
 WRITE_SHORT 0x26 67  // maximum hit points
 WRITE_SHORT 0x28 24833 // Sets avatar to FIGHTER_MALE_ELF
 WRITE_BYTE 0x2C 35 // metal color
 WRITE_BYTE 0x2D 32 // minor color
 WRITE_BYTE 0x2E 32 // major color
 WRITE_BYTE 0x2F 108  // skin color
 WRITE_BYTE 0x30 60 // leather color
 WRITE_BYTE 0x31 60 // armor color
 WRITE_BYTE 0x32 2  // hair color
 WRITE_BYTE 0x45 5 // Hide in Shadows skill
 WRITE_BYTE 0x52 14 // THAC0
 WRITE_BYTE 0x54 10 // save vs. death
 WRITE_BYTE 0x55 12 // save vs. wands
 WRITE_BYTE 0x56 11 // save vs. polymorph
 WRITE_BYTE 0x57 12 // save vs. breath
 WRITE_BYTE 0x58 13 // save vs. spells
 WRITE_BYTE 0x64 0  // Detect Illusions skill
 WRITE_BYTE 0x65 50 // Set Traps skill
 WRITE_BYTE 0x66 24  // Lore
 WRITE_BYTE 0x67 55 // Open Locks skill
 WRITE_BYTE 0x68 0  // Move Silently skill
 WRITE_BYTE 0x69 55  // Find Traps skill
 WRITE_BYTE 0x6a 50 // Pick Pockets skill
 WRITE_LONG 0xa4   // initial meeting string
 WRITE_LONG 0xec 12586  // damage string
 WRITE_LONG 0xf0 12587  // death string
 WRITE_LONG 0x10c 4942  // select common 1
 WRITE_LONG 0x110 4941 // select common 2
 WRITE_BYTE 0x234 7 // level (first class)
 WRITE_BYTE 0x235 8 // level (second class)
 WRITE_BYTE 0x236 0 // level (third class)
 WRITE_BYTE 0x238 12	 // Strength
 WRITE_BYTE 0x23a 16	// Inteligence
 WRITE_BYTE 0x23b 11	// Wisdom
 WRITE_BYTE 0x23c 19	// Dexterity
 WRITE_BYTE 0x23d 10	// Constitution
 WRITE_BYTE 0x23e 13   // Charisma
 WRITE_BYTE 0x23f 18	// morale
 WRITE_BYTE 0x240 5 // morale break
 WRITE_BYTE 0x242 30	 // morale recovery
 WRITE_BYTE 0x272 2  // race
 WRITE_BYTE 0x273 9 // class
 WRITE_BYTE 0x27b 34	  // alignment
 WRITE_ASCII 0x248 ~RR#ARLED~ #8  // assign override AI script
 WRITE_ASCII 0x250 ~None~ #8   // disable class AI script (STEALAMN.BCS)
 WRITE_ASCII 0x258 ~None~ #8	 // disable race AI script (GPUSE.BCS)
 WRITE_ASCII 0x260 ~None~ #8   // disable general AI script (NONE)
 WRITE_ASCII 0x268 ~None~ #8	  // disable default AI script (WTARSGT.BCS)
 SET_BG2_PROFICIENCY ~PROFICIENCYDAGGER~ 2 // Give Arledrian 2 stars in the BG2 Dagger proficiency
 SET_BG2_PROFICIENCY ~PROFICIENCY2WEAPON~ 3 // Give Arledrian 3 stars in the BG2 Two Weapon Style proficiency
BUT_ONLY_IF_IT_CHANGES

 

There are some other options out there, but one way we might allow that "Tinker, Tailor, Soldier, Spy" player choice for Aran is to do a READLN and patch an existing .cre in just this way. No distributed .cre, just pick one up, remold it to your liking, and move on. Way cool. This stuff -

  WRITE_LONG 0xa4 4942  // initial meeting string
 WRITE_LONG 0xec 12586  // damage string
 WRITE_LONG 0xf0 12587  // death string
 WRITE_LONG 0x10c 4942  // select common 1
 WRITE_LONG 0x110 4941  // select common 2

- gets swapped out for the full set, because there are not existing strings in-game, but the rest is right there.

 

 

 

Time to get a few of these sketches filled out and put into order, I think. Of course every time I think that, something else interesting pokes its head into view :)

Share this post


Link to post
Rogue Rebalancing allows you the choice of spells and potions to build, with the following (by the way, this is my new "go look at this' for fellow modders - aVENGER comments everything, and his code in a highlighter is a darned good minimalist painting, all ordered and clean, and easy to follow even when exactly what he is doing doesn't hit your brain.... which means it is organized in a painstaking way that will allow you to learn by watching what he does and following it, instead of going "why that, and what does it get associated with?".

 

Aww, shucks. :D Well, there's actually a funny little story behind that. When I returned to the BG2 modding scene in 2007 (after 4 years of absence) I found out that I had forgotten what a large part of RR's .tp2 was supposed to do or why it was there in the first place. :) As the early versions of RR had very few comments, I was literally puzzled by looking at my own code for quite a while, and I actually had to re-learn a lot of things the hard way until I finally got back into business. So, from that point onward, I started to add comments to every damn thing, no matter how insignificant it seemed, in order to ensure that I'd never get into the same mess again. :)

 

Anyway, feel free to use any RR/aTweaks code which might come in handy for Aran. From the previews, he seems like a very interesting character and I'm definitively looking forward to having him in the party some day. BTW, I especially like his banter with Keldorn that you provided as an example. Top notch writing! :)

Share this post


Link to post

Cool, thanks! That commenting for memory thing is darned useful for other modders, and as you point out, darned useful in a hobby where mod creation sometimes takes unanticipated sidesteps. There is nothing more frustrating than looking at something I have written and saying "Hmmm. Now what was I doing with this?" :) You were also very polite in not mentioning that I misspelled absolutely everyone's screenname referents, a thing which I am going to go back and pick up this morning along with a whole ton of typos.

Share this post


Link to post

Rethinking this, the quickest and easiest way of keeping control over things (for me) is simply to add these as direct dialog options, and have the .bcs add the scroll.

 

The biggest argument for this for me is he will already have potential HLAs for his class choice, and things get complicated enough. Mage Scroll HLA + Scribing HLA? Why overload the thing with unique additions? Might as well make it clear that what he is doing with scribing is very different than a class-specific HLA (which now has a cool new treatment thanks to aVENGER (RR)'s new work that allows scribing scrolls as a PC/NPC to make more sense ingame).

 

So, without further ado, the quick-and-easy dialog-driven "Aran Scribes A Scroll on The Road As His Cool Unique Trick":

 

in PIDs (all three bands),

  /* PID Scribing Scrolls Blocks */
 + ~Global("c-arscr0","LOCALS",0) Global("c-aranscribe","GLOBAL",0)~ + ~[PC] Can you scribe a scroll for me?~ DO ~SetGlobal("c-arscr0","LOCALS",1)~ + a1045
 + ~Global("c-arscr0","LOCALS",1) Global("c-aranscribe","GLOBAL",0)~ + ~[PC] Tell me again how you work with scrolls and spells.~ + a1045
 + ~Global("c-arscr0","LOCALS",1) Global("c-aranscribe","GLOBAL",0)~ + ~[PC] Can you scribe a scroll for me?~ + a1057
 + ~Global("c-aranscribe","GLOBAL",1) RandNum(5,1)~ + ~[PC] Is that scroll done yet?~ + a1046
 + ~Global("c-aranscribe","GLOBAL",1) RandNum(5,2)~ + ~[PC] Is that scroll done yet?~ + a1047
 + ~Global("c-aranscribe","GLOBAL",1) RandNum(5,3)~ + ~[PC] Is that scroll done yet?~ + a1048
 + ~Global("c-aranscribe","GLOBAL",1) RandNum(5,4)~ + ~[PC] Is that scroll done yet?~ + a1049
 + ~Global("c-aranscribe","GLOBAL",1) RandNum(5,5)~ + ~[PC] Is that scroll done yet?~ + a1050

 

and the related responses;

/* PID Scribing Scrolls Responses */

IF ~~ a1045
 SAY ~[ARAN] Aye, I can scribe some scrolls, sometimes. If someone knows some mage spell, an' we work together for a bit, I can usually come up wi' a decent usable scroll. No summonin' spells, and naught o' copywork from existin' scroll, though.~
 = ~[ARAN] It be a mite slower than gettin' th' experienced folks to do it, but it works - an' I do it for free, on account o' I just really do enjoy th' work. I'll even buy my own supplies, or make 'em. What do you want me to work on, eh?~
 ++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + a1053
 + ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + a1055
 + ~!Class(Player1,MAGE_ALL) !Class(Player2,MAGE_ALL) !Class(Player3,MAGE_ALL) !Class(Player4,MAGE_ALL) !Class(Player5,MAGE_ALL) !Class(Player6,MAGE_ALL)~ + ~[PC] We have no mages available in the party, but can you scribe one anyways?~ + a1056
 + ~Class("c-aran",MAGE_ALL)~ + ~Hey, you are a mage youself - why does this take so long? I hear high level mages can run one of these out in a day!~ + a1054
 + ~!Class("c-aran",MAGE_ALL)~ + ~[PC] Hey, you are no mage - you can not scribe a scroll of something you do not have the magic to cast!~ + a1055
 + ~!Class("c-aran",CLERIC_ALL)~ + ~[PC] Can you scribe cleric scrolls?~ + a1051
 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Can you scribe cleric scrolls?~ + a1052
 ++ ~[PC] Why no summoning scrolls or copying existing scrolls?~ + a1061
 IF ~Global("c-arscr0","LOCALS",1)~ THEN GOTO a1057
END

IF ~~ a1046
 SAY ~[ARAN] Keep your shirt on, eh? I'm still workin' on it. I said how long it might be, an' I hold to my contracts, written or spoken.~
 IF ~~ THEN EXIT
END

IF ~~ a1047
 SAY ~[ARAN] Aye. It is finished. See, I just magically added a whole extra bunch o' time to today, an' somehow a whole week passed in an instant, an' while I was at it, I grew bunnie ears an' married a Drowess.~
 IF ~~ THEN EXIT
END

IF ~~ a1048
 SAY ~[ARAN] No. Not done yet, eh?~
 IF ~~ THEN EXIT
END

IF ~~ a1049
 SAY ~[ARAN] Ilmater's Sufferin', do you ask questions like 'are we there yet?' 'how long until th' next town?' 'why is th' grass green?' 'why is Aran about to make a blighted rude gesture in your general direction?' What are you, <PRO_BOYGIRL>, a four year old?~
 IF ~~ THEN EXIT
END

IF ~~ a1050
 SAY ~[ARAN] Now, I'm rightly a patient man. Well, sort o' patient. So I'm goin' to say this, slow - like, just in case you didn't quite understand me. N O T  Y E T.~
 IF ~~ THEN EXIT
END

IF ~~ a1051
 SAY ~[ARAN] No, it don't rightly work that way. See, this be more copywork than inspiration, an' trickin' th' magic into thinkin' it be th' right place to be don't rightly work so well when there be a god actively grantin' th' power. Trickin' gods, well, that's a bit more dangerous than most people want to be tryin'.~
 ++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + c-aranscribeno
 + ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + a1062
 + ~!Class(Player1,MAGE_ALL) !Class(Player2,MAGE_ALL) !Class(Player3,MAGE_ALL) !Class(Player4,MAGE_ALL) !Class(Player5,MAGE_ALL) !Class(Player6,MAGE_ALL)~ + ~[PC] We have no mages available in the party, but can you scribe one anyways?~ + a1056
 + ~Class("c-aran",MAGE_ALL)~ + ~[PC] Hey, you are a mage youself - why does this take so long? I hear high level mages can run one of these out in a day!~ + a1054
 + ~!Class("c-aran",MAGE_ALL)~ + ~[PC] Hey, you are no mage - you can not scribe a scroll of something you do not have the magic to cast!~ + a1055
END

IF ~~ a1052
 SAY ~[ARAN] Mayhap someday, when my god decides to get that whole side o' my faith active. But not through this process, ever. See, this be more copywork than inspiration, an' trickin' th' magic into thinkin' it be th' right place to be don't rightly work so well when there be a god actively grantin' th' power. Trickin' gods, well, that's a bit more dangerous than most people want to be tryin'.~
 ++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + a1053
 + ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + a1057
 + ~!Class(Player1,MAGE_ALL) !Class(Player2,MAGE_ALL) !Class(Player3,MAGE_ALL) !Class(Player4,MAGE_ALL) !Class(Player5,MAGE_ALL) !Class(Player6,MAGE_ALL)~ + ~[PC] We have no mages available in the party, but can you scribe one anyways?~ + a1056
 + ~Class("c-aran",MAGE_ALL)~ + ~Hey, you are a mage youself - why does this take so long? I hear high level mages can run one of these out in a day!~ + a1054
 + ~!Class("c-aran",MAGE_ALL)~ + ~[PC] Hey, you are no mage - you can not scribe a scroll of something you do not have the magic to cast!~ + a1055
END

IF ~~ a1053
 SAY ~[ARAN] Sure, I will take a break. I have a mite o' letter writin' to catch up on, anyways.~
 IF ~~ THEN EXIT
END

IF ~~ a1054
 SAY ~[ARAN] Look, I get th' same skills as anyone else what studies magic. I get strong enough an' experienced enough, th' bloody things write themselves right out o' my head an' onto the blank parchment, pretty as you please. I can do what any mage does, an' write spells out o' my own head, if I have 'em memorized myself.~
 = ~[ARAN] This work, it be right different. This be more copywork, an' then trickin' th' magic into thinkin' it be th' right place to be, sort of. There's advantages to this, though. It be cheaper, works wi' any mage in th' party what has spells ready to cast,  an' most o' all, no one has to rest for th' spell. The magic, it just builds up, see?~
 + ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + a1057
 + ~!Class(Player1,MAGE_ALL) !Class(Player2,MAGE_ALL) !Class(Player3,MAGE_ALL) !Class(Player4,MAGE_ALL) !Class(Player5,MAGE_ALL) !Class(Player6,MAGE_ALL)~ + ~[PC] We have no mages available in the party, but can you scribe one anyways?~ + a1056
 ++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + a1053
END

IF ~~ a1055
 SAY ~[ARAN] Look, I got a touch, I do. I know a mage what's strong enough an' experienced enough, they just prepare an' then th' bloody things write themselves right out o' their head an' onto the blank parchment, pretty as you please.~
 = ~[ARAN] This work, it be right different. This be more copywork, an' then trickin' th' magic into thinkin' it be th' right place to be, sort of. There's advantages to this, though. It be cheaper, it needs no high level magickin' an' most o' all, no one has to rest for th' spell. Th' magic, it just builds up, see?~
 + ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + a1057
 + ~!Class(Player1,MAGE_ALL) !Class(Player2,MAGE_ALL) !Class(Player3,MAGE_ALL) !Class(Player4,MAGE_ALL) !Class(Player5,MAGE_ALL) !Class(Player6,MAGE_ALL)~ + ~[PC] We have no mages available in the party, but can you scribe one anyways?~ + a1056
 ++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + a1053
END

IF ~~ a1056
 SAY ~[ARAN] Right. Sure. If you can pull a live rabbit out of your arse, an' mayhap ask Mystra to grant me special powers. Until then, I needs be workin' with a mage what can guide me, an' give magic to th' words on th' page.~ EXIT
 IF ~~ THEN EXIT
END

IF ~~ a1057
 SAY ~[ARAN] Let me take a look... how long you want me to be workin'?~
 + ~OR(21) HaveSpellParty(2101) HaveSpellParty(2102) HaveSpellParty(2103) HaveSpellParty(2104) HaveSpellParty(2105) HaveSpellParty(2106) HaveSpellParty(2107) HaveSpellParty(2108) HaveSpellParty(2110) HaveSpellParty(2111) HaveSpellParty(2112) HaveSpellParty(2113) HaveSpellParty(2114) HaveSpellParty(2115) HaveSpellParty(2116) HaveSpellParty(2117) HaveSpellParty(2118) HaveSpellParty(2119) HaveSpellParty(2120) HaveSpellParty(2123) HaveSpellParty(2125)~ + ~[PC] Show me what you have that takes a day or two.~ + a1060
 + ~OR(21) HaveSpellParty(2201) HaveSpellParty(2202) HaveSpellParty(2203) HaveSpellParty(2205) HaveSpellParty(2206) HaveSpellParty(2207) HaveSpellParty(2208) HaveSpellParty(2209) HaveSpellParty(2210) HaveSpellParty(2211) HaveSpellParty(2212) HaveSpellParty(2213) HaveSpellParty(2214) HaveSpellParty(2215) HaveSpellParty(2217) HaveSpellParty(2218) HaveSpellParty(2219) HaveSpellParty(2220) HaveSpellParty(2221) HaveSpellParty(2223) HaveSpellParty(2224)~ + ~[PC] Show me what you have that takes two or three days.~ + a1068
 + ~OR(22) HaveSpellParty(2301) HaveSpellParty(2302) HaveSpellParty(2303) HaveSpellParty(2304) HaveSpellParty(2305) HaveSpellParty(2306) HaveSpellParty(2307) HaveSpellParty(2308) HaveSpellParty(2310) HaveSpellParty(2311) HaveSpellParty(2312) HaveSpellParty(2313) HaveSpellParty(2314) HaveSpellParty(2316) HaveSpellParty(2317) HaveSpellParty(2318) HaveSpellParty(2319) HaveSpellParty(2320) HaveSpellParty(2321) HaveSpellParty(2322) HaveSpellParty(2324) HaveSpellParty(2325)~ + ~[PC] Show me what you have that takes three or four days.~ + a1069
 + ~OR(18) HaveSpellParty(2401) HaveSpellParty(2403) HaveSpellParty(2404) HaveSpellParty(2405) HaveSpellParty(2406) HaveSpellParty(2408) HaveSpellParty(2409) HaveSpellParty(2410) HaveSpellParty(2411) HaveSpellParty(2412) HaveSpellParty(2413) HaveSpellParty(2414) HaveSpellParty(2417) HaveSpellParty(2418) HaveSpellParty(2419) HaveSpellParty(2420) HaveSpellParty(2424) HaveSpellParty(2425)~ + ~[PC] Show me what you have that takes four or five days.~ + a1070
 + ~OR(17) HaveSpellParty(2502) HaveSpellParty(2503) HaveSpellParty(2505) HaveSpellParty(2506) HaveSpellParty(2508) HaveSpellParty(2509) HaveSpellParty(2510) HaveSpellParty(2511) HaveSpellParty(2512) HaveSpellParty(2513) HaveSpellParty(2514) HaveSpellParty(2515) HaveSpellParty(2517) HaveSpellParty(2518) HaveSpellParty(2519) HaveSpellParty(2522) HaveSpellParty(2523)~ + ~[PC] Show me what you have that takes about five or six days.~ + a1071
 + ~OR(17) HaveSpellParty(2602) HaveSpellParty(2603) HaveSpellParty(2604) HaveSpellParty(2605) HaveSpellParty(2606) HaveSpellParty(2607) HaveSpellParty(2608) HaveSpellParty(2609) HaveSpellParty(2611) HaveSpellParty(2612) HaveSpellParty(2613) HaveSpellParty(2614) HaveSpellParty(2615) HaveSpellParty(2616) HaveSpellParty(2617) HaveSpellParty(2618) HaveSpellParty(2625)~ + ~[PC] Show me what you have that takes about six or seven days.~ + a1072
 ++ ~[PC] Never mind. Forget the whole thing.~ + a1053
 IF ~!Class(Player1,MAGE_ALL) !Class(Player2,MAGE_ALL) !Class(Player3,MAGE_ALL) !Class(Player4,MAGE_ALL) !Class(Player5,MAGE_ALL) !Class(Player6,MAGE_ALL)~ THEN GOTO a1067
END

IF ~~ a1058
 SAY ~[ARAN] Aye... well, on second thought... Mystra's Mysterious Mouth, I be findin' naught that matches between my skills an' what th' party has memorized. I guess I am not goin' to be able to help you. Try me again when we are all rested an' up to speed, eh? Or mayhap when someone memorizes a new spell. You want me to check on other spells?~
 ++ ~[PC] Yes.~ + a1059  
 ++ ~[PC] No.~
+ a1053
 ++ ~[PC] Perhaps later. I think I will move on, now.~
EXIT 
END

IF ~~ a1059
 SAY ~[ARAN] Sure thing. Let me check again... ~
 ++ ~[PC] Never mind. Forget the whole thing.~ + a1053

 + ~OR(21) HaveSpellParty(2101) HaveSpellParty(2102) HaveSpellParty(2103) HaveSpellParty(2104) HaveSpellParty(2105) HaveSpellParty(2106) HaveSpellParty(2107) HaveSpellParty(2108) HaveSpellParty(2110) HaveSpellParty(2111) HaveSpellParty(2112) HaveSpellParty(2113) HaveSpellParty(2114) HaveSpellParty(2115) HaveSpellParty(2116) HaveSpellParty(2117) HaveSpellParty(2118) HaveSpellParty(2119) HaveSpellParty(2120) HaveSpellParty(2123) HaveSpellParty(2125)~ + ~[PC] Show me what you have that takes a day or two.~ + a1060
 + ~OR(21) HaveSpellParty(2201) HaveSpellParty(2202) HaveSpellParty(2203) HaveSpellParty(2205) HaveSpellParty(2206) HaveSpellParty(2207) HaveSpellParty(2208) HaveSpellParty(2209) HaveSpellParty(2210) HaveSpellParty(2211) HaveSpellParty(2212) HaveSpellParty(2213) HaveSpellParty(2214) HaveSpellParty(2215) HaveSpellParty(2217) HaveSpellParty(2218) HaveSpellParty(2219) HaveSpellParty(2220) HaveSpellParty(2221) HaveSpellParty(2223) HaveSpellParty(2224)~ + ~[PC] Show me what you have that takes two or three days.~ + a1068
 + ~OR(22) HaveSpellParty(2301) HaveSpellParty(2302) HaveSpellParty(2303) HaveSpellParty(2304) HaveSpellParty(2305) HaveSpellParty(2306) HaveSpellParty(2307) HaveSpellParty(2308) HaveSpellParty(2310) HaveSpellParty(2311) HaveSpellParty(2312) HaveSpellParty(2313) HaveSpellParty(2314) HaveSpellParty(2316) HaveSpellParty(2317) HaveSpellParty(2318) HaveSpellParty(2319) HaveSpellParty(2320) HaveSpellParty(2321) HaveSpellParty(2322) HaveSpellParty(2324) HaveSpellParty(2325)~ + ~[PC] Show me what you have that takes three or four days.~ + a1069
 + ~OR(18) HaveSpellParty(2401) HaveSpellParty(2403) HaveSpellParty(2404) HaveSpellParty(2405) HaveSpellParty(2406) HaveSpellParty(2408) HaveSpellParty(2409) HaveSpellParty(2410) HaveSpellParty(2411) HaveSpellParty(2412) HaveSpellParty(2413) HaveSpellParty(2414) HaveSpellParty(2417) HaveSpellParty(2418) HaveSpellParty(2419) HaveSpellParty(2420) HaveSpellParty(2424) HaveSpellParty(2425)~ + ~[PC] Show me what you have that takes four or five days.~ + a1070
 + ~OR(17) HaveSpellParty(2502) HaveSpellParty(2503) HaveSpellParty(2505) HaveSpellParty(2506) HaveSpellParty(2508) HaveSpellParty(2509) HaveSpellParty(2510) HaveSpellParty(2511) HaveSpellParty(2512) HaveSpellParty(2513) HaveSpellParty(2514) HaveSpellParty(2515) HaveSpellParty(2517) HaveSpellParty(2518) HaveSpellParty(2519) HaveSpellParty(2522) HaveSpellParty(2523)~ + ~[PC] Show me what you have that takes about five or six days.~ + a1071
 + ~OR(17) HaveSpellParty(2602) HaveSpellParty(2603) HaveSpellParty(2604) HaveSpellParty(2605) HaveSpellParty(2606) HaveSpellParty(2607) HaveSpellParty(2608) HaveSpellParty(2609) HaveSpellParty(2611) HaveSpellParty(2612) HaveSpellParty(2613) HaveSpellParty(2614) HaveSpellParty(2615) HaveSpellParty(2616) HaveSpellParty(2617) HaveSpellParty(2618) HaveSpellParty(2625)~ + ~[PC] Show me what you have that takes about six or seven days.~ + a1072
END

IF ~~ a1060
 SAY ~[ARAN] Based on what we have memorized in th' party, an' what materials I have right here, I can start on one o' these. You chose, an' I'll get it.~
 /* Wizard spells below 7th level, no summoning spells, 1 day per level. Positive: free. Aran does not have to know it. Negative: party must have spell memorized. takes time. */  
 + ~HaveSpellParty(2101)~ + ~[PC] Grease, 2 days.~ DO ~SetGlobal("c-arSCRL66","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1063 // WIZARD_GREASE
 + ~HaveSpellParty(2102)~ + ~[PC] Armor, 2 days.~ DO ~SetGlobal("c-arSCRL67","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1064 // WIZARD_ARMOR
 + ~HaveSpellParty(2103)~ + ~[PC] Burning Hands, 2 days.~ DO ~SetGlobal("c-arSCRL68","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1065 // WIZARD_BURNING_HANDS
 + ~HaveSpellParty(2104)~ + ~[PC] Charm Person, 2 days.~ DO ~SetGlobal("c-arSCRL69","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1066 // WIZARD_CHARM_PERSON
 + ~HaveSpellParty(2105)~ + ~[PC] Color Spray, 2 days.~ DO ~SetGlobal("c-arSCRL70","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a10570 // WIZARD_COLOR_SPRAY
 + ~HaveSpellParty(2106)~ + ~[PC] Blindness, 2 days.~ DO ~SetGlobal("c-arSCRL71","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1063 // WIZARD_BLINDNESS
 + ~HaveSpellParty(2107)~ + ~[PC] Friends, 2 days.~ DO ~SetGlobal("c-arSCRL72","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1064 // WIZARD_FRIENDS
 + ~HaveSpellParty(2108)~ + ~[PC] Protection from Petrification, 2 days.~ DO ~SetGlobal("c-arSCRL15","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1065 // WIZARD_PROTECTION_FROM_PETRIFICATION
 + ~HaveSpellParty(2110)~ + ~[PC] Identify, 2 days.~ DO ~SetGlobal("c-arSCRL75","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1066 // WIZARD_IDENTIFY
 + ~HaveSpellParty(2111)~ + ~[PC] Infravision, 2 days.~ DO ~SetGlobal("c-arSCRL76","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1062 // WIZARD_INFRAVISION
 + ~HaveSpellParty(2112)~ + ~[PC] Magic Missile, 2 days.~ DO ~SetGlobal("c-arSCRL77","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1063 // WIZARD_MAGIC_MISSILE
 + ~HaveSpellParty(2113)~ + ~[PC] Protection from Evil, 2 days.~ DO ~SetGlobal("c-arSCRL78","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1064 // WIZARD_PROTECTION_FROM_EVIL
 + ~HaveSpellParty(2114)~ + ~[PC] Shield, 2 days.~ DO ~SetGlobal("c-arSCRL79","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1065 // WIZARD_SHIELD
 + ~HaveSpellParty(2115)~ + ~[PC] Shocking Grasp, 2 days.~ DO ~SetGlobal("c-arSCRL80","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1066 // WIZARD_SHOCKING_GRASP
 + ~HaveSpellParty(2116)~ + ~[PC] Sleep, 2 days.~ DO ~SetGlobal("c-arSCRL81","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1062 // WIZARD_SLEEP
 + ~HaveSpellParty(2117)~ + ~[PC] Chill Touch, 2 days.~ DO ~SetGlobal("c-arSCRL82","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1063 // WIZARD_CHILL_TOUCH
 + ~HaveSpellParty(2118)~ + ~[PC] Chromatic Orb, 2 days.~ DO ~SetGlobal("c-arSCRL83","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1064 // WIZARD_CHROMATIC_ORB
 + ~HaveSpellParty(2119)~ + ~[PC] Larloch's Minor Drain, 2 days.~ DO ~SetGlobal("c-arSCRL84","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1065 // WIZARD_LARLOCH_MINOR_DRAIN
 + ~HaveSpellParty(2120)~ + ~[PC] Reflected Image, 2 days.~ DO ~SetGlobal("c-arSCRL5U","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1066 // WIZARD_REFLECTED_IMAGE
 + ~HaveSpellParty(2123)~ + ~[PC] Find Familiar, 2 days.~ DO ~SetGlobal("c-arSCRL6D","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1062 // WIZARD_FIND_FAMILAR
 + ~HaveSpellParty(2125)~ + ~[PC] Spook, 2 days.~ DO ~SetGlobal("c-arSCRLA6","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",TWO_DAYS)~ + a1063 // WIZARD_SPOOK
 ++ ~[PC] I do not want any of these. Forget the whole thing.~ + a1053
 ++ ~[PC] I do not want any of these. Can I see what else you can do?~ + a1059
END

IF ~~ a1061
 SAY ~[ARAN] Summonin' anythin' requires perfection, an' more skill than I would trust. Copyin', well, that be awkward... I can't rightly say why it won't work, but trust me. Th' last time i tried it, I had to scramble for cover when the fool thing blew up in my face.~
 ++ ~[PC] On second thought, never mind. You need to get sleep, and so does the rest of the party.~ + a1053
 + ~OR(6) Class(Player1,MAGE_ALL) Class(Player2,MAGE_ALL) Class(Player3,MAGE_ALL) Class(Player4,MAGE_ALL) Class(Player5,MAGE_ALL) Class(Player6,MAGE_ALL)~ + ~[PC] We have some mage spells available in the party, so scribe one of those.~ + a1055
 + ~!Class(Player1,MAGE_ALL) !Class(Player2,MAGE_ALL) !Class(Player3,MAGE_ALL) !Class(Player4,MAGE_ALL) !Class(Player5,MAGE_ALL) !Class(Player6,MAGE_ALL)~ + ~[PC] We have no mages available in the party, but can you scribe one anyways?~ + a1056
 + ~Class("c-aran",MAGE_ALL)~ + ~Hey, you are a mage youself - why does this take so long? I hear high level mages can run one of these out in a day!~ + a1054
 + ~!Class("c-aran",MAGE_ALL)~ + ~[PC] Hey, you are no mage - you can not scribe a scroll of something you do not have the magic to cast!~ + a1055
 + ~!Class("c-aran",CLERIC_ALL)~ + ~[PC] Can you scribe cleric scrolls?~ + a1051
 + ~Class("c-aran",CLERIC_ALL)~ + ~[PC] Can you scribe cleric scrolls?~ + a1052
END

IF ~~ a1062
 SAY ~[ARAN] Aye, then. Mystra's Magnificent Mouth, it looks like I have my work cut out for me. Then again, I do rightly enjoy th' challenge.~
 IF ~~ THEN EXIT
END

IF ~~ a1063
 SAY ~[ARAN] Aye, then. Mystra's Grey Eyes, it looks like I have my work cut out for me. Then again, I do rightly enjoy th' challenge.~
 IF ~~ THEN EXIT
END

IF ~~ a1064
 SAY ~[ARAN] Aye, then. Torm's Trusty Two-hander, it looks like I have my work cut out for me. Then again, I do rightly enjoy th' challenge.~
 IF ~~ THEN EXIT
END

IF ~~ a1065
 SAY ~[ARAN] Aye, then. Mystra's Magical Mantle, it looks like I have my work cut out for me. Then again, I do rightly enjoy th' challenge.~
 IF ~~ THEN EXIT
END

IF ~~ a1066
 SAY ~[ARAN] Aye, then. Mystra's Mighty Magics, it looks like I have my work cut out for me. Then again, I do rightly enjoy th' challenge.~
 IF ~~ THEN EXIT
END

IF ~~ a1067 
 SAY ~[ARAN] O' course, we need a mage in th' party, eh? So when we get one, let me know.~ EXIT
 IF ~~ THEN EXIT
END

IF ~~ a1068
 SAY ~[ARAN] Based on what we have memorized in th' party, an' what materials I have right here, I can start on one o' these. You chose, an' I'll get it.~
 /* Wizard spells below 7th level, no summoning spells, 1 day per level. Positive: free. Aran does not have to know it. Negative: party must have spell memorized. takes time. */ 
 + ~HaveSpellParty(2201)~ + ~[PC] Blur, 3 days.~ DO ~SetGlobal("c-arSCRL85","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1064 // WIZARD_BLUR
 + ~HaveSpellParty(2202)~ + ~[PC] Detect Evil, 3 days.~ DO ~SetGlobal("c-arSCRL86","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1065 // WIZARD_DETECT_EVIL
 + ~HaveSpellParty(2203)~ + ~[PC] Detect Invisibility, 3 days.~ DO ~SetGlobal("c-arSCRL87","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1066 // WIZARD_DETECT_INVISIBILITY
 + ~HaveSpellParty(2205)~ + ~[PC] Horror, 3 days.~ DO ~SetGlobal("c-arSCRL89","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1062 // WIZARD_HORROR
 + ~HaveSpellParty(2206)~ + ~[PC] Invisibility, 3 days.~ DO ~SetGlobal("c-arSCRL90","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1063 // WIZARD_INVISIBILITY
 + ~HaveSpellParty(2207)~ + ~[PC] Knock, 3 days.~ DO ~SetGlobal("c-arSCRL91","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1064 // WIZARD_KNOCK
 + ~HaveSpellParty(2208)~ + ~[PC] Know Alignment, 3 days.~ DO ~SetGlobal("c-arSCRL92","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1065 // WIZARD_KNOW_ALIGNMENT
 + ~HaveSpellParty(2209)~ + ~[PC] Luck, 3 days.~ DO ~SetGlobal("c-arSCRL93","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1066 // WIZARD_LUCK
 + ~HaveSpellParty(2210)~ + ~[PC] Resist Fear, 3 days.~ DO ~SetGlobal("c-arSCRL94","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1064 // WIZARD_RESIST_FEAR
 + ~HaveSpellParty(2211)~ + ~[PC] Melf's Acid Arrow, 3 days.~ DO ~SetGlobal("c-arSCRL95","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1065 // WIZARD_MELF_ACID_ARROW
 + ~HaveSpellParty(2212)~ + ~[PC] Mirror Image, 3 days.~ DO ~SetGlobal("c-arSCRL96","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1066 // WIZARD_MIRROR_IMAGE
 + ~HaveSpellParty(2213)~ + ~[PC] Stinking Cloud, 3 days.~ DO ~SetGlobal("c-arSCRL97","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1062 // WIZARD_STINKING_CLOUD
 + ~HaveSpellParty(2214)~ + ~[PC] Strength, 3 days.~ DO ~SetGlobal("c-arSCRL98","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1063 // WIZARD_STRENGTH
 + ~HaveSpellParty(2215)~ + ~[PC] Web, 3 days.~ DO ~SetGlobal("c-arSCRL99","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1064 // WIZARD_WEB
 + ~HaveSpellParty(2217)~ + ~[PC] Agannazar's Scorcher, 3 days.~ DO ~SetGlobal("c-arSCRL1B","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1065 // WIZARD_AGANNAZAR_SCORCHER
 + ~HaveSpellParty(2218)~ + ~[PC] Ghoul Touch, 3 days.~ DO ~SetGlobal("c-arSCRL1C","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1066 // WIZARD_GHOUL_TOUCH
 + ~HaveSpellParty(2219)~ + ~[PC] Vocalize, 3 days.~ DO ~SetGlobal("c-arSCRL3G","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1062 // WIZARD_VOCALIZE
 + ~HaveSpellParty(2220)~ + ~[PC] Power Word, Sleep, 3 days.~ DO ~SetGlobal("c-arSCRL6E","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1063 // WIZARD_POWER_WORD_SLEEP
 + ~HaveSpellParty(2221)~ + ~[PC] Ray of Enfeeblement, 3 days.~ DO ~SetGlobal("c-arSCRL6F","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1064 // WIZARD_RAY_OF_ENFEEBLEMENT
 + ~HaveSpellParty(2223)~ + ~[PC] Deafness, 3 days.~ DO ~SetGlobal("c-arSCRLA2","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1065 // WIZARD_DEAFNESS
 + ~HaveSpellParty(2224)~ + ~[PC] Glitterdust, 3 days.~ DO ~SetGlobal("c-arSCRLA3","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",THREE_DAYS)~ + a1066 // WIZARD_GLITTERDUST
 ++ ~[PC] I do not want any of these. Forget the whole thing.~ + a1053
 ++ ~[PC] I do not want any of these. Can I see what else you can do?~ + a1059
END

IF ~~ a1069
 SAY ~[ARAN] Based on what we have memorized in th' party, an' what materials I have right here, I can start on one o' these. You chose, an' I'll get it.~
 /* Wizard spells below 7th level, no summoning spells, 1 day per level. Positive: free. Aran does not have to know it. Negative: party must have spell memorized. takes time. */
 + ~HaveSpellParty(2301)~ + ~[PC] Clairvoyance, 4 days.~ DO ~SetGlobal("c-arSCRL1D","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1062 // WIZARD_CLAIRVOYANCE
 + ~HaveSpellParty(2302)~ + ~[PC] Dispel Magic, 4 days.~ DO ~SetGlobal("c-arSCRL1E","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1066 // WIZARD_DISPEL_MAGIC
 + ~HaveSpellParty(2303)~ + ~[PC] Flame Arrow, 4 days.~ DO ~SetGlobal("c-arSCRL1F","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1065 // WIZARD_FLAME_ARROW
 + ~HaveSpellParty(2304)~ + ~[PC] Fireball, 4 days.~ DO ~SetGlobal("c-arSCRL1G","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1064 // WIZARD_FIREBALL
 + ~HaveSpellParty(2305)~ + ~[PC] Haste, 4 days.~ DO ~SetGlobal("c-arSCRL1H","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1063 // WIZARD_HASTE
 + ~HaveSpellParty(2306)~ + ~[PC] Hold Person, 4 days.~ DO ~SetGlobal("c-arSCRL1I","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1063 // WIZARD_HOLD_PERSON
 + ~HaveSpellParty(2307)~ + ~[PC] Invisibility 10' radius, 4 days.~ DO ~SetGlobal("c-arSCRL1J","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1064 // WIZARD_INVISIBILITY_10_FOOT
 + ~HaveSpellParty(2308)~ + ~[PC] Lightning Bolt, 4 days.~ DO ~SetGlobal("c-arSCRL1K","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1065 // WIZARD_LIGHTNING_BOLT
 + ~HaveSpellParty(2310)~ + ~[PC] NonDetection, 4 days.~ DO ~SetGlobal("c-arSCRL1M","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1066 // WIZARD_NON_DETECTION
 + ~HaveSpellParty(2311)~ + ~[PC] Protection from Normal Missiles, 4 days.~ DO ~SetGlobal("c-arSCRL1N","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1062 // WIZARD_PROTECTION_FROM_NORMAL_MISSILES
 + ~HaveSpellParty(2312)~ + ~[PC] Slow, 4 days.~ DO ~SetGlobal("c-arSCRL1O","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1062 // WIZARD_SLOW
 + ~HaveSpellParty(2313)~ + ~[PC] Skull Trap, 4 days.~ DO ~SetGlobal("c-arSCRL1P","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1066 // WIZARD_SKULL_TRAP
 + ~HaveSpellParty(2314)~ + ~[PC] Vampiric Touch, 4 days.~ DO ~SetGlobal("c-arSCRL1Q","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1065 // WIZARD_VAMPIRIC_TOUCH
 + ~HaveSpellParty(2316)~ + ~[PC] Dire Charm, 4 days.~ DO ~SetGlobal("c-arSCRL1S","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1064 // WIZARD_DIRE_CHARM
 + ~HaveSpellParty(2317)~ + ~[PC] Ghost Armor, 4 days.~ DO ~SetGlobal("c-arSCRL1T","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1063 // WIZARD_GHOST_ARMOR
 + ~HaveSpellParty(2318)~ + ~[PC] Minor Spell Deflection, 4 days.~ DO ~SetGlobal("c-arSCRL6G","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1063 // WIZARD_MINOR_SPELL_DEFLECTION
 + ~HaveSpellParty(2319)~ + ~[PC] Protection from Fire, 4 days.~ DO ~SetGlobal("c-arSCRL6H","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1064 // WIZARD_PROTECTION_FROM_FIRE
 + ~HaveSpellParty(2320)~ + ~[PC] Protection from Cold, 4 days.~ DO ~SetGlobal("c-arSCRL6I","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1065 // WIZARD_PROTECTION_FROM_COLD
 + ~HaveSpellParty(2321)~ + ~[PC] Spell Thrust, 4 days.~ DO ~SetGlobal("c-arSCRL6J","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1066 // WIZARD_SPELL_THRUST
 + ~HaveSpellParty(2322)~ + ~[PC] Detect Illusion, 4 days.~ DO ~SetGlobal("c-arSCRL6K","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1062 // WIZARD_DETECT_ILLUSION
 + ~HaveSpellParty(2324)~ + ~[PC] Hold Undead, 4 days.~ DO ~SetGlobal("c-arSCRL6L","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1066 // WIZARD_HOLD_UNDEAD
 + ~HaveSpellParty(2325)~ + ~[PC] Melf's Minute Meteors, 4 days.~ DO ~SetGlobal("c-arSCRLA5","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FOUR_DAYS)~ + a1065 // WIZARD_MELF_METEOR
 ++ ~[PC] I do not want any of these. Forget the whole thing.~ + a1053
 ++ ~[PC] I do not want any of these. Can I see what else you can do?~ + a1059
END

IF ~~ a1070
 SAY ~[ARAN] Based on what we have memorized in th' party, an' what materials I have right here, I can start on one o' these. You chose, an' I'll get it.~
 /* Wizard spells below 7th level, no summoning spells, 1 day per level. Positive: free. Aran does not have to know it. Negative: party must have spell memorized. takes time. */
 + ~HaveSpellParty(2401)~ + ~[PC] Confusion, 5 days.~ DO ~SetGlobal("c-arSCRL1U","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1064 // WIZARD_CONFUSION
 + ~HaveSpellParty(2403)~ + ~[PC] Fireshield (Blue), 5 days.~ DO ~SetGlobal("c-arSCRL1W","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1063 // WIZARD_FIRE_SHIELD_BLUE
 + ~HaveSpellParty(2404)~ + ~[PC] Ice Storm, 5 days.~ DO ~SetGlobal("c-arSCRL1X","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1063 // WIZARD_ICE_STORM
 + ~HaveSpellParty(2405)~ + ~[PC] Improved Invisibility, 5 days.~ DO ~SetGlobal("c-arSCRL1Y","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1064 // WIZARD_IMPROVED_INVISIBILITY
 + ~HaveSpellParty(2406)~ + ~[PC] Minor Globe of Invulnerability, 5 days.~ DO ~SetGlobal("c-arSCRL1Z","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1065 // WIZARD_MINOR_GLOBE_OF_INVULNERABILITY
 + ~HaveSpellParty(2408)~ + ~[PC] Stoneskin, 5 days.~ DO ~SetGlobal("c-arSCRL1V","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1066 // WIZARD_STONE_SKIN
 + ~HaveSpellParty(2409)~ + ~[PC] Contagion, 5 days.~ DO ~SetGlobal("c-arSCRLA8","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1062 // WIZARD_CONTAGION
 + ~HaveSpellParty(2410)~ + ~[PC] Remove Curse, 5 days.~ DO ~SetGlobal("c-arSCRL5G","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1066 // WIZARD_REMOVE_CURSE
 + ~HaveSpellParty(2411)~ + ~[PC] Emotion, 5 days.~ DO ~SetGlobal("c-arSCRL5H","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1065 // WIZARD_EMOTION_HOPELESSNESS
 + ~HaveSpellParty(2412)~ + ~[PC] Greater Malison, 5 days.~ DO ~SetGlobal("c-arSCRL5I","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1064 // WIZARD_GREATER_MALISON
 + ~HaveSpellParty(2413)~ + ~[PC] Otiluke's Resilient Sphere, 5 days.~ DO ~SetGlobal("c-arSCRL5J","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1063 // WIZARD_OTILUKES_RESILIENT_SPHERE
 + ~HaveSpellParty(2414)~ + ~[PC] Spirit Armor, 5 days.~ DO ~SetGlobal("c-arSCRL5K","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1063 // WIZARD_SPIRIT_ARMOR
 + ~HaveSpellParty(2417)~ + ~[PC] Enchanted Weapon, 5 days.~ DO ~SetGlobal("c-arSCRL6M","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1064 // WIZARD_ENCHANTED_WEAPON
 + ~HaveSpellParty(2418)~ + ~[PC] Fireshield (Red), 5 days.~ DO ~SetGlobal("c-arSCRL6N","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1065 // WIZARD_FIRE_SHIELD_RED
 + ~HaveSpellParty(2419)~ + ~[PC] Secret Word, 5 days.~ DO ~SetGlobal("c-arSCRL6O","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1066 // WIZARD_SECRET_WORD
 + ~HaveSpellParty(2420)~ + ~[PC] Minor Sequencer, 5 days.~ DO ~SetGlobal("c-arSCRL6P","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1062 // WIZARD_MINOR_SEQUENCER
 + ~HaveSpellParty(2424)~ + ~[PC] Farsight, 5 days.~ DO ~SetGlobal("c-arSCRLAJ","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1062 // WIZARD_FAR_SIGHT
 + ~HaveSpellParty(2425)~ + ~[PC] Wizard Eye, 5 days.~ DO ~SetGlobal("c-arSCRLA1","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",FIVE_DAYS)~ + a1066 // WIZARD_EYE
 ++ ~[PC] I do not want any of these. Forget the whole thing.~ + a1053
 ++ ~[PC] I do not want any of these. Can I see what else you can do?~ + a1059
END

IF ~~ a1071
 SAY ~[ARAN] Based on what we have memorized in th' party, an' what materials I have right here, I can start on one o' these. You chose, an' I'll get it.~
 /* Wizard spells below 7th level, no summoning spells, 1 day per level. Positive: free. Aran does not have to know it. Negative: party must have spell memorized. takes time. */
 + ~HaveSpellParty(2502)~ + ~[PC] Cloudkill, 6 days.~ DO ~SetGlobal("c-arSCRL2E","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1065 // WIZARD_CLOUDKILL
 + ~HaveSpellParty(2503)~ + ~[PC] Cone of Cold, 6 days.~ DO ~SetGlobal("c-arSCRL2F","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1064 // WIZARD_CONE_OF_COLD
 + ~HaveSpellParty(2505)~ + ~[PC] Shadow Door, 6 days.~ DO ~SetGlobal("c-arSCRL2H","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1063 // WIZARD_SHADOW_DOOR
 + ~HaveSpellParty(2506)~ + ~[PC] Domination, 6 days.~ DO ~SetGlobal("c-arSCRL5N","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1063 // WIZARD_DOMINATION
 + ~HaveSpellParty(2508)~ + ~[PC] Chaos, 6 days.~ DO ~SetGlobal("c-arSCRL5P","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1064 // WIZARD_CHAOS
 + ~HaveSpellParty(2509)~ + ~[PC] Feeblemind, 6 days.~ DO ~SetGlobal("c-arSCRL5Q","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1065 // WIZARD_FEEBLEMIND
 + ~HaveSpellParty(2510)~ + ~[PC] Spell Immunity, 6 days.~ DO ~SetGlobal("c-arSCRL6S","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1066 // WIZARD_SPELL_IMMUNITY
 + ~HaveSpellParty(2511)~ + ~[PC] Protection from Normal Weapons, 6 days.~ DO ~SetGlobal("c-arSCRL6T","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1062 // WIZARD_PROTECTION_FROM_NORMAL_WEAPONS
 + ~HaveSpellParty(2512)~ + ~[PC] Protection from Electricity, 6 days.~ DO ~SetGlobal("c-arSCRL5T","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1062 // WIZARD_PROTECTION_FROM_ELECTRICITY
 + ~HaveSpellParty(2513)~ + ~[PC] Breach, 6 days.~ DO ~SetGlobal("c-arSCRL6U","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1066 // WIZARD_BREACH
 + ~HaveSpellParty(2514)~ + ~[PC] Lower Resistance, 6 days.~ DO ~SetGlobal("c-arSCRL6V","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1065 // WIZARD_LOWER_RESISTANCE
 + ~HaveSpellParty(2515)~ + ~[PC] Oracle, 6 days.~ DO ~SetGlobal("c-arSCRL6W","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1064 // WIZARD_ORACLE
 + ~HaveSpellParty(2517)~ + ~[PC] Protection from Acid, 6 days.~ DO ~SetGlobal("c-arSCRL6Y","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1063 // WIZARD_PROTECTION_FROM_ACID
 + ~HaveSpellParty(2518)~ + ~[PC] Phantom Blade, 6 days.~ DO ~SetGlobal("c-arSCRL6Z","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1063 // WIZARD_PHANTOM_BLADE
 + ~HaveSpellParty(2519)~ + ~[PC] Spell Shield, 6 days.~ DO ~SetGlobal("c-arSCRL8X","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1064 // WIZARD_SPELL_SHIELD
 + ~HaveSpellParty(2522)~ + ~[PC] Minor Spell Turning, 6 days.~ DO ~SetGlobal("c-arSCRL7D","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1065 // WIZARD_MINOR_SPELL_TURNING
 + ~HaveSpellParty(2523)~ + ~[PC] Sunfire, 6 days.~ DO ~SetGlobal("c-arSCRLAL","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SIX_DAYS)~ + a1066 // WIZARD_SUN_FIRE
 ++ ~[PC] I do not want any of these. Forget the whole thing.~ + a1053
 ++ ~[PC] I do not want any of these. Can I see what else you can do?~ + a1059
END

IF ~~ a1072
 SAY ~[ARAN] Based on what we have memorized in th' party, an' what materials I have right here, I can start on one o' these. You chose, an' I'll get it.~
 /* Wizard spells below 7th level, no summoning spells, 1 day per level. Positive: free. Aran does not have to know it. Negative: party must have spell memorized. takes time. */
 + ~HaveSpellParty(2602)~ + ~[PC] Globe of Invulnerability, 7 days.~ DO ~SetGlobal("c-arSCRL7F","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1062 // WIZARD_GLOBE_OF_INVULNERABILITY
 + ~HaveSpellParty(2603)~ + ~[PC] Tenser's Transformation, 7 days.~ DO ~SetGlobal("c-arSCRL7G","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1066 // WIZARD_TENSERS_TRANSFORMATION
 + ~HaveSpellParty(2604)~ + ~[PC] Flesh to Stone, 7 days.~ DO ~SetGlobal("c-arSCRL7H","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1065 // WIZARD_FLESH_TO_STONE
 + ~HaveSpellParty(2605)~ + ~[PC] Death Spell, 7 days.~ DO ~SetGlobal("c-arSCRL7I","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1064 // WIZARD_DEATH_SPELL
 + ~HaveSpellParty(2606)~ + ~[PC] Protection from Magic, 7 days.~ DO ~SetGlobal("c-arSCRL7J","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1063 // WIZARD_PROTECTION_FROM_MAGIC_ENERGY
 + ~HaveSpellParty(2607)~ + ~[PC] Mislead, 7 days.~ DO ~SetGlobal("c-arSCRL7K","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1063 // WIZARD_MISLEAD
 + ~HaveSpellParty(2608)~ + ~[PC] Pierce Magic, 7 days.~ DO ~SetGlobal("c-arSCRL7L","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1064 // WIZARD_PIERCE_MAGIC
 + ~HaveSpellParty(2609)~ + ~[PC] True Sight, 7 days.~ DO ~SetGlobal("c-arSCRL7M","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1065 // WIZARD_TRUE_SIGHT
 + ~HaveSpellParty(2611)~ + ~[PC] Protection from Magical Weapons, 7 days.~ DO ~SetGlobal("c-arSCRL7O","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1066 // WIZARD_PROTECTION_FROM_MAGIC_WEAPONS
 + ~HaveSpellParty(2612)~ + ~[PC] Power Word, Silence, 7 days.~ DO ~SetGlobal("c-arSCRL7P","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1062 // WIZARD_POWER_WORD_SILENCE
 + ~HaveSpellParty(2613)~ + ~[PC] Improved Haste, 7 days.~ DO ~SetGlobal("c-arSCRL7Q","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1062 // WIZARD_IMPROVED_HASTE
 + ~HaveSpellParty(2614)~ + ~[PC] Death Fog, 7 days.~ DO ~SetGlobal("c-arSCRL7R","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1066 // WIZARD_DEATH_FOG
 + ~HaveSpellParty(2615)~ + ~[PC] Chain Lightning, 7 days.~ DO ~SetGlobal("c-arSCRL7S","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1065 // WIZARD_CHAIN_LIGHTNING
 + ~HaveSpellParty(2616)~ + ~[PC] Disintegrate, 7 days.~ DO ~SetGlobal("c-arSCRL7T","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1064 // WIZARD_DISINTEGRATE
 + ~HaveSpellParty(2617)~ + ~[PC] Contingency, 7 days.~ DO ~SetGlobal("c-arSCRL7U","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1063 // WIZARD_CONTINGENCY
 + ~HaveSpellParty(2618)~ + ~[PC] Spell Deflection, 7 days.~ DO ~SetGlobal("c-arSCRL7V","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1064 // WIZARD_SPELL_DEFLECTION
 + ~HaveSpellParty(2625)~ + ~[PC] Stone to Flesh, 7 days.~ DO ~SetGlobal("c-arSCRL8C","LOCALS",1) SetGlobal("c-aranscribe","GLOBAL",1) SetGlobalTimer("c-aranscribing","GLOBAL",SEVEN_DAYS)~ + a1065 // WIZARD_STONE_TO_FLESH
 ++ ~[PC] I do not want any of these. Forget the whole thing.~ + a1053
 ++ ~[PC] I do not want any of these. Can I see what else you can do?~ + a1059
END


/* End of Scibing Scroll Responses */

Edited by cmorgan

Share this post


Link to post

And the related .bcs blocks, in single-line format:

/* BCS Blocks for Scroll Creation */
/* c-arSCRL15 Aran PID: Create Scroll of Protection from Petrification */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL15","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL15","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL15",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Petrification be finished, if you want it.~)~ EXIT
/* c-arSCRL1B Aran PID: Create Scroll of Agannazar's Scorcher */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1B","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1B","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1B",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Agannazar's Scorcher be finished, if you want it.~)~ EXIT
/* c-arSCRL1C Aran PID: Create Scroll of Ghoul Touch */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1C","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1C","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1C",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Ghoul Touch be finished, if you want it.~)~ EXIT
/* c-arSCRL1D Aran PID: Create Scroll of Clairvoyance */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1D","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1D","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1D",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Clairvoyance be finished, if you want it.~)~ EXIT
/* c-arSCRL1E Aran PID: Create Scroll of Dispel Magic */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1E","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1E","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1E",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Dispel Magic be finished, if you want it.~)~ EXIT
/* c-arSCRL1F Aran PID: Create Scroll of Flame Arrow */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1F","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1F","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1F",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Flame Arrow be finished, if you want it.~)~ EXIT
/* c-arSCRL1G Aran PID: Create Scroll of Fireball */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1G","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1G","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1G",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Fireball be finished, if you want it.~)~ EXIT
/* c-arSCRL1H Aran PID: Create Scroll of Haste */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1H","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1H","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1H",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Haste be finished, if you want it.~)~ EXIT
/* c-arSCRL1I Aran PID: Create Scroll of Hold Person */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1I","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1I","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1I",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Hold Person be finished, if you want it.~)~ EXIT
/* c-arSCRL1J Aran PID: Create Scroll of Invisibility 10' radius */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1J","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1J","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1J",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Invisibility 10' radius be finished, if you want it.~)~ EXIT
/* c-arSCRL1K Aran PID: Create Scroll of Lightning Bolt */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1K","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1K","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1K",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Lightning Bolt be finished, if you want it.~)~ EXIT
/* c-arSCRL1M Aran PID: Create Scroll of NonDetection */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1M","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1M","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1M",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' NonDetection be finished, if you want it.~)~ EXIT
/* c-arSCRL1N Aran PID: Create Scroll of Protection from Normal Missiles */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1N","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1N","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1N",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Normal Missiles be finished, if you want it.~)~ EXIT
/* c-arSCRL1O Aran PID: Create Scroll of Slow */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1O","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1O","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1O",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Slow be finished, if you want it.~)~ EXIT
/* c-arSCRL1P Aran PID: Create Scroll of Skull Trap */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1P","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1P","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1P",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Skull Trap be finished, if you want it.~)~ EXIT
/* c-arSCRL1Q Aran PID: Create Scroll of Vampiric Touch */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1Q","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1Q","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1Q",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Vampiric Touch be finished, if you want it.~)~ EXIT
/* c-arSCRL1S Aran PID: Create Scroll of Dire Charm */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1S","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1S","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1S",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Dire Charm be finished, if you want it.~)~ EXIT
/* c-arSCRL1T Aran PID: Create Scroll of Ghost Armor */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1T","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1T","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1T",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Ghost Armor be finished, if you want it.~)~ EXIT
/* c-arSCRL1U Aran PID: Create Scroll of Confusion */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1U","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1U","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1U",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Confusion be finished, if you want it.~)~ EXIT
/* c-arSCRL1V Aran PID: Create Scroll of Stoneskin */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1V","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1V","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1V",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Stoneskin be finished, if you want it.~)~ EXIT
/* c-arSCRL1W Aran PID: Create Scroll of Fireshield (Blue) */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1W","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1W","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1W",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Fireshield (Blue) be finished, if you want it.~)~ EXIT
/* c-arSCRL1X Aran PID: Create Scroll of Ice Storm */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1X","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1X","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1X",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Ice Storm be finished, if you want it.~)~ EXIT
/* c-arSCRL1Y Aran PID: Create Scroll of Improved Invisibility */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1Y","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1Y","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1Y",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Improved Invisibility be finished, if you want it.~)~ EXIT
/* c-arSCRL1Z Aran PID: Create Scroll of Minor Globe of Invulnerability */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL1Z","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL1Z","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL1Z",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Minor Globe of Invulnerability be finished, if you want it.~)~ EXIT
/* c-arSCRL2E Aran PID: Create Scroll of Cloudkill */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL2E","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL2E","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL2E",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Cloudkill be finished, if you want it.~)~ EXIT
/* c-arSCRL2F Aran PID: Create Scroll of Cone of Cold */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL2F","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL2F","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL2F",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Cone of Cold be finished, if you want it.~)~ EXIT
/* c-arSCRL2H Aran PID: Create Scroll of Shadow Door */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL2H","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL2H","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL2H",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Shadow Door be finished, if you want it.~)~ EXIT
/* c-arSCRL3G Aran PID: Create Scroll of Vocalize */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL3G","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL3G","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL3G",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Vocalize be finished, if you want it.~)~ EXIT
/* c-arSCRL5G Aran PID: Create Scroll of Remove Curse */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5G","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5G","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5G",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Remove Curse be finished, if you want it.~)~ EXIT
/* c-arSCRL5H Aran PID: Create Scroll of Emotion */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5H","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5H","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5H",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Emotion be finished, if you want it.~)~ EXIT
/* c-arSCRL5I Aran PID: Create Scroll of Greater Malison */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5I","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5I","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5I",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Greater Malison be finished, if you want it.~)~ EXIT
/* c-arSCRL5J Aran PID: Create Scroll of Otiluke's Resilient Sphere */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5J","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5J","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5J",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Otiluke's Resilient Sphere be finished, if you want it.~)~ EXIT
/* c-arSCRL5K Aran PID: Create Scroll of Spirit Armor */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5K","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5K","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5K",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Spirit Armor be finished, if you want it.~)~ EXIT
/* c-arSCRL5N Aran PID: Create Scroll of Domination */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5N","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5N","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5N",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Domination be finished, if you want it.~)~ EXIT
/* c-arSCRL5P Aran PID: Create Scroll of Chaos */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5P","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5P","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5P",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Chaos be finished, if you want it.~)~ EXIT
/* c-arSCRL5Q Aran PID: Create Scroll of Feeblemind */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5Q","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5Q","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5Q",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Feeblemind be finished, if you want it.~)~ EXIT
/* c-arSCRL5T Aran PID: Create Scroll of Protection from Electricity */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5T","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5T","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5T",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Electricity be finished, if you want it.~)~ EXIT
/* c-arSCRL5U Aran PID: Create Scroll of Reflected Image */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL5U","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL5U","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL5U",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Reflected Image be finished, if you want it.~)~ EXIT
/* c-arSCRL66 Aran PID: Create Scroll of Grease */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL66","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL66","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL66",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Grease be finished, if you want it.~)~ EXIT
/* c-arSCRL67 Aran PID: Create Scroll of Armor */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL67","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL67","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL67",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Armor be finished, if you want it.~)~ EXIT
/* c-arSCRL68 Aran PID: Create Scroll of Burning Hands */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL68","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL68","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL68",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Burning Hands be finished, if you want it.~)~ EXIT
/* c-arSCRL69 Aran PID: Create Scroll of Charm Person */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL69","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL69","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL69",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Charm Person be finished, if you want it.~)~ EXIT
/* c-arSCRL6D Aran PID: Create Scroll of Find Familiar */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6D","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6D","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6D",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Find Familiar be finished, if you want it.~)~ EXIT
/* c-arSCRL6E Aran PID: Create Scroll of Power Word, Sleep */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6E","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6E","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6E",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Power Word, Sleep be finished, if you want it.~)~ EXIT
/* c-arSCRL6F Aran PID: Create Scroll of Ray of Enfeeblement */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6F","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6F","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6F",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Ray of Enfeeblement be finished, if you want it.~)~ EXIT
/* c-arSCRL6G Aran PID: Create Scroll of Minor Spell Deflection */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6G","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6G","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6G",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Minor Spell Deflection be finished, if you want it.~)~ EXIT
/* c-arSCRL6H Aran PID: Create Scroll of Protection from Fire */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6H","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6H","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6H",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Fire be finished, if you want it.~)~ EXIT
/* c-arSCRL6I Aran PID: Create Scroll of Protection from Cold */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6I","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6I","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6I",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Cold be finished, if you want it.~)~ EXIT
/* c-arSCRL6J Aran PID: Create Scroll of Spell Thrust */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6J","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6J","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6J",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Spell Thrust be finished, if you want it.~)~ EXIT
/* c-arSCRL6K Aran PID: Create Scroll of Detect Illusion */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6K","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6K","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6K",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Detect Illusion be finished, if you want it.~)~ EXIT
/* c-arSCRL6L Aran PID: Create Scroll of Hold Undead */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6L","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6L","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6L",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Hold Undead be finished, if you want it.~)~ EXIT
/* c-arSCRL6M Aran PID: Create Scroll of Enchanted Weapon */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6M","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6M","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6M",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Enchanted Weapon be finished, if you want it.~)~ EXIT
/* c-arSCRL6N Aran PID: Create Scroll of Fireshield (Red) */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6N","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6N","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6N",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Fireshield (Red) be finished, if you want it.~)~ EXIT
/* c-arSCRL6O Aran PID: Create Scroll of Secret Word */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6O","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6O","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6O",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Secret Word be finished, if you want it.~)~ EXIT
/* c-arSCRL6P Aran PID: Create Scroll of Minor Sequencer */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6P","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6P","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6P",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Minor Sequencer be finished, if you want it.~)~ EXIT
/* c-arSCRL6S Aran PID: Create Scroll of Spell Immunity */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6S","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6S","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6S",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Spell Immunity be finished, if you want it.~)~ EXIT
/* c-arSCRL6T Aran PID: Create Scroll of Protection from Normal Weapons */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6T","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6T","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6T",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Normal Weapons be finished, if you want it.~)~ EXIT
/* c-arSCRL6U Aran PID: Create Scroll of Breach */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6U","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6U","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6U",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Breach be finished, if you want it.~)~ EXIT
/* c-arSCRL6V Aran PID: Create Scroll of Lower Resistance */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6V","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6V","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6V",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Lower Resistance be finished, if you want it.~)~ EXIT
/* c-arSCRL6W Aran PID: Create Scroll of Oracle */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6W","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6W","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6W",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Oracle be finished, if you want it.~)~ EXIT
/* c-arSCRL6Y Aran PID: Create Scroll of Protection from Acid */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6Y","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6Y","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6Y",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Acid be finished, if you want it.~)~ EXIT
/* c-arSCRL6Z Aran PID: Create Scroll of Phantom Blade */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL6Z","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL6Z","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL6Z",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Phantom Blade be finished, if you want it.~)~ EXIT
/* c-arSCRL70 Aran PID: Create Scroll of Color Spray */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL70","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL70","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL70",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Color Spray be finished, if you want it.~)~ EXIT
/* c-arSCRL71 Aran PID: Create Scroll of Blindness */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL71","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL71","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL71",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Blindness be finished, if you want it.~)~ EXIT
/* c-arSCRL72 Aran PID: Create Scroll of Friends */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL72","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL72","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL72",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Friends be finished, if you want it.~)~ EXIT
/* c-arSCRL75 Aran PID: Create Scroll of Identify */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL75","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL75","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL75",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Identify be finished, if you want it.~)~ EXIT
/* c-arSCRL76 Aran PID: Create Scroll of Infravision */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL76","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL76","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL76",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Infravision be finished, if you want it.~)~ EXIT
/* c-arSCRL77 Aran PID: Create Scroll of Magic Missile */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL77","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL77","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL77",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Magic Missile be finished, if you want it.~)~ EXIT
/* c-arSCRL78 Aran PID: Create Scroll of Protection from Evil */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL78","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL78","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL78",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Evil be finished, if you want it.~)~ EXIT
/* c-arSCRL79 Aran PID: Create Scroll of Shield */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL79","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL79","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL79",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Shield be finished, if you want it.~)~ EXIT
/* c-arSCRL7D Aran PID: Create Scroll of Minor Spell Turning */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7D","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7D","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7D",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Minor Spell Turning be finished, if you want it.~)~ EXIT
/* c-arSCRL7F Aran PID: Create Scroll of Globe of Invulnerability */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7F","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7F","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7F",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Globe of Invulnerability be finished, if you want it.~)~ EXIT
/* c-arSCRL7G Aran PID: Create Scroll of Tenser's Transformation */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7G","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7G","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7G",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Tenser's Transformation be finished, if you want it.~)~ EXIT
/* c-arSCRL7H Aran PID: Create Scroll of Flesh to Stone */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7H","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7H","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7H",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Flesh to Stone be finished, if you want it.~)~ EXIT
/* c-arSCRL7I Aran PID: Create Scroll of Death Spell */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7I","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7I","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7I",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Death Spell be finished, if you want it.~)~ EXIT
/* c-arSCRL7J Aran PID: Create Scroll of Protection from Magic */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7J","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7J","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7J",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Magic be finished, if you want it.~)~ EXIT
/* c-arSCRL7K Aran PID: Create Scroll of Mislead */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7K","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7K","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7K",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Mislead be finished, if you want it.~)~ EXIT
/* c-arSCRL7L Aran PID: Create Scroll of Pierce Magic */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7L","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7L","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7L",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Pierce Magic be finished, if you want it.~)~ EXIT
/* c-arSCRL7M Aran PID: Create Scroll of True Sight */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7M","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7M","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7M",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' True Sight be finished, if you want it.~)~ EXIT
/* c-arSCRL7O Aran PID: Create Scroll of Protection from Magical Weapons */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7O","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7O","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7O",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Protection from Magical Weapons be finished, if you want it.~)~ EXIT
/* c-arSCRL7P Aran PID: Create Scroll of Power Word, Silence */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7P","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7P","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7P",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Power Word, Silence be finished, if you want it.~)~ EXIT
/* c-arSCRL7Q Aran PID: Create Scroll of Improved Haste */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7Q","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7Q","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7Q",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Improved Haste be finished, if you want it.~)~ EXIT
/* c-arSCRL7R Aran PID: Create Scroll of Death Fog */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7R","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7R","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7R",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Death Fog be finished, if you want it.~)~ EXIT
/* c-arSCRL7S Aran PID: Create Scroll of Chain Lightning */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7S","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7S","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7S",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Chain Lightning be finished, if you want it.~)~ EXIT
/* c-arSCRL7T Aran PID: Create Scroll of Disintegrate */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7T","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7T","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7T",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Disintegrate be finished, if you want it.~)~ EXIT
/* c-arSCRL7U Aran PID: Create Scroll of Contingency */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7U","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7U","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7U",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Contingency be finished, if you want it.~)~ EXIT
/* c-arSCRL7V Aran PID: Create Scroll of Spell Deflection */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL7V","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL7V","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL7V",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Spell Deflection be finished, if you want it.~)~ EXIT
/* c-arSCRL80 Aran PID: Create Scroll of Shocking Grasp */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL80","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL80","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL80",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Shocking Grasp be finished, if you want it.~)~ EXIT
/* c-arSCRL81 Aran PID: Create Scroll of Sleep */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL81","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL81","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL81",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Sleep be finished, if you want it.~)~ EXIT
/* c-arSCRL82 Aran PID: Create Scroll of Chill Touch */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL82","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL82","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL82",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Chill Touch be finished, if you want it.~)~ EXIT
/* c-arSCRL83 Aran PID: Create Scroll of Chromatic Orb */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL83","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL83","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL83",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Chromatic Orb be finished, if you want it.~)~ EXIT
/* c-arSCRL84 Aran PID: Create Scroll of Larloch's Minor Drain */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL84","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL84","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL84",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Larloch's Minor Drain be finished, if you want it.~)~ EXIT
/* c-arSCRL85 Aran PID: Create Scroll of Blur */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL85","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL85","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL85",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Blur be finished, if you want it.~)~ EXIT
/* c-arSCRL86 Aran PID: Create Scroll of Detect Evil */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL86","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL86","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL86",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Detect Evil be finished, if you want it.~)~ EXIT
/* c-arSCRL87 Aran PID: Create Scroll of Detect Invisibility */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL87","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL87","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL87",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Detect Invisibility be finished, if you want it.~)~ EXIT
/* c-arSCRL89 Aran PID: Create Scroll of Horror */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL89","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL89","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL89",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Horror be finished, if you want it.~)~ EXIT
/* c-arSCRL8C Aran PID: Create Scroll of Stone to Flesh */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL8C","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL8C","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL8C",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Stone to Flesh be finished, if you want it.~)~ EXIT
/* c-arSCRL8X Aran PID: Create Scroll of Spell Shield */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL8X","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL8X","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL8X",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Spell Shield be finished, if you want it.~)~ EXIT
/* c-arSCRL90 Aran PID: Create Scroll of Invisibility */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL90","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL90","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL90",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Invisibility be finished, if you want it.~)~ EXIT
/* c-arSCRL91 Aran PID: Create Scroll of Knock */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL91","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL91","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL91",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Knock be finished, if you want it.~)~ EXIT
/* c-arSCRL92 Aran PID: Create Scroll of Know Alignment */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL92","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL92","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL92",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Know Alignment be finished, if you want it.~)~ EXIT
/* c-arSCRL93 Aran PID: Create Scroll of Luck */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL93","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL93","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL93",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Luck be finished, if you want it.~)~ EXIT
/* c-arSCRL94 Aran PID: Create Scroll of Resist Fear */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL94","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL94","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL94",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Resist Fear be finished, if you want it.~)~ EXIT
/* c-arSCRL95 Aran PID: Create Scroll of Melf's Acid Arrow */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL95","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL95","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL95",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Melf's Acid Arrow be finished, if you want it.~)~ EXIT
/* c-arSCRL96 Aran PID: Create Scroll of Mirror Image */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL96","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL96","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL96",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Mirror Image be finished, if you want it.~)~ EXIT
/* c-arSCRL97 Aran PID: Create Scroll of Stinking Cloud */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL97","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL97","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL97",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Stinking Cloud be finished, if you want it.~)~ EXIT
/* c-arSCRL98 Aran PID: Create Scroll of Strength */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL98","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL98","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL98",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Strength be finished, if you want it.~)~ EXIT
/* c-arSCRL99 Aran PID: Create Scroll of Web */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRL99","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRL99","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRL99",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Web be finished, if you want it.~)~ EXIT
/* c-arSCRLA1 Aran PID: Create Scroll of Wizard Eye */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRLA1","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRLA1","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRLA1",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Wizard Eye be finished, if you want it.~)~ EXIT
/* c-arSCRLA2 Aran PID: Create Scroll of Deafness */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRLA2","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRLA2","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRLA2",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Deafness be finished, if you want it.~)~ EXIT
/* c-arSCRLA3 Aran PID: Create Scroll of Glitterdust */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRLA3","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRLA3","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRLA3",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Glitterdust be finished, if you want it.~)~ EXIT
/* c-arSCRLA5 Aran PID: Create Scroll of Melf's Minute Meteors */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRLA5","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRLA5","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRLA5",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Melf's Minute Meteors be finished, if you want it.~)~ EXIT
/* c-arSCRLA6 Aran PID: Create Scroll of Spook */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRLA6","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRLA6","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRLA6",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Spook be finished, if you want it.~)~ EXIT
/* c-arSCRLA8 Aran PID: Create Scroll of Contagion */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRLA8","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRLA8","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRLA8",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Contagion be finished, if you want it.~)~ EXIT
/* c-arSCRLAJ Aran PID: Create Scroll of Farsight */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRLAJ","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRLAJ","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRLAJ",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Farsight be finished, if you want it.~)~ EXIT
/* c-arSCRLAL Aran PID: Create Scroll of Sunfire */ IF GlobalTimerExpired("c-aranscribing","GLOBAL") Global("c-aranscribe","GLOBAL",1) Global("c-arSCRLAL","LOCALS",1) InParty(Myself) InMyArea(Player1) !StateCheck(Myself,CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal(" c-arSCRLAL","LOCALS",0) SetGlobal("c-aranscribe","GLOBAL",0) GiveItemCreate("SCRLAL",Myself,1,1,1) DisplayStringHead(Myself,~Aye, now, that scroll o' Sunfire be finished, if you want it.~)~ EXIT

 

I know they compile this way, too, but for ease of eyestrain and dealing with internal block line count/comparison/finding, before running out the alpha these get a regexp replacement with appropriate newlines... and if I can't figure a good way to do that, then a manual adding of return to the correct points along with corrected indentation. For folks who are thinking of adding great big lists of pre-created possible items or materials, learn to use a column editor. It makes the listed stuff so much easier to work with :thumbsup:

Edited by cmorgan

Share this post


Link to post

Commented code. Word.

 

Here's a hint: comment your COMPILE lines, too, so you remember where to look for stuff when you're troubleshooting. Just started doing that recently. Will do it from now on. This is a chunk of Gavin's BG2 pre-Alpha tp2:

COMPILE ~gavin_bg2/dialogue/b!gav.d~				  // Gavin's joining dilogue
COMPILE ~gavin_bg2/dialogue/b!player1.d~			  // Ring dialogue
COMPILE ~gavin_bg2/dialogue/b!gavin_interjections.d   // interjections
COMPILE ~gavin_bg2/dialogue/bb!gav.d~				 // banters
COMPILE ~gavin_bg2/dialogue/b!miranda_talks.d~		// Miranda talks 
COMPILE ~gavin_bg2/dialogue/b!miranda.d~			  // Confrontation with Miranda 

COMPILE ~gavin_bg2/script/b!gavs.baf~	 // Gavin's override
COMPILE ~gavin_bg2/script/b!lanie1.baf~   // Confrontation with Miranda and Lanie 
COMPILE ~gavin_bg2/script/b!lanie2.baf~   // Gavin and Lanie go to the temple, returns party to starting location
COMPILE ~gavin_bg2/script/b!lanie3.baf~   // Moves Miranda, Lanie and Gavin to the temple of Oghma if the PC did not witness the whole confrontation 
COMPILE ~gavin_bg2/script/b!rest1.baf~	// resting at an inn 
COMPILE ~gavin_bg2/script/b!rest2.baf~	// resting outdoors 
COMPILE ~gavin_bg2/script/b!rest3.baf~	// resting in a dungeon 

EXTEND_TOP	~ar0602.bcs~ ~gavin_bg2/script/b!ar0602_et.baf~ // Ring placement
EXTEND_BOTTOM ~ar0602.bcs~ ~gavin_bg2/script/b!ar0602_eb.baf~ // Starts ring dialogue 
EXTEND_BOTTOM ~ar0900.bcs~ ~gavin_bg2/script/b!ar0900.baf~	// Miranda and Lanie business
EXTEND_TOP	~aerie.bcs~  ~gavin_bg2/script/b!aerie.baf~	 // Aerie starts the banters 
EXTEND_TOP	~aeried.bcs~ ~gavin_bg2/script/b!aeried.baf~	// Night banter with Aerie

Edited by berelinde

Share this post


Link to post

Good idea. I am so blasted impressed with aVENGER (RR)'s doggone every-single-line commenting, because it removes most of the time where you come back to the project and go "now what wasI tryong to do here" - which for me means up to 60% of my limited modding sessions :thumbsup:

Share this post


Link to post

This is a cool idea. If I understand correctly then he will be able to do this even if he isn't dual classed into a mage, however he will need at least another mage in the party of any full/dual or multiclass? Or have I just confused myself?

 

Spotted some typos,

and the related responses;
/* PID Scribing Scrolls Responses */

+ ~Class("c-aran",MAGE_ALL)~ + ~Hey, you are a mage [b][i][u]youself[/u][/i][/b] - why does this take so long? I hear high level mages can run one of these out in a day!~ + a1054

"you[b]r[/b]self" Also there are about three other instances of this typo.

 

IF ~~ a1060

SAY ~[ARAN] Based on what we have memorized in th' party, an' what materials I have right here, I can start on one o' these. You [b][i][u]chose[/u][/i][/b], an' I'll get it.~

Seeing as it's present tense I think it supposed to be, "cho[b]o[/b]se", here. Also there are about five other instances of this typo.

 

IF ~~ a1061

SAY ~[ARAN] Summonin' anythin' requires perfection, an' more skill than I would trust. Copyin', well, that be awkward... I can't rightly say why it won't work, but trust me. Th' last time [b][i][u]i[/u][/i][/b] tried it, I had to scramble for cover when the fool thing blew up in my face.~

"[b]I[/b]"

Share this post


Link to post

Nope, right on the money - if anyone in the party has one of the standard wizard spells up through 6th level, then for 1 day/level + 1 amount of time Aran can work with them to scribe a scroll of that spell. That gives him a useful "flavor" special ability as a working scribe. I like the idea of having something useful and unique, but his character has no reason to have +3 swords or other special unique kit advantages, etc. - it seemed like the best way to keep player flexibility is to let them make him a Kensai/Mage dual or anything else they want with L1NPC or Shadowkeeper, and this kind of idea would still be both practical and within character.

Share this post


Link to post
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...