Sarah Goes to College—a Quest text-adventure—New Release (No Joke!)

Thanks for the tips all, downloading Quest seems to have fixed all my issues.
And I got to the current end of the text adventure, may have to play multiple times to see all the different paths/choices. Gotta say this is one of the better text adventures I’ve played.

Dropping by to say that “perfect is the enemy of good” - the script of the game in its current state is really good, so I hope you’re not pursuing another rewrite for any reason other than to fix those few underlying mechanics. Also, Liam path is best path.

Been a while. Crazy. Dropped by to give an explanation. Long story short, had computer issues and lost everythign I was working on. That’s pretty disheartening, so between that and real life, it’s only been recently (like, within the last week recent) that I’ve returned to this project. Things are going pretty well, and I’ve been able to address some of the issues I’ve been stewing over since the beginning. Simply put, I feel like the story is less derivative of the original with a less linear path. Mostly finished with the first semester portion, so I’ll hopefully get the new version up within a few days. Just remember that this is a side project, so I’m only working on it when I can/when I’m procrastinating other things I really should be doing. I do know I’ve said similar things before and disappeared, but I’m a lot closer on results this time. So there’s that.

18 Likes

Is there a way to edit quest games that we download. I’m trying to learn how to use it and was wondering If I could see how the back end of a well done game is made. I’m fairly new to coding so it’s a bit of a struggle. I very much enjoyed your game tho.

Just played through the whole thing, thoroughly enjoyed it. Am looking forward to what is coming next. Great job. Sucks that you lost a whole bunch of work, it’s really the worst when that happens. Good to see you have bounced back though.

1 Like

Yes, it is very easy to unrelease a quest game.

I explained the gist of it here:

essentially quest files are actually just zip files, however if you extract the game files from the quest file you’re left with a published version that cannot be edited, this is purely due to the template/include information at the very top.

as such editing the code in notepad and deleting the include information will make it so the quest game editor will open the game as if it wasn’t yet published and all the handy quest editor tools will be exactly as they were for the author right before they hit publish.

I’m too lazy to explain it again right now, if you can’t figure it out based on my explanation in another thread, I’ll try and explain it better in a reply later.

1 Like

I actually did it. I know, I’m as surprised as anyone. Let’s call this version a reimagined successor, in that there are a lot of similarities to the original but I also tried to flesh out some things/change a few things to make it feel less contrived/add in a few ideas that I had before losing the last version. If there are any errors, please let me know so I can fix them. Other than that, please enjoy. I’ll add the link here, as well as in the first post.

http://textadventures.co.uk/games/view/tmjw7azerk23jmfodkpobw/sarah-goes-to-college

8 Likes

I like it. Although I really hope the scale gets added. Also the game is way shorter than the old one but I’m assuming changes are in the works. I like where this is going!

Also if you wanted to save time, you could copy paste some text from the old game since it is still playable even without the source code. I really liked the cruise portion of the last edition so it would be awesome to see it return in some way.

As I’ve pointed out the source code for the old game is still accessible. (If you can’t figure it out {but there’s only like 2or3 steps to access it}, and iod9963 gave permission I’d post a link to a filehoster for it here.)

Presumably the lost code isn’t the source code of the old game’s final release version, but a version of the old game that was never released and had updates and changes that were in progress that only existed on iod9963’s machine and that’s what is lost.

@iod9963 One tiny minor issue, that’s too small to really call a bug:

Do you live in “Muir Hall” or “Sequoia Hall” The version from today uses both names for the same building (extremely minor bug I guess).

edit: I too was a huge fan of the scale in the original.

1 Like

I used your method and yeah, it wasn’t that easy to get the stuff all there.
I really hope @iod9963 sees this and knows the work isn’t lost and can easily be recovered.

The issue is that I am assuming he did work on the game after he published it, edits he would’ve made locally, then those files were lost.

This is the code at the top of the file unpublished and openable in the editor:

<!--Saved by Quest 5.8.6836.13983-->
<asl version="580">
<include ref="English.aslx" />
<include ref="Core.aslx" />
  <game name="Sarah Goes to College">

and this is the version of the top of the file you get right after extracting it:

<!--Saved by Quest 5.8.6836.13983-->
<asl version="580">
  <implied element="object" property="alt" type="simplestringlist" />
  <implied element="command" property="pattern" type="simplepattern" />
  <implied element="command" property="script" type="script" />
  <implied element="command" property="multiple" type="AssociatedScope" />
  <implied element="object" property="displayverbs" type="simplestringlist" />
  <implied element="object" property="inventoryverbs" type="simplestringlist" />
  <implied element="walkthrough" property="steps" type="simplestringlist" />
  <implied element="timer" property="interval" type="int" />
  <implied element="timer" property="script" type="script" />
  <implied element="turnscript" property="script" type="script" />
  <template name="LanguageId">en</template>
  <template name="WantRestartGame">Are you sure you want to restart the game?</template>
  <template name="Again1">again</template>
  <template name="Again2">g</template>
  <template name="NothingToRepeat">There is nothing to repeat.</template>
  <template name="UnresolvedObject">I can't see that.</template>
  <template name="UnresolvedLocation">You can't go there.</template>
  <template name="DefaultObjectDescription">Nothing out of the ordinary.</template>
  <template name="DefaultSelfDescription">Looking good.</template>
  <template name="SeeListHeader">You can see</template>
  <template name="GoListHeader">You can go</template>
  <template name="And">and</template>
  <template name="Nothing">nothing</template>
  <template name="Or">or</template>
  <template name="NothingToUndo">Nothing to undo!</template>
  <template name="NotCarryingAnything">You are not carrying anything.</template>
  <template name="CarryingListHeader">You are carrying</template>
  <template name="UnrecognisedCommand">I don't understand your command.</template>
  <template name="YouAreIn">You are in</template>
  <template name="LookAt">Look at</template>
  <template name="Take">Take</template>
  <template name="SpeakTo">Speak to</template>
  <template name="Use">Use</template>
  <template name="Drop">Drop</template>
  <template name="GoTo">Go to</template>
  <template name="Go">Go</template>
  <template name="SwitchOn">Switch on</template>
  <template name="SwitchOff">Switch off</template>
  <template name="Open">Open</template>
  <template name="Close">Close</template>
  <template name="Eat">Eat</template>
  <template name="NeutralGender">it</template>
  <template name="MaleGender">he</template>
  <template name="FemaleGender">she</template>
  <template name="SelfGender">you</template>
  <template name="NeutralPluralGender">they</template>
  <template name="MalePluralGender">they</template>
  <template name="FemalePluralGender">they</template>
  <template name="NeutralArticle">it</template>
  <template name="MaleArticle">him</template>
  <template name="FemaleArticle">her</template>
  <template name="SelfArticle">yourself</template>
  <template name="NeutralPluralArticle">them</template>
  <template name="MalePluralArticle">them</template>
  <template name="FemalePluralArticle">them</template>
  <template name="NeutralPossessive">its</template>
  <template name="MalePossessive">his</template>
  <template name="FemalePossessive">her</template>
  <template name="SelfPossessive">your</template>
  <template name="NeutralPluralPossessive">their</template>
  <template name="MalePluralPossessive">their</template>
  <template name="FemalePluralPossessive">their</template>
  <template name="SelfAlias">me</template>
  <template name="SelfAlt">me; myself; self</template>
  <template name="AllObjects">all; everything</template>
  <template name="ParserIgnorePrefixes">the; a; an</template>
  <template name="UseDefaultPrefixIfNamed">false</template>
  <template name="Score">Score</template>
  <template name="Health">Health</template>
  <template name="Money">Money</template>
  <template name="CannotDoThat">You can't do that.</template>
  <template name="Done">Done.</template>
  <template name="ContainerContentsPrefix">containing</template>
  <template name="SurfaceContentsPrefix">on which there is</template>
  <template name="LockedExit">That way is locked.</template>
  <template name="NoKey">You do not have the key.</template>
  <template name="UnlockMessage">Unlocked.</template>
  <template name="LockMessage">Locked.</template>
  <template name="DefaultOops">There is nothing to correct.</template>
  <template name="VerbObjectSeparator">with; using</template>
  <template name="DefaultMultiObjectVerb">That doesn't work.</template>
  <template name="MultiObjectVerbMenu">With which object?</template>
  <template name="UseOnMenu">On which object?</template>
  <template name="GiveToMenu">To which object?</template>
  <template name="NoObjectsAvailable">There are no objects available to do that with.</template>
  <template name="Yes">Yes</template>
  <template name="No">No</template>
  <template name="By">by</template>
  <template name="NothingToTake">Nothing here to take.</template>
  <template name="NothingToDrop">You've nothing to drop.</template>
  <template name="NothingToWear">You've nothing to wear.</template>
  <template name="NothingToRemove">You've nothing to take off.</template>
  <template name="NeutralWornModifier">worn</template>
  <template name="MaleWornModifier">worn</template>
  <template name="FemaleWornModifier">worn</template>
  <template name="NeutralPluralWornModifier">worn</template>
  <template name="MalePluralWornModifier">worn</template>
  <template name="FemalePluralWornModifier">worn</template>
  <template name="Wear">Wear</template>
  <template name="wear">put #object# on; wear; put on; don; wear</template>
  <template name="Remove">Remove</template>
  <template name="remove">take #object# off; remove; take off; doff</template>
  <template name="CompassNW">northwest</template>
  <template name="CompassN">north</template>
  <template name="CompassNE">northeast</template>
  <template name="CompassW">west</template>
  <template name="CompassE">east</template>
  <template name="CompassSW">southwest</template>
  <template name="CompassS">south</template>
  <template name="CompassSE">southeast</template>
  <template name="CompassUp">up</template>
  <template name="CompassDown">down</template>
  <template name="CompassIn">in</template>
  <template name="CompassOut">out</template>
  <template name="CompassDirectionPrefix"></template>
  <template name="CompassDirectionSuffix"></template>
  <template name="UpDownDirectionPrefix"></template>
  <template name="UpDownDirectionSuffix"></template>
  <template name="InOutDirectionPrefix"></template>
  <template name="InOutDirectionSuffix"></template>
  <template name="CompassNWShort">nw</template>
  <template name="CompassNShort">n</template>
  <template name="CompassNEShort">ne</template>
  <template name="CompassWShort">w</template>
  <template name="CompassEShort">e</template>
  <template name="CompassSWShort">sw</template>
  <template name="CompassSShort">s</template>
  <template name="CompassSEShort">se</template>
  <template name="CompassUpShort">u</template>
  <template name="CompassDownShort">d</template>
  <template name="CompassInShort"></template>
  <template name="CompassOutShort">o</template>
  <template name="InventoryLabel">Inventory</template>
  <template name="StatusLabel">Status</template>
  <template name="PlacesObjectsLabel">Places and Objects</template>
  <template name="CompassLabel">Compass</template>
  <template name="InButtonLabel">in</template>
  <template name="OutButtonLabel">out</template>
  <template name="EmptyListLabel">(empty)</template>
  <template name="NothingSelectedLabel">(nothing selected)</template>
  <template name="TypeHereLabel">Type here...</template>
  <template name="ContinueLabel">Continue...</template>
  <template name="go"><![CDATA[^go to (?<exit>.*)$|^go (?<exit>.*)$|^(?<exit>north|east|south|west|northeast|northwest|southeast|southwest|in|out|up|down|n|e|s|w|ne|nw|se|sw|o|u|d)$]]></template>
  <template name="lookdir"><![CDATA[^look (?<exit>north|east|south|west|northeast|northwest|southeast|southwest|out|up|down|n|e|s|w|ne|nw|se|sw|o|u|d)$]]></template>
  <template name="look">^look$|^l$</template>
  <template name="lookat">look at; look; x; examine; exam; ex</template>
  <template name="take">take; get; pick up</template>
  <template name="undo">^undo$</template>
  <template name="inventory">^i$|^inv$|^inventory$</template>
  <template name="quit">^quit$</template>
  <template name="drop">drop</template>
  <template name="use">use</template>
  <template name="speakto">speak to; speak; talk to; talk</template>
  <template name="open">open</template>
  <template name="close">close</template>
  <template name="put"><![CDATA[^(put|insert|place|drop) (?<object1>.*) (on|in|on to|in to|into) (?<object2>.*)$]]></template>
  <template name="removefrom"><![CDATA[^(remove|take|get|eject) (?<object1>.*) (from|out of|off|out) (?<object2>.*)$]]></template>
  <template name="ask"><![CDATA[^ask (?<object>.*) about (?<text>.*)$]]></template>
  <template name="tell"><![CDATA[^tell (?<object>.*) about (?<text>.*)$]]></template>
  <template name="tellto"><![CDATA[^(tell|ask) (?<object>.*) to (?<text>.*)$]]></template>
  <template name="alttellto"><![CDATA[^(?<object>.*), (?<text>.*)$]]></template>
  <template name="oops"><![CDATA[^oops (?<text>.*)$]]></template>
  <template name="buy">buy; purchase</template>
  <template name="climb">climb</template>
  <template name="drink">drink</template>
  <template name="eat">eat</template>
  <template name="givesingle">give</template>
  <template name="give"><![CDATA[^give (?<object1>.*) to (?<object2>.*)$]]></template>
  <template name="hit">hit</template>
  <template name="kill">kill</template>
  <template name="kiss">kiss</template>
  <template name="knock">knock</template>
  <template name="lick">lick</template>
  <template name="lie">lie on; lie upon; lie down on; lie down upon</template>
  <template name="listento">listen to</template>
  <template name="lock">lock</template>
  <template name="move">move</template>
  <template name="pull">pull</template>
  <template name="push">push</template>
  <template name="read">read</template>
  <template name="search">search</template>
  <template name="show">show</template>
  <template name="sit">sit on; sit upon; sit down on; sit down upon</template>
  <template name="smell">smell; sniff</template>
  <template name="taste">taste</template>
  <template name="throw">throw</template>
  <template name="tie">tie</template>
  <template name="touch">touch</template>
  <template name="turnon">turn on; turn #object# on; switch on; switch #object# on</template>
  <template name="turnoff">turn off; turn #object# off; switch off; switch #object# off</template>
  <template name="turn">turn</template>
  <template name="unlock">unlock</template>
  <template name="untie">untie</template>
  <template name="useon"><![CDATA[^use (?<object1>.*) (on|with) (?<object2>.*)$]]></template>
  <template name="listen">^listen$</template>
  <template name="DefaultListen">You can't hear much.</template>
  <template name="jump">^jump$</template>
  <template name="DefaultJump">You jump, but nothing happens.</template>
  <template name="sitdown">^sit$|^sit down$</template>
  <template name="DefaultSitDown">No time for lounging about now.</template>
  <template name="liedown">^lie$|^lie down$</template>
  <template name="DefaultLieDown">No time for lounging about now.</template>
  <template name="sleep">^sleep$|^rest$</template>
  <template name="DefaultSleep">No time for lounging about now.</template>
  <template name="wait">^wait$|^z$</template>
  <template name="DefaultWait">Time passes.</template>
  <template name="xyzzy">^xyzzy$</template>
  <template name="DefaultXyzzy">Surprisingly, absolutely nothing happens.</template>
  <template name="help">^help$|^\?$</template>
  <template name="save">^save$</template>
  <template name="DefaultHelp"><![CDATA[<u>Quick Help</u><br/><br/>
<b>- Objects:</b>  Try LOOK AT..., SPEAK TO..., TAKE..., DROP..., OPEN..., GIVE... TO..., USE... ON/WITH...<br/>
<b>- Inventory:</b>  See which items you are carrying by typing I, INV or INVENTORY.<br/>
<b>- Moving around:</b>  Press the compass buttons, or type GO NORTH, SOUTH, E, GO TO...<br/>
<b>- Shortcuts:</b>  Press the up arrow and down arrow to scroll through commands you have already typed in. Try X... as a shortcut for LOOK AT...]]></template>
  <template name="LanguageSpecificObjectTypes"></template>
  <template name="EditorVerbDefaultExpression">"You can't #verb# " + object.article + "."</template>
  <template name="log_cmd">^log$|^view log$|^display log$</template>
  <template name="transcript_on_cmd">^(transcript|script)( on|)$|^enable (script|transcript)$</template>
  <template name="transcript_off_cmd">^(transcript|script) off$|^disable (script|transcript)$</template>
  <template name="view_transcript_cmd">^(view|display|show) (the |)(script|transcript)$</template>
  <template name="version_cmd">^(version|info|about)$</template>
  <template name="DevModeErrorWrongFormat">That's the wrong format.</template>
  <template name="DevModeErrorObjectNotRecognised">The object was not found.</template>
  <template name="DevModeErrorWrongTyp">That's the wrong type.</template>
  <template name="DevModeErrorWrongKey">The key was not found.</template>
  <template name="DevModeExecuteCommand">The command was executed.</template>
  <template name="DevModeNotActive">DevMode is not active!</template>
  <template name="DevModeDescriptionCommands"><![CDATA[<h3>FlyScript - Help</h3><b><u>Object-Commends</u></b><br/>#take object<br/>#drop object<br/>#put object1 in object2<br/>#open object<br/>#close object<br/>#on object<br/>#off object<br/>#to player<br/>#go room<br/><br/><i>Unlike the commands in the game, they are executed directly and without detours via intercept scripts.</i><br/><br/><b><u>Single-Commands</u></b><br/>#clr (clear screen)<br/>#? (help)<br/># (close game)<br/><br/><b><u>Object-Attributes</u></b><br/>#object1.attribute=object2.attribute (attribute assignment of another object)<br/>#object.attribute=true / false (set true / false)<br/>#object.attribute=? / ! (set true / false)<br/>#~object.attribute (toggle true or false)<br/>#object.attribute="value" (string)<br/>#object.attribute=15 (integer)<br/>#object.attribute=25.55 (double)<br/>#object.attribute=[item1,item2,item3] (list)<br/>#object.attribute[]=element (add element to list)<br/>#object.attribute[key]=element (add or overwrite element to list)<br/>#object.attribute=[] (create new list)<br/>#object.attribute={key1:item1,key2:item2,key3:item3} (dictionary)<br/>#object.attribute{key}=element (add or overwrite element to dictionary)<br/>#object.attribute={} (create new dictionary)<br/>#object.attribute (read attribute)<br/>]]></template>
  <template name="DevModeActive"><![CDATA[<b>DevMode: Active</b>]]></template>
  <template name="DevModeInitDegugTable">Debug table initialized.</template>
  <template name="DevModeStartScript">Initialization script started.</template>
  <template name="DevModeSetVerbs">Verbs assigned.</template>
  <template name="DevModeComExecute">Command executed.</template>
  <template name="DevModeComSetAttribute">Set Attribute: </template>
  <template name="DevModeComGetAttribute">Get Attribute: </template>
  <template name="DevModeComSelfTestFailed">The assignment as it should be after the command is incorrect.</template>
  <dynamictemplate name="TakeSuccessful">"You pick " + object.article + " up."</dynamictemplate>
  <dynamictemplate name="TakeUnsuccessful">"You can't take " + object.article + "."</dynamictemplate>
  <dynamictemplate name="FullInventory">WriteVerb(object, "be") + " too heavy to be taken."</dynamictemplate>
  <dynamictemplate name="MaxObjectsInInventory">"You can't carry any more items."</dynamictemplate>
  <dynamictemplate name="MaxObjectsInContainer">"You can't put more items in " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DropSuccessful">"You drop " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DropUnsuccessful">"You can't drop " + object.article + "."</dynamictemplate>
  <dynamictemplate name="ObjectCannotBeStored">"You can't put " + object.article + " there."</dynamictemplate>
  <dynamictemplate name="AlreadyTaken">"You are already carrying " + object.article + "."</dynamictemplate>
  <dynamictemplate name="NotCarrying">"You are not carrying " + object.article + "."</dynamictemplate>
  <dynamictemplate name="CantUse">"You can't use " + object.article + "."</dynamictemplate>
  <dynamictemplate name="CantGive">"You can't give " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultSpeakTo">WriteVerb(object, "say") + " nothing."</dynamictemplate>
  <dynamictemplate name="ObjectNotOpen">CapFirst(GetDefiniteName(object)) + " " + Conjugate(object, "be") + " not open."</dynamictemplate>
  <dynamictemplate name="AlreadyOpen">WriteVerb(object, "be") + " already open."</dynamictemplate>
  <dynamictemplate name="AlreadyClosed">WriteVerb(object, "be") + " already closed."</dynamictemplate>
  <dynamictemplate name="CantOpen">"You can't open " + object.article + "."</dynamictemplate>
  <dynamictemplate name="CantClose">"You can't close " + object.article + "."</dynamictemplate>
  <dynamictemplate name="OpenSuccessful">"You open " + object.article + "."</dynamictemplate>
  <dynamictemplate name="CloseSuccessful">"You close " + object.article + "."</dynamictemplate>
  <dynamictemplate name="AlreadyThere">WriteVerb(object, "be") + " already there."</dynamictemplate>
  <dynamictemplate name="ObjectContains">WriteVerb(object, "contain")</dynamictemplate>
  <dynamictemplate name="ContainerFull">WriteVerb(object, "be") + " full."</dynamictemplate>
  <dynamictemplate name="DisambiguateMenu">"Please choose which '" + text + "' you mean:"</dynamictemplate>
  <dynamictemplate name="UndoTurn">"Undo: " + text</dynamictemplate>
  <dynamictemplate name="DefaultAsk">WriteVerb(object, "do") + " not reply."</dynamictemplate>
  <dynamictemplate name="DefaultTell">WriteVerb(object, "do") + " not reply."</dynamictemplate>
  <dynamictemplate name="LockedObject">WriteVerb(object, "be") + " locked."</dynamictemplate>
  <dynamictemplate name="AlreadyLocked">WriteVerb(object, "be") + " already locked."</dynamictemplate>
  <dynamictemplate name="AlreadyUnlocked">WriteVerb(object, "be") + " already unlocked."</dynamictemplate>
  <dynamictemplate name="CannotLockOpen">"You cannot lock " + object.article + " when " + object.gender + " " + Conjugate(object, "be") + " open."</dynamictemplate>
  <dynamictemplate name="AlreadySwitchedOn">WriteVerb(object, "be") + " already switched on."</dynamictemplate>
  <dynamictemplate name="AlreadySwitchedOff">WriteVerb(object, "be") + " already switched off."</dynamictemplate>
  <dynamictemplate name="SwitchedOn">"You switch " + object.article + " on."</dynamictemplate>
  <dynamictemplate name="SwitchedOff">"You switch " + object.article + " off."</dynamictemplate>
  <dynamictemplate name="Eaten">"You eat " + object.article + "."</dynamictemplate>
  <dynamictemplate name="ObjectDoesNotContain">CapFirst(GetDisplayAlias(object1)) + " " + Conjugate(object1, "do") + " not contain " + GetDisplayAlias(object2) + "."</dynamictemplate>
  <dynamictemplate name="YouLooking">"You are looking " + text +"."</dynamictemplate>
  <dynamictemplate name="LookAtDarkness">"It is too dark to make anything out."</dynamictemplate>
  <dynamictemplate name="WearSuccessful">"You put " + object.article + " on."</dynamictemplate>
  <dynamictemplate name="WearUnsuccessful">"You can't wear " + object.article + "."</dynamictemplate>
  <dynamictemplate name="CannotWearIfNotHeld">"You would need to get " + object.article + " before you can put " + object.article + " on."</dynamictemplate>
  <dynamictemplate name="CannotRemoveIfNotHeld">"You would need to get " + object.article + " before you can take " + object.article + " off."</dynamictemplate>
  <dynamictemplate name="AlreadyWearing">"You are already wearing " + object.article + "."</dynamictemplate>
  <dynamictemplate name="CannotRemoveIfNotWearing">"You are not wearing " + object.article + "."</dynamictemplate>
  <dynamictemplate name="NotRemovable">"You cannot remove " + object.article + "!"</dynamictemplate>
  <dynamictemplate name="CannotWearOver">"You cannot wear that over " + GetDisplayGarment(object) + "."</dynamictemplate>
  <dynamictemplate name="CannotWearWith">"You cannot wear that while wearing " + GetDisplayGarment(object) + "."</dynamictemplate>
  <dynamictemplate name="RemoveSuccessful">"You take " + object.article + " off."</dynamictemplate>
  <dynamictemplate name="RemoveFirst">"You can't remove that while wearing " + GetDisplayGarment(object) + "."</dynamictemplate>
  <dynamictemplate name="DefaultBuy">"You can't buy " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultClimb">"You can't climb " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultDrink">"You can't drink " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultEat">"You can't eat " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultGive">WriteVerb(object1, "do") + " not want " + object2.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultHit">"You can't hit " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultKill">"You can't kill " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultKiss">"You can't kiss " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultKnock">"You can't knock " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultLick">"You can't lick " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultLie">"You can't lie on " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultListenTo">"You listen, but " + object.gender + " makes no sound."</dynamictemplate>
  <dynamictemplate name="DefaultLock">"You can't lock " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultMove">"You can't move " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultPull">"You can't pull " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultPush">"You can't push " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultRead">"You can't read " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultSearch">"You can't search " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultShow">"You can't show " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultSit">"You can't sit on " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultSmell">"You sniff, but " + object.gender + " doesn't smell of much."</dynamictemplate>
  <dynamictemplate name="DefaultTaste">"You can't taste " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultThrow">"You can't throw " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultTie">"You can't tie " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultTouch">"You can't touch " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultTurnOn">"You can't turn " + object.article + " on."</dynamictemplate>
  <dynamictemplate name="DefaultTurnOff">"You can't turn " + object.article + " off."</dynamictemplate>
  <dynamictemplate name="DefaultTurn">"You can't turn " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultUnlock">"You can't unlock " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultUntie">"You can't untie " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultUseOn">"You can't use " + object2.article + " that way."</dynamictemplate>
  <dynamictemplate name="DefaultWear">"You can't wear " + object.article + "."</dynamictemplate>
  <dynamictemplate name="DefaultTellTo">WriteVerb(object, "do") + " nothing."</dynamictemplate>
  <dynamictemplate name="DevModeErrorCantFindObject">"The object with the name '" + text + "' cannot be found."</dynamictemplate>
  <dynamictemplate name="DevModeErrorCantFindAttribute">"The attribute with the name '" + text + "' cannot be found."</dynamictemplate>
  <delegate name="AddScript" parameters="object" type="" />
  <delegate name="AssociatedScope" parameters="" type="objectlist" />
  <game name="Sarah Goes to College">

So uh yeah, just replace that second set of text with the first set. Sorry if I’m explaining this badly. But again I assume iod9963 knows this, and what’s lost is their own personal edits to their own copies of the files, which contained more up to date work than the previous final publication on textadventures.co.uk

If I understand the code correctly essentially what happens is that quest games when published need to bake the required code from their included libraries into the game, otherwise it can’t run without referencing the editor’s code libraries during play.

This trick is really only useful for fan bugfixes though. Or, well, I dunno, people who are curious and keep asking about it.

1 Like

Maybe. Either way it’s worth pointing out. I prefer the older version, it felt like there was a lot more going on, although I see what they are trying with the new one. It’s a shame I really don’t know much about the engine or the coding side of things, would love to add to it myself but I have no idea how. It’s a shame though as I really wanted to see the next stages of school and so forth that they envisioned.

1 Like

At the end It says it’s a work in progress, so with time he will probably upscale the project.

Thanks for telling me about that. It’s a name change that happened as I was writing, so it’s fixed now.

As for the older code file, I’m more than happy to let it out there. This project came about because I wanted something to do when I should have been doing something else, so I decided to start messing around with the quest engine having absolutely no coding skills at all. That first version was all a self-taught, self-discovery mess behind the scenes, which is actually why I was working on a “better version.”

You are right: what I lost was only ever on my computer. It contained a bunch of quality of life changes behind the scenes to make it easier for me to keep moving forward with the story. Having to do a new version from scratch also allowed me to make story adjustments for things that always bothered me (but I did anyway). Like, why would a college freshman not have a roommate?

This is also very much a work in progress. I know it’s disappointing to be retreading old ground, but I’m already starting to work on Christmas break. I plan to keep the same storybeats as before.

2 Likes

Well keep up the good work. I’m going to study the framework of the previous edition to see what I can learn from it

1 Like

Great (re)start! Just one bug to report, happens when you meet Madison in the kitchen and you choose “I’m starving”:

Error running script: Error compiling expression 'Sarah.glutton+1': ArithmeticElement: Operation 'Add' is not defined for types 'Object' and 'Int32'

Can’t wait for next release

1 Like

Thanks. That one was an easy fix, since the actual attribute was “gluttony.” All for want of a Y.

1 Like

Was just about to edit, but since you replied (and thanks for fixing that one) immediately after fixing that (which I did with unzip-edit-rezip) you get:

Error running script: Error compiling expression 'EFF Sarah.weight+5': ArithmeticElement: Operation 'Add' is not defined for types 'Object' and 'Int32'

Same type of error it seems

EDIT: at a guess you want EFF Sarah.gain+5 not EFF Sarah.weight+5

1 Like