!**************************************************************************** !****(DEFINITIONS)*********************************************************** !**************************************************************************** ! For alcohol content, 30=Burbaretto Colada ! 40=Brandyrum Sunrise ! 50=Whiskeygin Cider ! 60=Tequilawine Punch ! As a flag, we can identify a "CUP" item as having a capacity of 1 ! a "BOWL" item as having a capacity of 2 ! Basically, every item is too big to appear inside, so that's safe. !**************************************************************************** !****(GLOBALS)*************************************************************** !**************************************************************************** array all_cups[20] global smalltalk=0 !**************************************************************************** !****(ROOM DESCRIPTIONS)***************************************************** !**************************************************************************** !---------------------------------------------------------------------------- room pavcenter "Garna Pavilion - Center" { extra_scenery "decor","ceiling","shelf","roof" long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "Named for the erstwhile Chaniman and built late in his tenure, the "; PrintMsgChapter1(3,pavilion) "A stone shelf rests atop six green columns to form a fragment of ceiling here. Light from above casts heavy shadows in every direction, fending away the deep darkness of night to the extent of the platform's squared edges. Five wide bench seats padded in a heavy blue material form an arc -- two facing two, with one at the northern end. A single round-topped table serves as the centerpiece. The pavilion extends beyond the cover of the narrow stone canopy to the east and west, where the rest of the Incender entourage and the Daroan retinue stand, respectively. Wide round steps lead down to the south. Petrifus trees, in bloom with pale blue spring leaves, grow beyond the pavilion to the north and south." } each_turn { local smalltalk_ok = true !If we changed rooms OR saw the room description, show this. if (prev_location ~= location) or (roomdesc_seen = true) { smalltalk_ok = false ShowTables(self) !Show table if (SmallTalkIsOver) { PrintMsgChapter1(11,0) !Small talk is over. } } if (tray is not moved) { if (blueseats.misc = 0) { print "" !Blank line "Something under one of the seats catches your eye." blueseats.misc = 5 !Wait another 5 turns before saying again. smalltalk_ok = false } else { blueseats.misc-- } } if (fesha.misc #7 >= fesha.misc #6) and (fesha in location) { !Feeeshaaa has gotten drunk, and now she must leave. :) !We have to do this in "each_turn" since she drinks when the !player might not be there to see it, we come back and get this. PrintMsgChapter1(9,fesha) remove fesha : remove shevra smalltalk_ok = false } !And then, check to see if it's now time for Eeeloraaa to leave. if (elora in location) { CheckEloraLeaving() if (elora not in location) { smalltalk_ok = false } } !Now now, finally, let's do the smalltalk! if (smalltalk_ok) { if not (SmallTalkIsOver) { smalltalk++ : PrintMsgChapter1(11,smalltalk) } } } s_to pavfrontcenter e_to paveast w_to pavwest d_to { Perform(&DoGo, s_obj) : return true } before { location DoGo { if (object = n_obj) { PrintMsgChapter1(1,1) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavwest "Garna Pavilion - West End" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "Tall white-orange pillars rise from yellow bases, one near each corner, north and south. A stair of circular steps leads down to the south; another just like it to the west. Two round-topped tables -- one north, one south -- seem to be a focus of attention for some of the Daroan retinue." } each_turn { !If we changed rooms OR saw the room description, show this. if (prev_location ~= location) or (roomdesc_seen = true) { ShowTables(self) } !If we changed rooms and DID NOT see the room desc, show this. !That's because it's already listed in the room description, but !won't be seen if we came here with verbose turned off.... if (prev_location ~= location) and (roomdesc_seen = false) \ and (InList(daroans,found_in,location)>0) { ShortDescribe(daroans) } } s_to pavfrontwest e_to pavcenter w_to pavsidewest d_to { Perform(&DoGo, s_obj) : return true } before { location DoGo { if (object = n_obj) { PrintMsgChapter1(1,1) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room paveast "Garna Pavilion - East End" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "Tall white-orange pillars rise from yellow bases, one near each corner, north and south. A stair of circular steps leads down to the south; another just like it to the east. Two round-topped tables -- one north, one south -- are being ignored by all but a few of the Incender entourage." } each_turn { !If we changed rooms OR saw the room description, show this. if (prev_location ~= location) or (roomdesc_seen = true) { ShowTables(self) } !If we changed rooms and DID NOT see the room desc, show this. !That's because it's already listed in the room description, but !won't be seen if we came here with verbose turned off.... if (prev_location ~= location) and (roomdesc_seen = false) and \ (InList(incenders,found_in,location)>0) { ShortDescribe(incenders) } } s_to pavfronteast e_to pavsideeast w_to pavcenter d_to { Perform(&DoGo, s_obj) : return true } before { location DoGo { if (object = n_obj) { PrintMsgChapter1(1,1) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavfrontcenter "South of the Pavilion - Center" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "Round stone steps to the north ascend to the Garna Pavilion. On either side of its two gray handrails, several paces from the platform's vertical edge, tall petrifus trees grow defiantly from the brown-and-crimson ossified ground. A path to the east and west is marked by the faintest of wear. Only darkness extends to the south." } u_to pavcenter n_to pavcenter e_to pavfronteast w_to pavfrontwest before { location DoGo { if (object = s_obj,se_obj,sw_obj) { PrintMsgChapter1(1,2) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavfrontwest "South of the Pavilion - West End" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "The ground here is a deeper brown, uneven in spots of crimson. One tree, a petrifus with its pale blue foliage towering overhead, is made menacing by shadows from the pavilion -- shadows that deepen the darkness in strange shapes about its trunk and branches. Round steps of stone lead up to the Garna Pavilion, north. Slight and barely-noticed wear indicates a path east, curving also to the west where it twists around to disappear along the side of the pavilion." } u_to pavwest n_to pavwest e_to pavfrontcenter nw_to pavsidewest before { location DoGo { if (object = w_obj) { Perform(&DoGo,nw_obj) : return true } if (object = s_obj,se_obj,sw_obj) { PrintMsgChapter1(1,2) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavfronteast "South of the Pavilion - East End" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. !"Night invades from the "Mild wear forms a narrow path across the hard, crimson ground, at an angle trailing west and curving east. Night invades from the south, held back only by what light is contributed from the north. A stair of stone, fashioned in the same half-circle tiers that service other portions of the pavilion, rises to the edge of the tiled floor." } u_to paveast n_to paveast w_to pavfrontcenter ne_to pavsideeast before { location DoGo { if (object = e_obj) { Perform(&DoGo,ne_obj) : return true } if (object = s_obj,se_obj,sw_obj) { PrintMsgChapter1(1,2) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavsidewest "West of the Pavilion" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "Only the glow of light from the east fends away total darkness. A slight path, angling to curve around the pavilion, leads north and south. Stone steps rise to the east." } e_to pavwest ne_to pavbackwest se_to pavfrontwest before { location DoGo { if (object = n_obj) { Perform(&DoGo,ne_obj) : return true } if (object = s_obj) { Perform(&DoGo,se_obj) : return true } if (object = w_obj,nw_obj,sw_obj) { PrintMsgChapter1(1,5) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavsideeast "East of the Pavilion" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "Only the glow of light from the west fends away total darkness. A slight path, angling to curve around the pavilion, leads north and south. Stone steps rise to the west." } w_to paveast nw_to pavbackeast sw_to pavfronteast before { location DoGo { if (object = n_obj) { Perform(&DoGo,nw_obj) : return true } if (object = s_obj) { Perform(&DoGo,sw_obj) : return true } if (object = e_obj,ne_obj,se_obj) { PrintMsgChapter1(1,5) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavbackcenter "North of the Pavilion - Center" { misc 0 !This is going to control the "Elora" messages. long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "A number of petrifus trees block and obscure what little light comes down from the south. The area behind the pavilion is the sort of place that might have spawned nightmares in your childhood; dark, spooky, enclosing. You envy the Incenders in one regard. They are never truly in the dark." } w_to pavbackwest e_to pavbackeast each_turn { if (elora in location) { if (self.misc > 11) { !If the player waits too long, let's FORCE the kiss anyway. "Unable to resist the urge any longer, you press against her." Perform(&DoKiss,elora) } else { PrintMsgChapter1(12,self.misc) : self.misc++ } } else { print "" !Blank line "You decide to hurry on ahead, finding no reason to remain." self is not visited !So we don't lose our desc next time. if (old_location = pavbackwest) { Perform(&DoGo,e_obj) } else { Perform(&DoGo,w_obj) } } } before { location DoGo { if (elora in location) { if (object = w_obj,e_obj) { "\"Please... stay here with me,\" Elora whispers." return true } } if (object = n_obj,ne_obj,nw_obj) { PrintMsgChapter1(1,5) : return true } if (object = s_obj) { PrintMsgChapter1(1,4) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavbackwest "North of the Pavilion - West End" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "Behind the pavilion, at the west end, you can just make out the hint of a path leading around to the west and south, stretching also across to the east. No stone steps offer upward access. No trees share the night with you." } e_to pavbackcenter sw_to pavsidewest before { location DoGo { if (object = w_obj) { Perform(&DoGo,sw_obj) : return true } if (object = n_obj,nw_obj,ne_obj) { PrintMsgChapter1(1,5) : return true } if (object = s_obj) { PrintMsgChapter1(1,4) : return true } PrintMsgChapter1(0,object) : return false } } } !---------------------------------------------------------------------------- room pavbackeast "North of the Pavilion - East End" { long_desc { roomdesc_seen = true !Room description was "seen" on this turn. "Behind the Garna Pavilion, at the east end, the ground itself is like stone. Nothing prevents further movement to the west, although the area there directly behind it seems especially dark. A path, albeit more imaginary than real, will bring you around to one side in an easterly, southerly manner." } w_to pavbackcenter se_to pavsideeast before { location DoGo { if (object = e_obj) { Perform(&DoGo,se_obj) : return true } if (object = n_obj,nw_obj,ne_obj) { PrintMsgChapter1(1,5) : return true } if (object = s_obj) { PrintMsgChapter1(1,4) : return true } PrintMsgChapter1(0,object) : return false } } } !**************************************************************************** !****(DAEMONS)*************************************************************** !**************************************************************************** daemon JerrusDrink {} event in JerrusDrink { CheckDrink(Jerrus) } !---------------------------------------------------------------------------- daemon ThyrasDrink {} event in ThyrasDrink { CheckDrink(Thyras) } !---------------------------------------------------------------------------- daemon ShevraDrink {} event in ShevraDrink { CheckDrink(Shevra) } !---------------------------------------------------------------------------- daemon YarrelDrink {} event in YarrelDrink { CheckDrink(Yarrel) } !---------------------------------------------------------------------------- daemon MaheoDrink {} event in MaheoDrink { CheckDrink(Maheo) } !---------------------------------------------------------------------------- daemon FeshaDrink {} event in FeshaDrink { CheckDrink(Fesha) } !**************************************************************************** !****(CLASSES)*************************************************************** !**************************************************************************** class roundtable { nouns "table" article "the" is platform, static !Can't get it is hidden !Handled seperately holding 0 capacity 80 !Can hold "80" weight long_desc { CalculateHolding(self) !Just to be sure PrintMsgChapter1(3,roundtable,self) if (self.holding = 0) { print "" } !Advance if it's empty } } !---------------------------------------------------------------------------- class stonecup { !#1 to #4 become the alcohol type (supports "cup of X" and so on) nouns "","","","","cup" !#1 to #4 become the alcohol type (replaces "empty" and "" adjectives) !#7 becomes the color of this cup, set for each one (#8 is alternate) adjectives "empty","","","","stone","cup","color_here","" article "a" parse_rank 1 !Because "bowls" are also be named by alcohol content is container capacity 1 !Don't actually carry an object -- "1" is just a flag. misc 0,0,0 !Which liquid is it holding, its owner, its fill-level size 10 long_desc { PrintMsgChapter1(3,stonecup,self) } desc_detail { print " ("; : PrintCupDetail(self,true) : print ")"; } before { object DoLookIn { PrintCupArt(self,true) : print " is "; PrintCupDetail(self,true) : print "." return true } object DoEmpty { if (Contains(player,self)=0) { print "You aren't holding "; PrintCupArt(self,false) : "." } elseif (self.misc = 0) { PrintCupArt(self,true) : " is already empty." } elseif (xobject = 0,1) { if (location = pavwest,pavcenter,paveast) { PrintMsgChapter1(4,4) } else { "You tip it over, pouring the "; PrintCupDetail(self,false) " out onto the ground." FillCup(self,0,0) !Empty the cup } } elseif (xobject = colada,punch,cider,sunrise) { if (self.misc = xobject.misc) { "Although it raises questions of the sanitary kind, you tip the cup over and pour "; PrintCupDetail(self,false) " back into the bowl." FillCup(self,0,0) !Empty the cup } else { PrintMsgChapter1(4,2,self) } } elseif (xobject.capacity = 1) { !capacity of 1 is a flag meaning "it's a cup" if (xobject.misc = 0) { "You pour "; : PrintCupDetail(self,false) " from "; : PrintCupArt(self,false) " into "; : PrintCupArt(xobject,false) ". "; : PrintCupArt(object,true) " is now empty." FillCup(xobject,self.misc,self.misc #3) !fill other cup FillCup(self,0,0) !and then empty our own CheckWatchContext(1) !Print the "intoxication" message? !And then start the NPC drink-daemon, if appropriate if (parent(xobject) is living) and (parent(xobject) ~= player) { PrintMsgChapter1(6,parent(xobject),xobject.misc) !Thyras doesn't drink until YOU do... if (parent(xobject) ~= thyras) { StartCupDaemon(parent(xobject)) } } } else { PrintMsgChapter1(4,3,xobject) } } elseif (xobject is living) and (xobject ~= player) { print "You can think of no justification in dousing "; print Art(xobject); " with "; PrintCupDetail(self,false) : print ". "; if (xobject = incenders,fesha,maheo,elora) { PrintMsgChapter1(4,1) } else { print "" !Nothing more to say } } else { !If all else failed, then we simply can't pour it. print "The "; PrintCupDetail(self,false) : " is better left in the cup." } } object DoFill { !We can fill it if WE have it, or, if an NPC is holding it. if (Contains(player,self)=0) and (parent(self) is not living) { print "You aren't holding "; PrintCupArt(self,false) : "." return true } elseif (self.misc > 0) { PrintCupArt(self,true) : " is already "; if (self.misc #3 = 6) { "filled with "; } elseif (self.misc #3 >= 4) { "mostly full of "; } elseif (self.misc #3 >= 2) { "partially full of "; } else { "holding a little "; } PrintCupDetail(self,false) if (self.misc #3 = 6) { ". It can hold nothing else right now. "; } else { ". It doesn't really require a refill yet. "; } if (xobject.capacity ~= 1,2) { "Besides, that really isn't something it was made to hold..." } else { print "" !Nothing else to say } return true } elseif (xobject is container) { if (xobject.capacity = 1) { !cups are identifiable with a capacity of "1" if (xobject.misc = 0) { "The other cup is empty, too." } else { !Cup-to-Cup transfers are handled the other way. Perform(&DoEmpty, xobject, object) } return true } elseif (xobject.capacity = 2) { !punch bowls are identified by capacity of "2" "Being careful to keep your fingers out of the "; PrintCupDetail(xobject,false) : ", you dip "; PrintCupArt(self,false) : " into the bowl, filling it up." FillCup(self,xobject.misc,6) !fill cup with full amount CheckWatchContext(1) !Print the "intoxication" message? return true } } return false ! For any un-handled, use defaults } object DoGet { if (self in thyras) or (self in jerrus) or (self in shevra) or \ (self in yarrel) or (self in maheo) or (self in fesha) { if (self.misc > 0) { PrintHeShe(parent(self),true) " declines, preferring to keep the drink. When and if "; PrintHeShe(parent(self),false) " finishes, you might take it again for a refill." return true } else { print parent(self).name; " offers the empty cup to you." !We'll drop on through and check for tray, maxhold, etc. } } if Contains(player,tray) and (self not in tray) { "(assuming you mean to place it on the tray)" Perform(&DoPutIn,self,tray) return true } if (CountCupsInHand() >= 3) { "You can't manage another one -- it's too much to carry with only two hands to hold them all." return true } return false } object DoGive { !First, find out if we even have the cup. if Contains(player,self) { !Next, determine if it's a living person if (xobject is living) and (xobject ~= player) { !Next, figure out if they can have a cup. if (xobject.misc #1 = 0) { if (xobject = elora) { PrintMsgChapter1(4,5) return true } if (xobject = incenders) { PrintMsgChapter1(4,6) return true } if (xobject = daroans) { PrintMsgChapter1(4,7) return true } return false !So it will give "politely refuse" } !Now, figure out if they already have their cup. if (xobject.misc #1 in xobject) { print CArt(xobject); " already has a cup." return true } !Now, figure out if we're giving the wrong cup. if (self.misc #2 ~= 0,xobject) { print "Etiquette prevents you from giving "; print self.name; " to "; Art(xobject); "." return true } !Next, figure out if this isn't "their" cup, in cases !where we've given them a cup at least once. if (xobject.misc ~= 0) and (xobject.misc is moved) and \ (object ~= xobject.misc) { print CArt(xobject); " was previously drinking from the "; (xobject.misc).adjectives #7; " cup. It would be less wasteful to return the same one instead." return true; } !Now, determine if the cup is empty or not. if (self.misc #1 = 0) { print CArt(xobject); " would rather have a cup with something in it -- preferably a drink." return true } !Before we hand it over, make sure we won't get burned. if (xobject=fesha,maheo) { if not Contains(tray,self) { PrintMsgChapter1(4,8,self) return true } } !All is well, so let's hand it over now! :) if (self.misc #2 = 0) { !Giving a generic cup for the first time - color! object = xobject.misc !Now deal with REAL cup. object.adjectives #7 = self.adjectives #7 object.adjectives #8 = self.adjectives #8 !So that it comes from the tray correctly. if (self in tray) { move object to tray } FillCup(object,self.misc,self.misc #3) AddAnotherCup(self) !Get rid of it and add another. if (xobject = thyras) { !Our Memento cup is actually Thyras's cup. :) gavenncup.adjectives #7 = object.adjectives #7 gavenncup.adjectives #8 = object.adjectives #8 } } else { object = self !Already dealing with the right cup } PrintMsgChapter1(5,object,xobject) PrintMsgChapter1(6,xobject,object.misc) !And then start the NPC drink-daemon move object to xobject !It's now owned by the NPC object is hidden !To not appear in descriptions object is moved !This will be used as a potential flag !Thyras doesn't drink instantly, he waits for you. if (xobject ~= thyras) { StartCupDaemon(xobject) } return true } } else { !Player doesn't even have the cup. "You can't give away what you aren't holding." return true } return false ! default "kind gesture goes unnoticed..." } object DoDrink { if Contains(player,self) { if (self.misc = 0) { print "You can't drink from an empty cup." } else { if (self.misc #2 ~= 0) { print "That cup belongs to "; (self.misc #2).name; " now. Etiquette prevents you from taking a drink." } else { PlayerDrink(self) !Did this put the player over the edge of drunk? if (player.misc #7 >= player.misc #6) { PrintMsgChapter1(9,player) !Print "drunk" message player.misc #7 = 0 !Player intox reset thyras.misc #7 = 0 !Thyras intox reset } else { if (Chapter = 1) { !If Thyras is here, he'll drink now too. if (thyras in location) { if (thyrascup in thyras) { if (thyrascup.misc > 0) { !Thyras takes a drink now, too. StartCupDaemon(thyras) } else { PrintMsgChapter1(8,2) } } else { PrintMsgChapter1(8,1) } } else { !If we have already given Thyras a cup once..... if (thyrascup is moved) and (thyras in pavcenter) { PrintMsgChapter1(8,3) } else { !Say nothing. Let the player drink, no message. } } } } } } } else { PrintMsgChapter1(4,9) } return true !No matter what, we don't need default message. } } after { object DoDrop { "You place it down carefully, "; if (self.misc = 0) { "to avoid breaking it." } else { "so it won't break or spill." } return true } object DoGet { !Because people-owned cups are hidden, make sure whatever cup !we get un-hides when we obtain it ourself. if (self.misc > 0) { !Is there anything in this cup? CheckWatchContext(1) !Print the "intoxication" message? } self is not hidden : return false } object DoPutIn { if (xobject = tray) and Contains(player,tray) { if (self.misc > 0) { !Cup has something in it. CheckWatchContext(1) !Print the "intoxication" message? } } return false !So we give the normal message. } } } !---------------------------------------------------------------------------- class punchbowl { article "the" is container, static holding 0 size 60 capacity 2 !Don't actually carry an object -- "2" is just a flag. parse_rank 3 !Higher than "cups" which are also sometimes named alcohol exclude_from_all { return true } long_desc { PrintMsgChapter1(3,punchbowl) } before { object DoGet { print "The "; self.name; " is too big and too awkward to be carried around. Besides, it's meant to be shared. Take a cup, dip in for a fill, drink up -- that's what the "; if (location = paveast) { "Incenders "; } else { "others "; } "are doing." return true } object DoEmpty { if (xobject = 0,1) { PrintMsgChapter1(4,11,self) } elseif (xobject is container) { !Only container items here are cups, so we're okay. PrintMsgChapter1(4,12,self) } else { PrintMsgChapter1(4,13,self) } return true } } } !**************************************************************************** !****(AREA ITEMS)************************************************************ !**************************************************************************** object alcotox "alcotox tablet" { !When self becomes "special" the player has "heard about" it from Yarrel. !When self becomes "moved" the player has found it behind the tree. !When self is moved to "dumpsite" the player has swallowed the pill! nouns "alcotox", "tab", "tablet", "pill", "medicine", "drug", "alcotab" adjectives "alcotox", "small", "red" article "the" long_desc { "The red pill is irregularly shaped, and slightly chalky in appearance. It's a little large, but not too big to swallow." } before { object DoDrink { Perform(&DoEat, self) : return true } object DoEat { if (Contains(player,self) = 0) { PrintMsgChapter1(4,9) : return true } return false !Continue on with normal message. } } after { object DoEat { "You quickly swallow the red pill, almost gagging at how nasty the thing tastes. You express the displeasure with a grunt. Yarrel said this would double your tolerance for alcohol -- no, decrease its effects by half. Same result, you decide, but an important distinction if guaging tolerance as a constant." move alcotox to dumpsite !Flag that we swallowed it. } } } !---------------------------------------------------------------------------- object eloranote "note" { nouns "paper", "page", "note" adjectives "folded" article "a" !Note that "special" will be used to determine that we really READ it. is openable, readable, not open, not special size 10 initial_desc { "Somebody has dropped a folded note here." } desc_detail { if (self is open) { " (unfolded)"; } else { " (folded)"; } } long_desc { PrintMsgChapter1(3,self) } before { object DoFold { Perform(&DoClose, self) : return true } object DoUnfold { Perform(&DoOpen, self) : return true } object DoOpen { if (Contains(player,self)=0) { if Acquire(player,self) { "(taking the note first)" } else { PrintMsgChapter1(4,9) : return true } } return false !So that "open will succeed" } object DoClose { if (Contains(player,self)=0) { if Acquire(player,self) { "(taking the note first)" } else { PrintMsgChapter1(4,9) : return true } } return false !So that "close will succeed" } object DoRead { if Contains(player,eloranote) { if (self is open) { PrintMsgChapter1(7) } else { PrintMsgChapter1(3,self) } } else { PrintMsgChapter1(4,9) } return true !We don't want it to revert to "look" } } after { object DoOpen { "Unfolded." : return true } object DoClose { "Folded." : return true } } } !---------------------------------------------------------------------------- object tobastick "tobastick" { in yarrel nouns "tobastick", "tobacco", "cigarette", "cigar", "stick", "tobbastick" adjectives "yarrel's", "woman's" article "the" is hidden size 10 long_desc { PrintMsgChapter1(3,self) } before { object DoGet { "No, that's a habit you've never felt inclined to pursue. You have no use for a tobastick, half-used or otherwise." return true } } } !---------------------------------------------------------------------------- object tray "serving tray" { nouns "tray" adjectives "serving", "serve" article "a" is platform holding 0 capacity 80 size 20 !This way, it will fit on a table only if there are no cups long_desc { PrintMsgChapter1(3,self) } before { object DoDrop { CalculateHolding(tray) if (self.holding > 0) { "Although it does balance well enough, you change your mind about dropping the tray while anything rests on it." return true } return false } } after { object DoGet { local anys = 0 "You pick up the serving tray." CalculateHolding(tray) anys = PutAllCupsOnTray(tray) if (anys = 1 ) { "It balances quite nicely." } elseif (anys = 2) { "Both cups balance nicely on the tray." } elseif (anys = 3) { "The three cups balance nicely on the tray." } elseif (anys >= 4) { "It all balances nicely." } return true } } } !---------------------------------------------------------------------------- stonecup cup1 "teal cup" { in table1 } stonecup cup2 "gray cup" { in table1 } stonecup cup3 "green cup" { in table2 } stonecup cup4 "blue cup" { in table2 } stonecup cup5 "tan cup" { in table3 } stonecup cup6 "pink cup" { in table3 } stonecup cup7 "white cup" { in table4 } stonecup cup8 "brown cup" { in table4 } stonecup cup9 "indigo cup" { !Starts out nowhere article "an" } stonecup cup10 "silver cup" { !Starts out nowhere } stonecup cup11 "mauve cup" { !Starts out nowhere } stonecup cup12 "gold cup" { !Starts out nowhere } stonecup cup13 "violet cup" { !Starts out nowhere } stonecup cup14 "yellow cup" { !Starts out nowhere } !---------------------------------------------------------------------------- stonecup jerruscup "Jerrus's cup" { adjectives "empty","","","","stone","cup","color_here", \ "jerrus","jerrus's" article "" is hidden misc 0,jerrus,0 !Empty, belongs to Jerrus, no sips } !---------------------------------------------------------------------------- stonecup yarrelcup "Yarrel's cup" { adjectives "empty","","","","stone","cup","color_here", \ "yarrel","yarrel's" article "" is hidden misc 0,yarrel,0 !Empty, belongs to Yarrel, no sips } !---------------------------------------------------------------------------- stonecup thyrascup "Thyras's cup" { adjectives "empty","","","","stone","cup","color_here", \ "thyras","thyras's" article "" is hidden misc 0,thyras,0 !Empty, belongs to Thyras, no sips } !---------------------------------------------------------------------------- stonecup maheocup "Maheo's cup" { adjectives "empty","","","","stone","cup","color_here", \ "maheo","maheo's","maaaheeeo","maaaheeeo's" article "" is hidden misc 0,maheo,0 !Empty, belongs to Maaaheeeo, no sips } !---------------------------------------------------------------------------- stonecup feshacup "Fesha's cup" { adjectives "empty","","","","stone","cup","color_here", \ "fesha", "fesha's", "feeeshaaa","feeeshaaa's" article "" is hidden misc 0,fesha,0 !Empty, belongs to Feeeshaaa, no sips } !---------------------------------------------------------------------------- stonecup shevracup "Shevra's cup" { adjectives "empty","","","","stone","cup","color_here", \ "shevra", "shevra's" article "" is hidden misc 0,shevra,0 !Empty, belongs to shevra, no sips } !---------------------------------------------------------------------------- !The final cup isn't a part of our regular list -- it's a souvenier stonecup gavenncup "stone cup" { long_desc { PrintMsgChapter1(3,self) } before { object DoDrop { print "You find yourself unable -- no, unwilling -- to part with it." return true } object DoPutIn { print "No, it might be lost if you did that." return true } } } !---------------------------------------------------------------------------- punchbowl colada "bowl of burbaretto colada" { nouns "bowl", "burbaretto", "colada" adjectives "bowl", "burbaretto", "colada" misc 30 ! This is the alcohol type in table3 } !---------------------------------------------------------------------------- punchbowl sunrise "bowl of brandyrum sunrise" { nouns "bowl", "brandyrum", "sunrise", "brandy", "rum" adjectives "bowl", "brandyrum", "sunrise", "brandy", "rum" misc 40 ! This is the alcohol type in table1 } !---------------------------------------------------------------------------- punchbowl cider "bowl of whiskeygin cider" { nouns "bowl", "whiskeygin", "cider", "whiskey", "gin" adjectives "bowl", "whiskeygin", "cider", "whiskey", "gin" misc 50 ! This is the alcohol type in table2 } !---------------------------------------------------------------------------- punchbowl punch "bowl of tequilawine punch" { nouns "bowl", "tequilawine", "punch", "tequila", "wine" adjectives "bowl", "tequilawine", "punch", "tequila", "wine" misc 60 ! This is the alcohol type in table4 } !---------------------------------------------------------------------------- roundtable table1 "northern table" { in paveast adjectives "north","northern","first","round","topped","top","round-topped" } roundtable table2 "southern table" { in paveast adjectives "south","southern","second","round","topped","top","round-topped" } roundtable table3 "northern table" { in pavwest adjectives "north","northern","first","round","topped","top","round-topped" } roundtable table4 "southern table" { in pavwest adjectives "south","southern","second","round","topped","top","round-topped" } roundtable table5 "center table" { in pavcenter is already_listed adjectives "center","round","topped","top","round-topped" } !**************************************************************************** !****(AREA SCENERY)********************************************************** !**************************************************************************** scenery research_obj "research" { !This will disambiguate between "researchers" and "research" nouns "research" found_in pavfrontwest long_desc { PrintMsgChapter1(4,19) } } scenery something1 "something" { !Basically this just exists for a "nicer" way of handling the inevitable !"look at something" or "get something" when we tell the player that !"something" is under one of the seats. :) found_in pavcenter nouns "something" is hidden, static before { object DoGet { "You hesitate to do that, not knowing what it is. Perhaps there is an easy, obvious way to determine what lies under the seat." return true } object { PrintMsgChapter1(4,10) : return true } xobject { PrintMsgChapter1(4,10) : return true } } } !---------------------------------------------------------------------------- scenery bluepads "blue cushions" { found_in pavcenter article "the" is plural nouns "cushion", "cushions", "pillow", "pillows" adjectives "couch", "seat", "blue" long_desc { PrintMsgChapter1(3,self) } before { object DoGet { PrintMsgChapter1(4,15) : return true } } } !---------------------------------------------------------------------------- scenery blueseats "blue seats" { found_in pavcenter article "the" is plural misc 10 !A countdown on how long to wait before giving player tray hint. nouns "seats", "seat", "bench", "benches", "couch", "couches" adjectives "blue", "heavy", "wide", "padded" long_desc { PrintMsgChapter1(3,self) } before { object DoSearch { Perform(&DoLookUnder,self) : return true } object DoLookUnder { if (tray is moved) { "You locate nothing else under any of the seats." } else { "A round serving tray is under one of the seats." move tray to location : tray is moved Perform(&DoGet,tray) AssignPronoun(tray) } } object DoMove { PrintMsgChapter1(4,20) : return true } object DoSit { PrintMsgChapter1(4,21) : return true } } } !---------------------------------------------------------------------------- scenery petrifus_tree "petrifus tree" { nouns "petrifus", "tree", "trees" adjectives "petrifus" article "the" found_in pavfrontwest !Only spot where just one appears. long_desc { PrintMsgChapter1(3,self) } before { object DoSearch { word[2]="behind" Perform(&DoLookUnder,self) : return true } object DoLookUnder { if (alcotox is special) { if (alcotox is not moved) { "Several moments spent searching around and behind the petrifus tree are rewarded when you discover a small red pill. \"That's it,\" Yarrel rasps. \"Swallow that, and whatever else you may drink tonight will have half its ordinary effect on you.\"" move alcotox to location alcotox is moved Perform(&DoGet,alcotox) AssignPronoun(alcotox) return true } } return false !For our default message. } } } !---------------------------------------------------------------------------- scenery petrifus_multi "petrifus trees" { is plural nouns "petrifus", "tree", "trees" adjectives "petrifus" article "the" found_in pavfrontcenter, pavbackcenter long_desc { PrintMsgChapter1(3,petrifus_tree) } } !---------------------------------------------------------------------------- scenery petrifus_nothere "petrifus trees" { is plural nouns "petrifus", "tree", "trees" adjectives "petrifus" article "the" found_in pavwest, pavcenter, paveast long_desc { PrintMsgChapter1(3,petrifus_tree) } before { object DoLook { return false } !Print normal message object { PrintMsgChapter1(4,14) : return true } xobject { PrintMsgChapter1(4,14) : return true } } } !---------------------------------------------------------------------------- scenery pavtiles "pavilion floor" { nouns "floor", "tile", "tiles", "zigs", "zags" adjectives "ceramic", "coral", "azure" article "the" found_in pavcenter, pavwest, paveast long_desc { PrintMsgChapter1(3,self) } } !---------------------------------------------------------------------------- scenery greenpoles "stone pillars" { nouns "pillar", "pillars", "columns", "poles" adjectives "green", "stone" article "the" found_in pavcenter is plural long_desc { PrintMsgChapter1(3,self) pillarcarvings.found_in = location } } !---------------------------------------------------------------------------- scenery whiteorangepoles "stone pillars" { nouns "pillar", "pillars", "columns", "poles" adjectives "tall","white-orange", "white", "orange", "stone", "marble" article "the" found_in pavwest, paveast is plural long_desc { PrintMsgChapter1(3,self) } } !---------------------------------------------------------------------------- scenery pillarcarvings "etchings" { is plural nouns "etchings", "carvings" adjectives "simple", "stone", "column", "pillar" article "the" found_in 0 long_desc { PrintMsgChapter1(3,self) } } !---------------------------------------------------------------------------- scenery stonesteps "stone steps" { nouns "steps", "stair", "stairs", "stairway" adjectives "circular", "stone" article "the" found_in pavcenter, pavwest, paveast, pavsidewest, pavsideeast, \ pavfrontwest, pavfrontcenter, pavfronteast long_desc { PrintMsgChapter1(3,self,location) } } !---------------------------------------------------------------------------- scenery grayrails "gray handrails" { nouns "rails", "handrails", "railing" adjectives "gray", "grey", "hand" is plural parse_rank 0 !So that "gray" doesn't trip up on the gray cup. article "the" found_in pavcenter, pavwest, paveast, pavsidewest, pavsideeast, \ pavfrontwest, pavfrontcenter, pavfronteast long_desc { PrintMsgChapter1(3,self,location) } } !---------------------------------------------------------------------------- scenery pavilion "Garna Pavilion" { nouns "pavilion","structure" adjectives "garna" article "the" found_in pavcenter, pavwest, paveast, pavsidewest, pavsideeast, \ pavfrontcenter, pavfrontwest, pavfronteast, pavbackcenter, \ pavbackwest, pavbackeast long_desc { print "The "; : PrintMsgChapter1(3,self) print "" !Linebreak, since Msg doesn't linebreak. } } !**************************************************************************** !****(CHARACTER PLACEHOLDERS)************************************************ !**************************************************************************** male_human waitstaff "domestic staff" { found_in pavwest, paveast pronouns "they", "them", "their", "themselves" nouns "domestic", "staff", "helpers", "workers", "waiters" adjectives "wait", "domestic" article "the" is plural, hidden long_desc { PrintMsgChapter1(2,self) } } !---------------------------------------------------------------------------- male_human daroans "Daroan retinue" { found_in pavcenter, pavwest pronouns "they", "them", "their", "themselves" nouns "retinue", "humans", "daroans", "linguists", \ "researchers", "facilitators", "dignitaries", \ "people", "others", "crowd" adjective "daroan" article "the" is plural long_desc { PrintMsgChapter1(2,self) } short_desc { if (location = pavwest) { "Various members of the Daroan retinue are here." } } } !---------------------------------------------------------------------------- male_incender incenders "Incender entourage" { found_in pavcenter, paveast pronouns "they", "them", "their", "themselves" nouns "entourage", "entarage", "enterage", "incenders", "incs", \ "sheeears", "crowd", "people", "others", "alien", "aliens", \ "visitors" adjective "incender" article "the" is plural long_desc { PrintMsgChapter1(2,self) } short_desc { if (location = paveast) { "Various members of the Incender entourage are here." } } before { !!!object { PrintMsgIntro(2,1) : return true } !!!xobject { PrintMsgIntro(2,1) : return true } } } !**************************************************************************** !****(MISC CHAPTER1-ONLY ROUTINES)******************************************* !**************************************************************************** routine CheckEloraLeaving() { if (elora in pavcenter) { if (thyras in 0) and (shevra in 0) and (fesha in 0) { if (eloranote is special) { !All conditions are met! PrintMsgChapter1(10) move elora to pavbackcenter elora is hidden !Because we print her separately. :) } } } } !---------------------------------------------------------------------------- routine ShowTables(loc) { if parent(table1)=loc { WhatsIn(table1) } if parent(table2)=loc { WhatsIn(table2) } if parent(table3)=loc { WhatsIn(table3) } if parent(table4)=loc { WhatsIn(table4) } if parent(table5)=loc { WhatsIn(table5) } } !---------------------------------------------------------------------------- routine PrintCupDetail(obj,showfill) { if (obj.misc = 0) { "empty"; } else { if (showfill = true) { if (obj.misc #3 = 6) { "filled with "; } elseif (obj.misc #3 >= 4) { "mostly full of "; } elseif (obj.misc #3 = 3) { "half full of "; } elseif (obj.misc #3 = 2) { "partially full of "; } else { "holding a little "; } } select obj.misc case 1 "lemonlime coffee"; case 2 "berrymilk coffee"; case 3 "honeymelon coffee"; case 30 "burbaretto colada"; case 40 "brandyrum sunrise"; case 50 "whiskeygin cider"; case 60 "tequilawine punch"; } } !---------------------------------------------------------------------------- routine FillCup(obj, num, sips) { obj.misc #1 = num obj.misc #3 = sips if (num=1) { obj.nouns #1 = "lemonlime" : obj.nouns #2 = "coffee" obj.nouns #3 = "lemon" : obj.nouns #4 = "lime" } elseif (num=2) { obj.nouns #1 = "berrymilk" : obj.nouns #2 = "coffee" obj.nouns #3 = "berry" : obj.nouns #4 = "milk" } elseif (num=3) { obj.nouns #1 = "honeymelon" : obj.nouns #2 = "coffee" obj.nouns #3 = "honey" : obj.nouns #4 = "melon" } elseif (num=30) { obj.nouns #1 = "burbaretto" : obj.nouns #2 = "colada" obj.nouns #3 = "" : obj.nouns #4 = "" } elseif (num=40) { obj.nouns #2 = "brandyrum" : obj.nouns #2 = "sunrise" obj.nouns #3 = "brandy" : obj.nouns #4 = "rum" } elseif (num=50) { obj.nouns #1 = "whiskeygin" : obj.nouns #2 = "cider" obj.nouns #3 = "whiskey" : obj.nouns #4 = "gin" } elseif (num=60) { obj.nouns #1 = "tequilawine" : obj.nouns #2 = "punch" obj.nouns #3 = "tequila" : obj.nouns #4 = "wine" } else { obj.nouns #1 = "" : obj.nouns #2 = "" obj.nouns #3 = "" : obj.nouns #4 = "" } if (num=0) { obj.adjectives #1 = "empty" } else { obj.adjectives #1 = obj.nouns #1 } obj.adjectives #2 = obj.nouns #2 obj.adjectives #3 = obj.nouns #3 obj.adjectives #4 = obj.nouns #4 } !---------------------------------------------------------------------------- !Basically there are places where it's not right to say "a stone cup" but !you can't always append "the" because "The Jerrus's Cup" is silly. So.... routine PrintCupArt(obj,cap) { if (obj.misc #2 = 0) { if (cap = true) { print "The "; } else { print "the "; } print obj.name; } else { if (cap = true) { print capital Art(obj); } else { print Art(obj); } } } !---------------------------------------------------------------------------- routine RemoveAllCups() { !Basically we have to run this before starting Chapter 2. local i for (i=0; i 0) { ret++ } } } return (ret) } !---------------------------------------------------------------------------- routine AddAnotherCup(obj) { local nextcup=0 obj.misc = 0 !And the original is empty move obj to dumpsite !And now it's gone. if (nextcup = 0) and parent(cup9)=0 { nextcup = cup9 } if (nextcup = 0) and parent(cup10)=0 { nextcup = cup10 } if (nextcup = 0) and parent(cup11)=0 { nextcup = cup11 } if (nextcup = 0) and parent(cup12)=0 { nextcup = cup12 } if (nextcup = 0) and parent(cup13)=0 { nextcup = cup13 } if (nextcup = 0) and parent(cup14)=0 { nextcup = cup14 } if (nextcup > 0) { if Acquire(table1, nextcup) { !Done } elseif Acquire(table2, nextcup) { !Done } elseif Acquire(table3, nextcup) { !Done } elseif Acquire(table4, nextcup) { !Done } else { move nextcup to table5 !If all else fails, FORCE it here. } } } !---------------------------------------------------------------------------- routine StartCupDaemon(npc) { local dmn, cur, stp dmn = (npc.misc # 5) !The deamon associated with this NPC cur = (npc.misc # 7) !Misc #7 is the intoxication so far. stp = (npc.misc # 8) !Misc #8 is the "stop drinking at" num. if (dmn > 0) and (cur < stp) { npc.misc #4 = npc.misc #3 !Prepare X turns to first drink Activate(dmn) } } !---------------------------------------------------------------------------- !Called whenever the player takes a drink from a cup routine PlayerDrink(cup) { local max, cur, stp, amt max = (player.misc # 6) !Misc #6 is the total number until drunk. cur = (player.misc # 7) !Misc #7 is the intoxication so far. stp = (player.misc # 8) !Misc #8 is the "stop drinking at" num. !Bugfix - we don't need to drink if we already defeated Thyras. if (Chapter=1) and (Section=2) and (thyras not in pavcenter) { "With excessive amounts already running through your system, the look and smell of it is enough to weaken your stomach. You consider taking another drink, but decide against the idea." return } if (cup.misc < 30) { amt = 1 print "You take a sip of "; : PrintCupDetail(cup,false) print " from the cup." } else { amt = 6 print "You drink "; : PrintCupDetail(cup,false) : print " from the "; print cup.adjectives #7; " cup, emptying it with a series of swigs." if (alcotox in dumpsite) { !If tablet was swallowed, then half effect only. cur = cur + (cup.misc/2) } else { !Otherwise, we get the full effect instead. cur = cur + cup.misc } if (cur > max) { cur=max } player.misc #7 = cur CheckWatchContext(1) !Print the "intox" message? } cup.misc #3 = (cup.misc #3) - amt !Subtract amount if (cup.misc #3 <= 0) { FillCup(cup,0,0) !Then empty the cup. if (cup = gavenncup) { !Other cups we drink from have their own text above. "The cup is now empty." } } } !---------------------------------------------------------------------------- !Called by the Daemon routine, to see if this NPC needs to take a drink. routine CheckDrink(npc) { local cup, amt, cnt, dmn, max, cur, stp cup = (npc.misc # 1) !Misc #1 is the cup this guy should own amt = (npc.misc # 2) !Misc #2 is how much the NPC will drink. cnt = (npc.misc # 3) !Misc #3 is the recurring cycle count. dmn = (npc.misc # 5) !Misc #5 is a reference to the deamon. max = (npc.misc # 6) !Misc #6 is the total number until drunk. cur = (npc.misc # 7) !Misc #7 is the intoxication so far. stp = (npc.misc # 8) !Misc #8 is the "stop drinking at" num. if (cur >= stp) { !Just in case the NPC somehow got a full cup after hitting stop. Deactivate(dmn) : return } if Contains(npc,cup) { npc.misc # 4 = (npc.misc # 4) - 1 if (npc.misc #4 <= 0) { !Hey, it's time to take a drink! cup.misc #3 = (cup.misc #3) - amt !Subtract amount if (npc in location) { !If the NPC is in the same location as us, let's give msg. PrintParaIndent !Appropriate indention or blank line print npc.name; " "; if (amt = 6) { "tips the cup and drinks it all in a series of six long gulps."; } elseif (amt >=3) { print "takes three big gulps of "; PrintCupDetail(cup,false) : print " from the "; print cup.adjectives #7; " cup."; } elseif (amt = 2) { print "takes a couple quick drinks of "; PrintCupDetail(cup,false) : print " from the "; print cup.adjectives #7; " cup."; } else { print "sips "; : PrintCupDetail(cup,false) print " slowly from the "; print cup.adjectives #7; " cup."; } if (cup.misc #3 <= 0) { print " "; : PrintCupArt(cup,true) : " is now empty." } else { print "" ! Nothing more to say. } } !Now, determine if the cup has been emptied or not. if (cup.misc #3 <= 0) { !The cup is empty, so deactivate the daemon Deactivate(dmn) !Add to this person's intoxication level. if(npc=yarrel) { cur = cur + (cup.misc/2) !Yarrel took alcotox tablet. } else { cur = cur + cup.misc } if (cur > max) { cur=max } npc.misc #7 = cur !And set the cup status as empty FillCup(cup,0,0) !Now, check special condition... did THYRAS get drunk? !This can only happen when the player is present. :) if (npc = thyras) and (cur >= max) { !We did it! We beat Thyras at the drinking game! PrintMsgChapter1(9,thyras) remove thyras !Then, check to see if it's now time for Eeeloraaa to !leave (so we don't have to wait on our next turn). CheckEloraLeaving() } } else { !Prepare the counters for the next daemon tick. npc.misc #4 = cnt ! Set counter to max again. } } } else { Deactivate(dmn) } } !---------------------------------------------------------------------------- routine PrintCupInNPC(npc,obj) { if Contains(npc,obj) { print "The "; obj.adjectives #7; " cup "; if (npc=fesha,maheo) { "held by "; : PrintHisHer(npc,false) : " flaming appendage is "; } else { "in "; : PrintHisHer(npc,false) : " hand is "; } PrintCupDetail(obj,true) : print "." } } !---------------------------------------------------------------------------- routine SmallTalkIsOver { if (thyras not in pavcenter) and (fesha not in pavcenter) and \ (elora not in pavcenter) { return true } else { return false } } !---------------------------------------------------------------------------- routine PrintMsgChapter1(num,val1,val2) { !************* Messages when walking from place to place if(num=0) { if (location=pavcenter and (val1=w_obj,e_obj)) or \ (location=pavwest and val1=e_obj) or \ (location=paveast and val1=w_obj) { "You walk "; if (val1=e_obj) { "east "; } else { "west "; } "a few paces, your footsteps against the tile adding little to the cumulative buzz of voices." : return } if (location=pavcenter,pavwest,paveast) and (val1=s_obj) { "You descend the stone steps, using one gray handrail to sturdy yourself." : return } if (location=pavwest and val1=w_obj) or (location=paveast and val1=e_obj) { "You descend the stone steps, holding one gray handrail for support." : return } if (location=pavfrontcenter,pavfronteast,pavfrontwest) and (val1=n_obj) { "You climb the stone steps, back up to the Garna Pavilion." return } if (location=pavsidewest and val1=e_obj) or (location=pavsideeast and val1=w_obj) { "You walk back up the stone steps, onto the Garna Pavilion." return } if (location=pavfrontcenter,pavbackcenter) and (val1=e_obj,w_obj) { "Staying close to the pavilion for the sake of visibility, you walk to the "; if (val1=e_obj) { "east." } else { "west." } : return } if ((location=pavfrontwest,pavbackwest) and (val1=e_obj)) or \ ((location=pavfronteast,pavbackeast) and (val1=w_obj)) { "Staying close to the pavilion as a point of reference, you walk to the "; if (val1=e_obj) { "east." } else { "west." } : return } if (location=pavfrontwest and val1=nw_obj) { PrintMsgChapter1(1,3) !Prints "walking close" message. "west, northwest, north, around to the west side." return } if (location=pavfronteast and val1=ne_obj) { PrintMsgChapter1(1,3) !Prints "walking close" message. "east, northeast, north, around to the east side." return } if (location=pavbackwest and val1=sw_obj) { PrintMsgChapter1(1,3) !Prints "walking close" message. "west, southwest, south, around to the west side." return } if (location=pavbackeast and val1=se_obj) { PrintMsgChapter1(1,3) !Prints "walking close" message. "east, southeast, south, around to the west side." return } if (location=pavsidewest) { if (val1=ne_obj,se_obj) { PrintMsgChapter1(1,3) !Prints "walking close" message. if (val1=ne_obj) { "north, northeast, east, around to the back." } else { "south, southeast, east, around to the front." } return } } if (location=pavsideeast) { if (val1=nw_obj,sw_obj) { PrintMsgChapter1(1,3) !Prints "walking close" message. if (val1=nw_obj) { "north, northwest, west, around to the back." } else { "south, southwest, west, around to the front." } return } } } !************* Can't move in a certain direction messages if(num=1) { if (val1=1) { !North from the pavilion "Darkness beyond the pavilion, an uncertain drop, and no steps -- these are the things that make it a bad idea to take a stroll in that direction. Steps at the front and sides will lead you around to the back, if you have a reason to be there." } if (val1=2) { !South into the darkness "To the south, a narrow trail becomes a wide and winding path back to the northern gate of the Chaniman Hall courtyard, offering a scenic hike through a petrifus wood that in the light of day is especially beautiful, and in the darkness of night is all but invisible. Although it's neither difficult nor dangerous at night -- maybe a little spooky -- leaving such an important event without a good reason just seems wrong. You decide against it, remaining near the pavilion instead." } if (val1=3) { !Walking close to.... message "Walking close to the pavilion, you pace a path "; } if (val1=4) { "The rising edge of the Garna Pavilion is a vertical face to the south. Steps are available at both sides and the front. Although you could probably climb up the back way here, you opt to forego such an effort." } if (val1=5) { "Nothing in the pitch black of night compels you to leave the proximity of the Garna Pavilion." } } !************* Character descriptions for Chapter 1 if(num=2) { if (val1=thyras) { indent "Your brother, wearing a smug and confident expression under the long, parted black bangs that frame his face, is by all accounts a handsome young man. He remains the same smart, talented, funny older brother he was a ten-cycle earlier, but his increasingly aloof nature and too many cycles of petty one-upmanship have worn away much of the admiration and some of the respect. Also, he isn't much taller than you these days." indent : PrintCupInNPC(val1,val1.misc) } if (val1=maheo) OR (val1=fesha) or (val1=elora) { if (val1 is special) { if (val1=elora) { "Without the light of her flame, and hidden away behind these petrifus trees, the darkness makes it impossible to get a good look at her." } } else { indent "One Incender looks very much like another, with differences primarily in size and posture. "; if (val1=maheo) { "Maaaheeeo, however, is unmistakably male; the deeper voice, the stocky build, the forceful demeanor; these things must be universal. He "; } if (val1=fesha) { "Feeeshaaa, however, is unmistakably female; the softer voice, the slighter build, the practiced grace; these things must be universal. She "; } if (val1=elora) { "Eeeloraaa, however, is most definitely female; the sweet, alluring voice, the shapely form, the gentle mannerisms; If these things are universal, they are decidedly compelling in her. She "; } "is cloaked from head to foot in self-made flame, which swirls red, rolls orange, rises and boils in blue like an ethereal skin. It was believed, at first, that the Incenders were nothing so much as bipedal, bi-limbed, sentient fire-forms, perpetually ablaze. That myth, in recent cycles, has been disproved by observation. Substance does exist beneath their fiery exterior." } if (val1=maheo,fesha) { indent : PrintCupInNPC(val1,val1.misc) } } if (val1=yarrel) { indent "She seems old beyond her cycles; shorter than most, slow of movement, and withered like the ash that falls now from her tobastick. Yarrel Sabrunen compensates for these things, and for her various vices, with an unequalled intellect. She has served as senior researcher to the office of the Chaniman during four separate administrations -- now five -- with service that must date back at least five or six ten-cycles." indent : PrintCupInNPC(val1,val1.misc) } if (val1=daroans) { indent "Linguists, researchers, facilitators, dignitaries and various others of political importance stand "; if (location = pavcenter) { "to the west. "; } if (location = pavwest) { "here. "; } "They move in slow groups, feet shifting, eyes watchful in the guise of focused conversation, socializing, forming different sub-groups, greeting one another, passing practiced compliments and graciously accepting the same. You smile, wondering if the nature of your people has really changed much in the thousands of cycles since the dawn of history. You smile wider, suspecting that it hasn't. "; if (location = pavcenter) { print "" } if (location = pavwest) { "Most of the small crowd take no notice to your inspection, although a few friendly \"hellos\" are directed your way. From time to time, members of the domestic staff push through to re-supply the tables with cups and beverages." } } if (val1=incenders) { indent if (location = pavcenter) { "Several flame-shrouded Incenders stand in a group to the east. "; } if (location = paveast) { "An uncomfortable warmth emanates from the small crowd of alien visitors. "; } "Their behavior is entirely unlike that of the Daroan retinue. Conversation is more subdued, and when sub-groups form, they're abandoned shortly after. No single Inc dominates the discussion. Their postures and movements are more relaxed, less image-conscious, as if stature among peers is either unnecessary or inalterable. Then again, an Incender might be judged by his or her humility and passiveness. You're no expert in Sheeear sociology, after all. "; if (location = paveast) { "From time to time, members of the domestic staff find a safe route through Maaaheeeo's entourage -- not a big challenge, since they are fewer in number than the Daroan retinue and seem more willing to step aside for safety -- to check and refill the self-serve beverage bowls." } else { print "" !No more to be said. } } if (val1=jerrus) { indent "Your uncle is garbed tonight, top-down, in a gray half-hat, a long brown tunic studded in small white baubles at the sleeves and collar, pants of gray with white cuffs, and close-toed sandals of brown leatherope. The beard of prior cycles is gone, as is the large majority of his now-gray hair. His wide mustache, more gray than brown now, adorns a countenance that still retains the youthfulness of earlier cycles. He is a distinguished man, descended from distinguished men. A Daroan has served as Chaniman at least once in every five incumbencies -- often more -- for the past three or four hundred cycles." indent : PrintCupInNPC(val1,val1.misc) } if (val1=shevra) { indent "Your uncle's wife shares a trait with the Incender guests tonight -- albeit metaphorical as opposed to literal -- in that she seems especially radiant. Her long hair is a fair blonde, streaked with auburn and set in waves about her shoulders. Her blouse is green, like her eyes, and her white dress is adorned in bits of emerald trim. Aunt Shevra is younger than Uncle Jerrus by a ten-cycle -- perhaps more -- but their mutual infatuation is an ardor beyond anything you have known in your nineteen cycles." indent : PrintCupInNPC(val1,val1.misc) } if (val1=waitstaff) { "The domestic staff is responsible only for stocking the cups and keeping the drink bowls full. That was your uncle's decision, in planning workable logistics for this evening. Almost as an afterthought, he had made a comment that his helpful, well-mannered nephews would probably assist in making sure all the guests were provided with drinks." } } !************* Item descriptions for Chapter 1 if (num=3) { if (val1=tobastick) { "It's nothing more than dried tobaccowheat wrapped tightly in a paper tube, lit to smoke. Yarrel holds it between two wrinkled fingers, draws it to her dry lips, inhales and lowers the hand once more. This, she repeats regularly while you watch." } if (val1=stonecup) { if (parent(val2) is living) and (parent(val2) ~= player) { print CArt(parent(val2)); " is holding that cup, and it is currently "; } else { "This cup is currently "; } PrintCupDetail(val2,true) : print ". "; "It is made of a pale stone, lightweight, polished like marble and etched with three designs -- one, a jagged emblem symbolizing the house of Daroan; the next, a fist-like design for the office of Chaniman; and finally, a circle carved to contain smaller, irregular patterns, representing God. The cup is tinted "; print val2.adjectives #7; ", although you suspect each one is alike in every other way. Still, it's a handy way to know one from another." } if (val1=gavenncup) { !We only have this cup in our inventory during cutscenes. "The cup is made of a pale"; if (Chapter >= 2) { print " "; gavenncup.adjectives #7; } ", lightweight stone. The three designs carved into it have faded and worn from many cycles of frequent use, but the second, a fist-like design representing the office of Chaniman, is still vaguely visible. Chips, nicks, and other repaired cracks mark it in places, but it still remains remarkably preserved after these thirty-or-so cycles. "; if (Chapter >= 2) { "This was your brother's cup that unforgettable night at the Garna Pavilion, and in an indirect way, it made the encounter possible. "; } "The cup is currently "; : PrintCupDetail(val1,true) : print "." } if (val1=roundtable) { "The table stands on a single blue leg, short and beveled at its base. The round tabletop is a polished white. "; !Contains, next } if (val1=eloranote) { if (self is open) { "The small note is creased in several places. Words appear in a strange but fascinating script -- the style is unique but the language seems clear." } else { "The note has been folded over in multiple places. It isn't possible to examine, let alone read what's inside, but your name is written in an elegant hand across one outer edge." } } if (val1=tray) { "Sturdy, round, large; the surface of the tray is felted in gray and green grip-fabric, which is probably also fireproof. "; if (tray.holding = 0) { print "" !Nothing to print, so end the line } } if (val1=blueseats) { "Each seat is wide enough to sit two, maybe three people. The back and bottom cushions are completely fireproof, padded in a coarse blue material. The frame, simple as it is, appears to be made of petrifus wood -- again, completely fireproof." } if (val1=bluepads) { "The cushions are made of a heavy blue material, entirely resistant to fire." } if (val1=pillarcarvings) { "The etchings on the green pillars seem nothing more than decorative design work." } if (val1=greenpoles) { "Three pillars east and three more west support a partial ceiling over the central pavilion. Simple etchings -- carvings in the green stone -- cover each column." } if (val1=whiteorangepoles) { "These pillars may be formed of marble, streaked in orange and white." } if (val1=pavtiles) { "Pastel tiles of coral and azure form the pavilion floor, arranged in a pattern of zigs and zags." } if (val1=petrifus_tree) { "The trees lack low-growing branches, but they fork and spread near the top into short limbs. Petrifus leaves are wonderful this time of the cycle, when for a short while they adopt a pale blue hue that becomes translucent in sunlight. Even now, in the cover of darkness, the blue-gray sheen is a nice change from the greens and browns of more prosaic varieties. However, the quality most desirable in any flora to be found in the proximity of an Incender -- let alone an assembly of Incenders -- isn't the color, shape, or size; petrifus trees cannot burn." } if (val1=punchbowl) { "The bowl is filled with an alcoholic beverage. From time to time, one of the gathered guests fills a cup by dipping it into the bowl." } if (val1=stonesteps) { "Circular stone steps lead "; if (val2 = pavwest,pavcenter,paveast) { "down from "; } else { "up to "; } "the pavilion, to the "; if (val2 = pavfrontwest,pavfrontcenter,pavfronteast) { "north." } elseif (val2 = pavsidewest) { "east." } elseif (val2 = pavsideeast) { "west." } elseif (val2 = pavcenter) { "south." } elseif (val2 = pavwest) { "west and south." } elseif (val2 = paveast) { "east and south." } } if (val1=grayrails) { "Gray handrails edge the stone steps. They seem more decorative than functional." } if (val1=pavilion) { !We don't need "the" here because it's printed before we start. "Garna Pavilion is a partially-covered structure of ceramic tile, stone pillars and fully fireproof decor. In fact, the structure was built for this purpose, as a comfortable and safe place of meeting for the Incender delegation."; !End without a line break. } } !************* Some miscellaneous "can't do it" messages if (num=4) { if (val1=1) { "Besides, this stuff \Iis\i moderately flammable, and it would probably be construed as an insult." } if (val1=2) { "Mixing alcohol is the kind of mischief your brother might have enjoyed several cycles ago. The momentary inclination passes, and you decide against pouring "; PrintCupDetail(val2,false) print " into "; Art(xobject); "." } if (val1=3) { "You can't pour its contents into "; PrintCupArt(val2,false) ", since that cup is already "; if (val2.misc #3 = 6) { "full with "; } elseif (val2.misc #3 >= 4) { "mostly full of "; } elseif (val2.misc #3 >= 2) { "partially full of "; } else { "holding a little "; } PrintCupDetail(val2,false) : print "." } if (val1=4) { "It would be uncouth to just pour it out here on the pavilion floor." } if (val1=5) { "Eeeloraaa Reee tilts her head in an intriguing manner, then shakes it briefly. The flame about her \"face\" pales to gray, dances briefly from the motion, then blazes red-orange. \"No,\" she says. \"Thank you. I won't be drinking tonight.\" The flame where one eye might be shifts in a quick slant -- a wink? No, surely not. "; if (eloranote in 0) and (eloranote is not moved) { "Still, it's a charming gesture, and you remain distracted by it for several more moments. When you realize that your stare may not go unnoticed, you divert your eyes quickly to the pavilion floor. A piece of paper -- perhaps a folded note -- catches your eye. It wasn't there earlier, you're almost sure. Maybe one of the wait staff dropped it?" move eloranote to location !Put it here. eloranote is not moved !So initial_desc works. } else { print "" !So that we end the line. } } if (val1=6) { "The few Incenders who are partaking in the available alcohol seem willing to fill drinks for themselves. In fact, one does so now, causing a brief burst of flame from the bowl of his (her?) choice. When the hand moves away, cup full with the liqueur, the small blaze dies almost instantly." } if (val1=7) { "Everyone here seems satisfied with self-service." } if (val1=8) { print xobject.name; " pulls back slightly as you approach with "; : PrintCupArt(val2,false) ". \"Careful,\" "; PrintHeShe(xobject,false) print " cautions. \"I can't take it "; if (xobject = maheo) { "that way "; } else { "like that "; } "without burning you.\"" } if (val1=9) { "You aren't holding "; !Anything we're not holding. if (val2 is plural) { "them." } else { "it." } } if (val1=10) { "It's still under the seat." } if (val1=11) { "Since you're trying not to offend anyone, pouring the "; print val2.name; " out onto the floor of the pavilion is "; "a bad idea. Besides, that would make a large, dangerously slick mess. You decide against the idea." } if (val1=12) { "It isn't really practical to pour "; PrintCupDetail(val2,false) print " from the bowl into anything else, being big, bulky and awkward the way it is." } if (val1=13) { print "Drenching "; Art(xobject); " in "; PrintCupDetail(val2,false) print " won't portray the stable, mature young man you're trying to be. "; if (xobject = incenders) { PrintMsgChapter1(4,1) } else { print "" !Nothing else to print } } if (val1=14) { "The trees grow beyond the pavilion -- not right here on it." } if (val1=15) { "The seat cushions are better left on the seats." } if (val1=16) { !Can't give anything to Elora when she is at pavbackcenter. "\"Forget about gifts,\" she says. Her voice is a whisper that beckons, teases, captivates. \"I only want one thing, tonight.\"" } if (val1=17) { "She isn't close enough yet..." } if (val1=18) { !Any time trying to "touch" a lit Incender, do this. if (val2=0) { "And suffer from disfiguring burns? You reconsider, finding it wiser to keep a safe distance instead." } } if (val1=19) { !Generic "That isn't something you can see" message "That isn't something you can really\I see \ihere." } if (val1=20) { "Each bench is firmly affixed to the tile. You won't be able to move them." } if (val1=21) { "You were sitting earlier in the evening. Now, you have a desire to stand, walk around, and perhaps see about drinks." } } !************* Gave a cup to an NPC.... thanks! if (num=5) { !val1 is object, val2 is NPC. print val2.name; " "; if Contains(tray,val1) { print "lifts the "; val1.adjectives #7; " cup and takes it carefully from the serving tray." } else { "accepts the cup of "; : PrintCupDetail(val1,false) : print "." } } !************* Thanks message after filling the cup OR giving the cup. if (num=6) { !val1 is the NPC we just gave the drink to. local cur, stp cur = (val1.misc # 7) !Misc #7 is the intoxication so far. stp = (val1.misc # 8) !Misc #8 is the "stop drinking at" num. if (val1=thyras) { "He casts a sour look your way, apparently a substitute for \"thanks.\" "; if (thyras.misc #7 = 0) { "Then he squints, studies you, grins sardonically. \"You won't outlast me, little brother. When you're numb and speechless, I won't even be impaired.\" Again, he squints. You imagine what he might be thinking now. His bravado lends too much credit to himself, and too little to you. \"But, you go first,\" he finishes." } else { "" ! Nothing else to say. } } if (val1=shevra) { if (cur >= stp) { "\"This will be plenty for me,\" she says." } else { "\"Thank you, dear,\" she says." } } if (val1=jerrus) { if (cur >= stp) { "\"No more after this, Gav,\" he tells you. \"I would rather not blur my thinking tonight.\" "; } else { "\"Ah, thank you, Gav,\" he says with a smile. \"If you have a moment, you might offer drinks to our other guests, too.\" "; } if (fesha in pavcenter) { "He leans close then, and in a whisper, says \"Feeeshaaa seems obsessed by trivial matters tonight. The Ambassador and I have more serious concerns to address, and I'm finding it difficult to push forward when his wife insists upon prolonging the small talk. "; if (fesha.misc #7 > 0) { "Perhaps she just needs more to drink.\"" } else { "Perhaps if she's busy drinking instead...\" The sentence ends with a wink." } } else { print "" !Close/end the line, nothing else to print. } } if (val1=maheo) { if (cur >= stp) { "\"Once again, my thanks,\" he says, \"but this will be enough.\"" } else { "\"My thanks, young Daroan,\" the Ambassador says." } } if (val1=fesha) { "She bends slightly forward in a bow of... courtesy? \"My thanks,\" she says softly." } if (val1=yarrel) { if (cur >= stp) { "\"Even with an improved tolerance,\" she says, \"I do have limits. Thank you, and this will be the last for me.\"" return } "\"Just what I needed,\" she says with a smile, her voice cracked and raspy. "; !Four different messages, one for each liquor type. Note that if !the player doesn't bring all four, the chapter can still be !finished -- it will just be harder, since the clues are missing. if (val2=30) { !Burbaretto Colada "Burbaretto Colada -- and in a "; print yarrelcup.adjectives #7; " stone cup. It's not exactly stone, though. We call it 'liquid stone,' and each tint is a dye introduced to the mixture before hardening in a super-heated mold. It's a technique for which I'm especially proud. A tip, if you're interested. You can refer to each cup by its color alone -- 'pink' or 'blue' or 'gray' instead of 'pink stone cup' or 'blue stone'... you get the idea. On the subject of ideas, I have a good one. How about bringing me something stronger next time?\"" } if (val2=40) { !Brandyrum Sunrise "\"Brandyrum Sunrise -- not my favorite, but a drink is a drink. You know, many cycles ago, I conducted a study on the inebriating effects of alcoholic beverages, at a time when Chaniman Jaestens wanted to mandate a minimum and maximum drinking age. That didn't happen, of course, but what I discovered is interesting. This Brandyrum is more potent than Burbaretto, but less so when compared to Tequilawine. Whiskeygin is weaker than the Punch, but does exhibit stronger effects than Brandyrum.\"" } if (val2=50) { !Whiskeygin Cider "\"Whiskeygin Cider -- good stuff, this. Many cycles ago, during my commissioned study on the effects of alcohol consumption, I stumbled quite accidentally upon something. "; if (alcotox is not moved) { "I found that a certain blend of plant and mineral, fused and then distilled into residual powder, could be ingested to actually curtail the effects of alcohol. I have recently discovered a way to harden this substance to tablet form. "; "Chaniman Garna expressed no interest in this, but I plan to approach your father soon. I think he may be more open-minded about these 'alcotox tablets' -- about a public release, I mean. I already had one tonight. One is enough to reduce intoxication by half, although it doesn't work retroactively. I brought another, intending to further ensure my sobriety, but I misplaced it. You haven't found a small red pill "; "somewhere around here, I presume? No, probably not. It isn't something you are likely to notice unless the effort to find it is deliberate. Although it eludes me, you're welcome to it if you find the thing. My guess is it rolled under, into, or behind something nearby. If you didn't know to look for it, though, I doubt you would ever find it. Well, now you know.\"" alcotox is special !Now, we can locate the Alcotox Tablet alcotox is known !Likewise, the player has heard about it. } else { "You've heard this before, haven't you? You even found the pill, didn't you? "; if (alcotox in dumpsite) { "Well, I hope you make good use of it.\"" } else { "It's safe to swallow -- trust me.\"" } } } if (val2=60) { !Tequilawine Punch "\"Tequilawine Punch -- my favorite -- but don't take that as an intent to limit my options. Tonight, variety is in order. If you plan to serve as ad hoc host, let me make a recommendation. For refills, carry extra cups. You might take this one back with you, returning after a quick dip into one of the drink bowls, but a full cup can certainly be poured into an empty one -- even an empty one still being held by someone else! Well, it's just a suggestion.\"" } } } !************* Reading Elora's note, when it's open. if (num=7) { print "" !Blank line first. "\IGavenn Daroan," "It is important that I meet with you tonight, privately. As this may be the only opportunity to arrange such a meeting, I am most hopeful that you will agree. This may seem unduly clandestine, but again, if not tonight, then likely never. Behind the pavilion, trees in an ideal alignment should offer the right kind of obscurity for "; "this purpose. I propose that we meet there, when our elders conclude the introductory dialogue that generally precedes the more relevant discussion. I should be able to slip away unnoticed then, to the spot I have indicated. By now, you are doubtless aware of the relationship I have formed with your brother, in what time alone we have shared "; "during manifold, less formal meetings between our two peoples. Unless he has confided in you, which I believe to be very unlikely, you are confused and curious as to the nature of such an arrangement. This is, in part, one reason I feel it necessary to request this covert rendezvous. It may be incumbent on you to contrive a leave for your brother, since I do not wish him privy to this. Please indulge me, and my thanks to you." "------- Eeeloraaa Reee\i" print "" !Creates a blank line if (eloranote is not special) { eloranote is special indent "You read through it once, twice, again. The words are certainly formed in unusual ways, but that doesn't mean it's authentic. "; if (location = pavcenter) and (elora in location) { "You glance quickly at the enkindled daughter of the Incender Ambassador, but if she takes any notice to your perusal of her purported note, it doesn't show. "; } "The paper is ordinary -- in no way fireproof -- and the message itself doesn't seem like something she would have dictated. "; } "As a hoax, it would seem to expect an absence of reasoning on your part. As a joke, it would seem an elaborate one. As the genuine thing, it would seem a mystery." } !************* Problems that prevent Thyras from drinking too. if (num=8) { if(val1=1,2) { print "" ! Blank line "Thyras smirks as you finish the drink. \"This won't be much of a contest if I "; if (val1=1) { "don't have a cup, too"; } if (val1=2) { "sit here with an empty cup"; } ",\" he remarks." } if(val1=3) { "From here, Thyras was unable to see you drink it." } } !************* Player or NPC is drunk... let him/her know so. if (num=9) { if (val1=player) { print "You are completely drunk now." print "" !Blank line print "...No, "; select random(4) case 1: { "that's not right." } case 2: { "that can't be right." } case 3: { "you must be confused." } case 4: { "it didn't happen that way." } "You came close this night, but even with his higher tolerance, Thyras reached his limit first. So back up, change that, to a point where neither you nor your brother had yet to take a drink." "(Intoxication levels for Gavenn and Thyras now reset)" } if (val1=fesha) { print "" !Blank line "The Ambassador's wife begins to sway slowly, side to side, front to back. \"Need... go... I can walk...\" she says, then stands. "; "Maaaheeeo rises as well, but Aunt Shevra motions him to sit." indent "\"You two gentlemen still have much to discuss,\" she remarks. \"I can lead Mrs. Reee back to your drop-shuttle, if she is still capable of following behind.\" Feeeshaaa sways again, more as a nod than a lack of balance, and the two woman depart to the west." } if (val1=thyras) { "He bends forward abruptly, half stands, makes retching noises and staggers down the steps to the south. As he disappears into the night, making haste through the petrifus wood in the direction of Chaniman Hall, you can just hear his slurred shouts. \"To the Void with you, Gavenn! Damn you to the Void!\" Your father, the Ambassador, all the others are unable to ignore the further noises as he proceeds to do more than retch, somewhere off in the night. Moments later, he has moved beyond the limits of hearing." } } !************* Elora gets up and goes to the back of the pavilion. if (num=10) { print "" : indent !Blank line "Eeeloraaa rises quietly from her seat when her father and yours begin a more serious, more focused discussion. With the wives gone, your brother en route back to Chaniman Hall, and all others occupied by distractions of their own design, no one else notices the fiery girl depart to the east, walking north around to the back of the pavilion." } !************* Small talk has ended. if (num=11) { !Not every number offers smalltalk -- so that it doesn't get crowded. if (val1=0) { indent "Now that the others are gone, Uncle Jerrus and the Sheeear Ambassador are engaged in a more relevant discussion." } !The two men say something once every three turns. However, some of !the others are still here, they'll say something sometimes too." if (val1=2) { print "" "\"I hope the setting is a comfort to you and your family,\" your uncle says to Ambassador Reee." } if (val1=5) { print "" "\"Well enough,\" the Ambassador assents." } !Fesha SHOULD still be here, so give her a normal spot in the slot. if (val1=8) and (fesha in location) { print "" "\"An interesting fact,\" the Ambassador's wife says to your uncle. \"In one of our ancient languages, the word for 'treacherous demon' sounds very much like your word 'Chaniman.'\"" } if (val1=11) { print "" "Uncle Jerrus chuckles. \"I'm pleased that our two peoples can form this trust,\" he says, smiling to Maaaheeeo." } if (val1=13) and (fesha in location) { print "" "\"Your ways differ greatly from ours,\" Feeeshaaa Reee begins. \"In our society, four castes form The Complete.\"" } if (val1=14) { print "" "\"Excuse me for saying so,\" -- this, from Ambassador Reee -- \"but we believe Iuros is only marginally habitable.\"" } if (val1=17) { print "" "\"We will discuss details, of course,\" your uncle tells the Ambassador. \"Tonight.\"" } if (val1=20) { print "" "\"It was, after all, your proposal, Ambassador Reee.\" -- your uncle again." } if (val1=21) and (fesha in location) { print "" "Feeeshaaa suddenly interjects with another fascinating fact. \"A member of one caste must marry into another, which of course forms a family of six possible variations.\"" } if (val1=23) { print "" "\"Your people lack space travel,\" Maaaheeeo reminds your uncle. \"We have studied your moon. You have only admired it as a pretty circle in the night sky.\"" } if (val1=26) { print "" "\"These are the things we must discuss,\" Uncle Jerrus says, his smile never faltering." } if (val1=28) and (fesha in location) { print "" "The Ambassador's wife continues to reflect upon the virtues of\I Sheeear \ifamilies. \"My caste color is green,\" she says, apparently for the benefit of anyone willing to listen. \"Maaaheeeo is of the blue caste.\"" } if (val1=29) { print "" "\"I look forward to starting that discussion,\" replies Maaaheeeo." } if (val1=30) and (fesha in location) { print "" "\"A child, upon reaching adulthood,\" Feeeshaaa Reee goes on, \"may select the caste of either parent. This choice can be a very difficult, very important one, since it determines which three castes -- and as a direct result, which three families -- an adult\I Sheeear \imay marry into.\"" } if (val1=32) { print "" "\"As do I,\" agrees Uncle Jerrus, nodding to the Ambassador." } !Say nothing here for a short while... 9 turn gap. !And then, if we are STILL in small-talk mode.... if (val1=41) { print "" "\"Pleasant evening,\" remarks Uncle Jerrus, filling the silence with more idle chat." } if (val1=44) { print "" "\"Not at all like Iuros, I suspect,\" the Ambassador comments." } !More? Maybe so. Think of more later. } !************* Elora's actions near the end. if (num=12) { if (val1 = 0) { print "" : indent !Blank line and indent "A glimpse of flame behind the nearest petrifus becomes Eeeloraaa Reee, when she steps around at your approach. \"A moment, please,\" she says softly. The flame about her throat subsides, rolling away and inward, trailing downward, exposing diamond-shaped nothingness where an upper chest might otherwise have been. You notice, though, that the gap has texture, shading, curve. Another starts small and grows wide, where an abdomen might be. Her shoulders lose flame next, forming spirals down the length of her arms. \"It's called flameshaping,\" she whispers. \"Our elders consider it a fad, but it's far less dangerous than, say, darediving.\" In a moment, she fades completely, though her breathing remains and you can feel her proximity." elora is special !For an Incender, "special" means flameless. AssignPronoun(elora) !So "her" works correctly now. PlaySong(player.misc #9) !PlaySong will check allow_music } elseif (val1 = 1) { print "" : indent !Blank line and indent "Your eyes adjust to the dimness once more, and you can almost see her shape. \"I require only a moment to cool,\" she whispers, moving closer. She is concealed by the night, like a dark chamelecat. No, you decide -- bad comparison. You catch a glimpse of bare thigh, a rounded hip, the top of a breast. The girl is nude, shrouded in darkness, exuding heat, coming closer. Another step, and her warm leg brushes yours, as solid and real as any other." } elseif (val1 = 2) { print "" : indent !Blank line and indent "Her hands touch your shoulders, running down your arms. She takes your hands in hers, guiding them to her face. Her skin -- you decide that it\I is \iskin -- is warm, soft, feminine, alluring. She presses closer, inviting, and you oblige, moving your hands to her shoulders, her sides, her hips. She moves forward, her cheek touching yours, soft and warm, and her hot breath lingers a moment against your ear. \"I can stay this way for a long while,\" she whispers, \"but let's not waste a moment.\" Her lips brush yours expectantly." } elseif (val1 = 3,6,9) { "Her warm, soft lips brush lightly against yours." } elseif (val1 = 4,7,10) { "She kisses you lightly, tilts her head, waits." } elseif (val1 = 5,8,11) { "\"Please...\" she whispers. \"Please kiss me...\"" } } !************* Trying to "Listen" to the various characters here. if (num=13) { if (val1=jerrus) { if (SmallTalkIsOver) { "Your uncle seems to be engaged now in a heated discussion with Ambassador Reee. The adjective seems doubly appropriate." } else { "Uncle Jerrus seems busy with the pleasantries of small talk. Knowing your uncle, though, he would rather find appropriate distractions for the superfluous attendees, hoping to begin the summit without undue delay." } } if (val1=thyras) { "Your brother is a man of few words tonight. Although you catch him casting furtive glances at Eeeloraaa, he hasn't spoken a word to her." } if (val1=fesha) { "The Ambassador's wife interjects fascinating bits of Sheeear trivia as her contribution to the opening discussion. Uncle Jerrus seems irritated by it." } if (val1=maheo) { if (SmallTalkIsOver) { "Ambassador Reee is now debating various issues with your uncle. Are settlement rights to Iuros worth a host of new technologies to a much less advanced society? Is the moon too bleak to sustain life? What technologies will be offered in exchange?" } else { "Ambassador Reee contributes to the introductory small talk." } } } !************* Final text before moving ahead to the next chapter if (num=99) { indent "You pull Eeeloraaa close, bringing your hands around her sides, to her back, holding her, hands moving up to the backs of her shoulders, and you kiss her. Her breath is still warm. In this moment -- this one, perfect moment -- you are able to forget that her people have traveled such a distance across the depths space, from a world unimaginable. Right now, she is neither alien nor a stranger. Her skin is warm, dark and soft. Her touch is more intoxicating than any drink, even though a part of you realizes this must seem true\I because \iof your prior drinking. No matter, now. She feels like an ordinary -- no, modify that, an\I extraordinary \igirl. Her lips are like any girl's lips, as are her breasts, her back, her body." indent "Secluded in privacy, bathed in darkness, her kiss returns with heightened fervor. This continues in a way time can't measure, and it evolves, grows, blossoms into more -- much more -- this night, this place, these moments. As the Accord becomes a reality, as your people continue their banter in the now-hidden light, as hers wait patiently, all oblivious to the private union taking place beyond the limits of their senses, you reach new heights in euphoria." indent "It ends, as the ancients said all such things must, and she rises slowly, steps away, sinking into shadowy darkness. In a moment, a sudden brilliance forces an involuntary hand up to shield your eyes. Once again, Eeeloraaa is ablaze, a bright red-orange warming the air, casting shadows of her own making in every direction. She steps away, backing further, foot behind foot. You rise, uncertain now what to say or do, and she stops for a moment. \"Stay, my Gavenn,\" she whispers. \"I must go now. I will be married to your brother soon, making me to my people what yours might call a heretic.\" She laughs at that, then sighs. \"Of course, my unconventional choice of caste will only add to that. You must understand, I predict great things for Thyras Daroan, and I feel it my duty to encourage and assist him. In the end, I know it is the right decision.\"" indent "She is gone, into the night, perhaps en route back to the Incender drop-shuttle." ContinueChapter(2,1) !Print the "[Continue]" message and go forward. } }