Version Release 3.0 (3:14pm 12-10-06) Work on this new version was occasioned by the discovery of the missing first pages of the XXX Gang story, which is the Easter Egg game within the game. Having opened the files to do some tinkering, however, I decided to see if there were any bug reports that had gone unfixed. Big surprise, there were. - Modified about text for CYOA game to mention the new pages. - Added 'climb ladder' to PinsideHouse location. - Fixed 'draw on blueprint with pencil' handling. - Changed 'version' and 'about' texts to be in line with Version 3.0. - Changed the #2 pencil to be a 'school pencil', because '#2' couldn't be parsed by TADS. - Fixed Psewerhole.DoLookin() and .DoLookunder responses. (Gad, this is based on really early code, and put together in a manner I now consider highly illogical and convoluted. I'm tempted to "fix" the sewer hole in the Present, but I don't want to risk breaking it, since the code has worked for ten years.) - Fixed responses for any attempt to draw on the blueprint when the Architect is present. - Fixed messages when attempting to draw with the lead pencil. - Fixed missing else-if after 'draw on blueprint with blue pencil' message. - Added missing verDoOpenWith() to Pgrating. - Fixed response to PsewerHole.DoLookin(). (12:11pm 12-11-06) - Added new CYOA pages. Fixed an OCR-generated typo in the old material. - Fixed inconsistencies with climbing the large tree in the future when future.state = 2. It was allowing you to shimmy along the branch to the attic, then chiding you for getting there by cheating, among other erroneous behaviors. Wrote a few more descriptions to go with response points. - Fixed bug with trunkRoomAtticOpening.verDoEnter() and .doEnter, related to the above. - Modified numObj methods to check for global.wizard rather than actor.islit for the wizard-setting powers to set future.state and global.timeLoc. - Changed the wizard-power invoking magic word to 'kertimetravel'. - Fixed bug with shimmyTrunk's location method. - Modified handHolds.ldesc to mention strong branches up ahead only when future.state = 3. - Added 'shimmy on' 'shimmy off' 'shimmy forward' 'crawl on' 'crawl off' 'crawl forward' synonyms. - In general, tried to straighten out all shimmy/climb/crawl synonyms with and without prepositions for climbVerb, inVerb, outVerb, and climbDownVerb. Probably with mixed success. - Added alongPrep because the game told you that you can 'shimmy along' the trunk, but without allowing it. - Added backPrep, for crawling back to safety. (10:09am 12-12-06) - Using the wizard verb now gives you 500 dollars as well. - Before calling yorn() when asked questions by NPCs, the game now prints a double prompt >> instead of a single one, to distinguish it. - global.lastScore now accumulates a total for the turn, rather than setting itself solely to the last score tallied, leading to an incorrect score notification (only the notification feature was affected). - Removed 'new' and 'accounts' ask adjectives from Laura's desk, because it interefered with >ASK LAURA ABOUT NEW ACCOUNTS. - Added 'accounts' to the account object. - Tweaked newlines in new account transaction. - Removed newline from beginning of garageOpenerItem.doPush output. - Being a wizard lets you pick up the wheelbarrow. - Commented out old testing cheat when entering the antique store. (11:02am) Oh, man. The money handling is all screwed up. It's redundantly keeping track of the player's assets twice, with global.money (the original system, deprecated but intact) and playerCash both tallying the same number in parallel, and some functions checking global.money and some checking playerCash.value. I really would like to clear that up, but what a can of worms. I mean, it works right now, and if I try to fix it, I have to fix eighty things at once without introducing an error into any of them, which is -- sigh, risky. Grrr. Grumph. Hrm. Part of it is that if I just use playerCash and moneyItems, I can see how to do something I didn't have the patience to do at the time, which is actually let the player drop little free bits of cash in various places, and having them agglomerate when held or stored together. But that's a pretty big deal, too! I guess what I will do for the moment -- I was chasing a bug when you had cash and sold the wheelbarrow, and the original cash you had disappears -- is try to fix that and leave the rest of it as it is for the moment. Ok, wait. This is what started me on this line of thinking. What the problem is is that the handleMoneyTrade function is broken, and not doing what it is purportedly supposed to do. A smarter bit of code that does a recursive check to see if the player has cash tucked away somewhere, then adds the new cash to that stash, exists in the sellable class doSellTo() method. I need to put something like that in the handleMoneyTrade function, except that leads me to want to make deeper changes to that function while I'm at it. I guess I should stil try to be surgical. - Added topLocation() function. - Changed penny.askingAboutMe() for Laura, who erroneously said that you could deposit pennies into your account. - Rewrote handleMoneyTrade() function. Kept the magic ("Presto!") part where if you left some cash lying around somewhere other than the transaction that just took place, it is all magically gathered up and put in your possession, just because keeping that means I don't have to rewrite anything else. - Edited and trimmed the text when crawling along the tree, which was nicely written but way too dense after the halfway point. - Changed the floorDesc for several of the crawling-on-the-branch rooms, so that looking at the ground inspires vertigo and sends you to hangingForDearLife immediately. (1:52pm) Hmm. Picton makes an interesting point about the future. One, there is no incentive to get into the house there via the trunk, since you can get in via the secret passage. He suggests making you have to find something in the future house before the secret passage can be created, which is a good idea in theory, but I have to think it through more thoroughly. It occurs to me that, in general, apart from the ATM, the future world is entirely scenic rather than connected to the plot. Even if you go in the house and find future Fred, dealing with him is optional. Getting into the house lets you see what a mess it is, but it's also optional. You don't actually have to. I was personally shocked to see that getting successfully to the house via the tree trunk doesn't give you any points! I need to fix that, but that is a big mess because of the way the global.scoreCard is hard-coded. In fact, just giving points for that would at least give the player the motivation of doing it to get a full score at the end, but that's lame. What is the reason for going in the house? There has to be something to *do* besides seeing how crappy everything is. Note to self for tomorrow: meeting future Laura is a hell of a chunk of non-interactive text. (11:13am 12-13-06) - Edited meetLaura and meetLaura2 cutscene text. - Opening the secret passage causes FLaura to show up, if she hasn't already. - Changed engineering blueprints to engineering schematics, for disambiguation and accuracy of terminology's sake. - Suppressed FFred's actorDesc if you're meeting him for the first time. - Architect now says he'll give some thought to the "secret switch" rather than the "secret mechanism", because asking about the mechanism got a "I don't have an opinion about springs and tumblers" response. - Fixed FLaura.actorDaemon bug that incremented a counter erroneously. - Entering the FAttic for the first time also triggers FLaura to appear, if she hasn't already. - Added muddy car tracks scenery to go with a description added to the FLaura.actorDaemon. (Although, I'm not sure that gets printed in the current configuration. However, I might continue to rewrite this tomorrow, in which case it will become relevant again.) - Set the FwallOpenerButton.isListed to nil. - More rewriting of the meeting FLaura scene, making it smarter about recognizing when she's waiting for you, and placing the dark sedan as scenery viewable from within the house. I really would like to break up this scene into individual turns, where you can examine the people and the car and attempt to make conversation to a limited extent, but that's really -- I dunno. First I want to just get it working a little more nicely the way it already exists, in case I run out of energy to do anything more. There are still other bugs in the game to fix. There is still an extraneous newline in the FinGarage room description the first time you enter, and I cannot figure out why it's being printed. It's driving me crazy, but I may have to just leave it that way. - Set FgarageDoor1 (and its otherside) to be open after FFred starts wandering around. - Fixed buggy FgarageBackDoor, which seemed to be open, closed, locked, and unlocked, all at the same time. - Set FkitchenBackDoor.noAutoOpen to nil after FFred bursts out. - The back door into the garage is no longer locked, since there wasn't any reason (that I could think of, though I recall that I originally had a reason) for it to be that way. - Added sayHello() messages to FFred, who didn't have any but the generic one. Sheesh. - Removed extraneous newlines when climbing up and down the stone wall to the roof of the Future house. Note for next time: there shouldn't be a working secret passage if the house is too burned to support it. This makes it possible to arrive at the new future even if you never do the rod or the roof. Fixing all three should be more or less mandatory before you can get to the endgame. (12:14pm 12-14-06) - Changed FgarageDoor1 and 2 to be isListed = nil. - Made the game more precisely aware of when the house is too damaged to allow for a working secret door. - Modified the secret door, wall, and switch in the future, as above. - Added 'charred' and 'timbers' and suchlike to the general burned-house scenery item, because those are mentioned in room descriptions. - Modified theFloor.discoverSwitch(), same. - All four sides of the house are now consistent in how their exits behave if future.state < 3 or >= 3. - Removed the down exit from FinsideHouse that allowed passage to the secret chamber, provided the player had seen it. Now it is disallowed with a special message acknowledging that it has the potential to exist. (I'm not sure how a player could have seen the passage yet end up in the burned shell of the house, but maybe it's possible, so I'll leave it like this.) - Added more synonyms for the furnitureRemains scenery, as well as an ldesc. - Changed the east exit for all behindHouse locations to say "You can't enter the house from here" instead of the generic "There is nowhere to go in that direction." - Removed (with some regret, at the lost possibility of a little more fun to be had) the teasing suggestion that "Perhaps there's another way to access the back yard" in the New Future, because there is not. Maybe in version 4... Okay, changing the garage door to be isListed = nil seems to have gotten rid of the extra newlines that were appearing in FnorthOfHouse, but the extra space is still there in FinGarage. Grr. - The furnitureRemains now only exist in future.state 2. The furniture remains had been listed everywhere as being in the future.state 0 version of the house descriptions, which didn't make any sense. However, now the problem I'm having is that all of the descriptions of the house from the four sides are exactly the same, which is really lazy of me. It doesn't even make a whole lot of sense sometimes, like describing the damage to the south half of the house when describing the north half. The east and west sides both use the same descriptions as the south. It's really crying out for a tailoring job, but argh. I can see why I didn't do it in the first place. It's not really that important, but it requires a lot of effort. Hrrm. - Did a lot of work on the north and south roof in the future. You can only walk as far as the north roof because of the hole in the south roof. Scenery items relating to the damage have been moved from the south to the north roof. Some descriptions have been rewritten as the mood has struck. - Made a separate scenery item for plural debris. - FFred.actorDesc now runs meetFred() if self.met = nil. (Aha, that's what was causing the newline problem in the garage.) - Modified Fjunk descriptions and interactions. - Modified (again) the down exit from insideHouse, saying the way is blocked with debris. - Modified the up/south exit from the secret chamber (which you can get to, if you have created the secret passage but haven't done the lightning rod or fixed the roof) so you can't exit if the house is burned. Hmm. I'm suddenly struck with the notion that Picton was valiantly and repeatedly trying to bring to my attention. I had the creation of the secret passage pegged as the point where you can open the endgame, because you get access to the second time machine. If that means that you can immediately go and talk to FFLaura and all that, then that's really screwed up. He was trying to tell me that you could create the New Future even though the Future is still a burned-up house, and I think he's right. This is a very serious problem, and I'm not sure what to do about it. I wanted to get on with some business that was more fun (a new Easter Egg mini-quest, where you collect various otherwise unimportant items from everywhere in the game, and put them in a trophy case, and get some sort of bonus prize at the end), but I really have to think about this. Hrm. - Modified the herring detector, so that it no longer tells you specifically what its job is, merely hints at it. Discerning the meaning of what it does, and how to use it, is now another small puzzle for the player. - Modified the bank teller, and the deposit and withdrawal objects, so that conversational responses are more sensible. - Teller now has responses to >[ASK/TELL] TELLER ABOUT ME. - Fixed bug in NFmasterBedroomSecretDoor where otherside pointed to a non-NF door object. - Fixed bug in deposit.verDoMake that was failing to recognize that the player was in the bank. - Added ability to type $>I at the 'how much do you want to deposit?' prompt to get a report of how much money you have with you. - Changed the antiqueDoor to a simple scenery object, with a direct entrance to the antiqueStore from FPvillage.east. - Changed the behavior of cartItem (actually, the cartMove function), and I hope not inadvisably, so that the wheelbarrows do not fit through doorways. Wait! I need to make an exception for the garage doors. - Changed FgarageDoor1 and 2 to inherit from garageDoorItem class, which they should have anyway, but now they especially need to. Grrrrrr. The garageDoorItem class does nothing useful except screw up normal opening and closing behaviors, which is exactly wrong for the garage doors in the future, which is why they didn't inherit from that class in the first place. It seems stupid to make them inherit from it, then override the only thing that class does, but that's what I have to do, so. - Wrote tailored descriptions for opening and closing the garage doors in the Future. (So there.) - FFred now has more tailored responses for interactions. - Added giveItemToSomeone method to NPC class, which is run when the player does >NPC, GIVE [OBJECT] TO ME or >ASK NPC FOR OBJECT. - Modified FFred's giveItemToSomeone, so he won't give up the whiskey bottle. - Rewrote Me.ioGiveTo() to give a more sensible response ("You accept the foo from you." was what the adv.t default ended up printing.) - Rewrote the bits that follow from giving FFred the whiskey bottle, hopefully eliminating a bug that tried to move him into the garage even when he was there. (The original code was trying to check for that, and apparently not working.) - FFred.stopActorDaemon explicitly moves the FFredFollower object to nil, just so there's no disambiguation confusion should it happen to end up in the garage also. - Added a missing check to case 1 of FFred's actorDaemon, to give a special description if the player is in the kitchen when it is run. - FFred can take the whiskey bottle even if the player has nestedly hidden it, as he now has the powers of deepIsIn() at his feverish disposal. Okay, unfortunately, it's quitting time. Reminder to self: you need to test all of this FFred code you just added. (6:35pm) (7:53pm) Back again. What I want to do with the New Future, or rather New Far Future as well, is make the game more symmetrical at the end, so that the New Far Future resembles the forest of the Far Past. Maybe in some way the New Future could resemble the Past, with construction work being done on the house once again. But I'm not sure I can do that tonight. What I'd like to do now is try to playtest the game as it stands, and see if I can get to the end. If I remember how... - Added a Note verb that takes a string as a direct object, so I can write transcript notes to myself. - Fixed a doubled word in FPclearing ldesc. - Fixed the spelling of "desiccating" everywhere it appears. (9:24pm) SERIOUS BUG: You can deposit $100 immediately after opening the account, ending up with $200 in there right away. I guess it isn't checking playerCash, or something. And fix the inconsistent map leading to the shopping village in each time period. I forgot to make it so that you can't give the envelope to PLaura, you have to go to FPLaura. Drop the schematics from the exhibition room. Work on NPC.ioShowTo(). - Added missing doordest to NFmasterBedroomSecretDoor. - NFFrontDoor no longer locked. - The shiny new key is now a 'copy', and the original no longer is, but it's now 'old', and has a modified ldesc. Playtest is over! It's still winnable, whew. But I noted 104 things, although I fixed these few, and some of them are positive comments, and some of them are things for a hypothetical Version 4 that has more substantial changes than I have time to do now. (11:06pm 12-14-06) (11:43am - 12-19-06) Just going to make some small changes, I hope. I want to spend the rest of the time thinking about maybe an improved PDF to go with the game, and how to compile it with metadata, which all the kids are doing these days. - Fixed laying -> lying in frontOfHouse room description. - Added 'moonlight', 'sunlight', and 'starlight' to permanent scenery objects. - Added 'woods' scenery to clearing, and 'leaves' to canopy. - Added ldescs to stoneWall1 and FstoneWall1. - Rewrote item.verDoPointAt(). - Modified time machine description and coolDesc to be smarter about reporting the heat state. - PLaura is now summoned when you give the Architect the hot sandwich, not when you give him the bad shingle. - Modified package.ldesc, adding the "spindly hand" description and eliminating the need to separately READ the package (though it is still allowed). - Modified the detector's happy response, eliminating a double space. - Removed, however, the package and the detector entirely, for the time being, since they don't make any sense. I might like to put the package back in if I could think of something genuinely useful to put in it. - Fixed bug where Blackie leaves the item at your feet but it appears in the shed instead. - Fixed a bug where if you throw a sandwich out of the shed, it assumes that Blackie is there to chase after it, which isn't always the case. - Planting the acorn now removes the softSpot. - Restored the original game behavior where you have to look for the fifth jug only after pouring the first four. The new change is that Blackie only appears when the fifth does, guarding that last silly jug. - Pouring out a jug adds the adjective 'empty' to that jug, and changes its sdesc and pluraldesc. - Cut the number of construction worker messages to one every other turn on average. - Experimentally starting Blackie PnorthOfHouse instead of nowhere. - Removed an assumption of location = insideShed from throwable.DoThrowTo. - Okay, I think Blackie needs to start nowhere and then appear in the shed, despite what I just did. - But I added a mention of Blackie when the burly landscaper steals the jugs. - You can snarf things from NPCs (and the squirrel) that they would not otherwise cede when you have wizard powers activated. - The jugs use deepIsIn to make their leaveList check. - The burly landscaper now appears when you're leaving the shed, not when you re-enter it later, so that you have the chance to UNDO that turn as soon as you've made the game unwinnable. (I thought it was already like that! Silly 1996-me.) This also eliminated a lot of doubled (tripled) code and put it in one sensible place. - Reluctantly added a duplicate class of emptyJugItem so that empty jugs replace the full jugs when you pour them out. - Removed loseMoney() function entirely and all references to it. - Changed numObj.doSay and .doTime to say something other than "Nothing happens", which could be misleading to players, since they don't know about the wizard verb. - Added special-case handling for throwing a sandwich, inside and outside the workshed, with and without Blackie in the former case. - Rewrote the Architect's hunger gripe slightly. - Fixed a long-standing bug in Architect.actorDesc that exactly prevented the proper description from being printed (and printed it when it shouldn't have). - Special parsing for ASK ARCHITECT FOR SECRET PASSAGE. - Swapped the garage opener and the tourist map, so that the useful item is in the locked glove compartment and the useless one is in the silly armrest. - Changed completely the lightningRod situation: - You find it by searching the antiques. - The merchant therefore doesn't greet you with a special message later on in the game, alerting you to it. - It now costs 85 dollars. - It doesn't have the weird initials 'wcwd' any more. I still wonder what that was supposed to stand for when I came up with it. - It has a slightly different sales pitch now, since the initials are gone. - The antiques merchant greets you differently the first time you bring the wheelbarrow in. She also welcomes you back on repeat visits, and asks a rhetorical question that possibly can be answered by the player. - She has an actorDesc now. - The antiques are now noAutoTake, serialSearch = true. - Eliminated the Pbend location. PfrontOfHouse.east => Psidewalk.north => Pvillage. This also eliminated the nonsense of having yet another copy of the sewer hole and the trickle of water. - Wrote a salesPitch for the metal suitcase. Removed the restriction on closing it before taking it. - Changed the divining rod to a "divining wand", because the lightning rod disambiguation was driving me crazy, especially when asking people their opinions on one or the other. - The epilogue clearing is now a rodroom, with the rod pointing at the fountain pool. - Removed the insulation from Fattic, and changed the state=5,7 description to eliminate mention of it. It mentions the warped floorboards instead. - The strip mall is now north of Fsidewalk. - Fixed the FFred bug that made a TADS object error. (It was checking whiskeyBottle.location.upstairs when the location was nil.) - Rewrote AboutTheGame text. - Pushing the wheelbarrow says "You push the wheelbarrow forward." - >GET ON with no object now defaults to the time machine platform. - >GET ON TIME MACHINE gives you a message saying you need to specify the platform, a consequence of fixing the above. (1:56pm 12-20-06) - Pushing the wheelbarrow says "You push the wheelbarrow northeast.", etc. - Fixed Fattic out/south exit messages. - Added DoUnboard check to FatticWindow and gapingHole. - Fixed bug with Fattic_tree not being declared a floatingItem. - Special message when pushing the wheelbarrow, ie, northeast when starting on a time machine platform. - Created GameInfo metadata file and cover art. - Asking the merchant about the wheelbarrow and the cannonball now works. (GRR) Argh, no they still don't. I'm too tired and fed up to figure out why her generic rejection messages, or completely blank messages, are being printed. I shouldn't have to be still doing things at this level! I wanted to be done already, but these errors are so basic. You can't ask her about any of the things she's willing to buy! GRRR. - Fixed bug where trying to take the playerCash item out of the wheelbarrow put it back into the wheelbarrow, rendering it effectively untakeable. - Fixed mechant -> merchant typo. - Fixed bug where you could buy the wheelbarrow again, but the merchant wouldn't let you leave the store with it. - Fixed bug where you could sell the cannonball without having it with you, by asking the merchant about it. (9:10pm 12-20-06) I'm making so many random changes I can't keep track any more. I'm still trying to get the dealings with the antiques merchant to work. And I started on that because I was trying to figure out the error with the teller allowing you to make a deposit after you used all your money to open the account, thus doubling your money. But now there's a completely inexplicable problem where if you just type >DEPOSIT after opening an account, the game stops doing anything, although you can type carriage returns, which is unusual for a crash. (Eight minutes later.) Hm, okay, things seem to be working more or less all right now. - Added verDoDepositIn and doDepositIn to moneyItem. - Modified the teller.makeWithdrawal so he just rejects the withdrawal rather than pretending to start the transaction and giving you a lame excuse. - Changed zigzag room exits and ldesc. Modified adjacent rooms to match. - Changed Laura's ldesc. - Added verIoDepositIn to account. - Answering '0' to the teller's request for a deposit amount will cancel the transaction. - Changed Laura's response to the rare book. - Altered default doHello check, using topLocation instead of Me.isIn. - Removed code in helloVerb that was allowing for any object, present or not, to be a validDo. - Removed code from sayVerb that made the acorn the default direct object. (Uhh.) - Modified FFred.takeBottleFromLocation, which was printing messages copied from takeBottleFromPlayer and didn't make sense in context. - Expanded timeTravel askingAboutMe responses, and made tellingAboutMe return the same respones. - Modified FnorthOfHouse state 3 description and smellDesc. - Added a thankVerb, and NPC responses to being thanked. - Added responses to >THANK YOU and >THANK GOD. - Modified Pvillage.north response to drop the bit about good old Fred. - Added check for Me.contents before FFLaura tells you to take your things. - Added ask/tell responses for the sealed envelope for various Lauras. - Added 'q' and 'quity' handling for die() function prompt. - PLaura will no longer accept the envelope. - FFLaura only reacts to conversation about the envelope when she's finished speaking. - NPCs have a notImpressedMsg, which is that they're not impressed by whatever you're showing them. That was always the default, but FFLaura now has a different message. In the future, perpaps, other NPCs will as well. (12:19am 12-21-06) Okay, I guess I'm compiling it with resources added and possibly releasing it as-is. */ /* eof */