<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sciwiki.sierrahelp.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andrew+Branscom</id>
	<title>SCI Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://sciwiki.sierrahelp.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andrew+Branscom"/>
	<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php/Special:Contributions/Andrew_Branscom"/>
	<updated>2026-09-30T01:32:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Main_Page&amp;diff=17476</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Main_Page&amp;diff=17476"/>
		<updated>2026-06-29T13:26:29Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot; style=&amp;quot;font-size: 14pt&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Alert&amp;quot;&amp;gt;The SCI Wiki has been merged into the new &amp;#039;&amp;#039;&amp;#039;[https://wiki.sierrahelp.com/index.php/Main_Page Sierra Wiki]&amp;#039;&amp;#039;&amp;#039;. This Wiki is now read only. It is being merged with the new Sierra Wiki. Any changes or addition will need to be made on new Wiki. &lt;br /&gt;
&lt;br /&gt;
If you wish to add or edit any of the material on this Wiki, please request a Sierra Wiki account to make any additions or changes to any content since because of spammers, registrations for it had to be disabled. If you wish an account for it you will need to contact me. Note the new Wiki is a WIP. &amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;Inactive&amp;quot;&amp;gt;&lt;br /&gt;
===Welcome to the SCI Programmers Wiki.===&lt;br /&gt;
&lt;br /&gt;
A Wiki for the SCI Programming Community. SCI is the game engine created by [[Jeff Stephenson]] for [[Sierra On-Line]], which was used between the years of 1989 to 1997. It superseded Sierra&amp;#039;s earlier AGI engine. It was used to create such games as &amp;#039;&amp;#039;[[King&amp;#039;s Quest IV]]&amp;#039;&amp;#039; to VII, &amp;#039;&amp;#039;[[Space Quest III]]&amp;#039;&amp;#039; to &amp;#039;&amp;#039;[[Space Quest 6|6]]&amp;#039;&amp;#039;, &amp;#039;&amp;#039;[[Quest for Glory I]]&amp;#039;&amp;#039; to &amp;#039;&amp;#039;[[Quest for Glory IV|IV]]&amp;#039;&amp;#039; and &amp;#039;&amp;#039;[[Gabriel Knight I]]&amp;#039;&amp;#039; and &amp;#039;&amp;#039;[[Beast Within: A Gabriel Knight Mystery, The|II]]&amp;#039;&amp;#039;. With the availability of such tools as [[SCI Studio|Brian Provinciano&amp;#039;s SCI Studio 3]] and [[SCI Companion|Phil Fortier&amp;#039;s SCI Companion]], you can create your own games based on the same engine that Sierra used. This Wiki is a knowledgebase and collection of resources for those working with SCI. Additional help can always be found on the [[SCIPF:|SCI Programming Community Message Board]]. For help with Sierra&amp;#039;s games, see [[SHP:|The Sierra Help Pages]].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; News ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;20&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid #C9AE56; background-color: #FFFBED&amp;quot; width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;div style=&amp;quot;padding: .4em .9em .9em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;March, 2016&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [[SEQTool]], another SCI Companion plugin is under development. This tool is based on [[Kawa|Kawa&amp;#039;s]] [[SeqMaker]], a command line program. With SEQTool you can edit existing [[SEQ Resource|SEQ files]] (used for cut scenes in SCI1 and later Sierra games), create new ones from your own 320px x 200px paletted 8-bit color images, import animated GIFs to SEQ or export frames from SEQ files to individual image files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feb 07, 2016&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* There is a new version of [[Phil Fortier|Phil Fortier&amp;#039;s]] [[SCI Companion]]. SCI Companion v3 supports development of games from [[Sierra_Release_List#SCI0_.28early.29 | SCI0]] to [[Sierra_Release_List#SCI1.1 | SCI1.1]]. Besides VGA graphics you will now be able to add digital sound effects and lip synced speech to your SCI games.&lt;br /&gt;
&lt;br /&gt;
* [[NSIS Publisher]], SCI Companion&amp;#039;s first plugin has been released. NSIS Publisher allows you to publish your SCI Companion project using the [http://nsis.sourceforge.net/Main_Page Null Soft Install System (NSIS)] and can automatically compile a DOSBox installer for distribution of your game.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; Getting started ===&lt;br /&gt;
&lt;br /&gt;
New here? Visit the [[Getting Started]] page for information about how to create new SCI games, or understand the Tools behind editing them.&lt;br /&gt;
&lt;br /&gt;
Please also take the time to visit the [[Community Portal]], which contains useful links for SCI and the SCI Wiki. &lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the Wiki see [[#How to Contribute|How to Contribute]] below.&amp;lt;!--&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;Didn&amp;#039;t find what you were looking for? Try [[Request article|requesting an article]].&amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; Links ===&lt;br /&gt;
&lt;br /&gt;
Links for additional help and resources for help for your SCI needs.&lt;br /&gt;
&lt;br /&gt;
[http://sciprogramming.com SCI Programming.com] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com&lt;br /&gt;
: [http://sciprogramming.com/community/ SCI Programming.com message boards] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/community/&lt;br /&gt;
: [http://sciprogramming.com/scitools.php SCI Tools on SCI Programming.com] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/scitools.php&lt;br /&gt;
: [http://sciprogramming.com/fangames.php SCI fan games] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/fangames.php&lt;br /&gt;
[[scicomp:|SCI Companion]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[scicompdoc:|SCI Companion Documentation]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- [http://www.mtnphil.com/Games/SCIComp.html SCI Companion] &amp;amp;nbsp; - &amp;amp;nbsp; http://www.mtnphil.com/Games/SCIComp.html&amp;lt;br&amp;gt; --&amp;gt;&lt;br /&gt;
[http://scistudio.sourceforge.net/ SCI Studio on SourceForge] &amp;amp;nbsp; - &amp;amp;nbsp; http://scistudio.sourceforge.net/&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- [http://www.sci.sierrahelp.com/Tools/SCITools.html SCI Tools on the Sierra Help Pages] &amp;amp;nbsp; - &amp;amp;nbsp; http://www.sci.sierrahelp.com/Tools/SCITools.html&amp;lt;br&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; How to Contribute ===&lt;br /&gt;
&lt;br /&gt;
No registration is required to view this Wiki. Anyone can view the various topics and guides on the SCI Wiki. However, to add or edit pages, you must be [[Special:Userlogin|logged in]]. If you are not registered, you may request an account editing privileges. &lt;br /&gt;
&lt;br /&gt;
Contact Collector on the [[SCIPF:|SCI Programming Community Message Board]] or [[shp:forums|The Sierra Help Pages Forums]] if you wish to contribute. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
==== Notes for Editors: ====&lt;br /&gt;
&lt;br /&gt;
Please familiarize yourself with [[Help:Contents | MediaWiki formatting]] before adding or editing pages. See the [[Notes_for_Editors|Notes for Editors]] page for SCI Wiki standards and news.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Help]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Main_Page&amp;diff=17475</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Main_Page&amp;diff=17475"/>
		<updated>2026-06-29T13:26:04Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot; style=&amp;quot;font-size: 14pt&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Alert&amp;quot;&amp;gt;The SCI Wiki has been merged into the new &amp;#039;&amp;#039;&amp;#039;[https://wiki.sierrahelp.com/index.php/Main_Page Sierra Wiki]&amp;#039;&amp;#039;&amp;#039;. This Wiki is now read only. It is being merged with the new Sierra Wiki. Any changes or addition will need to be made on new Wiki. &lt;br /&gt;
&lt;br /&gt;
If you wish to add or edit any of the material on this Wiki, please request a Sierra Wiki account to make any additions or changes to any content since because of spammers, registrations for it had to be disabled. If you wish an account for it you will need to contact me. Note the new Wiki is a WIP. &amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Welcome to the SCI Programmers Wiki.===&lt;br /&gt;
&lt;br /&gt;
A Wiki for the SCI Programming Community. SCI is the game engine created by [[Jeff Stephenson]] for [[Sierra On-Line]], which was used between the years of 1989 to 1997. It superseded Sierra&amp;#039;s earlier AGI engine. It was used to create such games as &amp;#039;&amp;#039;[[King&amp;#039;s Quest IV]]&amp;#039;&amp;#039; to VII, &amp;#039;&amp;#039;[[Space Quest III]]&amp;#039;&amp;#039; to &amp;#039;&amp;#039;[[Space Quest 6|6]]&amp;#039;&amp;#039;, &amp;#039;&amp;#039;[[Quest for Glory I]]&amp;#039;&amp;#039; to &amp;#039;&amp;#039;[[Quest for Glory IV|IV]]&amp;#039;&amp;#039; and &amp;#039;&amp;#039;[[Gabriel Knight I]]&amp;#039;&amp;#039; and &amp;#039;&amp;#039;[[Beast Within: A Gabriel Knight Mystery, The|II]]&amp;#039;&amp;#039;. With the availability of such tools as [[SCI Studio|Brian Provinciano&amp;#039;s SCI Studio 3]] and [[SCI Companion|Phil Fortier&amp;#039;s SCI Companion]], you can create your own games based on the same engine that Sierra used. This Wiki is a knowledgebase and collection of resources for those working with SCI. Additional help can always be found on the [[SCIPF:|SCI Programming Community Message Board]]. For help with Sierra&amp;#039;s games, see [[SHP:|The Sierra Help Pages]].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; News ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;20&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid #C9AE56; background-color: #FFFBED&amp;quot; width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;div style=&amp;quot;padding: .4em .9em .9em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;March, 2016&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [[SEQTool]], another SCI Companion plugin is under development. This tool is based on [[Kawa|Kawa&amp;#039;s]] [[SeqMaker]], a command line program. With SEQTool you can edit existing [[SEQ Resource|SEQ files]] (used for cut scenes in SCI1 and later Sierra games), create new ones from your own 320px x 200px paletted 8-bit color images, import animated GIFs to SEQ or export frames from SEQ files to individual image files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feb 07, 2016&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* There is a new version of [[Phil Fortier|Phil Fortier&amp;#039;s]] [[SCI Companion]]. SCI Companion v3 supports development of games from [[Sierra_Release_List#SCI0_.28early.29 | SCI0]] to [[Sierra_Release_List#SCI1.1 | SCI1.1]]. Besides VGA graphics you will now be able to add digital sound effects and lip synced speech to your SCI games.&lt;br /&gt;
&lt;br /&gt;
* [[NSIS Publisher]], SCI Companion&amp;#039;s first plugin has been released. NSIS Publisher allows you to publish your SCI Companion project using the [http://nsis.sourceforge.net/Main_Page Null Soft Install System (NSIS)] and can automatically compile a DOSBox installer for distribution of your game.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; Getting started ===&lt;br /&gt;
&lt;br /&gt;
New here? Visit the [[Getting Started]] page for information about how to create new SCI games, or understand the Tools behind editing them.&lt;br /&gt;
&lt;br /&gt;
Please also take the time to visit the [[Community Portal]], which contains useful links for SCI and the SCI Wiki. &lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the Wiki see [[#How to Contribute|How to Contribute]] below.&amp;lt;!--&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;Didn&amp;#039;t find what you were looking for? Try [[Request article|requesting an article]].&amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; Links ===&lt;br /&gt;
&lt;br /&gt;
Links for additional help and resources for help for your SCI needs.&lt;br /&gt;
&lt;br /&gt;
[http://sciprogramming.com SCI Programming.com] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com&lt;br /&gt;
: [http://sciprogramming.com/community/ SCI Programming.com message boards] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/community/&lt;br /&gt;
: [http://sciprogramming.com/scitools.php SCI Tools on SCI Programming.com] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/scitools.php&lt;br /&gt;
: [http://sciprogramming.com/fangames.php SCI fan games] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/fangames.php&lt;br /&gt;
[[scicomp:|SCI Companion]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[scicompdoc:|SCI Companion Documentation]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- [http://www.mtnphil.com/Games/SCIComp.html SCI Companion] &amp;amp;nbsp; - &amp;amp;nbsp; http://www.mtnphil.com/Games/SCIComp.html&amp;lt;br&amp;gt; --&amp;gt;&lt;br /&gt;
[http://scistudio.sourceforge.net/ SCI Studio on SourceForge] &amp;amp;nbsp; - &amp;amp;nbsp; http://scistudio.sourceforge.net/&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- [http://www.sci.sierrahelp.com/Tools/SCITools.html SCI Tools on the Sierra Help Pages] &amp;amp;nbsp; - &amp;amp;nbsp; http://www.sci.sierrahelp.com/Tools/SCITools.html&amp;lt;br&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; How to Contribute ===&lt;br /&gt;
&lt;br /&gt;
No registration is required to view this Wiki. Anyone can view the various topics and guides on the SCI Wiki. However, to add or edit pages, you must be [[Special:Userlogin|logged in]]. If you are not registered, you may request an account editing privileges. &lt;br /&gt;
&lt;br /&gt;
Contact Collector on the [[SCIPF:|SCI Programming Community Message Board]] or [[shp:forums|The Sierra Help Pages Forums]] if you wish to contribute. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
==== Notes for Editors: ====&lt;br /&gt;
&lt;br /&gt;
Please familiarize yourself with [[Help:Contents | MediaWiki formatting]] before adding or editing pages. See the [[Notes_for_Editors|Notes for Editors]] page for SCI Wiki standards and news.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Help]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Main_Page&amp;diff=17474</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Main_Page&amp;diff=17474"/>
		<updated>2026-02-02T03:25:51Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
;Note: The SCI Wiki has been merged into the new &amp;#039;&amp;#039;&amp;#039;[https://wiki.sierrahelp.com/index.php/Main_Page Sierra Wiki]&amp;#039;&amp;#039;&amp;#039;. If you wish to add or edit any of the material on this Wiki, please request a Sierra Wiki account to make any additions or changes to the SCI content. Note the new Wiki is a WIP.&lt;br /&gt;
&lt;br /&gt;
===Welcome to the SCI Programmers Wiki.===&lt;br /&gt;
&lt;br /&gt;
A Wiki for the SCI Programming Community. SCI is the game engine created by [[Jeff Stephenson]] for [[Sierra On-Line]], which was used between the years of 1989 to 1997. It superseded Sierra&amp;#039;s earlier AGI engine. It was used to create such games as &amp;#039;&amp;#039;[[King&amp;#039;s Quest IV]]&amp;#039;&amp;#039; to VII, &amp;#039;&amp;#039;[[Space Quest III]]&amp;#039;&amp;#039; to &amp;#039;&amp;#039;[[Space Quest 6|6]]&amp;#039;&amp;#039;, &amp;#039;&amp;#039;[[Quest for Glory I]]&amp;#039;&amp;#039; to &amp;#039;&amp;#039;[[Quest for Glory IV|IV]]&amp;#039;&amp;#039; and &amp;#039;&amp;#039;[[Gabriel Knight I]]&amp;#039;&amp;#039; and &amp;#039;&amp;#039;[[Beast Within: A Gabriel Knight Mystery, The|II]]&amp;#039;&amp;#039;. With the availability of such tools as [[SCI Studio|Brian Provinciano&amp;#039;s SCI Studio 3]] and [[SCI Companion|Phil Fortier&amp;#039;s SCI Companion]], you can create your own games based on the same engine that Sierra used. This Wiki is a knowledgebase and collection of resources for those working with SCI. Additional help can always be found on the [[SCIPF:|SCI Programming Community Message Board]]. For help with Sierra&amp;#039;s games, see [[SHP:|The Sierra Help Pages]].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; News ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;20&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid #C9AE56; background-color: #FFFBED&amp;quot; width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;div style=&amp;quot;padding: .4em .9em .9em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;March, 2016&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [[SEQTool]], another SCI Companion plugin is under development. This tool is based on [[Kawa|Kawa&amp;#039;s]] [[SeqMaker]], a command line program. With SEQTool you can edit existing [[SEQ Resource|SEQ files]] (used for cut scenes in SCI1 and later Sierra games), create new ones from your own 320px x 200px paletted 8-bit color images, import animated GIFs to SEQ or export frames from SEQ files to individual image files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feb 07, 2016&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* There is a new version of [[Phil Fortier|Phil Fortier&amp;#039;s]] [[SCI Companion]]. SCI Companion v3 supports development of games from [[Sierra_Release_List#SCI0_.28early.29 | SCI0]] to [[Sierra_Release_List#SCI1.1 | SCI1.1]]. Besides VGA graphics you will now be able to add digital sound effects and lip synced speech to your SCI games.&lt;br /&gt;
&lt;br /&gt;
* [[NSIS Publisher]], SCI Companion&amp;#039;s first plugin has been released. NSIS Publisher allows you to publish your SCI Companion project using the [http://nsis.sourceforge.net/Main_Page Null Soft Install System (NSIS)] and can automatically compile a DOSBox installer for distribution of your game.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; Getting started ===&lt;br /&gt;
&lt;br /&gt;
New here? Visit the [[Getting Started]] page for information about how to create new SCI games, or understand the Tools behind editing them.&lt;br /&gt;
&lt;br /&gt;
Please also take the time to visit the [[Community Portal]], which contains useful links for SCI and the SCI Wiki. &lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the Wiki see [[#How to Contribute|How to Contribute]] below.&amp;lt;!--&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;Didn&amp;#039;t find what you were looking for? Try [[Request article|requesting an article]].&amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; Links ===&lt;br /&gt;
&lt;br /&gt;
Links for additional help and resources for help for your SCI needs.&lt;br /&gt;
&lt;br /&gt;
[http://sciprogramming.com SCI Programming.com] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com&lt;br /&gt;
: [http://sciprogramming.com/community/ SCI Programming.com message boards] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/community/&lt;br /&gt;
: [http://sciprogramming.com/scitools.php SCI Tools on SCI Programming.com] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/scitools.php&lt;br /&gt;
: [http://sciprogramming.com/fangames.php SCI fan games] &amp;amp;nbsp; - &amp;amp;nbsp; http://sciprogramming.com/fangames.php&lt;br /&gt;
[[scicomp:|SCI Companion]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[scicompdoc:|SCI Companion Documentation]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- [http://www.mtnphil.com/Games/SCIComp.html SCI Companion] &amp;amp;nbsp; - &amp;amp;nbsp; http://www.mtnphil.com/Games/SCIComp.html&amp;lt;br&amp;gt; --&amp;gt;&lt;br /&gt;
[http://scistudio.sourceforge.net/ SCI Studio on SourceForge] &amp;amp;nbsp; - &amp;amp;nbsp; http://scistudio.sourceforge.net/&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- [http://www.sci.sierrahelp.com/Tools/SCITools.html SCI Tools on the Sierra Help Pages] &amp;amp;nbsp; - &amp;amp;nbsp; http://www.sci.sierrahelp.com/Tools/SCITools.html&amp;lt;br&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;br /&amp;gt; How to Contribute ===&lt;br /&gt;
&lt;br /&gt;
No registration is required to view this Wiki. Anyone can view the various topics and guides on the SCI Wiki. However, to add or edit pages, you must be [[Special:Userlogin|logged in]]. If you are not registered, you may request an account editing privileges. &lt;br /&gt;
&lt;br /&gt;
Contact Collector on the [[SCIPF:|SCI Programming Community Message Board]] or [[shp:forums|The Sierra Help Pages Forums]] if you wish to contribute. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
==== Notes for Editors: ====&lt;br /&gt;
&lt;br /&gt;
Please familiarize yourself with [[Help:Contents | MediaWiki formatting]] before adding or editing pages. See the [[Notes_for_Editors|Notes for Editors]] page for SCI Wiki standards and news.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Help]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Leisure_Suit_Larry_4:_The_Case_of_the_Missing_Floppies&amp;diff=17473</id>
		<title>Leisure Suit Larry 4: The Case of the Missing Floppies</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Leisure_Suit_Larry_4:_The_Case_of_the_Missing_Floppies&amp;diff=17473"/>
		<updated>2025-04-28T00:34:23Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [http://www.allowe.com/games/larry/inside-stories/is-lsl5-lsl4.html]&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
[[Category:Sierra Releases]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Template:JeremiahNellisQ&amp;diff=17472</id>
		<title>Template:JeremiahNellisQ</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Template:JeremiahNellisQ&amp;diff=17472"/>
		<updated>2025-04-15T18:10:09Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Protected &amp;quot;Template:JeremiahNellisQ&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Jeremiah&amp;amp;nbsp;Nellis]][[Category:Jeremiah Nellis Quotes]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Copy &amp;amp; Paste ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;{{PAGENAME}}&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explanation ==&lt;br /&gt;
&lt;br /&gt;
Use this for pages containing quotes by Jeremiah Nellis.&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Quotation Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Template:JeremiahNellisQ&amp;diff=17471</id>
		<title>Template:JeremiahNellisQ</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Template:JeremiahNellisQ&amp;diff=17471"/>
		<updated>2025-04-15T18:10:00Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;Jeremiah&amp;amp;nbsp;NellisCategory:Jeremiah Nellis Quotes&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;  == Copy &amp;amp; Paste ==  &amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;{{PAGENAME}}&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;  == E...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Jeremiah&amp;amp;nbsp;Nellis]][[Category:Jeremiah Nellis Quotes]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Copy &amp;amp; Paste ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;{{PAGENAME}}&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explanation ==&lt;br /&gt;
&lt;br /&gt;
Use this for pages containing quotes by Jeremiah Nellis.&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Quotation Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=SCI_Narration_Demo&amp;diff=17470</id>
		<title>SCI Narration Demo</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=SCI_Narration_Demo&amp;diff=17470"/>
		<updated>2025-04-15T18:09:16Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div align=&amp;quot;center&amp;quot; style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;SCI Narration Demo&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FanSCIReleaseInfobox&lt;br /&gt;
| ReleaseName = SCI Narration Demo&lt;br /&gt;
| Image = [[Image:SCINarrationDemoSS.png|190px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;SCI Narration Demo&amp;lt;br /&amp;gt;&amp;#039;&amp;#039;Title Screen&lt;br /&gt;
| MusicalTheme = &amp;lt;!-- [[File:.ogg]] -- &amp;gt;&amp;lt;!-- &amp;lt;br /&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;InsertTitleHere&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&amp;amp;nbsp; --&amp;gt;&lt;br /&gt;
| ReleaseDate = {{2012}}-08-05&amp;lt;ref&amp;gt;https://sciprogramming.com/community/index.php?topic=616.0&amp;lt;/ref&amp;gt;&lt;br /&gt;
| ProjectStatus = {{CompletedFanSCI}}&lt;br /&gt;
| ReleaseVersion = UnknownVer&lt;br /&gt;
| Developer = {{JeremiahNellis}}&lt;br /&gt;
| Publisher = {{JeremiahNellis}}&lt;br /&gt;
| Designer = {{JeremiahNellis}}&lt;br /&gt;
| Source = {{NoSource}}&amp;lt;!-- {{Source}}Included in download --&amp;gt;&lt;br /&gt;
| Category = {{FanSCITechApp}}&lt;br /&gt;
| Type = {{FanSCIDemoTechApp}}&lt;br /&gt;
| Genre = {{ProofOfConcept}}&lt;br /&gt;
| Theme = {{Script/Logic}}, {{Sound}}&lt;br /&gt;
| Engine = {{SCI0}}&lt;br /&gt;
| Platform = {{DOS}}&lt;br /&gt;
| Localization = {{English}}&lt;br /&gt;
| Website = {{SCIPSCIURL}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Description ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[Jeremiah Nellis]]&amp;#039;s &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;SCI Narration Demo&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a  [[SCI0]] {{Proof Of ConceptCategory}}.&lt;br /&gt;
&lt;br /&gt;
{{ReleasePageStub}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==&amp;lt;br /&amp;gt;Screenshots ==&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; width=&amp;quot;80%&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[Image:SCINarrationDemoSS1.png|320px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[Image:SCINarrationDemoSS2.png|320px]]&lt;br /&gt;
|}--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Synopsis ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
N/A&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; About ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;Quote&amp;quot;&amp;gt;&lt;br /&gt;
{{Quote|Attrib = {{JeremiahNellisQ}}&amp;lt;ref&amp;gt;https://sciprogramming.com/community/index.php?topic=616.0&amp;lt;/ref&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
application which will read all the printed text displayed within a game.  It calls the Google Translate API in real-time while a game is playing and speaks the displayed text to you.&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s a fun little project that I hacked together this weekend.  It utilizes the ability for an SCI game to write to a file.  It runs externally to the game, monitoring a file that I&amp;#039;ve modified the Controls.sc script to write all the print statements to.  The application picks up the changes, ships them off to the api, saves the results to an MP3 and plays them.&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s the script modification:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;   (if( &amp;lt;&amp;gt; STRINGS_EQUAL StrCmp(&amp;quot;Enter Input:&amp;quot; @msgBuf))&lt;br /&gt;
	   (if( &amp;lt;&amp;gt; NULL (= hFile FOpen(&amp;quot;print.txt&amp;quot; fCREATE)) )&lt;br /&gt;
			   FPuts(hFile @msgBuf)&lt;br /&gt;
			   FClose(hFile)&lt;br /&gt;
			   Wait(30)  //wait a bit, so we can sync the text with the voice (sort of)&lt;br /&gt;
	   )&lt;br /&gt;
    )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve uploaded a modified template game demonstrating the app.  The executables: SCI_Narrate.exe and madplay.exe (madplay is needed to play the MP3s).  If you want to incorporate a &amp;#039;narrator&amp;#039; into your game, just copy the exe&amp;#039;s into your game dir &amp;amp; modify or replace your Controls.sc.&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve included the C# source code for those interested.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Where to Get It ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
* [[Image:ZIP.png|ZIP File]] [[File:SCI_Narration_Demo.zip|SCI Narration Demo]]&amp;lt;span class=&amp;quot;DLInfo&amp;quot;&amp;gt; (ZIP file) [485 KB]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Related Links ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Fan Releases|Fan Releases]]&lt;br /&gt;
* [[w:Special:Search/|:Category:Fan Releases|Fan Releases on Wikipedia]]&lt;br /&gt;
* [[Fan SCI Release List]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Fan Releases]]&lt;br /&gt;
[[Category:Fan SCI Releases]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Footsteps_Sound_Demo&amp;diff=17469</id>
		<title>Footsteps Sound Demo</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Footsteps_Sound_Demo&amp;diff=17469"/>
		<updated>2025-04-15T18:08:12Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div align=&amp;quot;center&amp;quot; style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Footsteps Sound Demo&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FanSCIReleaseInfobox&lt;br /&gt;
| ReleaseName = Footsteps Sound Demo&lt;br /&gt;
| Image = [[Image:FootstepsSoundDemoSS.png|190px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Footsteps Sound Demo Title Screen&amp;#039;&amp;#039;&lt;br /&gt;
| MusicalTheme = &amp;lt;!-- [[File:.ogg]] -- &amp;gt;&amp;lt;!-- &amp;lt;br /&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;InsertTitleHere&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&amp;amp;nbsp; --&amp;gt;&lt;br /&gt;
| ReleaseVersion = {{UnknownVer}}&lt;br /&gt;
| ReleaseDate = Sept, {{2012}}&lt;br /&gt;
| ProjectStatus = {{CompletedFanSCI}}&lt;br /&gt;
| Developer = {{JeremiahNellis}}&lt;br /&gt;
| Publisher = {{JeremiahNellis}}&lt;br /&gt;
| Designer = {{JeremiahNellis}}&lt;br /&gt;
| Category = {{FanSCITechApp}}&lt;br /&gt;
| Type = {{FanSCITechDemo}}&lt;br /&gt;
| Source = {{Source}}Included in download&lt;br /&gt;
| Genre = {{HowTo}}&lt;br /&gt;
| Theme = {{Script/Logic}}, {{Sound}}&lt;br /&gt;
| Engine = {{SCI0}}&lt;br /&gt;
| Platform = {{DOS}}&lt;br /&gt;
| Localization = {{English}}&lt;br /&gt;
| Website = {{SCIPSCIURL}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
del  {{FanSCITechDemo}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Description ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[Jeremiah Nellis]]&amp;#039;s &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Footsteps Sound Demo&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a fan [[SCI0]] How To demonstration. Shows how to add footstep sounds to a walking character in an SCI0 game.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Screenshots ==&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|&amp;lt;!--[[Image:SS1.png|320px]]--&amp;gt;&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|&amp;lt;!--[[Image:SS2.png|320px]]--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Synopsis ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
N/A&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; About ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Where to Get It ==&lt;br /&gt;
&lt;br /&gt;
* [[Image:ZIP.png|ZIP File]] [[scidl:FanGames/Footsteps_Sound_Demo.zip|Footsteps Sound Demo]]&amp;lt;span class=&amp;quot;DLInfo&amp;quot;&amp;gt; (ZIP file) [232 KB]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Walkthroughs/Hints ==&lt;br /&gt;
&lt;br /&gt;
* N/A&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Related Links ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Fan Releases|Fan Releases]]&lt;br /&gt;
* [[Fan Release List|Fan Release List]]&lt;br /&gt;
* [[Fan SCI Release List]]&lt;br /&gt;
&amp;lt;!-- [[Category:Category]] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=File:FootstepsSoundDemoSS.png&amp;diff=17468</id>
		<title>File:FootstepsSoundDemoSS.png</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=File:FootstepsSoundDemoSS.png&amp;diff=17468"/>
		<updated>2025-04-15T18:07:22Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Andrew Branscom moved page File:TemplateGameSS.png to File:FootstepsSoundDemoSS.png without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Betrayed_Alliance_Book_2_Demo&amp;diff=17467</id>
		<title>Betrayed Alliance Book 2 Demo</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Betrayed_Alliance_Book_2_Demo&amp;diff=17467"/>
		<updated>2025-04-13T13:21:07Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: /*  Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div align=&amp;quot;center&amp;quot; style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Betrayed Alliance Book 2 Demo&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ReleaseInfobox&lt;br /&gt;
| ReleaseName = Betrayed Alliance Book 2 Demo&lt;br /&gt;
| Image = [[File:Betrayed Alliance Book 2.jpg|thumb|Betrayed Alliance Book 2]]&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;#039;&amp;#039;Betrayed Alliance Book 2 Demo&amp;#039;&amp;#039; Title Screen&lt;br /&gt;
| MusicalTheme = &amp;lt;!-- [[File:.ogg]] -- &amp;gt;&amp;lt;!-- &amp;lt;br /&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;InsertTitleHere&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&amp;amp;nbsp; --&amp;gt;&lt;br /&gt;
| ReleaseVersion = 1.0&lt;br /&gt;
| ReleaseDate = Feb 24, {{2023}}&lt;br /&gt;
| ProjectStatus = {{InDevelopmentFanSCI}}&lt;br /&gt;
| Developer = {{Ryan Slattery}}&lt;br /&gt;
| Publisher = {{Ryan Slattery}}&lt;br /&gt;
| Designer = {{Ryan Slattery}}&lt;br /&gt;
| Music = {{Brandon Blume}}&lt;br /&gt;
| Source = {{Source}}[[#Download|Yes]]&lt;br /&gt;
| Category = {{FanSCIGame}}&lt;br /&gt;
| Type = {{FanSCIGameDemo}}&lt;br /&gt;
| Genre = {{Adventure}}, {{RPG}}&lt;br /&gt;
| Theme = {{FantasyRPG}}, {{LegendAdven}}, {{MythAdven}}&lt;br /&gt;
| Engine = {{SCI0}}&lt;br /&gt;
| CopyProtection = N/A&lt;br /&gt;
| ESRBRating = N/A &lt;br /&gt;
| Platform = {{DOS}}&lt;br /&gt;
| Localization = {{English}}&lt;br /&gt;
| Website = https://rjslattery.com/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt; Description ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Betrayed Alliance Book 2&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a free fan-made [[SCI0]] adventure game. It was developed by [[Ryan Slattery]] (a.k.a. Doan Sephim) using [[Brian Provinciano|Brian Provinciano&amp;#039;s]] [[SCI Studio|SCI Studio 3]] and Phil Fortier&amp;#039;s [[SCI Companion]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Versions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
! width=&amp;quot;435&amp;quot;|Game!!width=&amp;quot;125&amp;quot;|Game Version!! width=&amp;quot;165&amp;quot; |Interpreter Version!!width=&amp;quot;75&amp;quot;|Date&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Betrayed Alliance Book 2 Demo||align=&amp;quot;center&amp;quot;|1.0||align=&amp;quot;center&amp;quot;|0.000.685||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|[[2023|2023/2/24]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Screenshots ==&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; width=&amp;quot;80%&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:Rock building.jpg|320px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:StatueBrother.jpg|320px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:268.jpg|320px]]&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:271.jpg|320px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:Battle System.jpg|320px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:Leg broke.jpg|320px]]&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:257.jpg|320px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:Puzzle stone2.jpg|320px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[[File:35.jpg|320px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Synopsis ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The Cursed Forest: Dark secrets lie buried, but you&amp;#039;re not alone! Switch between two playable characters in this fantasy adventure. Each character has their own strengths. As the General, battle your way through enemies and monsters and upgrade a few combat stats. Leah von Spier, however, is not equipped for combat and must use a different skillset to overcome enemies.&lt;br /&gt;
This Forest was home to a ancient tribe divining the mysteries of the &amp;quot;Great Wizard.&amp;quot; Their disappearance is an enigma, but they left behind ruins and arcane items to puzzle over.&lt;br /&gt;
Your goal is to escape the forest. But your way is barred by obstacles both natural and supernatural. You&amp;#039;ll have to meet the challenges of the forest, discover and outsmart the Enchantress whose curse prohibits your escape, and uncover a few mysteries along the way - mysteries that will no doubt aid you on your quest!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; About ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Betrayed Alliance is meant to be an original throwback to the SCI0 adventure games with a particular nod towards Quests for Glory 1 and 2. As an SCI0 game it features the characteristic type-interface as well as mouse controls.&lt;br /&gt;
&lt;br /&gt;
Betrayed Alliance Book 2 also features music and sound compatible with many classic music drivers: Mt32, Adlib, Soundblaster, Tandy 3, PC speaker, and perhaps more to come!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Reviews ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[Betrayed Alliance Book 2 Demo Reviews]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Downloads ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;* [[Image:ZIP.png|ZIP File]] [[File:BA2_DEMO_Setup.zip|Betrayed Alliance Book 2 Demo Setup]]&amp;lt;span class=&amp;quot;DLInfo&amp;quot;&amp;gt; (ZIP file) [3.77 MB]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
* [[Image:Setup.png|Setup File]] [http://sciwiki.sierrahelp.com//images/8/85/BETRAYED_Setup.zip |Betrayed Alliance Book 1 v1.2 Installer]&amp;lt;span class=&amp;quot;DLInfo&amp;quot;&amp;gt; (Setup file) [72.28 MB]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Image:Setup.png|Setup File]] [[scicdl:BetrayedAlliance1.1Setup.zip.php|Betrayed Alliance Book 1 v1.1 Installer]]&amp;lt;span class=&amp;quot;DLInfo&amp;quot;&amp;gt; (Setup file) [72.1 MB]&amp;lt;/span&amp;gt;&lt;br /&gt;
 * [[Image:Setup.png|Setup File]] [[scicdl:BetrayedAllianceSetup.zip.php|Betrayed Alliance Book 1 Installer]]&amp;lt;span class=&amp;quot;DLInfo&amp;quot;&amp;gt; (Setup file) [70.6 MB]&amp;lt;/span&amp;gt; &lt;br /&gt;
** Source Included with Installer --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Walkthroughs/Hints ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Nothing yet, sorry!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Related Links ==&lt;br /&gt;
&lt;br /&gt;
* [[Betrayed Alliance Series]]&lt;br /&gt;
* [[Betrayed Alliance Book 1]]&lt;br /&gt;
* [https://rjslattery.com/betrayed-alliance/ https://rjslattery.com/betrayed-alliance/]&lt;br /&gt;
* [[Fan SCI Release List|Fan SCI Release List]]&lt;br /&gt;
* [[:Category:Fan Releases|Fan Releases]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Fan Releases]]&lt;br /&gt;
[[Category:Fan SCI Releases]]&lt;br /&gt;
&amp;lt;!--[[Category:sciAudio Releases]]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=ToDo/Sierra_Game_Versions&amp;diff=17466</id>
		<title>ToDo/Sierra Game Versions</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=ToDo/Sierra_Game_Versions&amp;diff=17466"/>
		<updated>2025-04-07T18:17:45Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The list is sorted on interpreter version.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- File dates are not used. --&amp;gt;&lt;br /&gt;
This only deals with PC versions of the games. Based on [http://web.archive.org/web/20071130073710/http://sierra.8bit.co.uk/SVLIST091.TXT this document]. [http://www.sqeagz.com/passigar/ PASSIGAR] also has a very good list of almost all known Sierra game versions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; width=50% class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef&amp;quot; --&amp;gt;&lt;br /&gt;
SCI games were originally ported to:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;400&amp;quot;&amp;lt;!-- width=&amp;quot;800&amp;quot; --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Platform!!SCI0/SCI01!!SCI1/SCI1.1!!SCI32&lt;br /&gt;
|-&lt;br /&gt;
|IBM PC||align=&amp;quot;center&amp;quot;|Yes*||align=&amp;quot;center&amp;quot;|286+||align=&amp;quot;center&amp;quot;|386+&lt;br /&gt;
|-&lt;br /&gt;
|Apple Macintosh||align=&amp;quot;center&amp;quot;|Yes||align=&amp;quot;center&amp;quot;|Yes||align=&amp;quot;center&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Atari ST||align=&amp;quot;center&amp;quot;|Yes||align=&amp;quot;center&amp;quot;|No||align=&amp;quot;center&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|Commodore AMIGA||align=&amp;quot;center&amp;quot;|Yes||align=&amp;quot;center&amp;quot;|Yes||align=&amp;quot;center&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|Fujitsu FM-Towns||align=&amp;quot;center&amp;quot;|No||align=&amp;quot;center&amp;quot;|Yes||align=&amp;quot;center&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|NEC PC-9801||align=&amp;quot;center&amp;quot;|Yes||align=&amp;quot;center&amp;quot;|Yes||align=&amp;quot;center&amp;quot;|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Including PCjr &amp;amp; Tandy&lt;br /&gt;
&lt;br /&gt;
This table will show information about translations/international versions:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Interpreter||Foreign Version||Language Known||Suspect||Notes&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|SCI0||align=&amp;quot;center&amp;quot;|None||align=&amp;quot;center&amp;quot;|None||align=&amp;quot;center&amp;quot;|None||No unicode support&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|SCI01||align=&amp;quot;center&amp;quot;|Bilingual||align=&amp;quot;center&amp;quot;|Fr/Ger||align=&amp;quot;center&amp;quot;|Jap||Converted SCI01 games&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|SCI1||align=&amp;quot;center&amp;quot;|Bilingual||align=&amp;quot;center&amp;quot;|Fr/Ger/It/Sp||align=&amp;quot;center&amp;quot;|None||&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|SCI11||align=&amp;quot;center&amp;quot;|Standalone||align=&amp;quot;center&amp;quot;|Fr/Ger/It/Sp/Pt||align=&amp;quot;center&amp;quot;|Jap||Only RESOURCE.MSG differs&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|SCI32||align=&amp;quot;center&amp;quot;|Standalone||align=&amp;quot;center&amp;quot;|Fr/Ger/It/Sp/Pt||align=&amp;quot;center&amp;quot;|Jap||Sometimes subtitles only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are no real SCI0 translations as the SCI0 interpreter did not include diacritical characters like accent grave, acute accent, umlaut, etc. The SCI0 games that are translated are converted to the hybrid SCI01.&lt;br /&gt;
&lt;br /&gt;
All the SCI0(1) games are released on both 3.5&amp;quot; &amp;amp; 5.25&amp;quot; disks, except the 1988 Christmas Card, Astro Chicken &amp;amp; Fun Seeker&amp;#039;s Guide, which of course were public domain.&lt;br /&gt;
&lt;br /&gt;
All the games listed are disk versions unless noted otherwise.&lt;br /&gt;
&lt;br /&gt;
SCI1 games were released as two versions: 16 color EGA and 256 color VGA versions. The 16 color versions are a lot &amp;quot;uglier&amp;quot; and also smaller in size, compared to their 256 color counterparts. This was done for people with CGA/EGA/TANDY video cards and a low-memory setup. SCI11 ended this tradition by adding a EGA graphics driver.&lt;br /&gt;
&lt;br /&gt;
SCI2, SCI2.1, and SCI3 collectively are often referred to as SCI32 since the released original interpreters were 32-bit executables.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== SCI0 (early) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest IV: The Perils of Rosella]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.247||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest IV: The Perils of Rosella]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.253||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest IV: The Perils of Rosella]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.106||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.274||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1988/9/19&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest IV: The Perils of Rosella]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.111||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.274||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1988/9/24/&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Sierra Christmas Card 1988]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.294||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1988&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry Goes Looking for Love (In Several Wrong Places)|Leisure Suit Larry 2]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.011||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.343||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1988/10/27&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI0 (late) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest 2: The Vengeance|Police Quest 2]]*||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.001.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.395||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1988/11/26&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest IV: The Perils of Rosella|King&amp;#039;s Quest IV]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.003.006||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.409||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest 2: The Vengeance|Police Quest 2]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.001.006||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.409||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1988/12/14&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry Goes Looking for Love (In Several Wrong Places)|Leisure Suit Larry 2]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.002.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.409||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/01/11&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest II Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.413||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Astro Chicken]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.453||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest III: The Pirates of Pestulon|Space Quest III]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0P||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.453||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/03/22&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest III Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0A||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.453||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/03/23&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest III: The Pirates of Pestulon|Space Quest III]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0U||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.453||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/04/13&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest 2: The Vengeance|Police Quest 2]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.002.011||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.490||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest IV Demo|King&amp;#039;s Quest IV Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.494||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/6/27&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest IV: The Perils of Rosella|King&amp;#039;s Quest IV]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.006.003||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.502||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/06/12&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest IV: The Perils of Rosella|King&amp;#039;s Quest IV]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.006.004||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.502||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/08/07&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Fun Seeker&amp;#039;s Guide]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.02||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.506||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Hoyle Official Book of Games, Volume 1]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.113 (?)||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.530||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 3 Demo|Leisure Suit Larry 3 Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|0.249||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.530||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Hero&amp;#039;s Quest: So You Want to Be a Hero|Hero&amp;#039;s Quest]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.566||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Hoyle Official Book of Games, Volume 2: Solitaire|Hoyle Official Book of Games, Volume 2]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.011||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.572||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 3: Passionate Patti in Pursuit of the Pulsating Pectorals|Leisure Suit Larry 3]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.003||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.572||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/10/27&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 3: Passionate Patti in Pursuit of the Pulsating Pectorals|Leisure Suit Larry 3]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.021||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.572||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1990/01/27&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Hero&amp;#039;s Quest: So You Want to Be a Hero|Hero&amp;#039;s Quest]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.102||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.629||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Quest for Glory I|Quest for Glory I ]]**||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.200||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.629||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Colonel&amp;#039;s Bequest, The|Colonel&amp;#039;s Bequest, The]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.046||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.631||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Code-Name: ICEMAN]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.023||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.668||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Conquests of Camelot Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.668||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1990/03/17&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Hoyle Official Book of Games, Volume 1]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.115||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.668||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1990&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Conquests of Camelot|Conquests of Camelot]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.001.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.685||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Code-Name: ICEMAN]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.033||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.685||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Code-Name: ICEMAN Demo]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.685||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1990/06/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Mixed-Up Mother Goose SCI]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.011||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.685||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Hero&amp;#039;s Quest Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.685||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1990/06/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest III: The Pirates of Pestulon|Space Quest III]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.018||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|0.000.685||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;QA file claims int. ver 0.000.397&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; Original SCI0 re-release of Hero&amp;#039;s Quest under another name&lt;br /&gt;
&lt;br /&gt;
0.000.629 (QfG1) - first interpreter version that supported kGetTime(2 and 3)&amp;lt;br/&amp;gt;&lt;br /&gt;
0.000.668 (Codename: ICEMAN) - first interpreter version that used a different mod implementation&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== SCI01 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest I: The Quest for the Crown (SCI remake)|King&amp;#039;s Quest I SCI remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.051||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|S.old.010||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest I SCI Demo|King&amp;#039;s Quest I SCI remake demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|S.old.010||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1990/09/19&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest III: The Pirates of Pestulon|Space Quest III]] (Ger./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.052||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|S.old.114||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 3: Passionate Patti in Pursuit of the Pulsating Pectorals|Leisure Suit Larry 3]] (Fr./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.050||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|S.old.123||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Quest for Glory I: So You Want to Be a Hero (EGA)|Quest for Glory I]] (Japanese/Eng. PC-98)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.006||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|S.old.201||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI1 (EGA) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Quest for Glory II: Trial by Fire|Quest for Glory II]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.041||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Quest for Glory II Demo|Quest for Glory II Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.046||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Quest for Glory II: Trial by Fire|Quest for Glory II]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.102||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.072||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Quest for Glory II: Trial by Fire|Quest for Glory II]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.105||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.072||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Quest for Glory II: Trial by Fire|Quest for Glory II (SCIV.OLD)]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.105||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.087||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI1 (early) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest V: Absence Makes The Heart Go Yonder|King&amp;#039;s Quest V]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|0.000.051||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.060||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest V: Absence Makes The Heart Go Yonder|King&amp;#039;s Quest V]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|0.000.062||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.060||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 1 VGA Demo|Leisure Suit Larry VGA Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.084||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Mixed-Up Fairy Tales|Mixed-Up Fairy Tales VGA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.145||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Christmas Card 1990 - The Seasoned Professional (EGA)|1990  Christmas Greeting Card EGA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.172||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1990&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Christmas Card 1990 - The Seasoned Professional (VGA)|1990 Christmas Greeting Card VGA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.174||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1990&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.052||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.753||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.753||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== SCI1 (middle) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 5 Demo|Leisure Suit Larry 5 Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.181||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Conquests of the Longbow Demo|Conquests of the Longbow Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|0.004||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.181||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 1: In the Land of the Lounge Lizards|Leisure Suit Larry VGA remake]] (no copy protection)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.510||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 1: In the Land of the Lounge Lizards|Leisure Suit Larry VGA remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.577||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI1 (late) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Castle of Dr. Brain Demo|Castle of Dr. Brain Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.005||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Castle of Dr. Brain|Castle of Dr. Brain]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.044||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Castle of Dr. Brain|Castle of Dr. Brain]] VGA (Sp./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.004||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.068||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Conquests of the Longbow|Conquests of the Longbow]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.168||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Conquests of the Longbow|Conquests of the Longbow]] VGA (Ger./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.169||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest I: The Sarien Encounter SCI|Space Quest I VGA Remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.181||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest I: The Sarien Encounter SCI|Space Quest I SCI EGA Remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.SQ1.004||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest I: The Sarien Encounter SCI|Space Quest I SCI VGA Remake]] &amp;#039;&amp;#039;patched&amp;#039;&amp;#039;||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.SQ1.004||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest I: The Sarien Encounter SCI|Space Quest I SCI VGA Remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|T.A00.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest I: The Sarien Encounter SCI|Space Quest I SCI VGA Remake]] (Sp./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|T.A00.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest V: Absence Makes The Heart Go Yonder|King&amp;#039;s Quest V]] VGA (Fr./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.784||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest V: Absence Makes The Heart Go Yonder|King&amp;#039;s Quest V]] VGA (Ger./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.784||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest V: Absence Makes The Heart Go Yonder|King&amp;#039;s Quest V]] VGA (Sp./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.784||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest 3 Demo|Police Quest 3 Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|T.A00.052||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|Leisure Suit Larry 5]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|T.A00.169||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1991/09/11&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|Leisure Suit Larry 5]] VGA (Ger./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|T.A00.169||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1991/11/14&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|Leisure Suit Larry 5]] VGA (Sp./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.LS5.006||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/04/21&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|Leisure Suit Larry 5]] VGA (Fr./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.ls5.019||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/01/17&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest 3: The Kindred|Police Quest III]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|T.A00.178||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest 3: The Kindred|Police Quest III]] VGA (Ger./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|T.A00.178||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest 3: The Kindred|Police Quest III]] VGA (Sp./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.pq3.021||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/10/08&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Ecoquest: The Search for Cetus|EcoQuest]] VGA||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.ECO.013||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Ecoquest: The Search for Cetus|EcoQuest]] VGA (Fr./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.ECO.013||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Ecoquest: The Search for Cetus|EcoQuest]] VGA (Sp./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.ECO.013||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Mixed-Up Fairy Tales Demo|Mixed-Up Fairy Tales Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|FAIRY.003||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV]] VGA (Ger./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.SQ4.030||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest IV: Roger Wilco and the Time Rippers|Leisure Suit Larry VGA remake]] (Sp./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.SQ4.057||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV]] VGA (It./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.3||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.SQ4.057||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV]] VGA (Fr./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.SQ4.057||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV]] VGA (Sp./Eng.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.SQ4.057||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; But NOT cracked, it&amp;#039;s just missing from the game&amp;#039;s script code&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== SCI1 (unknown) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Ms. Astro Chicken: Flight of the Pullet|Ms. Astro Chicken]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|(x.yyy)||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.679||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest V: Absence Makes The Heart Go Yonder|King&amp;#039;s Quest V EGA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|0.000.055||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.058||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest V: Absence Makes The Heart Go Yonder|King&amp;#039;s Quest V EGA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|0.000.062||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.073||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 1: In the Land of the Lounge Lizards|Leisure Suit Larry SCI EGA Remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.575||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV EGA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.060||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.000.744||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Police Quest 3: The Kindred|Police Quest III EGA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.pq3.018||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|Leisure Suit Larry 5 EGA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|T.A00.159||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1991/09/24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI1.1 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;825&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Quest for Glory III Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.021||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1991/06/12&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Police Quest 1: In Pursuit of the Death Angel VGA|Police Quest I VGA remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.029||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Crazy Nick&amp;#039;s Software Picks: King Graham&amp;#039;s Board Game Challenge|King Graham&amp;#039;s Board Game Challenge]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.00||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.029||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/06/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Crazy Nick&amp;#039;s Software Picks: Leisure Suit Larry&amp;#039;s Casino|Leisure Suit Larry&amp;#039;s Casino]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.00||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.029||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/06/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Crazy Nick&amp;#039;s Software Picks: Parlor Games with Laura Bow|Parlor Games with Laura Bow]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.00||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.029||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/06/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Crazy Nick&amp;#039;s Software Picks: Robin Hood&amp;#039;s Game of Skill and Chance|Robin Hood&amp;#039;s Game of Skill and Chance]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.00||  width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.029||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/06/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Crazy Nick&amp;#039;s Software Picks: Roger Wilco&amp;#039;s Spaced Out Game Pack|Roger Wilco&amp;#039;s Spaced Out Game Pack]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.00||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.029||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/06/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Quest for Glory I VGA Remake Demo|Quest for Glory I VGA remake Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.029||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Mixed-Up Mother Goose VGA|Mixed-Up Mother Goose SCI11 remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.031||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Quest for Glory III: Wages of War|Quest for Glory III]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.050**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Quest for Glory III: Wages of War|Quest for Glory III]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.050**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/11/09&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Island of Dr. Brain]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.053||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/10/27&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Island of Dr. Brain Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.053||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Quest VI: Heir Today, Gone Tomorrow|King&amp;#039;s Quest VI]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.054||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Quest VI: Heir Today, Gone Tomorrow|King&amp;#039;s Quest VI]] (Fr.)||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.054||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Quest VI: Heir Today, Gone Tomorrow|King&amp;#039;s Quest VI]] (Ger.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.054||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/11/18&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Season&amp;#039;s Greeting Card 1992]] || width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.055||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/12/1&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[EcoQuest 2 Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.055||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Quest VI Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.055||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Pepper&amp;#039;s Adventures in Time Demo|Pepper&amp;#039;s Adventures in Time Demo]] (non-playable)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.060||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV CD]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.064||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV CD]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.064||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[EcoQuest: The Search for Cetus|EcoQuest 1 CD]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.064||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[EcoQuest 2: Lost Secret of The Rainforest|EcoQuest 2]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.065||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/02/05&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Space Quest V: The Next Mutation|Space Quest V]] (reviewer&amp;#039;s copy -- debug activated)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|0.028||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.067||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/10/22&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest V: The Next Mutation|Space Quest V]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|0.028||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.067||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest V: The Next Mutation|Space Quest V]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.03||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.068||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest V: The Next Mutation|Space Quest V]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.04||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.068||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest V: The Next Mutation|Space Quest V]](Ger.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.04||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.068||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest V: The Next Mutation|Space Quest V]] (It.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.068||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/09/20&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest V: The Next Mutation|Space Quest V]] (Fr.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.04||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.068||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Space Quest V: The Next Mutation|Space Quest V]] (Sp.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.068||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Hoyle Classic Card Games]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.069||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/03/26&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[EcoQuest 2: Lost Secret of The Rainforest|EcoQuest 2]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.069||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/02/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Freddy Pharkas Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.069||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/01/13&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest VI: Heir Today, Gone Tomorrow|King&amp;#039;s Quest VI CD]] (Win)*||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.034||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.069||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/09/11&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Dagger of Amon Ra, The|Laura Bow 2 CD]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.069||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Pepper&amp;#039;s Adventures in Time]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.069||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/02/05&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Pepper&amp;#039;s Adventures in Time]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.072||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/02/05&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Pepper&amp;#039;s Adventures in Time Demo]] (playable)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.072||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Dagger of Amon Ra, The|Laura Bow 2 CD]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.072||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[EcoQuest 2: Lost Secret of The Rainforest|EcoQuest 2]] (Fr.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/05/03&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[EcoQuest 2: Lost Secret of The Rainforest|EcoQuest 2]] (test version) (Sp.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|9.999.999||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1995/04/20&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Gabriel Knight 1 Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|000.000.001||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.092||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Freddy Pharkas: Frontier Pharmacist|Freddy Pharkas Frontier Pharmacist CD]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.095||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Freddy Pharkas Demo|Freddy Pharkas Demo CD]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.095||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Police Quest 4 Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.096||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 6: Shape Up or Slip Out!|Leisure Suit Larry 6]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.113||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 6: Shape Up or Slip Out!|Leisure Suit Larry 6]] (Fr.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.113||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 6: Shape Up or Slip Out!|Leisure Suit Larry 6]] (Ger.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.113||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/01/17&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 6: Shape Up or Slip Out!|Leisure Suit Larry 6]] (Sp.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.113||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/09/28&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 6: Shape Up or Slip Out!|Leisure Suit Larry 6 CD]] (lo-res)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.115||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Freddy Pharkas: Frontier Pharmacist|Freddy Pharkas Frontier Pharmacist CD]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|1.001.132||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Dagger of Amon Ra, The|Laura Bow 2]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.274||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Dagger of Amon Ra, The|Laura Bow 2]] (Fr.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.274||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Dagger of Amon Ra, The|Laura Bow 2]] (Sp.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.274||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[EcoQuest: The Search for Cetus|EcoQuest 1]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.10||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.286||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Quest for Glory I: So You Want to Be a Hero (VGA)|Quest for Glory I VGA Remake]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.411||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Quest for Glory I: So You Want to Be a Hero (VGA)|Quest for Glory I VGA Remake]] &amp;#039;&amp;#039;patched&amp;#039;&amp;#039;||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|L.rry.021||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Quest for Glory III: Wages of War|Quest for Glory III]] (It.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|L.rry.083||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/04/26&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Quest for Glory III: Wages of War|Quest for Glory III]] (Ger.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|L.rry.083||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/11/16&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Quest for Glory III: Wages of War|Quest for Glory III]] (Fr.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|L.rry.083||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/03/03&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Quest for Glory III: Wages of War|Quest for Glory III]] (Sp.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|L.rry.083||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/06/30&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Hoyle Classic Card Games]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|no version number||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1992/09/12&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Quest for Glory IV Demo|Quest for Glory IV Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.001||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|no version number||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/05/28&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Freddy Pharkas: Frontier Pharmacist]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|l.cfs.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Freddy Pharkas: Frontier Pharmacist]] (Sp.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|l.cfs.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1995/03/30&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Freddy Pharkas: Frontier Pharmacist]] (Fr.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|l.cfs.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/08/18&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Freddy Pharkas: Frontier Pharmacist]] (Ger.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|l.cfs.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/08/11&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Slater &amp;amp;amp; Charlie|Slater &amp;amp;amp; Charlie]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|l.cfs.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/05/19&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[Slater &amp;amp;amp; Charlie Demo|Slater &amp;amp;amp; Charlie Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|l.cfs.081||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest VI: Heir Today, Gone Tomorrow|King&amp;#039;s Quest VI CD]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|l.cfs.158||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest VI: Heir Today, Gone Tomorrow|King&amp;#039;s Quest VI]] (Sp.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|l.cfs.158||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/07/05&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;Version file says: KQ6 version 1.000.00G&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; 1.001.050 (QfG3) - first interpreter version that used palette copying instead of merging&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== SCI2 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Gabriel Knight: Sins of the Fathers|Gabriel Knight]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/11/22&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Gabriel Knight: Sins of the Fathers|Gabriel Knight CD]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|01.100.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Gabriel Knight: Sins of the Fathers|Gabriel Knight CD]] (Win)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|01.100.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Gabriel Knight: Sins of the Fathers|Gabriel Knight]] (Fr.)||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/01/14&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Gabriel Knight: Sins of the Fathers|Gabriel Knight]] (Sp.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1995/06/04&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Gabriel Knight: Sins of the Fathers|Gabriel Knight]] (Ger.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Police Quest: Open Season|Police Quest IV]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/11/27&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Police Quest: Open Season|Police Quest IV]] (Fr.)||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/01/14&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Police Quest: Open Season|Police Quest IV]] (Ger.)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.002||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/02/25&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Quest for Glory IV: Shadows of Darkness|Quest for Glory IV]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/12/05&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Quest for Glory IV: Shadows of Darkness|Quest for Glory IV]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1993/12/14&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI2.1 (early) ==&lt;br /&gt;
&lt;br /&gt;
These were versions between SCI2 and SCI21. They used a modified SCI2 kernel table. Most of these games maintain the &amp;quot;old school&amp;quot; Sierra graphics. Robot videos were firstly introduced here, in the DOS version of KQ7. VMD videos were not available.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Gabriel Knight 2 Demo]] (Win) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002 (+DEBUG)||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Quest VII: The Princeless Bride|King&amp;#039;s Quest VII]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.4||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1994/11/17&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Leisure Suit Larry 6|Leisure Suit Larry 6 CD]] (Hi-Res)|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Leisure Suit Larry 6|Leisure Suit Larry 6 CD]] (Hi-Res) (Win)|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Police Quest: Open Season|Police Quest IV CD]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.100.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Police Quest: Open Season|Police Quest IV CD]] (Win)|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.100.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Quest for Glory IV: Shadows of Darkness|Quest for Glory IV CD]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Quest for Glory IV: Shadows of Darkness|Quest for Glory IV CD]] (Win)|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI2.1 (middle) ==&lt;br /&gt;
&lt;br /&gt;
These include the finalized kernel function table, also used in SCI3 games. VMD videos were introduced here, and a more heavy usage of robot videos. These games have the &amp;quot;new age&amp;quot; (cartoonish or 3D pre-rendered graphics with actors).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Beast Within: A Gabriel Knight Mystery, The|Gabriel Knight 2]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1997/03/17&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Beast Within: A Gabriel Knight Mystery, The|Gabriel Knight 2]] (Win) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.1||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Inside The Chest/Behind the Developers&amp;#039; Shield]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| &amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Inside The Chest/Behind the Developers&amp;#039; Shield]] (Win) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| &amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Quest VII: The Princeless Bride|King&amp;#039;s Quest VII]] (Win only Release) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.51||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Quest VII: The Princeless Bride|King&amp;#039;s Quest VII]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 2.00b||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Quest VII: The Princeless Bride|King&amp;#039;s Quest VII]] (Win)|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 2.00b||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Questions]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| &amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[King&amp;#039;s Questions]] (Win)|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| &amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Mixed-Up Mother Goose Deluxe]] (Win) (Eng./Sp.) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| &amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Phantasmagoria]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Phantasmagoria]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.100.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Daryl F. Gates&amp;#039; Police Quest SWAT|Police Quest: SWAT]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| ???||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Police Quest: SWAT Demo]] (Win) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 0.001.200||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Shivers]] (Win only) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.02||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Shivers Demo]] (Win) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest 6]] || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Space Quest 6 Demo]] || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Torin&amp;#039;s Passage|Torin&amp;#039;s Passage]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Torin&amp;#039;s Passage|Torin&amp;#039;s Passage]] (Win)|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Torin&amp;#039;s Passage|Torin&amp;#039;s Passage]] (Eng./Fr./Ger./It.) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Torin&amp;#039;s Passage|Torin&amp;#039;s Passage]] (Win) (Eng./Fr./Ger./It.) || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Torin&amp;#039;s Passage Demo]] || width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1995/08/24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== SCI2.1 (late) ==&lt;br /&gt;
&lt;br /&gt;
These are mainly SCI21 game demos of SCI3 games and exhibit behavior where strings and arrays are mixed together (they were cleanly separated in earlier versions).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[RAMA Demo]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Leisure Suit Larry 7 Demo]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;|1.0 Demo||  width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1996/07/14&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Lighthouse Demo]]|| width=&amp;quot;145&amp;quot; align=&amp;quot;center&amp;quot;| 1.00||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|2.100.002||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1995/10/27&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SCI3 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Leisure Suit Larry 7: Love for Sail!|Leisure Suit Larry 7]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.01||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|3.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Leisure Suit Larry 7: Love for Sail!|Leisure Suit Larry 7]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.20||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|3.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Lighthouse: The Dark Being|Lighthouse]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0C||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|3.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1996/09/09&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Lighthouse Demo]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|3.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1996/09/09&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot; |[[Phantasmagoria: A Puzzle of Flesh|Phantasmagoria II]]||  width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|001.0.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|3.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[RAMA]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|001.000.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|3.000.000||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1996/11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Unknown Versions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
! width=&amp;quot;435&amp;quot; | Game !! width=&amp;quot;125&amp;quot; | Game version !! width=&amp;quot;165&amp;quot; | Interpreter version !! width=&amp;quot;75&amp;quot; | Date&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|Hoyle Classic||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|2.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|&amp;quot;No version Number&amp;quot;*||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|Hoyle&amp;#039;s Card Games 3 EGA (SCI1)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|Hoyle&amp;#039;s Card Games (SCI1)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|Hoyle&amp;#039;s Card Games 3 Demo (SCI1)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Colonel&amp;#039;s Bequest Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/09/21&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Leisure Suit Larry 2 Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|1989/06/08&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Jones in the Fast Lane|Jones in the Fast Lane EGA]] (SCI1, with debugger)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.060||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Jones in the Fast Lane|Jones in the Fast Lane VGA]] (SCI1, with debugger)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.060||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Jones in the Fast Lane|Jones in the Fast Lane VGA CD]] (SCI1, no debugger)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Jones in the Fast Lane|Jones in the Fast Lane CD]] (SCI1, with debugger)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Jones in the Fast Lane|Jones in the Fast Lane CD]] (Win) (SCI1)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.0||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[King&amp;#039;s Quest V: Absence Makes the Heart Go Yonder|King&amp;#039;s Quest V CD]] (SCI1.1)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|1.000.052||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Mixed-Up Mother Goose VGA|Mixed-Up Mother Goose CD]] (SCI1, with debugger)||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[Dagger of Amon Ra Demo]] (SCI1.1)***||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;435&amp;quot;|[[EcoQuest 1 Demo]]||width=&amp;quot;125&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;||width=&amp;quot;165&amp;quot; align=&amp;quot;center&amp;quot;|x.yyy.yyy**||width=&amp;quot;75&amp;quot; align=&amp;quot;center&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; The version string contains the text: &amp;quot;No version number&amp;quot;, it&amp;#039;s the same interpreter with both of the games.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; x.yyy.yyy is clearly a standard value, so these game do have different interpreters. The games which share the same interpreter are grouped by separating different versions with a blank line.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt; Has some aspect(s) of the SCI1 interpreter.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== Not SCI ==&lt;br /&gt;
&lt;br /&gt;
* [[Shivers Two: Harvest of Souls|Shivers Two]] (game and demo): Does not contain SCI scripts, the room logic has been rewritten in native code placed in DLL files&lt;br /&gt;
* [[Leisure Suit Larry 6]] (demo): It&amp;#039;s a collection of PCX screenshots played with an external player&lt;br /&gt;
* [[Space Quest V]] (demo): Uses the Dynamix DGDS engine&lt;br /&gt;
* Betrayal in Antara: It has SCI resources for the 2D parts (e.g. inside buildings), but it has its own modified SCI script system, plus a 3D engine&lt;br /&gt;
** Some of Antara&amp;#039;s &amp;quot;ETC&amp;quot; resources are really [http://doom.wikia.com/wiki/WAD Doom PWAD] files.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
= Possible Entries =&lt;br /&gt;
&lt;br /&gt;
The following games are &amp;#039;&amp;#039;&amp;#039;likely/known&amp;#039;&amp;#039;&amp;#039; to exist:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI0 ==&lt;br /&gt;
&lt;br /&gt;
* [[Hero&amp;#039;s Quest: So You Want to Be a Hero|Hero&amp;#039;s Quest]] 1.001&lt;br /&gt;
* [[Hoyle Official Book of Games, Volume 1|Hoyle&amp;#039;s Book of Games]] (Alt. version, 1.000.104 (1989-08-07))&lt;br /&gt;
* Interpreter Version 0.000.396 (LSL2??)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI1 ==&lt;br /&gt;
&lt;br /&gt;
* [[Castle of Dr. Brain]] EGA&lt;br /&gt;
* [[Castle of Dr. Brain]] VGA (Alt. version (1.1?), with SCI 1.000.068)&lt;br /&gt;
* [[Conquests of the Longbow]] EGA&lt;br /&gt;
* [[EcoQuest: The Search for Cetus|EcoQuest 1 EGA]]&lt;br /&gt;
* [[EcoQuest: The Search for Cetus|EcoQuest 1 VGA]] 1.000 (German)&lt;br /&gt;
* [[King&amp;#039;s Quest V: Absence Makes the Heart Go Yonder|King&amp;#039;s Quest V]] (Other versions?)&lt;br /&gt;
* [[Mixed-Up Mother Goose SCI|Mixed-Up Fairy Tales EGA]]&lt;br /&gt;
* [[Space Quest IV: Roger Wilco and the Time Rippers|Space Quest IV]] (Beta version released by THG)&lt;br /&gt;
* A couple of bilingual versions&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI11 ==&lt;br /&gt;
&lt;br /&gt;
* [[Space Quest V: The Next Mutation|Space Quest V]] beta #2? (NFO file from the final release mentions it)&lt;br /&gt;
* [[Island of Dr. Brain]] (CD version? Probably the same as disk)&lt;br /&gt;
* Localized versions&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== SCI32 ==&lt;br /&gt;
&lt;br /&gt;
* Many localized versions&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== Unknown ==&lt;br /&gt;
&lt;br /&gt;
* [[Castle of Dr. Brain]] (CD version (if it actually differs))&lt;br /&gt;
* [[Leisure Suit Larry|Leisure Suit Larry 1]] (CD version (if it actually differs))&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
= Exclusions =&lt;br /&gt;
&lt;br /&gt;
These games are not AGI or SCI (but are related to Sierra):&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== [[w:Revolution Software|Revolution Software]] ==&lt;br /&gt;
&lt;br /&gt;
* [[King&amp;#039;s Quest VI: Heir Today, Gone Tomorrow|King&amp;#039;s Quest VI]] Amiga port ([[w:Virtual Theatre|Virtual Theatre]])&lt;br /&gt;
&lt;br /&gt;
== Other Genre Sierra Games ==&lt;br /&gt;
&lt;br /&gt;
* [[moby:sierras-3-d-helicopter-simulator|3D Helicopter Simulator]] &amp;#039;&amp;#039;Only the demo&amp;#039;&amp;#039; of 3D Helicopter Simulator included in a demo-pack uses AGI. The full game does not.&lt;br /&gt;
* [[moby:oils-well|Oil&amp;#039;s Well Remake]]&lt;br /&gt;
* [[w:Johnny Castaway|Johnny Castaway Screenantics Screensaver]]&lt;br /&gt;
* [[w:Leisure Suit Larry#Other_software|The Laffer Utilities]]&lt;br /&gt;
* [[w:The Incredible Machine (series)|The Incredible Machine Games]]&lt;br /&gt;
* [[w:Lode Runner: The Legend Returns|Lode Runner: The Legend Returns]]&lt;br /&gt;
&lt;br /&gt;
Most of these titles often have the usual file names (RESOURCE, etc.) but they do not use the AGI/SCI interpreter.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== Early Sierra CD Titles ==&lt;br /&gt;
&lt;br /&gt;
* [[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|Leisure Suit Larry 5]] (CD Release)&lt;br /&gt;
&lt;br /&gt;
Same as disk version.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== Post-1997 Sierra Games ==&lt;br /&gt;
&lt;br /&gt;
* [[w:Gabriel Knight 3: Blood of the Sacred, Blood of the Damned|Gabriel Knight 3]]&lt;br /&gt;
* [[w:Quest for Glory V: Dragon Fire|Quest for Glory V]]&lt;br /&gt;
* All Sierra games after 1997&lt;br /&gt;
&lt;br /&gt;
After 1997, the SCI engine (and pretty much the adventure genre in general) was abandoned.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== Other SCI Games ==&lt;br /&gt;
&lt;br /&gt;
* Most Russian Translations&lt;br /&gt;
* Every Chinese Translation&lt;br /&gt;
* Every SCI0 Translation&lt;br /&gt;
* Certain SCI1+ translations&lt;br /&gt;
&lt;br /&gt;
Most (all?) of these are all hacks. It is unknown about later (SCI32) Russian ones, as some say they were indeed translated and sold officially.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
*The Russian SCI games are all (pretty well done) hacks. NEWSCIV is in fact an regular SCI interpreter, but with some intro (Taralej &amp;amp; Jabocrack SoftWare presents) attached to it.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:ToDo Pages]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=SCI_Graphic_Studio&amp;diff=17465</id>
		<title>SCI Graphic Studio</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=SCI_Graphic_Studio&amp;diff=17465"/>
		<updated>2025-04-06T12:42:48Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SCI Resource Utilities#SCI Graphic Studio 150]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17464</id>
		<title>SCI How To</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17464"/>
		<updated>2025-04-02T22:18:10Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Adding Sound Support]]&lt;br /&gt;
*[[Adding Troflip&amp;#039;s alt Debugging]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 2 - Qualifying Adjectives]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 3 - Prepositions]]&lt;br /&gt;
*[[Automatic Doors]]&lt;br /&gt;
*[[Death Handler]]&lt;br /&gt;
*[[Determining Location of Mouse Cursor]]&lt;br /&gt;
*[[Fixing F2 (ToggleSound) Issue with Companion]]&lt;br /&gt;
*[[Generic Keypad Class]]&lt;br /&gt;
*[[Get and Use Specific Keyboard Keys]]&lt;br /&gt;
*[[How to Keep Your gTheSoundFX from iInterupting gTheMusic]]&lt;br /&gt;
*[[Manipulating the Parser - Part 1 - &amp;#039;Complex&amp;#039; Nouns]]&lt;br /&gt;
*[[Manipulating the Parser - Part 2 - Addressing Actors]]&lt;br /&gt;
*[[Placing Inventory Descriptions in a Text Resource]]&lt;br /&gt;
*[[Resource Corruption from Rebuilding while Running]]&lt;br /&gt;
*[[Said() Strings - Comprehensive Examples]]&lt;br /&gt;
*[[Taking Inventory Item Away from Character]]&lt;br /&gt;
*[[Template Game Bug Fixes]]&lt;br /&gt;
*[[Timers]]&lt;br /&gt;
*[[Word Suffixes]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Taking_Inventory_Item_Away_from_Character&amp;diff=17463</id>
		<title>Taking Inventory Item Away from Character</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Taking_Inventory_Item_Away_from_Character&amp;diff=17463"/>
		<updated>2025-04-02T22:17:49Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Andrew Branscom moved page Taking Inventory Item away from character to Taking Inventory Item Away from Character without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Taking Inventory Item away from character&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
This is a pretty basic need, perhaps you have given the golden ring to the potion maker or say you eat the spinach dip, either way your character will need to &amp;quot;lose&amp;quot; the inventory item.&lt;br /&gt;
&lt;br /&gt;
This is not covered in any of the tutorials, but has been covered enough at our old home that we all know how to do it, but any new members won&amp;#039;t. I figured I had better stick this up here so anyone new to sci won&amp;#039;t have to ask. I remember I asked when I first started out.&lt;br /&gt;
&lt;br /&gt;
Anyway, if you have done the tutorial, which if you haven&amp;#039;t you should, then you will remember that in order for your character to get an item you needed to use the code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:get(INV_KEY))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now to drop an item either when your character uses it, gives it away, or simply drops it, you could use put instead of get.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:put(INV_KEY))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in whatever room your character got the item, if you checked to see whether or not gEgo had it before initing it, then the item will reappear there since your character no longer has the item. This may seem strange if the person used the item, or gave it to someone else. Handling these type of instances will require using global variables.&lt;br /&gt;
&lt;br /&gt;
However, with this method in whatever room your character got the item, if you checked to see whether or not gEgo had it before initing it, then the item will reappear there since your character no longer has the item. This may seem strange if the person used the item, or gave it to someone else. Handling these type of instances will require using global variables. In these cases, you really want to test whether an object is in the room or not. An inventory object has an owner property and an ownedBy() method. The way Sierra used to do things was set the owner field to the number of the room the object is in. The (ego get:), (ego put:) and (ego has:) methods simply use this property. You can then test for ownership by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (send anItem:ownedBy(gRoomNumber)) ...)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows items to move around in the game. You can also use objects as owners, if you prefer; indeed, this is already done when an item is in the player&amp;#039;s inventory. Additionally, you&amp;#039;d also want to know about:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:put(anItem gRoomNumber))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will not take it from inventory and make it appear on the screen. The concept of an inventory item is completely different from the visual representation of it that you might see in the room. You would check to see if the room &amp;quot;owns&amp;quot; the inventory object prior to going ahead and initializing the Prop instance (or whatever) that represents that object in the room. Also, there is a position associated with it when it&amp;#039;s in the room, but not in your inventory.&lt;br /&gt;
&lt;br /&gt;
The initial &amp;quot;owner&amp;quot; room is specified in the inventory object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(instance {Thermal Detonator} of InvI&lt;br /&gt;
    (properties&lt;br /&gt;
        said &amp;#039;/detonator&amp;#039;&lt;br /&gt;
        description &amp;quot;Used for blowing stuff to little bits.   It has an impact switch, so in other words...DON&amp;#039;T DROP IT!&amp;quot;&lt;br /&gt;
        owner 69&lt;br /&gt;
        view 242&lt;br /&gt;
        loop 0&lt;br /&gt;
        cel 12&lt;br /&gt;
    )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Inventory]]&lt;br /&gt;
[[Category:SCI Inventory]]&lt;br /&gt;
[[Category:Actors]]&lt;br /&gt;
[[Category:SCI Actors]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Automatic_Doors&amp;diff=17462</id>
		<title>Automatic Doors</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Automatic_Doors&amp;diff=17462"/>
		<updated>2025-04-02T22:04:58Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Automatic Doors&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
When using Doors and AutoDoors, I am not sure why but things always seemed to go awry. This little tutorial will have a simple Automatic Door (when the player walks near them, they open) up and running with two simple lines of code.&lt;br /&gt;
&lt;br /&gt;
We begin at the very top of the script. We will need to tell the script that we are going to be using an automatic door and to include that functionality. This is done simply by adding in another use command where all of the others are.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(use &amp;quot;autodoor&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that one line is finished, lets go on to the second one, the hard one. Just kidding, there is nothing hard to this method of using automatic doors. The script can now handle AutoDoor instances now, but we are not making one of those, at least not the traditional way. In the rooms init method, where you init() your rooms views and actors, you will need to add in the call that inits the automatic door. the parameters are of the basic type, and I don&amp;#039;t think it&amp;#039;s necessary to go into detail about them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(send (AutoDoor:new()):view(211)&lt;br /&gt;
                       setLoop(0)&lt;br /&gt;
                       posn(161 62)&lt;br /&gt;
                       setPri(2)&lt;br /&gt;
                       entranceTo(101)&lt;br /&gt;
                       init())&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, as long as you have added the doors view, and have set up the doors control colors Navy and Green (you won&amp;#039;t need a Yellow one because this type of door does not get blocked) for when to open or transport to a new room. We don&amp;#039;t need to create an instance or anything else, we are all done coding.&lt;br /&gt;
&lt;br /&gt;
This simple type of door has some limitations though, because there is not an instance name to reference you won&amp;#039;t be able to program interactions with it as the code stands now. So keep this in mind. This door can&amp;#039;t be locked or blocked, if all you need is a door that opens when you near it, then this will work.&lt;br /&gt;
&lt;br /&gt;
For more advanced needs, such as multiple doors in the same room, see [[Advanced Use of Control Areas]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Doors]]&lt;br /&gt;
[[Category:Control Areas]]&lt;br /&gt;
[[Category:SCI Control Areas]]&lt;br /&gt;
[[Category:Props]]&lt;br /&gt;
[[Category:SCI Props]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17461</id>
		<title>SCI How To</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17461"/>
		<updated>2025-04-02T22:02:18Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Adding Sound Support]]&lt;br /&gt;
*[[Adding Troflip&amp;#039;s alt Debugging]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 2 - Qualifying Adjectives]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 3 - Prepositions]]&lt;br /&gt;
*[[Automatic Doors]]&lt;br /&gt;
*[[Death Handler]]&lt;br /&gt;
*[[Determining Location of Mouse Cursor]]&lt;br /&gt;
*[[Fixing F2 (ToggleSound) Issue with Companion]]&lt;br /&gt;
*[[Generic Keypad Class]]&lt;br /&gt;
*[[Get and Use Specific Keyboard Keys]]&lt;br /&gt;
*[[How to Keep Your gTheSoundFX from iInterupting gTheMusic]]&lt;br /&gt;
*[[Manipulating the Parser - Part 1 - &amp;#039;Complex&amp;#039; Nouns]]&lt;br /&gt;
*[[Manipulating the Parser - Part 2 - Addressing Actors]]&lt;br /&gt;
*[[Placing Inventory Descriptions in a Text Resource]]&lt;br /&gt;
*[[Resource Corruption from Rebuilding while Running]]&lt;br /&gt;
*[[Said() Strings - Comprehensive Examples]]&lt;br /&gt;
*[[Taking Inventory Item away from character]]&lt;br /&gt;
*[[Template Game Bug Fixes]]&lt;br /&gt;
*[[Timers]]&lt;br /&gt;
*[[Word Suffixes]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Automatic_Doors&amp;diff=17460</id>
		<title>Automatic Doors</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Automatic_Doors&amp;diff=17460"/>
		<updated>2025-04-02T22:01:00Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Andrew Branscom moved page Automatic doors to Automatic Doors without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Automatic doors&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
When using Doors and AutoDoors, I am not sure why but things always seemed to go awry. This little tutorial will have a simple Automatic Door (when the player walks near them, they open) up and running with two simple lines of code.&lt;br /&gt;
&lt;br /&gt;
We begin at the very top of the script. We will need to tell the script that we are going to be using an automatic door and to include that functionality. This is done simply by adding in another use command where all of the others are.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(use &amp;quot;autodoor&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that one line is finished, lets go on to the second one, the hard one. Just kidding, there is nothing hard to this method of using automatic doors. The script can now handle AutoDoor instances now, but we are not making one of those, at least not the traditional way. In the rooms init method, where you init() your rooms views and actors, you will need to add in the call that inits the automatic door. the parameters are of the basic type, and I don&amp;#039;t think it&amp;#039;s necessary to go into detail about them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(send (AutoDoor:new()):view(211)&lt;br /&gt;
                       setLoop(0)&lt;br /&gt;
                       posn(161 62)&lt;br /&gt;
                       setPri(2)&lt;br /&gt;
                       entranceTo(101)&lt;br /&gt;
                       init())&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, as long as you have added the doors view, and have set up the doors control colors Navy and Green (you won&amp;#039;t need a Yellow one because this type of door does not get blocked) for when to open or transport to a new room. We don&amp;#039;t need to create an instance or anything else, we are all done coding.&lt;br /&gt;
&lt;br /&gt;
This simple type of door has some limitations though, because there is not an instance name to reference you won&amp;#039;t be able to program interactions with it as the code stands now. So keep this in mind. This door can&amp;#039;t be locked or blocked, if all you need is a door that opens when you near it, then this will work.&lt;br /&gt;
&lt;br /&gt;
For more advanced needs, such as multiple doors in the same room, see [[Advanced Use of Control Areas]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Doors]]&lt;br /&gt;
[[Category:Control Areas]]&lt;br /&gt;
[[Category:SCI Control Areas]]&lt;br /&gt;
[[Category:Props]]&lt;br /&gt;
[[Category:SCI Props]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Word_Suffixes&amp;diff=17459</id>
		<title>Word Suffixes</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Word_Suffixes&amp;diff=17459"/>
		<updated>2025-04-02T21:47:21Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Word Suffixes&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Gumby&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is a complete list of word suffixes, with examples (located in the vocab.901) from the template game.  My understanding is that these are used by the parser if the inputted word cannot be matched in the vocab.000.  Then it attempts to find a match here, and if it does the parser will use the suffixed word class while parsing.  This also explains why there are minimal/no pluralized words in the vocab - you should be able to use the root word &amp;amp; the parse will still work properly.&lt;br /&gt;
&lt;br /&gt;
Note that you cannot use suffixed words in developing Said() strings (however, it may minimize the number of strings you need to write), it just helps out with the user input.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
   (if(Said(&amp;#039;take/knife&amp;#039;))       // This will respond to both &amp;#039;take knife&amp;#039; &amp;amp; &amp;#039;take knives&amp;#039;!&lt;br /&gt;
       Print(&amp;quot;taken&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
   (if(Said(&amp;#039;take/knives&amp;#039;))      // Will NOT compile, knives is not in the vocab!&lt;br /&gt;
       Print(&amp;quot;taken&amp;quot;)&lt;br /&gt;
   )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The asterisks in the table corresponds to the word stem (you can think of it as a wildcard of sorts).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;800&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! class=&amp;quot;Blue&amp;quot; | Suffixed&amp;lt;br /&amp;gt;ending !! class=&amp;quot;Blue&amp;quot; | Suffixed&amp;lt;br /&amp;gt;word class !! class=&amp;quot;Blue&amp;quot; | Original&amp;lt;br /&amp;gt;ending !! class=&amp;quot;Blue&amp;quot; | Original&amp;lt;br /&amp;gt;word class !! align=&amp;quot;left&amp;quot; class=&amp;quot;Blue&amp;quot; valign=&amp;quot;bottom&amp;quot; | Example&lt;br /&gt;
|- &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *s || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; | Dogs – dog&lt;br /&gt;
|- &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *es || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; | Bottles – bottle &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ies || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *y || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; | Bodies – body &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *men || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *man || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; | Firemen – fireman &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ves || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *fe || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; | Knives – knife &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ves || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *f || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; | Thieves – thief &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *people || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *person || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ing || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Knocking – knock &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ing || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | article || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | article || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ing || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *e || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Waking – wake &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ing || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | article || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *e || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | article || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *nning || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *n || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Beginning – begin &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *pping || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *p || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Tripping – trip &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *mming || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *m || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Programming – program &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *tting || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *t || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Getting – get &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *rring || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *r || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Whirring – whir &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *gging || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *g || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Bugging – bug &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ed || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Killed – kill &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ed || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *e || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Praised – praise &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *nned || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *n || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Scanned – scan &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *pped || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *p || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Whipped – whip &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *mmed || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *m || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Hemmed – hem &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *tted || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *t || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Inputted – input &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *rred || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *r || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *gged || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *g || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Hugged – hug &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ied || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *y || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb || valign=&amp;quot;top&amp;quot; | Empied – empty &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *er || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; | Adjuster – adjust &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *er || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *e || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; | Tickler – tickle &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *nner || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *n || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; | Thin - thinner &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *pper || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *p || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; | Clapper – clap &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *mmer || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *m || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; | Slimmer – slim &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *tter || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *t || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; | Shutter – shut &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *rrer || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *r || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *gger || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *g || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; | Flagger – flag &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ier || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun/adj || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *y || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | imperative verb/adj || valign=&amp;quot;top&amp;quot; | Angrier – angry &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *est || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; | Sharpest – sharp &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *est || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *e || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *nnest || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *n || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; | Thinnest – thin &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ppest || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *p || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *mmest || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *m || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; | Trimmest - trim &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ttest || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *t || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; | Hottest – hot &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *rrest || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *r || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ggest || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *g || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; | Biggest – big &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *iest || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *y || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; | Shiniest – shiny &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ly || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *y || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | noun || valign=&amp;quot;top&amp;quot; | Watery – water &lt;br /&gt;
|-  &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | *ish || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | * || valign=&amp;quot;top&amp;quot; align=&amp;quot;center&amp;quot; | adjective || valign=&amp;quot;top&amp;quot; | Yellowish – yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Suffixes]]&lt;br /&gt;
[[Category:SCI Suffixes]]&lt;br /&gt;
[[Category:The SCI Parser]]&lt;br /&gt;
[[Category:Vocabulary]]&lt;br /&gt;
[[Category:SCI Vocabulary]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Timers&amp;diff=17458</id>
		<title>Timers</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Timers&amp;diff=17458"/>
		<updated>2025-04-02T21:46:03Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Timers&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Lars Skovlund&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Timer class in the template game has gone largely unused, and that is a shame. So here&amp;#039;s my attempt at explaining how to use it.&lt;br /&gt;
&lt;br /&gt;
First, there is no need to instantiate an object unless you want to change the timeout later on. The class methods are designed to take care of that. Second, the Timer class works by queuing a script when it expires. I can&amp;#039;t recall whether that&amp;#039;s in the documentation or not, but it simply means incrementing the current state number by 1 and calling changeState. Third, the only real advantage of the Timer class is its mutator methods. All other functionality is available directly in the Script class, so if your timing needs are simple, you don&amp;#039;t need this class at all.&lt;br /&gt;
&lt;br /&gt;
Next, I&amp;#039;ll describe the architecture of Timer (and Script, in this regard) objects. There are actually two separate properties devoted for timing: They are called &amp;#039;cycles&amp;#039; (&amp;#039;cycleCnt&amp;#039; in the Timer class) and &amp;#039;seconds&amp;#039;. The difference between them is (obviously) their resolution and, consequently, also their range. A cycle in SCI parlance is 1/60th of a second. Thus, the maximum range of a timer if you choose to use the cycle counter is about 18 minutes. If you choose to use the second counter, the range is about 45 hours.&lt;br /&gt;
&lt;br /&gt;
The mutator functions I hinted at above are called setCycles, set, and setReal, respectively. The first one is simple; it takes a cycle count (which you would have to calculate yourself) and starts a new timer with that timeout. You would call it like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(Timer:setCycle(RoomScript 30))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where RoomScript is the script that will be cued when the timer expires. The timeout will be half a second (30/60).&lt;br /&gt;
&lt;br /&gt;
The set method is a bit smarter. It automatically calculates the correct cycle count given a count of seconds, minutes, and hours. This method also adjusts the final count for the currently set game speed, which is not always what you want. And it uses the cycle counter (see above for a description); the real range of the Timer class may vary if you use this method. You would use it like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(Timer:set(RoomScript 30))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for a thirty-second delay.&lt;br /&gt;
&lt;br /&gt;
Finally, there&amp;#039;s the setReal method. Like set, it performs all calculations on its own, but it uses the seconds counter, and it does not adjust for game speed. Thus, it is ideal for game events that depend on how much &amp;quot;real time&amp;quot; passes. However, it does not work out of the box due to a typo in the template game. To fix it, find the doit method of the timer class (in Timer.sc), and the line that says:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (not seconds)&lt;br /&gt;
    CueClient()&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix the first line so it reads:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (not --seconds)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you&amp;#039;re all set.&lt;br /&gt;
&lt;br /&gt;
Finally, the cases where you don&amp;#039;t need a Timer object. As I&amp;#039;ve mentioned, the Script class has comparable properties (but no methods) to the Timer class. So you can simply use your room script and the cycles and seconds properties directly, if you are so inclined. This is what Sierra did in most cases; you don&amp;#039;t really see the Timer class used much in the games. You would simply do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(instance RoomScript of Script&lt;br /&gt;
     (method (changeState newState)&lt;br /&gt;
        (super:changeState(newState))&lt;br /&gt;
        (switch (newState)&lt;br /&gt;
           (case 1&lt;br /&gt;
            = seconds 15)&lt;br /&gt;
           (case 2&lt;br /&gt;
            Print(&amp;quot;Time&amp;#039;s up!&amp;quot;)))))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using the Timer class, you would similarly put your initialization code in case 1 above (or in a room&amp;#039;s init method).&lt;br /&gt;
&lt;br /&gt;
[[SCIPF:index.php/topic,83.0.html|See feed back about this post on the forums]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Timers]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Timers&amp;diff=17457</id>
		<title>Timers</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Timers&amp;diff=17457"/>
		<updated>2025-04-02T21:45:51Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Lars Skovlund&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Timer class in the template game has gone largely unused, and that is a shame. So here&amp;#039;s my attempt at explaining how to use it.&lt;br /&gt;
&lt;br /&gt;
First, there is no need to instantiate an object unless you want to change the timeout later on. The class methods are designed to take care of that. Second, the Timer class works by queuing a script when it expires. I can&amp;#039;t recall whether that&amp;#039;s in the documentation or not, but it simply means incrementing the current state number by 1 and calling changeState. Third, the only real advantage of the Timer class is its mutator methods. All other functionality is available directly in the Script class, so if your timing needs are simple, you don&amp;#039;t need this class at all.&lt;br /&gt;
&lt;br /&gt;
Next, I&amp;#039;ll describe the architecture of Timer (and Script, in this regard) objects. There are actually two separate properties devoted for timing: They are called &amp;#039;cycles&amp;#039; (&amp;#039;cycleCnt&amp;#039; in the Timer class) and &amp;#039;seconds&amp;#039;. The difference between them is (obviously) their resolution and, consequently, also their range. A cycle in SCI parlance is 1/60th of a second. Thus, the maximum range of a timer if you choose to use the cycle counter is about 18 minutes. If you choose to use the second counter, the range is about 45 hours.&lt;br /&gt;
&lt;br /&gt;
The mutator functions I hinted at above are called setCycles, set, and setReal, respectively. The first one is simple; it takes a cycle count (which you would have to calculate yourself) and starts a new timer with that timeout. You would call it like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(Timer:setCycle(RoomScript 30))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where RoomScript is the script that will be cued when the timer expires. The timeout will be half a second (30/60).&lt;br /&gt;
&lt;br /&gt;
The set method is a bit smarter. It automatically calculates the correct cycle count given a count of seconds, minutes, and hours. This method also adjusts the final count for the currently set game speed, which is not always what you want. And it uses the cycle counter (see above for a description); the real range of the Timer class may vary if you use this method. You would use it like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(Timer:set(RoomScript 30))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for a thirty-second delay.&lt;br /&gt;
&lt;br /&gt;
Finally, there&amp;#039;s the setReal method. Like set, it performs all calculations on its own, but it uses the seconds counter, and it does not adjust for game speed. Thus, it is ideal for game events that depend on how much &amp;quot;real time&amp;quot; passes. However, it does not work out of the box due to a typo in the template game. To fix it, find the doit method of the timer class (in Timer.sc), and the line that says:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (not seconds)&lt;br /&gt;
    CueClient()&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix the first line so it reads:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (not --seconds)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you&amp;#039;re all set.&lt;br /&gt;
&lt;br /&gt;
Finally, the cases where you don&amp;#039;t need a Timer object. As I&amp;#039;ve mentioned, the Script class has comparable properties (but no methods) to the Timer class. So you can simply use your room script and the cycles and seconds properties directly, if you are so inclined. This is what Sierra did in most cases; you don&amp;#039;t really see the Timer class used much in the games. You would simply do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(instance RoomScript of Script&lt;br /&gt;
     (method (changeState newState)&lt;br /&gt;
        (super:changeState(newState))&lt;br /&gt;
        (switch (newState)&lt;br /&gt;
           (case 1&lt;br /&gt;
            = seconds 15)&lt;br /&gt;
           (case 2&lt;br /&gt;
            Print(&amp;quot;Time&amp;#039;s up!&amp;quot;)))))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using the Timer class, you would similarly put your initialization code in case 1 above (or in a room&amp;#039;s init method).&lt;br /&gt;
&lt;br /&gt;
[[SCIPF:index.php/topic,83.0.html|See feed back about this post on the forums]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Timers]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Template_Game_Bug_Fixes&amp;diff=17456</id>
		<title>Template Game Bug Fixes</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Template_Game_Bug_Fixes&amp;diff=17456"/>
		<updated>2025-04-02T21:44:52Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Template Game Bug Fixes&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Setting Inventory views to any cel, loop, or view ==&lt;br /&gt;
&lt;br /&gt;
While trying to set the inventory items instance found in the main script, you will find that no matter how you set the loop or cel, only loop 0 and cel 0 is shown.&lt;br /&gt;
&lt;br /&gt;
To fix this bug, simply change a couple of the default variable values found in the Iitem of InvI class found about halfway down the main script. In the showself method, the default inventory icon variables manually set the cel and loop to 0, just like it&amp;#039;s doing. If you would like to be able to set these variables via the instance of the item located at the bottom of the main script, we simply need to change the zeros to loop and cel respectively.&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;&amp;#039;main.sc&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;/******************************************************************************/&lt;br /&gt;
(class Iitem of InvI&lt;br /&gt;
    (properties&lt;br /&gt;
        said 0&lt;br /&gt;
        description 0&lt;br /&gt;
        owner 0&lt;br /&gt;
        view 0&lt;br /&gt;
        loop 0&lt;br /&gt;
        cel 0&lt;br /&gt;
        script 0&lt;br /&gt;
    )&lt;br /&gt;
    (method (showSelf)&lt;br /&gt;
        Print(&lt;br /&gt;
            description&lt;br /&gt;
            #title objectName&lt;br /&gt;
            #icon view loop cel // Changed from: #icon view 0 0&lt;br /&gt;
        )&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
/******************************************************************************/&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A small typo in the doit method of timer class&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This is actually a small snippet from Lars&amp;#039; post on how to use timers. Just in case your looking for a bug free template and you happened to overlook that post I&amp;#039;d thought that I&amp;#039;d copy it to here as well.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s the setReal method. Like set, it&lt;br /&gt;
performs all calculations on its own, but it uses the seconds&lt;br /&gt;
counter, and it does not adjust for game speed. Thus, it is&lt;br /&gt;
ideal for game events that depend on how much &amp;quot;real time&amp;quot; passes.&lt;br /&gt;
However, it does not work out of the box due to a typo in the template&lt;br /&gt;
game. To fix it, find the doit method of the timer class (in&lt;br /&gt;
Timer.sc), and the line that says:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (not seconds)&lt;br /&gt;
    CueClient()&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix the first line so it reads:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (not --seconds)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you&amp;#039;re all set.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Template Game]]&lt;br /&gt;
[[Category:SCI Template Game]]&lt;br /&gt;
[[Category:Maintenance]]&lt;br /&gt;
[[Category:SCI Maintenance]]&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:SCI Troubleshooting]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Taking_Inventory_Item_Away_from_Character&amp;diff=17455</id>
		<title>Taking Inventory Item Away from Character</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Taking_Inventory_Item_Away_from_Character&amp;diff=17455"/>
		<updated>2025-04-02T21:43:00Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Taking Inventory Item away from character&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
This is a pretty basic need, perhaps you have given the golden ring to the potion maker or say you eat the spinach dip, either way your character will need to &amp;quot;lose&amp;quot; the inventory item.&lt;br /&gt;
&lt;br /&gt;
This is not covered in any of the tutorials, but has been covered enough at our old home that we all know how to do it, but any new members won&amp;#039;t. I figured I had better stick this up here so anyone new to sci won&amp;#039;t have to ask. I remember I asked when I first started out.&lt;br /&gt;
&lt;br /&gt;
Anyway, if you have done the tutorial, which if you haven&amp;#039;t you should, then you will remember that in order for your character to get an item you needed to use the code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:get(INV_KEY))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now to drop an item either when your character uses it, gives it away, or simply drops it, you could use put instead of get.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:put(INV_KEY))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in whatever room your character got the item, if you checked to see whether or not gEgo had it before initing it, then the item will reappear there since your character no longer has the item. This may seem strange if the person used the item, or gave it to someone else. Handling these type of instances will require using global variables.&lt;br /&gt;
&lt;br /&gt;
However, with this method in whatever room your character got the item, if you checked to see whether or not gEgo had it before initing it, then the item will reappear there since your character no longer has the item. This may seem strange if the person used the item, or gave it to someone else. Handling these type of instances will require using global variables. In these cases, you really want to test whether an object is in the room or not. An inventory object has an owner property and an ownedBy() method. The way Sierra used to do things was set the owner field to the number of the room the object is in. The (ego get:), (ego put:) and (ego has:) methods simply use this property. You can then test for ownership by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (send anItem:ownedBy(gRoomNumber)) ...)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows items to move around in the game. You can also use objects as owners, if you prefer; indeed, this is already done when an item is in the player&amp;#039;s inventory. Additionally, you&amp;#039;d also want to know about:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:put(anItem gRoomNumber))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will not take it from inventory and make it appear on the screen. The concept of an inventory item is completely different from the visual representation of it that you might see in the room. You would check to see if the room &amp;quot;owns&amp;quot; the inventory object prior to going ahead and initializing the Prop instance (or whatever) that represents that object in the room. Also, there is a position associated with it when it&amp;#039;s in the room, but not in your inventory.&lt;br /&gt;
&lt;br /&gt;
The initial &amp;quot;owner&amp;quot; room is specified in the inventory object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(instance {Thermal Detonator} of InvI&lt;br /&gt;
    (properties&lt;br /&gt;
        said &amp;#039;/detonator&amp;#039;&lt;br /&gt;
        description &amp;quot;Used for blowing stuff to little bits.   It has an impact switch, so in other words...DON&amp;#039;T DROP IT!&amp;quot;&lt;br /&gt;
        owner 69&lt;br /&gt;
        view 242&lt;br /&gt;
        loop 0&lt;br /&gt;
        cel 12&lt;br /&gt;
    )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Inventory]]&lt;br /&gt;
[[Category:SCI Inventory]]&lt;br /&gt;
[[Category:Actors]]&lt;br /&gt;
[[Category:SCI Actors]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Taking_Inventory_Item_Away_from_Character&amp;diff=17454</id>
		<title>Taking Inventory Item Away from Character</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Taking_Inventory_Item_Away_from_Character&amp;diff=17454"/>
		<updated>2025-04-02T21:41:38Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Taking Inventory Item away from character&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
This is a pretty basic need, perhaps you have given the golden ring to the potion maker or say you eat the spinach dip, either way your character will need to &amp;quot;lose&amp;quot; the inventory item.&lt;br /&gt;
&lt;br /&gt;
This is not covered in any of the tutorials, but has been covered enough at our old home that we all know how to do it, but any new members won&amp;#039;t. I figured I had better stick this up here so anyone new to sci won&amp;#039;t have to ask. I remember I asked when I first started out.&lt;br /&gt;
&lt;br /&gt;
Anyway, if you have done the tutorial, which if you haven&amp;#039;t you should, then you will remember that in order for your character to get an item you needed to use the code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:get(INV_KEY))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now to drop an item either when your character uses it, gives it away, or simply drops it, you could use put instead of get.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:put(INV_KEY))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in whatever room your character got the item, if you checked to see whether or not gEgo had it before initing it, then the item will reappear there since your character no longer has the item. This may seem strange if the person used the item, or gave it to someone else. Handling these type of instances will require using global variables.&lt;br /&gt;
&lt;br /&gt;
However, with this method in whatever room your character got the item, if you checked to see whether or not gEgo had it before initing it, then the item will reappear there since your character no longer has the item. This may seem strange if the person used the item, or gave it to someone else. Handling these type of instances will require using global variables. In these cases, you really want to test whether an object is in the room or not. An inventory object has an owner property and an ownedBy() method. The way Sierra used to do things was set the owner field to the number of the room the object is in. The (ego get:), (ego put:) and (ego has:) methods simply use this property. You can then test for ownership by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (send anItem:ownedBy(gRoomNumber)) ...)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows items to move around in the game. You can also use objects as owners, if you prefer; indeed, this is already done when an item is in the player&amp;#039;s inventory. Additionally, you&amp;#039;d also want to know about:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(send gEgo:put(anItem gRoomNumber))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will not take it from inventory and make it appear on the screen. The concept of an inventory item is completely different from the visual representation of it that you might see in the room. You would check to see if the room &amp;quot;owns&amp;quot; the inventory object prior to going ahead and initializing the Prop instance (or whatever) that represents that object in the room. Also, there is a position associated with it when it&amp;#039;s in the room, but not in your inventory.&lt;br /&gt;
&lt;br /&gt;
The initial &amp;quot;owner&amp;quot; room is specified in the inventory object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(instance {Thermal Detonator} of InvI&lt;br /&gt;
    (properties&lt;br /&gt;
        said &amp;#039;/detonator&amp;#039;&lt;br /&gt;
        description &amp;quot;Used for blowing stuff to little bits.   It has an impact switch, so in other words...DON&amp;#039;T DROP IT!&amp;quot;&lt;br /&gt;
        owner 69&lt;br /&gt;
        view 242&lt;br /&gt;
        loop 0&lt;br /&gt;
        cel 12&lt;br /&gt;
    )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Inventory]]&lt;br /&gt;
[[Category:Actors]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Resource_Corruption_from_Rebuilding_while_Running&amp;diff=17453</id>
		<title>Resource Corruption from Rebuilding while Running</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Resource_Corruption_from_Rebuilding_while_Running&amp;diff=17453"/>
		<updated>2025-04-02T21:40:06Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Resource Corruption from Rebuilding while Running&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
Sooner or later it happens to everybody. You code in some room, added in a programControl() and had no way to exit the screen besides the windows button when you actually tested it. Then you were so eager to fix whatever you were testing that you forget to actually close the now minimized Dos window. Then you compiled and then it happens, you hit the rebuild game button. SciStudio does not like this one bit, not one bit at all.&lt;br /&gt;
&lt;br /&gt;
Congratulations you have now corrupted your game all while watching sci studio crash to a something strange happened error. When the dust clears, you spot it. That DOSBox window,hiding out down there in the task bar looking all innocent. Don&amp;#039;t worry, your game isn&amp;#039;t lost in fact there is a really really simple way to get everything back up and running again.&lt;br /&gt;
&lt;br /&gt;
Enter your game&amp;#039;s folder. When you look at the file names, you should notice that there is no resource.001 file, instead there is something named respak.tmp. This weird new file is in fact your resource file and all you need to do to fix it is simply rename it to it&amp;#039;s original resource.001&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s it, you have saved your game from the brink of utter destruction. Well it happens to me a lot anyway, and there&amp;#039;s nothing so scary as that first time. Hope this makes someone else&amp;#039;s first time a little less scary.&lt;br /&gt;
&lt;br /&gt;
Applies to both [[SCI Studio]] and [[SCI Companion]].&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Maintenance]]&lt;br /&gt;
[[Category:SCI Maintenance]]&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:SCI Troubleshooting]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Placing_Inventory_Descriptions_in_a_Text_Resource&amp;diff=17452</id>
		<title>Placing Inventory Descriptions in a Text Resource</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Placing_Inventory_Descriptions_in_a_Text_Resource&amp;diff=17452"/>
		<updated>2025-04-02T21:38:57Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Placing Inventory Descriptions in a Text Resource&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
As your inventory item count grows, the list of instances at the bottom of the main script grows. every addition you make to the main script takes away from every other rooms memory allotment since it itself is used in every room. One way to minimize your impact on the main script and thereby your game overall, is to use text resources to hold all of your inventory items descriptions (and all other text strings but that&amp;#039;s personal choice).&lt;br /&gt;
&lt;br /&gt;
In order to do so, you must edit the main script. Remember whenever you edit the main script, you must compile all scripts, both editors have a button just for this. In the main script a hair passed halfway you will find the class Iitem of InvI. the showself method is basically just creating the print tag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;  (method (showSelf)&lt;br /&gt;
    Print( description&lt;br /&gt;
             #title objectName&lt;br /&gt;
             #icon view loop cel // you did make this bug update right&lt;br /&gt;
         )&lt;br /&gt;
  )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to change the description from the string we are setting it in each item&amp;#039;s instance, we want to display the text resource instead so for that we need two numbers. As you may know when printing from a text resource like say number 54 line 23 you would use Print(54 23). So for us to do the same here, we need to pick a text resource to use which all inventory item descriptions will be placed in and I don&amp;#039;t see any reasons not to use 0. So we just change the first line of the print statement to read &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;Print(0 description&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that that is done, we need to address the description found in each inventory items instance. By default we used &amp;quot;long text strings&amp;quot; but now that the first thing in the print statement is a number, the second thing better be too or something is going to break. The best part is that now the description in each instance simply needs to equal the line it is found on in text resource 0. So they should all look something like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(instance {Test Object} of Iitem&lt;br /&gt;
    (properties&lt;br /&gt;
        said &amp;#039;object&amp;#039;&lt;br /&gt;
        description 10&lt;br /&gt;
        owner 0&lt;br /&gt;
        view 800&lt;br /&gt;
        loop 0&lt;br /&gt;
        cel 0&lt;br /&gt;
        script 0&lt;br /&gt;
    )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Besides making editing them easier since you won&amp;#039;t have to recompile all the scripts just for adding a comma, your heap space will last out that much longer for not having preloaded all that miscellaneous junk in there in every room to begin with.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Inventory]]&lt;br /&gt;
[[Category:SCI Inventory]]&lt;br /&gt;
[[Category:Text Resources]]&lt;br /&gt;
[[Category:SCI Text Resources]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Placing_Inventory_Descriptions_in_a_Text_Resource&amp;diff=17451</id>
		<title>Placing Inventory Descriptions in a Text Resource</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Placing_Inventory_Descriptions_in_a_Text_Resource&amp;diff=17451"/>
		<updated>2025-04-02T21:38:41Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
As your inventory item count grows, the list of instances at the bottom of the main script grows. every addition you make to the main script takes away from every other rooms memory allotment since it itself is used in every room. One way to minimize your impact on the main script and thereby your game overall, is to use text resources to hold all of your inventory items descriptions (and all other text strings but that&amp;#039;s personal choice).&lt;br /&gt;
&lt;br /&gt;
In order to do so, you must edit the main script. Remember whenever you edit the main script, you must compile all scripts, both editors have a button just for this. In the main script a hair passed halfway you will find the class Iitem of InvI. the showself method is basically just creating the print tag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;  (method (showSelf)&lt;br /&gt;
    Print( description&lt;br /&gt;
             #title objectName&lt;br /&gt;
             #icon view loop cel // you did make this bug update right&lt;br /&gt;
         )&lt;br /&gt;
  )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to change the description from the string we are setting it in each item&amp;#039;s instance, we want to display the text resource instead so for that we need two numbers. As you may know when printing from a text resource like say number 54 line 23 you would use Print(54 23). So for us to do the same here, we need to pick a text resource to use which all inventory item descriptions will be placed in and I don&amp;#039;t see any reasons not to use 0. So we just change the first line of the print statement to read &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;Print(0 description&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that that is done, we need to address the description found in each inventory items instance. By default we used &amp;quot;long text strings&amp;quot; but now that the first thing in the print statement is a number, the second thing better be too or something is going to break. The best part is that now the description in each instance simply needs to equal the line it is found on in text resource 0. So they should all look something like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(instance {Test Object} of Iitem&lt;br /&gt;
    (properties&lt;br /&gt;
        said &amp;#039;object&amp;#039;&lt;br /&gt;
        description 10&lt;br /&gt;
        owner 0&lt;br /&gt;
        view 800&lt;br /&gt;
        loop 0&lt;br /&gt;
        cel 0&lt;br /&gt;
        script 0&lt;br /&gt;
    )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Besides making editing them easier since you won&amp;#039;t have to recompile all the scripts just for adding a comma, your heap space will last out that much longer for not having preloaded all that miscellaneous junk in there in every room to begin with.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Inventory]]&lt;br /&gt;
[[Category:SCI Inventory]]&lt;br /&gt;
[[Category:Text Resources]]&lt;br /&gt;
[[Category:SCI Text Resources]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Manipulating_the_Parser_-_Part_2_-_Addressing_Actors&amp;diff=17450</id>
		<title>Manipulating the Parser - Part 2 - Addressing Actors</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Manipulating_the_Parser_-_Part_2_-_Addressing_Actors&amp;diff=17450"/>
		<updated>2025-04-02T21:37:37Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Manipulating the Parser - Part 2 - Addressing Actors&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Gumby&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Overview ==&lt;br /&gt;
&lt;br /&gt;
Built on &amp;#039;Manipulating the Parser - Part 1&amp;#039; we now will add support for addressing other actors in the game, usually in the form of giving them commands, like &amp;#039;troll, put the axe on the ground&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Problem ==&lt;br /&gt;
&lt;br /&gt;
Since the built-in parser only splits an input into 3 different parts in a Said() string (Ex: &amp;#039;put the axe on the ground&amp;#039; would create a Said() string of &amp;#039;put/axe/ground&amp;#039;) it does give us enough to direct the command at an actor/individual (in our case, the troll)&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Quick solution run-down ==&lt;br /&gt;
&lt;br /&gt;
Using our &amp;#039;preprocessing&amp;#039; functionality on the user input from Part 1, we will check the input string &amp;amp; see if an actor is the first token.  If it is, we will set the actor variable &amp;amp; strip it from the input string, allowing the parser to handle the rest.  Then we can put in some additional smarts at the time we evaluate the input &amp;amp; direct it to the actor in question.  If no actor is referenced we will default the actor to the &amp;#039;player&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Step-By-Step ==&lt;br /&gt;
&lt;br /&gt;
: 1. Create a new text resource file &amp;amp; put all the actors of the game in it&lt;br /&gt;
    Examples:  graham, troll, thief, grue&lt;br /&gt;
&lt;br /&gt;
: 2. In the game.sh file, define a new constant ACTORS_TEXT and assign it the number corresponding to your text resource file above.  Then create a constant for each actor, corresponding to it&amp;#039;s location in the text resource.  Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;       ...&lt;br /&gt;
       (define COMPLEXNOUN_TEXT 0)   // Text.000 - from Part 1&lt;br /&gt;
       (define ACTORS_TEXT 1)        // Text.001&lt;br /&gt;
  &lt;br /&gt;
       (define ACTOR_PLAYER 0)       // Actor in position 0 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_TROLL  1)       // Actor in position 1 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_THIEF  2)       // Actor in position 2 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_GRUE   3)       // Actor in position 3 of the actors text resource (Text.001)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 3. Add a new global variable &amp;#039;gActor&amp;#039; in the Main.sc file (in the &amp;#039;local&amp;#039; section with the other &amp;#039;g&amp;#039; variables).  Compile it.&lt;br /&gt;
&lt;br /&gt;
: 4. Modify the ManipulateParse.sc file that you created in Part 1, adding the do/while loop for the actor handling&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(procedure public (manipulateParse inputStr pEvent) &lt;br /&gt;
    (var i, complexNounFull[50], complexNounStripped[50], actor[50], newInputStr)  // add the actor variable&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
       do/while loop for handling the complex nouns is here...   &lt;br /&gt;
    */&lt;br /&gt;
  &lt;br /&gt;
    // Determine the actor&lt;br /&gt;
    = gActor ACTOR_PLAYER // set the default actor to the player in case user did not specify an actor at the beginning of the input&lt;br /&gt;
    = i 0&lt;br /&gt;
    (do&lt;br /&gt;
      GetFarText( ACTORS_TEXT i @actor) &lt;br /&gt;
      (if (containsStr(newInputStr @actor STARTS_WITH))&lt;br /&gt;
     = gActor i&lt;br /&gt;
           &lt;br /&gt;
     // Strip out of the actor name from the input string&lt;br /&gt;
     findAndReplace(newInputStr newInputStr @actor &amp;quot;&amp;quot;)&lt;br /&gt;
           &lt;br /&gt;
     // Strip any leading commas&lt;br /&gt;
     findAndReplace(newInputStr newInputStr &amp;quot;,&amp;quot; &amp;quot;&amp;quot; STARTS_WITH)&lt;br /&gt;
      )                              &lt;br /&gt;
      ++i&lt;br /&gt;
    ) while ( &amp;gt; StrLen(@actor) 0) &lt;br /&gt;
&lt;br /&gt;
    /* &lt;br /&gt;
      Parse command is here, at bottom of manipulateParse procedure&lt;br /&gt;
    */&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 5. Don&amp;#039;t forget to recompile the ManipulateParse.sc script.  You can now use logic like this in your room scripts (or where-ever):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (== gActor ACTOR_PLAYER)&lt;br /&gt;
   (if(Said(&amp;#039;dance&amp;#039;)&lt;br /&gt;
       // User input: &amp;#039;dance&amp;#039;        &lt;br /&gt;
       // User input could also be: &amp;#039;graham, dance&amp;#039; &lt;br /&gt;
       // User input could also be: &amp;#039;graham dance&amp;#039; - the user can use the comma or omit it&lt;br /&gt;
&lt;br /&gt;
       Print(&amp;quot;You don&amp;#039;t feel like dancing today...&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
   (if(Said(&amp;#039;take/basketofgoodies&amp;#039;)&lt;br /&gt;
       // User input is &amp;#039;take basket of goodies&amp;#039;&lt;br /&gt;
&lt;br /&gt;
       Print(&amp;quot;You pick up the goodie basket.&amp;quot;)&lt;br /&gt;
   )     &lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
(if (== gActor ACTOR_TROLL)&lt;br /&gt;
   (if(Said(&amp;#039;dance&amp;#039;)&lt;br /&gt;
       // User input: &amp;#039;troll, dance&amp;#039; or &amp;#039;troll dance&amp;#039;   &lt;br /&gt;
       Print(&amp;quot;The troll dances a jig, then with a swift stroke of his axe, removes your head.&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
   (if(Said(&amp;#039;take/basketofgoodies&amp;#039;)&lt;br /&gt;
       // Note that we can combine the actor logic with the &amp;#039;complex&amp;#039; noun logic...&lt;br /&gt;
       Print(&amp;quot;The troll picks up the goodie basket and swings it into your midsection, knocking the wind out of you.&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
// ...etc for each actor that needs handling&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special note, whenever you compile the main script, compile ALL scripts afterwards otherwise you might run into problems.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Actors]]&lt;br /&gt;
[[Category:SCI Actors]]&lt;br /&gt;
[[Category:The Parser]]&lt;br /&gt;
[[Category:The SCI Parser]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Manipulating_the_Parser_-_Part_2_-_Addressing_Actors&amp;diff=17449</id>
		<title>Manipulating the Parser - Part 2 - Addressing Actors</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Manipulating_the_Parser_-_Part_2_-_Addressing_Actors&amp;diff=17449"/>
		<updated>2025-04-02T21:37:20Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: /*  Quick solution run-down */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Gumby&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Overview ==&lt;br /&gt;
&lt;br /&gt;
Built on &amp;#039;Manipulating the Parser - Part 1&amp;#039; we now will add support for addressing other actors in the game, usually in the form of giving them commands, like &amp;#039;troll, put the axe on the ground&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Problem ==&lt;br /&gt;
&lt;br /&gt;
Since the built-in parser only splits an input into 3 different parts in a Said() string (Ex: &amp;#039;put the axe on the ground&amp;#039; would create a Said() string of &amp;#039;put/axe/ground&amp;#039;) it does give us enough to direct the command at an actor/individual (in our case, the troll)&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Quick solution run-down ==&lt;br /&gt;
&lt;br /&gt;
Using our &amp;#039;preprocessing&amp;#039; functionality on the user input from Part 1, we will check the input string &amp;amp; see if an actor is the first token.  If it is, we will set the actor variable &amp;amp; strip it from the input string, allowing the parser to handle the rest.  Then we can put in some additional smarts at the time we evaluate the input &amp;amp; direct it to the actor in question.  If no actor is referenced we will default the actor to the &amp;#039;player&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Step-By-Step ==&lt;br /&gt;
&lt;br /&gt;
: 1. Create a new text resource file &amp;amp; put all the actors of the game in it&lt;br /&gt;
    Examples:  graham, troll, thief, grue&lt;br /&gt;
&lt;br /&gt;
: 2. In the game.sh file, define a new constant ACTORS_TEXT and assign it the number corresponding to your text resource file above.  Then create a constant for each actor, corresponding to it&amp;#039;s location in the text resource.  Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;       ...&lt;br /&gt;
       (define COMPLEXNOUN_TEXT 0)   // Text.000 - from Part 1&lt;br /&gt;
       (define ACTORS_TEXT 1)        // Text.001&lt;br /&gt;
  &lt;br /&gt;
       (define ACTOR_PLAYER 0)       // Actor in position 0 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_TROLL  1)       // Actor in position 1 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_THIEF  2)       // Actor in position 2 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_GRUE   3)       // Actor in position 3 of the actors text resource (Text.001)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 3. Add a new global variable &amp;#039;gActor&amp;#039; in the Main.sc file (in the &amp;#039;local&amp;#039; section with the other &amp;#039;g&amp;#039; variables).  Compile it.&lt;br /&gt;
&lt;br /&gt;
: 4. Modify the ManipulateParse.sc file that you created in Part 1, adding the do/while loop for the actor handling&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(procedure public (manipulateParse inputStr pEvent) &lt;br /&gt;
    (var i, complexNounFull[50], complexNounStripped[50], actor[50], newInputStr)  // add the actor variable&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
       do/while loop for handling the complex nouns is here...   &lt;br /&gt;
    */&lt;br /&gt;
  &lt;br /&gt;
    // Determine the actor&lt;br /&gt;
    = gActor ACTOR_PLAYER // set the default actor to the player in case user did not specify an actor at the beginning of the input&lt;br /&gt;
    = i 0&lt;br /&gt;
    (do&lt;br /&gt;
      GetFarText( ACTORS_TEXT i @actor) &lt;br /&gt;
      (if (containsStr(newInputStr @actor STARTS_WITH))&lt;br /&gt;
     = gActor i&lt;br /&gt;
           &lt;br /&gt;
     // Strip out of the actor name from the input string&lt;br /&gt;
     findAndReplace(newInputStr newInputStr @actor &amp;quot;&amp;quot;)&lt;br /&gt;
           &lt;br /&gt;
     // Strip any leading commas&lt;br /&gt;
     findAndReplace(newInputStr newInputStr &amp;quot;,&amp;quot; &amp;quot;&amp;quot; STARTS_WITH)&lt;br /&gt;
      )                              &lt;br /&gt;
      ++i&lt;br /&gt;
    ) while ( &amp;gt; StrLen(@actor) 0) &lt;br /&gt;
&lt;br /&gt;
    /* &lt;br /&gt;
      Parse command is here, at bottom of manipulateParse procedure&lt;br /&gt;
    */&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 5. Don&amp;#039;t forget to recompile the ManipulateParse.sc script.  You can now use logic like this in your room scripts (or where-ever):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (== gActor ACTOR_PLAYER)&lt;br /&gt;
   (if(Said(&amp;#039;dance&amp;#039;)&lt;br /&gt;
       // User input: &amp;#039;dance&amp;#039;        &lt;br /&gt;
       // User input could also be: &amp;#039;graham, dance&amp;#039; &lt;br /&gt;
       // User input could also be: &amp;#039;graham dance&amp;#039; - the user can use the comma or omit it&lt;br /&gt;
&lt;br /&gt;
       Print(&amp;quot;You don&amp;#039;t feel like dancing today...&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
   (if(Said(&amp;#039;take/basketofgoodies&amp;#039;)&lt;br /&gt;
       // User input is &amp;#039;take basket of goodies&amp;#039;&lt;br /&gt;
&lt;br /&gt;
       Print(&amp;quot;You pick up the goodie basket.&amp;quot;)&lt;br /&gt;
   )     &lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
(if (== gActor ACTOR_TROLL)&lt;br /&gt;
   (if(Said(&amp;#039;dance&amp;#039;)&lt;br /&gt;
       // User input: &amp;#039;troll, dance&amp;#039; or &amp;#039;troll dance&amp;#039;   &lt;br /&gt;
       Print(&amp;quot;The troll dances a jig, then with a swift stroke of his axe, removes your head.&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
   (if(Said(&amp;#039;take/basketofgoodies&amp;#039;)&lt;br /&gt;
       // Note that we can combine the actor logic with the &amp;#039;complex&amp;#039; noun logic...&lt;br /&gt;
       Print(&amp;quot;The troll picks up the goodie basket and swings it into your midsection, knocking the wind out of you.&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
// ...etc for each actor that needs handling&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special note, whenever you compile the main script, compile ALL scripts afterwards otherwise you might run into problems.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Actors]]&lt;br /&gt;
[[Category:SCI Actors]]&lt;br /&gt;
[[Category:The Parser]]&lt;br /&gt;
[[Category:The SCI Parser]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Manipulating_the_Parser_-_Part_2_-_Addressing_Actors&amp;diff=17448</id>
		<title>Manipulating the Parser - Part 2 - Addressing Actors</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Manipulating_the_Parser_-_Part_2_-_Addressing_Actors&amp;diff=17448"/>
		<updated>2025-04-02T21:37:05Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Gumby&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Overview ==&lt;br /&gt;
&lt;br /&gt;
Built on &amp;#039;Manipulating the Parser - Part 1&amp;#039; we now will add support for addressing other actors in the game, usually in the form of giving them commands, like &amp;#039;troll, put the axe on the ground&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Problem ==&lt;br /&gt;
&lt;br /&gt;
Since the built-in parser only splits an input into 3 different parts in a Said() string (Ex: &amp;#039;put the axe on the ground&amp;#039; would create a Said() string of &amp;#039;put/axe/ground&amp;#039;) it does give us enough to direct the command at an actor/individual (in our case, the troll)&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Quick solution run-down ==&lt;br /&gt;
&lt;br /&gt;
Using our &amp;#039;preprocessing&amp;#039; functionality on the user input from Part 1, we will check the input string &amp;amp; see if an actor is the first token.  If it is, we will set the actor variable &amp;amp; strip it from the input string, allowing the parser to handle the rest.  Then we can put in some additional smarts at the time we evaluate the input &amp;amp; direct it to the actor in question.  If no actor is referenced we will default the actor to the &amp;#039;player&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Step-By-Step:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
: 1. Create a new text resource file &amp;amp; put all the actors of the game in it&lt;br /&gt;
    Examples:  graham, troll, thief, grue&lt;br /&gt;
&lt;br /&gt;
: 2. In the game.sh file, define a new constant ACTORS_TEXT and assign it the number corresponding to your text resource file above.  Then create a constant for each actor, corresponding to it&amp;#039;s location in the text resource.  Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;       ...&lt;br /&gt;
       (define COMPLEXNOUN_TEXT 0)   // Text.000 - from Part 1&lt;br /&gt;
       (define ACTORS_TEXT 1)        // Text.001&lt;br /&gt;
  &lt;br /&gt;
       (define ACTOR_PLAYER 0)       // Actor in position 0 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_TROLL  1)       // Actor in position 1 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_THIEF  2)       // Actor in position 2 of the actors text resource (Text.001)&lt;br /&gt;
       (define ACTOR_GRUE   3)       // Actor in position 3 of the actors text resource (Text.001)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 3. Add a new global variable &amp;#039;gActor&amp;#039; in the Main.sc file (in the &amp;#039;local&amp;#039; section with the other &amp;#039;g&amp;#039; variables).  Compile it.&lt;br /&gt;
&lt;br /&gt;
: 4. Modify the ManipulateParse.sc file that you created in Part 1, adding the do/while loop for the actor handling&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(procedure public (manipulateParse inputStr pEvent) &lt;br /&gt;
    (var i, complexNounFull[50], complexNounStripped[50], actor[50], newInputStr)  // add the actor variable&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
       do/while loop for handling the complex nouns is here...   &lt;br /&gt;
    */&lt;br /&gt;
  &lt;br /&gt;
    // Determine the actor&lt;br /&gt;
    = gActor ACTOR_PLAYER // set the default actor to the player in case user did not specify an actor at the beginning of the input&lt;br /&gt;
    = i 0&lt;br /&gt;
    (do&lt;br /&gt;
      GetFarText( ACTORS_TEXT i @actor) &lt;br /&gt;
      (if (containsStr(newInputStr @actor STARTS_WITH))&lt;br /&gt;
     = gActor i&lt;br /&gt;
           &lt;br /&gt;
     // Strip out of the actor name from the input string&lt;br /&gt;
     findAndReplace(newInputStr newInputStr @actor &amp;quot;&amp;quot;)&lt;br /&gt;
           &lt;br /&gt;
     // Strip any leading commas&lt;br /&gt;
     findAndReplace(newInputStr newInputStr &amp;quot;,&amp;quot; &amp;quot;&amp;quot; STARTS_WITH)&lt;br /&gt;
      )                              &lt;br /&gt;
      ++i&lt;br /&gt;
    ) while ( &amp;gt; StrLen(@actor) 0) &lt;br /&gt;
&lt;br /&gt;
    /* &lt;br /&gt;
      Parse command is here, at bottom of manipulateParse procedure&lt;br /&gt;
    */&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 5. Don&amp;#039;t forget to recompile the ManipulateParse.sc script.  You can now use logic like this in your room scripts (or where-ever):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if (== gActor ACTOR_PLAYER)&lt;br /&gt;
   (if(Said(&amp;#039;dance&amp;#039;)&lt;br /&gt;
       // User input: &amp;#039;dance&amp;#039;        &lt;br /&gt;
       // User input could also be: &amp;#039;graham, dance&amp;#039; &lt;br /&gt;
       // User input could also be: &amp;#039;graham dance&amp;#039; - the user can use the comma or omit it&lt;br /&gt;
&lt;br /&gt;
       Print(&amp;quot;You don&amp;#039;t feel like dancing today...&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
   (if(Said(&amp;#039;take/basketofgoodies&amp;#039;)&lt;br /&gt;
       // User input is &amp;#039;take basket of goodies&amp;#039;&lt;br /&gt;
&lt;br /&gt;
       Print(&amp;quot;You pick up the goodie basket.&amp;quot;)&lt;br /&gt;
   )     &lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
(if (== gActor ACTOR_TROLL)&lt;br /&gt;
   (if(Said(&amp;#039;dance&amp;#039;)&lt;br /&gt;
       // User input: &amp;#039;troll, dance&amp;#039; or &amp;#039;troll dance&amp;#039;   &lt;br /&gt;
       Print(&amp;quot;The troll dances a jig, then with a swift stroke of his axe, removes your head.&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
   (if(Said(&amp;#039;take/basketofgoodies&amp;#039;)&lt;br /&gt;
       // Note that we can combine the actor logic with the &amp;#039;complex&amp;#039; noun logic...&lt;br /&gt;
       Print(&amp;quot;The troll picks up the goodie basket and swings it into your midsection, knocking the wind out of you.&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
// ...etc for each actor that needs handling&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special note, whenever you compile the main script, compile ALL scripts afterwards otherwise you might run into problems.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Actors]]&lt;br /&gt;
[[Category:SCI Actors]]&lt;br /&gt;
[[Category:The Parser]]&lt;br /&gt;
[[Category:The SCI Parser]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Manipulating_the_Parser_-_Part_1_-_%27Complex%27_Nouns&amp;diff=17447</id>
		<title>Manipulating the Parser - Part 1 - &#039;Complex&#039; Nouns</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Manipulating_the_Parser_-_Part_1_-_%27Complex%27_Nouns&amp;diff=17447"/>
		<updated>2025-04-02T21:35:42Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Manipulating the Parser - Part 1 - &amp;#039;Complex&amp;#039; Nouns&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Gumby&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
Update: The handling of a &amp;#039;complex&amp;#039; noun can (in fact) be handled correctly with the parser by making each word involved a noun &amp;amp; utilizing the semantic operator.  See the Said() string documentation for more details.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Overview:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
When it comes to extremely complicated user input I have resorted to circumventing the parser.  The techniques implemented here should work for number of oddball problems you may run across while working with the parser.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Problem:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Let&amp;#039;s first look at the problem with &amp;#039;complex&amp;#039; nouns.  There is no way to implement the user input command of &amp;#039;take basket of goodies&amp;#039;, the problem lying with treating &amp;#039;basket of goodies&amp;#039; as a single noun so that we can successfully parse it.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Quick solution run-down:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
We will create a new noun in the vocabulary for &amp;#039;basket of goodies&amp;#039;, but we cannot have spaces in our word. Therefore, we will simply remove all whitespace between the words, resulting in &amp;#039;basketofgoodies&amp;#039;.  Upon each user input we will search for the phrase &amp;#039;basket of goodies&amp;#039; and replace it with &amp;#039;basketofgoodies&amp;#039;.  In all of our coding we will now be able to use our new concatenated word just like any other &amp;#039;simple&amp;#039; noun.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step-By-Step:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 1. Create a new text resource file &amp;amp; put the full text of the nouns to be handled there&lt;br /&gt;
    Examples:  basket of goodies, pieces of eight, pile of bodies&lt;br /&gt;
&lt;br /&gt;
: 2. Add new nouns to the vocab.000 file according to what you put in the text resource, without any whitespace&lt;br /&gt;
    Examples:  basketofgoodies, piecesofeight, pileofbodies&lt;br /&gt;
&lt;br /&gt;
: 3. In the game.sh file, define a new constant COMPLEXNOUN_TEXT and assign it the number corresponding to your text resource file above&lt;br /&gt;
&lt;br /&gt;
: 4 Create a new script file called ManipulateParse.sc and include the following code&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(define ANYWHERE     0)&lt;br /&gt;
(define STARTS_WITH  1)&lt;br /&gt;
(define ENDS_WITH    2)&lt;br /&gt;
&lt;br /&gt;
(include &amp;quot;sci.sh&amp;quot;)&lt;br /&gt;
(include &amp;quot;game.sh&amp;quot;)&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
(script 972)  // You may need to change the script number if the number is already in use&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
(use &amp;quot;main&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
(procedure public (manipulateParse inputStr pEvent) &lt;br /&gt;
    (var i, complexNounFull[50], complexNounStripped[50], newInputStr)&lt;br /&gt;
    &lt;br /&gt;
    // Copy the input string into a new variable so we don&amp;#039;t clobber the original&lt;br /&gt;
    // (in case the user presses F3 we want to see the what was actually typed)&lt;br /&gt;
    StrCpy(newInputStr inputStr)&lt;br /&gt;
    &lt;br /&gt;
    // Do the &amp;#039;complex&amp;#039; noun substitutions&lt;br /&gt;
    = i 0&lt;br /&gt;
    (do&lt;br /&gt;
      GetFarText( COMPLEXNOUN_TEXT i @complexNounFull)&lt;br /&gt;
      (if (containsStr(newInputStr @complexNounFull ANYWHERE))&lt;br /&gt;
         findAndReplace(@complexNounFull @complexNounStripped &amp;quot; &amp;quot; &amp;quot;&amp;quot;)                                 &lt;br /&gt;
         findAndReplace(newInputStr newInputStr @complexNounFull @complexNounStripped)&lt;br /&gt;
      )                               &lt;br /&gt;
      ++i&lt;br /&gt;
    ) while ( &amp;gt; StrLen(@complexNounFull) 0)  &lt;br /&gt;
    &lt;br /&gt;
    // Parse our &amp;#039;new&amp;#039; input string, replacing the original parse&lt;br /&gt;
    Parse(newInputStr pEvent)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
(procedure public (findAndReplace sourceStr destStr findStr replaceStr)    &lt;br /&gt;
  (var i, findStrIndex, char, findAndReplaceStr[50])&lt;br /&gt;
&lt;br /&gt;
  StrCpy(@findAndReplaceStr &amp;quot;&amp;quot;)&lt;br /&gt;
  = findStrIndex 0&lt;br /&gt;
  (for (=i 0) (&amp;lt;i StrLen(sourceStr)) (++i)&lt;br /&gt;
     (if (&amp;lt;&amp;gt; StrAt(sourceStr i) StrAt(findStr findStrIndex) )&lt;br /&gt;
        Format(char &amp;quot;%c&amp;quot; StrAt(sourceStr i))&lt;br /&gt;
        StrCat(@findAndReplaceStr char)&lt;br /&gt;
        = findStrIndex 0&lt;br /&gt;
     ) (else&lt;br /&gt;
        (while (== StrAt(sourceStr (+ i findStrIndex)) StrAt(findStr findStrIndex) and &amp;lt; findStrIndex StrLen(findStr))&lt;br /&gt;
       ++findStrIndex&lt;br /&gt;
    )&lt;br /&gt;
        (if (== findStrIndex StrLen(findStr))    &lt;br /&gt;
        StrCat(@findAndReplaceStr replaceStr)&lt;br /&gt;
        = i (+ i (- findStrIndex 1))&lt;br /&gt;
        = findStrIndex 0&lt;br /&gt;
        ) (else&lt;br /&gt;
            Format(char &amp;quot;%c&amp;quot; StrAt(sourceStr i))&lt;br /&gt;
            StrCat(@findAndReplaceStr char)&lt;br /&gt;
            = findStrIndex 0             &lt;br /&gt;
        )&lt;br /&gt;
     )&lt;br /&gt;
  )    &lt;br /&gt;
  StrCpy(destStr @findAndReplaceStr)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
(procedure public (containsStr sourceStr findStr matchType)&lt;br /&gt;
  (var i, findStrIndex)&lt;br /&gt;
  &lt;br /&gt;
   = findStrIndex 0&lt;br /&gt;
  (for (=i 0) (&amp;lt;i StrLen(sourceStr)) (++i)&lt;br /&gt;
     (if (== StrAt(sourceStr i) StrAt(findStr findStrIndex) )&lt;br /&gt;
        (while (== StrAt(sourceStr (+ i findStrIndex)) StrAt(findStr findStrIndex) and &amp;lt; findStrIndex StrLen(findStr))&lt;br /&gt;
       ++findStrIndex&lt;br /&gt;
    )&lt;br /&gt;
    (if(== findStrIndex StrLen(findStr))&lt;br /&gt;
       return TRUE&lt;br /&gt;
    ) (else&lt;br /&gt;
           = findStrIndex 0             &lt;br /&gt;
        )&lt;br /&gt;
     )  &lt;br /&gt;
     (if (== matchType STARTS_WITH)&lt;br /&gt;
    return FALSE&lt;br /&gt;
     )&lt;br /&gt;
  )    &lt;br /&gt;
  return FALSE&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 5.  Add the following code into the User.sc script&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(use &amp;quot;ManipulateParse&amp;quot;) // add this near the top&lt;br /&gt;
&lt;br /&gt;
// Then find this code block below &amp;amp; insert the line for the &amp;#039;manipulateParse&amp;#039; procedure call&lt;br /&gt;
    (if( (self:getInput(pEvent)) and Parse(@inputStr pEvent))							&lt;br /&gt;
          manipulateParse(@inputStr pEvent)&lt;br /&gt;
	  (send pEvent:type(evSAID))&lt;br /&gt;
	  (self:said(pEvent))&lt;br /&gt;
    )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: 6. Don&amp;#039;t forget to recompile the User.sc &amp;amp; ManipulateParse.sc scripts.  You can now use logic like this in your room scripts (or where-ever):&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;  (if(Said(&amp;#039;move/pileofbodies&amp;#039;))&lt;br /&gt;
      Print(&amp;quot;Probably better to just leave those poor souls alone.&amp;quot;&lt;br /&gt;
  )    &lt;br /&gt;
  (if(Said(&amp;#039;eat/basketofgoodies&amp;#039;))&lt;br /&gt;
      Print(&amp;quot;You eat the basket of goodies, and promptly toss your cookies!&amp;quot;)	&lt;br /&gt;
  )			&lt;br /&gt;
  (if(Said(&amp;#039;take/piecesofeight&amp;#039;))&lt;br /&gt;
      Print(&amp;quot;You pick up the pieces of eight without dropping a single one...&amp;quot;)&lt;br /&gt;
  )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Nouns]]&lt;br /&gt;
[[Category:SCI Nouns]]&lt;br /&gt;
[[Category:Vocabulary]]&lt;br /&gt;
[[Category:SCI Vocabulary]]&lt;br /&gt;
[[Category:The Parser]]&lt;br /&gt;
[[Category:The SCI Parser]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17446</id>
		<title>SCI How To</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17446"/>
		<updated>2025-04-02T21:34:42Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Adding Sound Support]]&lt;br /&gt;
*[[Adding Troflip&amp;#039;s alt Debugging]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 2 - Qualifying Adjectives]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 3 - Prepositions]]&lt;br /&gt;
*[[Automatic doors]]&lt;br /&gt;
*[[Death Handler]]&lt;br /&gt;
*[[Determining Location of Mouse Cursor]]&lt;br /&gt;
*[[Fixing F2 (ToggleSound) Issue with Companion]]&lt;br /&gt;
*[[Generic Keypad Class]]&lt;br /&gt;
*[[Get and Use Specific Keyboard Keys]]&lt;br /&gt;
*[[How to Keep Your gTheSoundFX from iInterupting gTheMusic]]&lt;br /&gt;
*[[Manipulating the Parser - Part 1 - &amp;#039;Complex&amp;#039; Nouns]]&lt;br /&gt;
*[[Manipulating the Parser - Part 2 - Addressing Actors]]&lt;br /&gt;
*[[Placing Inventory Descriptions in a Text Resource]]&lt;br /&gt;
*[[Resource Corruption from Rebuilding while Running]]&lt;br /&gt;
*[[Said() Strings - Comprehensive Examples]]&lt;br /&gt;
*[[Taking Inventory Item away from character]]&lt;br /&gt;
*[[Template Game Bug Fixes]]&lt;br /&gt;
*[[Timers]]&lt;br /&gt;
*[[Word Suffixes]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=How_to_Keep_Your_gTheSoundFX_from_iInterupting_gTheMusic&amp;diff=17445</id>
		<title>How to Keep Your gTheSoundFX from iInterupting gTheMusic</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=How_to_Keep_Your_gTheSoundFX_from_iInterupting_gTheMusic&amp;diff=17445"/>
		<updated>2025-04-02T21:33:56Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Andrew Branscom moved page How to keep your gTheSoundFX from interupting gTheMusic to How to Keep Your gTheSoundFX from iInterupting gTheMusic without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;How to Keep Your gTheSoundFX from iInterupting gTheMusic&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
In the first room of my game has music playing as well as a repetitive SoundFX (water dripping) and every time it played it interfered with the music. First I tried playing around with a priority property, but nothing ever really came of that. Then I figured I would just make a timer and count down to when the music should be over but I didn&amp;#039;t want to add any more than necessary to my main script. It turns out that both instances have a state property built in. Then it just became a matter of checking for 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if(== (send gTheMusic:state()) 0) (send gTheSoundFX:number(15)loop(1)play()))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this the soundfFX will no longer play until after the music has finished. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio]]&lt;br /&gt;
[[Category:SCI Audio]]&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:SCI Troubleshooting]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=How_to_Keep_Your_gTheSoundFX_from_iInterupting_gTheMusic&amp;diff=17444</id>
		<title>How to Keep Your gTheSoundFX from iInterupting gTheMusic</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=How_to_Keep_Your_gTheSoundFX_from_iInterupting_gTheMusic&amp;diff=17444"/>
		<updated>2025-04-02T21:33:34Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;How to Keep Your gTheSoundFX from iInterupting gTheMusic&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
In the first room of my game has music playing as well as a repetitive SoundFX (water dripping) and every time it played it interfered with the music. First I tried playing around with a priority property, but nothing ever really came of that. Then I figured I would just make a timer and count down to when the music should be over but I didn&amp;#039;t want to add any more than necessary to my main script. It turns out that both instances have a state property built in. Then it just became a matter of checking for 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(if(== (send gTheMusic:state()) 0) (send gTheSoundFX:number(15)loop(1)play()))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this the soundfFX will no longer play until after the music has finished. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio]]&lt;br /&gt;
[[Category:SCI Audio]]&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:SCI Troubleshooting]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Get_and_Use_Specific_Keyboard_Keys&amp;diff=17443</id>
		<title>Get and Use Specific Keyboard Keys</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Get_and_Use_Specific_Keyboard_Keys&amp;diff=17443"/>
		<updated>2025-04-02T21:32:00Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Get and Use Specific Keyboard Keys&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;This is a real old post that I dug up from the depths of Mega-Tokyo. I&amp;#039;m in the middle of a big mini game kick and in order to expand control options I am looking into using keys. But I wasn&amp;#039;t sure how to check for the keys pressed because I didn&amp;#039;t know the values to check for. This old post first describes how to check for the pressed buttons if they have been declared in the Keys.sh file and the second little bit of code describes how to output the value of a key pressed such that you wouldn&amp;#039;t need to edit the keys file to check for it. So you can just go check for one anytime you need a keys value.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INTERCEPTING KEYBOARD AND MOUSE EVENTS==&lt;br /&gt;
&lt;br /&gt;
For this demonstration, Ego will change into Brian if the player presses B (capital) and back to Ego when E (capital) is pressed.&lt;br /&gt;
&lt;br /&gt;
Add Brian as a view as described in the Tutorial Chapter 19 (Resource-&amp;gt;Add Sample-&amp;gt;View-&amp;gt;Brian and save it as view number 1.&lt;br /&gt;
&lt;br /&gt;
In the instance of RoomScript add the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;(instance RoomScript of Script&lt;br /&gt;
  (properties)&lt;br /&gt;
  (method (handleEvent pEvent)&lt;br /&gt;
    (var str)  //Local variable&lt;br /&gt;
    (super:handleEvent(pEvent))&lt;br /&gt;
&lt;br /&gt;
    (switch( (send pEvent:type) )&lt;br /&gt;
      (case evKEYBOARD&lt;br /&gt;
          (if(== (send pEvent:message) KEY_B )  //Check if B was pressed&lt;br /&gt;
              (send gEgo:view(1))  //switch to Brian&lt;br /&gt;
              (send pEvent:claimed(TRUE))&lt;br /&gt;
          )//if B&lt;br /&gt;
&lt;br /&gt;
          (if(== (send pEvent:message) KEY_E )  //Check if E was pressed&lt;br /&gt;
              (send gEgo:view(0))  //switch to Ego&lt;br /&gt;
              (send pEvent:claimed(TRUE))&lt;br /&gt;
          )//if&lt;br /&gt;
      )//evKEYBOARD&lt;br /&gt;
&lt;br /&gt;
      //For fun intercept the Mouse event as well&lt;br /&gt;
      (case evMOUSEBUTTON&lt;br /&gt;
          (Print(&amp;quot;You pressed a Mouse Button!&amp;quot;))&lt;br /&gt;
      )//evMOUSEBUTTON&lt;br /&gt;
    )//switch&lt;br /&gt;
  )//method&lt;br /&gt;
)//instance&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code: send pEvent:claimed(TRUE)): specified whether the event object can be used; in this case the :Said: command will ignore the event when the player presses either a B or E.&lt;br /&gt;
&lt;br /&gt;
Compile and test.  Ego will be transformed into Brian if you press a B and back to Ego if you press an E.  If it does not work, the values may not be declared in the Keys.sh file.  Open the file (..\SciStudio\include\Keys.sh) to view the defined values.  You may want to expand the list with the lower case values (a=$61,..z=7a).  If you want to trap other values, you can view the value of the key code by adding the following code just below the :case evKEYBOARD: statement:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot; class=&amp;quot;cs&amp;quot;&amp;gt;=str &amp;quot;&amp;quot;&lt;br /&gt;
(Format(str &amp;quot;str=%x&amp;quot; (send pEvent:message)))&lt;br /&gt;
(Print(str))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test by pressing Ctrl-k.  The value should be $0b.  You can add the value in the Keys.sh file or using it directly in the statement (if(== (send pEvent:message) $0b)  ext&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Keyboard]]&lt;br /&gt;
[[Category:I/O]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17442</id>
		<title>SCI How To</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17442"/>
		<updated>2025-04-02T21:31:22Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Adding Sound Support]]&lt;br /&gt;
*[[Adding Troflip&amp;#039;s alt Debugging]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 2 - Qualifying Adjectives]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 3 - Prepositions]]&lt;br /&gt;
*[[Automatic doors]]&lt;br /&gt;
*[[Death Handler]]&lt;br /&gt;
*[[Determining Location of Mouse Cursor]]&lt;br /&gt;
*[[Fixing F2 (ToggleSound) Issue with Companion]]&lt;br /&gt;
*[[Generic Keypad Class]]&lt;br /&gt;
*[[Get and Use Specific Keyboard Keys]]&lt;br /&gt;
*[[How to keep your gTheSoundFX from interupting gTheMusic]]&lt;br /&gt;
*[[Manipulating the Parser - Part 1 - &amp;#039;Complex&amp;#039; Nouns]]&lt;br /&gt;
*[[Manipulating the Parser - Part 2 - Addressing Actors]]&lt;br /&gt;
*[[Placing Inventory Descriptions in a Text Resource]]&lt;br /&gt;
*[[Resource Corruption from Rebuilding while Running]]&lt;br /&gt;
*[[Said() Strings - Comprehensive Examples]]&lt;br /&gt;
*[[Taking Inventory Item away from character]]&lt;br /&gt;
*[[Template Game Bug Fixes]]&lt;br /&gt;
*[[Timers]]&lt;br /&gt;
*[[Word Suffixes]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Generic_Keypad_Class&amp;diff=17441</id>
		<title>Generic Keypad Class</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Generic_Keypad_Class&amp;diff=17441"/>
		<updated>2025-04-02T21:30:55Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Andrew Branscom moved page Generic Keypad class to Generic Keypad Class without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Generic Keypad Class&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Lars Skovlund&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
Note that I use the ego view for buttons (as I said, I am not a graphic artist). The first the buttons from the left are number buttons, and add the numbers 1, 2 and 3 to the keypad text. The next button cancels, the one after that is backspace, and the last one OK. It would be great if someone would help me make better graphics for the demo code. Instructions are in the documentation. You will also need to add the word &amp;#039;keypad&amp;#039; to your vocabulary.&lt;br /&gt;
&lt;br /&gt;
Code in the attached file, along with documentation.&lt;br /&gt;
&lt;br /&gt;
[http://sierrahelp.com/download.php?file=Files/SCI/GenericKeypadClass.zip Generic Keypad Class Files]&lt;br /&gt;
&lt;br /&gt;
Lars&lt;br /&gt;
&lt;br /&gt;
The Keypad SCI class&amp;lt;br /&amp;gt;&lt;br /&gt;
Lars Skovlund&amp;lt;br /&amp;gt;&lt;br /&gt;
January 17, 2007&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
&lt;br /&gt;
This is the documentation for the Keypad SCI class, written by Lars Skovlund. I have attempted to make the class as general as possible. Therefore, the class and its descendant DisplayKeypad support arbitrarily long strings of any kind, so it is possible, for instance, to have each button represent a word so the user can construct sentences. The DisplayKeypad class prints the input string somewhere on the screen via the Display kernel call (all parameters are selectable via properties).&lt;br /&gt;
&lt;br /&gt;
The following is a complete feature list for the keypad:&lt;br /&gt;
&lt;br /&gt;
* No keyboard input, for generality reasons.&lt;br /&gt;
* Special button functionality, such as enter, backspace and cancel.&lt;br /&gt;
* Optionally invokes a script when initially showing the keypad and when the enter button is pressed.&lt;br /&gt;
* Optional auto exit mode in which the keypad triggers as soon as the input string reaches its maximum length, as if the user explicitly pressed the enter button.&lt;br /&gt;
* Can require a specific number of buttons to be pressed, or accept any number of button presses.&lt;br /&gt;
* Can play a sound when a button is pressed.&lt;br /&gt;
* Optional text display (DisplayKeypad).&lt;br /&gt;
* A background view can be used or not.&lt;br /&gt;
&lt;br /&gt;
==2 Example of use==&lt;br /&gt;
&lt;br /&gt;
===2.1 Declarations===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(local kptxt[5])&lt;br /&gt;
&lt;br /&gt;
(instance myKeyPad of DisplayKeypad&lt;br /&gt;
	(properties&lt;br /&gt;
		maxLength 	4&lt;br /&gt;
		autoExit 	FALSE&lt;br /&gt;
		script 		0&lt;br /&gt;
		longestText 	1 	/* one character */&lt;br /&gt;
		color 		clBLACK&lt;br /&gt;
		back 		clWHITE&lt;br /&gt;
		x 		20&lt;br /&gt;
		y 		160&lt;br /&gt;
requireMax TRUE&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key1 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	100&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	0&lt;br /&gt;
		text 	&amp;quot;1&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key2 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	120&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	2&lt;br /&gt;
		text 	&amp;quot;2&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key3 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	140&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	1&lt;br /&gt;
		text 	&amp;quot;3&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key4 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	160&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	5&lt;br /&gt;
		special KEYPAD_SPECIAL_CANCEL&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key5 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	180&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	6&lt;br /&gt;
		special KEYPAD_SPECIAL_BKSP&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key6 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	200&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	3&lt;br /&gt;
		special KEYPAD_SPECIAL_ENTER&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.2 Handling the enter and cancel buttons===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance KeypadScript of Script&lt;br /&gt;
	(properties)&lt;br /&gt;
	(method (changeState newState)&lt;br /&gt;
		(super:changeState(newState))&lt;br /&gt;
		(switch (newState)&lt;br /&gt;
			(case KEYPAD_DONE_STATE&lt;br /&gt;
			  ((send client:hide(FALSE))&lt;br /&gt;
			  FormatPrint(&amp;quot;You typed: %s&amp;quot; @kptxt)))&lt;br /&gt;
(case KEYPAD_ERROR_STATE&lt;br /&gt;
			  (FormatPrint(&amp;quot;You need to press %d buttons.&amp;quot;&lt;br /&gt;
				(send client:maxLength()))))&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.3 Initialization and activation===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(myKeyPad:setScript(KeypadScript) outputString(@kptxt)&lt;br /&gt;
  init(key1 key2 key3 key4 key5 key6))&lt;br /&gt;
&lt;br /&gt;
(myKeyPad:init() show()) /* The init ensures that the keypad can&lt;br /&gt;
			    be used any number of times. */&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 What to draw==&lt;br /&gt;
&lt;br /&gt;
You will need a view consisting of several loops, one for each button. Each loop should contain two cels: The button in its normal and depressed state, respectively. It is important that the cels are ordered in this way; the code depends on it, and you should not set the cel property to anything when declaring KeypadButtons.&lt;br /&gt;
&lt;br /&gt;
If you want a background view you can draw this as a separate loop. Declare it in your code as an instance of the Prop class. Then refer to it in your Keypad instance using the backView property.&lt;br /&gt;
&lt;br /&gt;
==4 Class reference==&lt;br /&gt;
&lt;br /&gt;
===4.1 Keypad class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  EventHandler&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the base functionality for keypads.&lt;br /&gt;
&lt;br /&gt;
====&amp;#039;&amp;#039;Methods of the Keypad class:&amp;#039;&amp;#039;====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad init: buttons . . . )&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This function initializes the object, as is the case with every SCI class. In particular, it resets the input string and notifies the controlling script. Buttons is a list of button views (instances of KeypadButton) to include in the keypad.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad show:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Displays the keypad. The player is prevented from moving until the keypad is dismissed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad hide: doCue)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Hides the keypad. DoCue should be set to TRUE if the “enter” button was pressed, FALSE otherwise. When the script is called, the buttons have not yet been removed from the screen. If you want this, your script must explicitly call hide with a FALSE parameter (to avoid infinite recursion)—this is what the example code does, see section 2.2.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad backspace:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Self-explanatory. You will need to override this if you use text of varying lengths for the buttons.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad draw:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad setSize:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Do nothing. They are only here to prevent the game from crashing in certain situations (in particular, restoring the game to a position where the keypad is displayed).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad depress: which)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Simulates the pressing of a button. Which refers to an actual instance of KeypadButton.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad setScript: newScript params)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Sets the controlling script of the keypad. This script is called once when the keypad is initially displayed and once when the user presses “enter”. It is not called if the user cancels the dialog.&lt;br /&gt;
&lt;br /&gt;
====&amp;#039;&amp;#039;Properties of the Keypad class:&amp;#039;&amp;#039;====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;outputString&amp;#039;&amp;#039;&amp;#039; Points to the output buffer. Remember to set this at run time, and remember that it must be big enough for anything the player might press. Use a local variable, as shown in section 2.1.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;maxLength&amp;#039;&amp;#039;&amp;#039; Indicates the length of the output buffer.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;autoExit&amp;#039;&amp;#039;&amp;#039; Boolean variable which toggles the “auto exit” mode, described in the introduction.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;backView&amp;#039;&amp;#039;&amp;#039; Points to an instance of Prop which is displayed when the keypad is activated. It is meant to be used for a background, hence the name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;backPri&amp;#039;&amp;#039;&amp;#039; Indicates the priority of the background. May be omitted; the priority of the buttons is always 1 greater than this value, if specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;btnSound&amp;#039;&amp;#039;&amp;#039; Points to an instance of Sound which is played whenever the user presses a button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;longestText&amp;#039;&amp;#039;&amp;#039; Indicates the length of the longest button text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;script&amp;#039;&amp;#039;&amp;#039; Indicates the controlling script. Use setScript to set this, never set it directly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;state&amp;#039;&amp;#039;&amp;#039; Boolean variable. Indicates whether the keypad is currently shown or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;special&amp;#039;&amp;#039;&amp;#039; Not used for anything. Works around a chicken-and-egg problem regarding selector names in SCI Studio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;requireMax&amp;#039;&amp;#039;&amp;#039; Setting this to true makes the keypad require maxLength characters to be filled in. If this requirement is not met when the player presses enter, the attached script executes its keypad error state. You can do whatever you want here, including doing nothing, displaying an error message, or blowing up the universe. The keypad remains functional after the script returns.&lt;br /&gt;
&lt;br /&gt;
;Notes&lt;br /&gt;
&lt;br /&gt;
For the predefined script, three states are predefined. Constants are provided&lt;br /&gt;
in the enclosed header file.&lt;br /&gt;
&lt;br /&gt;
===4.2 KeypadButton class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  Prop&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the button views to be used for the keypad; they provide an event handler and a special feed-back interface for the &amp;lt;u&amp;gt;Keypad&amp;lt;/u&amp;gt; class. None of the overridden methods are meant to be called directly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Methods of the KeypadButton class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(KeypadButton init: theClient priority)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(KeypadButton handleEvent: event)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Properties of the KeypadButton class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;text&amp;#039;&amp;#039;&amp;#039; The text to add when the button is pressed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;special&amp;#039;&amp;#039;&amp;#039; The special meaning that this button is to have.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;client&amp;#039;&amp;#039;&amp;#039; A pointer to the keypad which “owns” this button. Filled in automatically.&lt;br /&gt;
&lt;br /&gt;
;Notes&lt;br /&gt;
&lt;br /&gt;
Three special button types are provided beside the default, namely enter, backspace and cancel.&lt;br /&gt;
&lt;br /&gt;
===4.3 DisplayKeypad class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  Keypad&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the additional functionality of displaying the current text string at a predetermined position on the screen. All of the listed properties have the same format as those passed to the Display kernel function.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Properties of the DisplayKeypad class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;underBits&amp;#039;&amp;#039;&amp;#039; stores a handle to the screen area under the text string.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; Coordinates where the text string is to be displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;font&amp;#039;&amp;#039;&amp;#039; The font to use.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;color&amp;#039;&amp;#039;&amp;#039; The foreground color.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;back&amp;#039;&amp;#039;&amp;#039; The background color.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;width&amp;#039;&amp;#039;&amp;#039; The width to use for wrapping the text, if that should ever be necessary.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;align&amp;#039;&amp;#039;&amp;#039; The alignment to use.&lt;br /&gt;
&lt;br /&gt;
==5 Constant reference==&lt;br /&gt;
&lt;br /&gt;
(define KEYPAD_INIT_STATE 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_DONE_STATE 1)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_ERROR_STATE 2)&lt;br /&gt;
&lt;br /&gt;
(define KEYPAD_SPECIAL_NONE 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_ENTER 1)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_BKSP 2)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_CANCEL 3)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Keyboard]]&lt;br /&gt;
[[Category:Classes]]&lt;br /&gt;
[[Category:I/O]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Generic_Keypad_Class&amp;diff=17440</id>
		<title>Generic Keypad Class</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Generic_Keypad_Class&amp;diff=17440"/>
		<updated>2025-04-02T21:30:32Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Generic Keypad Class&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Lars Skovlund&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
Note that I use the ego view for buttons (as I said, I am not a graphic artist). The first the buttons from the left are number buttons, and add the numbers 1, 2 and 3 to the keypad text. The next button cancels, the one after that is backspace, and the last one OK. It would be great if someone would help me make better graphics for the demo code. Instructions are in the documentation. You will also need to add the word &amp;#039;keypad&amp;#039; to your vocabulary.&lt;br /&gt;
&lt;br /&gt;
Code in the attached file, along with documentation.&lt;br /&gt;
&lt;br /&gt;
[http://sierrahelp.com/download.php?file=Files/SCI/GenericKeypadClass.zip Generic Keypad Class Files]&lt;br /&gt;
&lt;br /&gt;
Lars&lt;br /&gt;
&lt;br /&gt;
The Keypad SCI class&amp;lt;br /&amp;gt;&lt;br /&gt;
Lars Skovlund&amp;lt;br /&amp;gt;&lt;br /&gt;
January 17, 2007&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
&lt;br /&gt;
This is the documentation for the Keypad SCI class, written by Lars Skovlund. I have attempted to make the class as general as possible. Therefore, the class and its descendant DisplayKeypad support arbitrarily long strings of any kind, so it is possible, for instance, to have each button represent a word so the user can construct sentences. The DisplayKeypad class prints the input string somewhere on the screen via the Display kernel call (all parameters are selectable via properties).&lt;br /&gt;
&lt;br /&gt;
The following is a complete feature list for the keypad:&lt;br /&gt;
&lt;br /&gt;
* No keyboard input, for generality reasons.&lt;br /&gt;
* Special button functionality, such as enter, backspace and cancel.&lt;br /&gt;
* Optionally invokes a script when initially showing the keypad and when the enter button is pressed.&lt;br /&gt;
* Optional auto exit mode in which the keypad triggers as soon as the input string reaches its maximum length, as if the user explicitly pressed the enter button.&lt;br /&gt;
* Can require a specific number of buttons to be pressed, or accept any number of button presses.&lt;br /&gt;
* Can play a sound when a button is pressed.&lt;br /&gt;
* Optional text display (DisplayKeypad).&lt;br /&gt;
* A background view can be used or not.&lt;br /&gt;
&lt;br /&gt;
==2 Example of use==&lt;br /&gt;
&lt;br /&gt;
===2.1 Declarations===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(local kptxt[5])&lt;br /&gt;
&lt;br /&gt;
(instance myKeyPad of DisplayKeypad&lt;br /&gt;
	(properties&lt;br /&gt;
		maxLength 	4&lt;br /&gt;
		autoExit 	FALSE&lt;br /&gt;
		script 		0&lt;br /&gt;
		longestText 	1 	/* one character */&lt;br /&gt;
		color 		clBLACK&lt;br /&gt;
		back 		clWHITE&lt;br /&gt;
		x 		20&lt;br /&gt;
		y 		160&lt;br /&gt;
requireMax TRUE&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key1 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	100&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	0&lt;br /&gt;
		text 	&amp;quot;1&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key2 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	120&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	2&lt;br /&gt;
		text 	&amp;quot;2&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key3 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	140&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	1&lt;br /&gt;
		text 	&amp;quot;3&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key4 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	160&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	5&lt;br /&gt;
		special KEYPAD_SPECIAL_CANCEL&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key5 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	180&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	6&lt;br /&gt;
		special KEYPAD_SPECIAL_BKSP&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key6 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	200&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	3&lt;br /&gt;
		special KEYPAD_SPECIAL_ENTER&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.2 Handling the enter and cancel buttons===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance KeypadScript of Script&lt;br /&gt;
	(properties)&lt;br /&gt;
	(method (changeState newState)&lt;br /&gt;
		(super:changeState(newState))&lt;br /&gt;
		(switch (newState)&lt;br /&gt;
			(case KEYPAD_DONE_STATE&lt;br /&gt;
			  ((send client:hide(FALSE))&lt;br /&gt;
			  FormatPrint(&amp;quot;You typed: %s&amp;quot; @kptxt)))&lt;br /&gt;
(case KEYPAD_ERROR_STATE&lt;br /&gt;
			  (FormatPrint(&amp;quot;You need to press %d buttons.&amp;quot;&lt;br /&gt;
				(send client:maxLength()))))&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.3 Initialization and activation===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(myKeyPad:setScript(KeypadScript) outputString(@kptxt)&lt;br /&gt;
  init(key1 key2 key3 key4 key5 key6))&lt;br /&gt;
&lt;br /&gt;
(myKeyPad:init() show()) /* The init ensures that the keypad can&lt;br /&gt;
			    be used any number of times. */&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 What to draw==&lt;br /&gt;
&lt;br /&gt;
You will need a view consisting of several loops, one for each button. Each loop should contain two cels: The button in its normal and depressed state, respectively. It is important that the cels are ordered in this way; the code depends on it, and you should not set the cel property to anything when declaring KeypadButtons.&lt;br /&gt;
&lt;br /&gt;
If you want a background view you can draw this as a separate loop. Declare it in your code as an instance of the Prop class. Then refer to it in your Keypad instance using the backView property.&lt;br /&gt;
&lt;br /&gt;
==4 Class reference==&lt;br /&gt;
&lt;br /&gt;
===4.1 Keypad class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  EventHandler&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the base functionality for keypads.&lt;br /&gt;
&lt;br /&gt;
====&amp;#039;&amp;#039;Methods of the Keypad class:&amp;#039;&amp;#039;====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad init: buttons . . . )&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This function initializes the object, as is the case with every SCI class. In particular, it resets the input string and notifies the controlling script. Buttons is a list of button views (instances of KeypadButton) to include in the keypad.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad show:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Displays the keypad. The player is prevented from moving until the keypad is dismissed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad hide: doCue)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Hides the keypad. DoCue should be set to TRUE if the “enter” button was pressed, FALSE otherwise. When the script is called, the buttons have not yet been removed from the screen. If you want this, your script must explicitly call hide with a FALSE parameter (to avoid infinite recursion)—this is what the example code does, see section 2.2.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad backspace:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Self-explanatory. You will need to override this if you use text of varying lengths for the buttons.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad draw:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad setSize:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Do nothing. They are only here to prevent the game from crashing in certain situations (in particular, restoring the game to a position where the keypad is displayed).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad depress: which)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Simulates the pressing of a button. Which refers to an actual instance of KeypadButton.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad setScript: newScript params)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Sets the controlling script of the keypad. This script is called once when the keypad is initially displayed and once when the user presses “enter”. It is not called if the user cancels the dialog.&lt;br /&gt;
&lt;br /&gt;
====&amp;#039;&amp;#039;Properties of the Keypad class:&amp;#039;&amp;#039;====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;outputString&amp;#039;&amp;#039;&amp;#039; Points to the output buffer. Remember to set this at run time, and remember that it must be big enough for anything the player might press. Use a local variable, as shown in section 2.1.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;maxLength&amp;#039;&amp;#039;&amp;#039; Indicates the length of the output buffer.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;autoExit&amp;#039;&amp;#039;&amp;#039; Boolean variable which toggles the “auto exit” mode, described in the introduction.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;backView&amp;#039;&amp;#039;&amp;#039; Points to an instance of Prop which is displayed when the keypad is activated. It is meant to be used for a background, hence the name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;backPri&amp;#039;&amp;#039;&amp;#039; Indicates the priority of the background. May be omitted; the priority of the buttons is always 1 greater than this value, if specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;btnSound&amp;#039;&amp;#039;&amp;#039; Points to an instance of Sound which is played whenever the user presses a button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;longestText&amp;#039;&amp;#039;&amp;#039; Indicates the length of the longest button text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;script&amp;#039;&amp;#039;&amp;#039; Indicates the controlling script. Use setScript to set this, never set it directly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;state&amp;#039;&amp;#039;&amp;#039; Boolean variable. Indicates whether the keypad is currently shown or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;special&amp;#039;&amp;#039;&amp;#039; Not used for anything. Works around a chicken-and-egg problem regarding selector names in SCI Studio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;requireMax&amp;#039;&amp;#039;&amp;#039; Setting this to true makes the keypad require maxLength characters to be filled in. If this requirement is not met when the player presses enter, the attached script executes its keypad error state. You can do whatever you want here, including doing nothing, displaying an error message, or blowing up the universe. The keypad remains functional after the script returns.&lt;br /&gt;
&lt;br /&gt;
;Notes&lt;br /&gt;
&lt;br /&gt;
For the predefined script, three states are predefined. Constants are provided&lt;br /&gt;
in the enclosed header file.&lt;br /&gt;
&lt;br /&gt;
===4.2 KeypadButton class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  Prop&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the button views to be used for the keypad; they provide an event handler and a special feed-back interface for the &amp;lt;u&amp;gt;Keypad&amp;lt;/u&amp;gt; class. None of the overridden methods are meant to be called directly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Methods of the KeypadButton class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(KeypadButton init: theClient priority)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(KeypadButton handleEvent: event)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Properties of the KeypadButton class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;text&amp;#039;&amp;#039;&amp;#039; The text to add when the button is pressed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;special&amp;#039;&amp;#039;&amp;#039; The special meaning that this button is to have.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;client&amp;#039;&amp;#039;&amp;#039; A pointer to the keypad which “owns” this button. Filled in automatically.&lt;br /&gt;
&lt;br /&gt;
;Notes&lt;br /&gt;
&lt;br /&gt;
Three special button types are provided beside the default, namely enter, backspace and cancel.&lt;br /&gt;
&lt;br /&gt;
===4.3 DisplayKeypad class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  Keypad&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the additional functionality of displaying the current text string at a predetermined position on the screen. All of the listed properties have the same format as those passed to the Display kernel function.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Properties of the DisplayKeypad class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;underBits&amp;#039;&amp;#039;&amp;#039; stores a handle to the screen area under the text string.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; Coordinates where the text string is to be displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;font&amp;#039;&amp;#039;&amp;#039; The font to use.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;color&amp;#039;&amp;#039;&amp;#039; The foreground color.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;back&amp;#039;&amp;#039;&amp;#039; The background color.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;width&amp;#039;&amp;#039;&amp;#039; The width to use for wrapping the text, if that should ever be necessary.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;align&amp;#039;&amp;#039;&amp;#039; The alignment to use.&lt;br /&gt;
&lt;br /&gt;
==5 Constant reference==&lt;br /&gt;
&lt;br /&gt;
(define KEYPAD_INIT_STATE 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_DONE_STATE 1)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_ERROR_STATE 2)&lt;br /&gt;
&lt;br /&gt;
(define KEYPAD_SPECIAL_NONE 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_ENTER 1)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_BKSP 2)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_CANCEL 3)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Keyboard]]&lt;br /&gt;
[[Category:Classes]]&lt;br /&gt;
[[Category:I/O]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Generic_Keypad_Class&amp;diff=17439</id>
		<title>Generic Keypad Class</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Generic_Keypad_Class&amp;diff=17439"/>
		<updated>2025-04-02T21:30:09Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Lars Skovlund&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
Note that I use the ego view for buttons (as I said, I am not a graphic artist). The first the buttons from the left are number buttons, and add the numbers 1, 2 and 3 to the keypad text. The next button cancels, the one after that is backspace, and the last one OK. It would be great if someone would help me make better graphics for the demo code. Instructions are in the documentation. You will also need to add the word &amp;#039;keypad&amp;#039; to your vocabulary.&lt;br /&gt;
&lt;br /&gt;
Code in the attached file, along with documentation.&lt;br /&gt;
&lt;br /&gt;
[http://sierrahelp.com/download.php?file=Files/SCI/GenericKeypadClass.zip Generic Keypad Class Files]&lt;br /&gt;
&lt;br /&gt;
Lars&lt;br /&gt;
&lt;br /&gt;
The Keypad SCI class&amp;lt;br /&amp;gt;&lt;br /&gt;
Lars Skovlund&amp;lt;br /&amp;gt;&lt;br /&gt;
January 17, 2007&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
&lt;br /&gt;
This is the documentation for the Keypad SCI class, written by Lars Skovlund. I have attempted to make the class as general as possible. Therefore, the class and its descendant DisplayKeypad support arbitrarily long strings of any kind, so it is possible, for instance, to have each button represent a word so the user can construct sentences. The DisplayKeypad class prints the input string somewhere on the screen via the Display kernel call (all parameters are selectable via properties).&lt;br /&gt;
&lt;br /&gt;
The following is a complete feature list for the keypad:&lt;br /&gt;
&lt;br /&gt;
* No keyboard input, for generality reasons.&lt;br /&gt;
* Special button functionality, such as enter, backspace and cancel.&lt;br /&gt;
* Optionally invokes a script when initially showing the keypad and when the enter button is pressed.&lt;br /&gt;
* Optional auto exit mode in which the keypad triggers as soon as the input string reaches its maximum length, as if the user explicitly pressed the enter button.&lt;br /&gt;
* Can require a specific number of buttons to be pressed, or accept any number of button presses.&lt;br /&gt;
* Can play a sound when a button is pressed.&lt;br /&gt;
* Optional text display (DisplayKeypad).&lt;br /&gt;
* A background view can be used or not.&lt;br /&gt;
&lt;br /&gt;
==2 Example of use==&lt;br /&gt;
&lt;br /&gt;
===2.1 Declarations===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(local kptxt[5])&lt;br /&gt;
&lt;br /&gt;
(instance myKeyPad of DisplayKeypad&lt;br /&gt;
	(properties&lt;br /&gt;
		maxLength 	4&lt;br /&gt;
		autoExit 	FALSE&lt;br /&gt;
		script 		0&lt;br /&gt;
		longestText 	1 	/* one character */&lt;br /&gt;
		color 		clBLACK&lt;br /&gt;
		back 		clWHITE&lt;br /&gt;
		x 		20&lt;br /&gt;
		y 		160&lt;br /&gt;
requireMax TRUE&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key1 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	100&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	0&lt;br /&gt;
		text 	&amp;quot;1&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key2 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	120&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	2&lt;br /&gt;
		text 	&amp;quot;2&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key3 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	140&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	1&lt;br /&gt;
		text 	&amp;quot;3&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key4 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	160&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	5&lt;br /&gt;
		special KEYPAD_SPECIAL_CANCEL&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key5 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	180&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	6&lt;br /&gt;
		special KEYPAD_SPECIAL_BKSP&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance key6 of KeypadButton&lt;br /&gt;
	(properties&lt;br /&gt;
		x 	200&lt;br /&gt;
		y 	100&lt;br /&gt;
		view 	0&lt;br /&gt;
		loop 	3&lt;br /&gt;
		special KEYPAD_SPECIAL_ENTER&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.2 Handling the enter and cancel buttons===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance KeypadScript of Script&lt;br /&gt;
	(properties)&lt;br /&gt;
	(method (changeState newState)&lt;br /&gt;
		(super:changeState(newState))&lt;br /&gt;
		(switch (newState)&lt;br /&gt;
			(case KEYPAD_DONE_STATE&lt;br /&gt;
			  ((send client:hide(FALSE))&lt;br /&gt;
			  FormatPrint(&amp;quot;You typed: %s&amp;quot; @kptxt)))&lt;br /&gt;
(case KEYPAD_ERROR_STATE&lt;br /&gt;
			  (FormatPrint(&amp;quot;You need to press %d buttons.&amp;quot;&lt;br /&gt;
				(send client:maxLength()))))&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.3 Initialization and activation===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(myKeyPad:setScript(KeypadScript) outputString(@kptxt)&lt;br /&gt;
  init(key1 key2 key3 key4 key5 key6))&lt;br /&gt;
&lt;br /&gt;
(myKeyPad:init() show()) /* The init ensures that the keypad can&lt;br /&gt;
			    be used any number of times. */&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 What to draw==&lt;br /&gt;
&lt;br /&gt;
You will need a view consisting of several loops, one for each button. Each loop should contain two cels: The button in its normal and depressed state, respectively. It is important that the cels are ordered in this way; the code depends on it, and you should not set the cel property to anything when declaring KeypadButtons.&lt;br /&gt;
&lt;br /&gt;
If you want a background view you can draw this as a separate loop. Declare it in your code as an instance of the Prop class. Then refer to it in your Keypad instance using the backView property.&lt;br /&gt;
&lt;br /&gt;
==4 Class reference==&lt;br /&gt;
&lt;br /&gt;
===4.1 Keypad class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  EventHandler&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the base functionality for keypads.&lt;br /&gt;
&lt;br /&gt;
====&amp;#039;&amp;#039;Methods of the Keypad class:&amp;#039;&amp;#039;====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad init: buttons . . . )&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This function initializes the object, as is the case with every SCI class. In particular, it resets the input string and notifies the controlling script. Buttons is a list of button views (instances of KeypadButton) to include in the keypad.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad show:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Displays the keypad. The player is prevented from moving until the keypad is dismissed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad hide: doCue)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Hides the keypad. DoCue should be set to TRUE if the “enter” button was pressed, FALSE otherwise. When the script is called, the buttons have not yet been removed from the screen. If you want this, your script must explicitly call hide with a FALSE parameter (to avoid infinite recursion)—this is what the example code does, see section 2.2.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad backspace:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Self-explanatory. You will need to override this if you use text of varying lengths for the buttons.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad draw:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad setSize:)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Do nothing. They are only here to prevent the game from crashing in certain situations (in particular, restoring the game to a position where the keypad is displayed).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad depress: which)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Simulates the pressing of a button. Which refers to an actual instance of KeypadButton.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Keypad setScript: newScript params)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Sets the controlling script of the keypad. This script is called once when the keypad is initially displayed and once when the user presses “enter”. It is not called if the user cancels the dialog.&lt;br /&gt;
&lt;br /&gt;
====&amp;#039;&amp;#039;Properties of the Keypad class:&amp;#039;&amp;#039;====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;outputString&amp;#039;&amp;#039;&amp;#039; Points to the output buffer. Remember to set this at run time, and remember that it must be big enough for anything the player might press. Use a local variable, as shown in section 2.1.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;maxLength&amp;#039;&amp;#039;&amp;#039; Indicates the length of the output buffer.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;autoExit&amp;#039;&amp;#039;&amp;#039; Boolean variable which toggles the “auto exit” mode, described in the introduction.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;backView&amp;#039;&amp;#039;&amp;#039; Points to an instance of Prop which is displayed when the keypad is activated. It is meant to be used for a background, hence the name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;backPri&amp;#039;&amp;#039;&amp;#039; Indicates the priority of the background. May be omitted; the priority of the buttons is always 1 greater than this value, if specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;btnSound&amp;#039;&amp;#039;&amp;#039; Points to an instance of Sound which is played whenever the user presses a button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;longestText&amp;#039;&amp;#039;&amp;#039; Indicates the length of the longest button text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;script&amp;#039;&amp;#039;&amp;#039; Indicates the controlling script. Use setScript to set this, never set it directly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;state&amp;#039;&amp;#039;&amp;#039; Boolean variable. Indicates whether the keypad is currently shown or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;special&amp;#039;&amp;#039;&amp;#039; Not used for anything. Works around a chicken-and-egg problem regarding selector names in SCI Studio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;requireMax&amp;#039;&amp;#039;&amp;#039; Setting this to true makes the keypad require maxLength characters to be filled in. If this requirement is not met when the player presses enter, the attached script executes its keypad error state. You can do whatever you want here, including doing nothing, displaying an error message, or blowing up the universe. The keypad remains functional after the script returns.&lt;br /&gt;
&lt;br /&gt;
;Notes&lt;br /&gt;
&lt;br /&gt;
For the predefined script, three states are predefined. Constants are provided&lt;br /&gt;
in the enclosed header file.&lt;br /&gt;
&lt;br /&gt;
===4.2 KeypadButton class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  Prop&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the button views to be used for the keypad; they provide an event handler and a special feed-back interface for the &amp;lt;u&amp;gt;Keypad&amp;lt;/u&amp;gt; class. None of the overridden methods are meant to be called directly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Methods of the KeypadButton class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(KeypadButton init: theClient priority)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(KeypadButton handleEvent: event)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Properties of the KeypadButton class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;text&amp;#039;&amp;#039;&amp;#039; The text to add when the button is pressed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;special&amp;#039;&amp;#039;&amp;#039; The special meaning that this button is to have.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;client&amp;#039;&amp;#039;&amp;#039; A pointer to the keypad which “owns” this button. Filled in automatically.&lt;br /&gt;
&lt;br /&gt;
;Notes&lt;br /&gt;
&lt;br /&gt;
Three special button types are provided beside the default, namely enter, backspace and cancel.&lt;br /&gt;
&lt;br /&gt;
===4.3 DisplayKeypad class===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Superclass: 			  Keypad&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This class provides the additional functionality of displaying the current text string at a predetermined position on the screen. All of the listed properties have the same format as those passed to the Display kernel function.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Properties of the DisplayKeypad class:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;underBits&amp;#039;&amp;#039;&amp;#039; stores a handle to the screen area under the text string.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; Coordinates where the text string is to be displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;font&amp;#039;&amp;#039;&amp;#039; The font to use.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;color&amp;#039;&amp;#039;&amp;#039; The foreground color.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;back&amp;#039;&amp;#039;&amp;#039; The background color.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;width&amp;#039;&amp;#039;&amp;#039; The width to use for wrapping the text, if that should ever be necessary.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;align&amp;#039;&amp;#039;&amp;#039; The alignment to use.&lt;br /&gt;
&lt;br /&gt;
==5 Constant reference==&lt;br /&gt;
&lt;br /&gt;
(define KEYPAD_INIT_STATE 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_DONE_STATE 1)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_ERROR_STATE 2)&lt;br /&gt;
&lt;br /&gt;
(define KEYPAD_SPECIAL_NONE 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_ENTER 1)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_BKSP 2)&amp;lt;br /&amp;gt;&lt;br /&gt;
(define KEYPAD_SPECIAL_CANCEL 3)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Keyboard]]&lt;br /&gt;
[[Category:Classes]]&lt;br /&gt;
[[Category:I/O]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Fixing_F2_(ToggleSound)_Issue_with_Companion&amp;diff=17438</id>
		<title>Fixing F2 (ToggleSound) Issue with Companion</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Fixing_F2_(ToggleSound)_Issue_with_Companion&amp;diff=17438"/>
		<updated>2025-04-02T21:29:07Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Fixing F2 (ToggleSound) Issue with Companion&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
As [[User:MusicallyInspired|Brandon]] has noted, sometimes it appears as though F2, or toggle sound, works and sometimes it does not. The problem arises out of sci companion&amp;#039;s compiler. While there are no errors thrown, the compiled script fails to mute or unmute the sounds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(procedure public (ToggleSound)&lt;br /&gt;
    (var SOUND_OFF)&lt;br /&gt;
    = SOUND_OFF DoSound(sndSET_SOUND)&lt;br /&gt;
    = SOUND_OFF DoSound( sndSET_SOUND not(SOUND_OFF) )&lt;br /&gt;
    (if(SOUND_OFF)&lt;br /&gt;
        SetMenu(MENU_TOGGLESOUND smMENU_TEXT &amp;quot;Turn On&amp;quot;)&lt;br /&gt;
    )(else&lt;br /&gt;
        SetMenu(MENU_TOGGLESOUND smMENU_TEXT &amp;quot;Turn Off&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luckily, fixing the procedure isn&amp;#039;t too difficult. The logic of the procedure, if you can play the sound then mute, otherwise unmute. Simple enough right? So here it is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(procedure public (ToggleSound) // mute, unmute&lt;br /&gt;
    (if(DoSound(sndSET_SOUND)) // if true, mute&lt;br /&gt;
            DoSound(sndSET_SOUND FALSE)&lt;br /&gt;
            SetMenu(MENU_TOGGLESOUND smMENU_TEXT &amp;quot;Turn On&amp;quot;)&lt;br /&gt;
        )&lt;br /&gt;
    (else  // must be false, unmute&lt;br /&gt;
            DoSound(sndSET_SOUND TRUE)&lt;br /&gt;
            SetMenu(MENU_TOGGLESOUND smMENU_TEXT &amp;quot;Turn Off&amp;quot;)&lt;br /&gt;
        )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simply replace the whole procedure with this new one and the game will respond correctly regardless of which editor you use to compile the script.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:SCI Troubleshooting]]&lt;br /&gt;
[[Category:Maintenance]]&lt;br /&gt;
[[Category:SCI Maintenance]]&lt;br /&gt;
[[Category:Audio]]&lt;br /&gt;
[[Category:SCI Audio]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17437</id>
		<title>SCI How To</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17437"/>
		<updated>2025-04-02T21:27:38Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Adding Sound Support]]&lt;br /&gt;
*[[Adding Troflip&amp;#039;s alt Debugging]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 2 - Qualifying Adjectives]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 3 - Prepositions]]&lt;br /&gt;
*[[Automatic doors]]&lt;br /&gt;
*[[Death Handler]]&lt;br /&gt;
*[[Determining Location of Mouse Cursor]]&lt;br /&gt;
*[[Fixing F2 (ToggleSound) Issue with Companion]]&lt;br /&gt;
*[[Generic Keypad class]]&lt;br /&gt;
*[[Get and Use Specific Keyboard Keys]]&lt;br /&gt;
*[[How to keep your gTheSoundFX from interupting gTheMusic]]&lt;br /&gt;
*[[Manipulating the Parser - Part 1 - &amp;#039;Complex&amp;#039; Nouns]]&lt;br /&gt;
*[[Manipulating the Parser - Part 2 - Addressing Actors]]&lt;br /&gt;
*[[Placing Inventory Descriptions in a Text Resource]]&lt;br /&gt;
*[[Resource Corruption from Rebuilding while Running]]&lt;br /&gt;
*[[Said() Strings - Comprehensive Examples]]&lt;br /&gt;
*[[Taking Inventory Item away from character]]&lt;br /&gt;
*[[Template Game Bug Fixes]]&lt;br /&gt;
*[[Timers]]&lt;br /&gt;
*[[Word Suffixes]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Fixing_F2_(ToggleSound)_Issue_with_Companion&amp;diff=17436</id>
		<title>Fixing F2 (ToggleSound) Issue with Companion</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Fixing_F2_(ToggleSound)_Issue_with_Companion&amp;diff=17436"/>
		<updated>2025-04-02T21:27:03Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Andrew Branscom moved page Fixing F2 (ToggleSound) issue with Companion to Fixing F2 (ToggleSound) Issue with Companion without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
As [[User:MusicallyInspired|Brandon]] has noted, sometimes it appears as though F2, or toggle sound, works and sometimes it does not. The problem arises out of sci companion&amp;#039;s compiler. While there are no errors thrown, the compiled script fails to mute or unmute the sounds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(procedure public (ToggleSound)&lt;br /&gt;
    (var SOUND_OFF)&lt;br /&gt;
    = SOUND_OFF DoSound(sndSET_SOUND)&lt;br /&gt;
    = SOUND_OFF DoSound( sndSET_SOUND not(SOUND_OFF) )&lt;br /&gt;
    (if(SOUND_OFF)&lt;br /&gt;
        SetMenu(MENU_TOGGLESOUND smMENU_TEXT &amp;quot;Turn On&amp;quot;)&lt;br /&gt;
    )(else&lt;br /&gt;
        SetMenu(MENU_TOGGLESOUND smMENU_TEXT &amp;quot;Turn Off&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luckily, fixing the procedure isn&amp;#039;t too difficult. The logic of the procedure, if you can play the sound then mute, otherwise unmute. Simple enough right? So here it is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(procedure public (ToggleSound) // mute, unmute&lt;br /&gt;
    (if(DoSound(sndSET_SOUND)) // if true, mute&lt;br /&gt;
            DoSound(sndSET_SOUND FALSE)&lt;br /&gt;
            SetMenu(MENU_TOGGLESOUND smMENU_TEXT &amp;quot;Turn On&amp;quot;)&lt;br /&gt;
        )&lt;br /&gt;
    (else  // must be false, unmute&lt;br /&gt;
            DoSound(sndSET_SOUND TRUE)&lt;br /&gt;
            SetMenu(MENU_TOGGLESOUND smMENU_TEXT &amp;quot;Turn Off&amp;quot;)&lt;br /&gt;
        )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simply replace the whole procedure with this new one and the game will respond correctly regardless of which editor you use to compile the script.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:SCI Troubleshooting]]&lt;br /&gt;
[[Category:Maintenance]]&lt;br /&gt;
[[Category:SCI Maintenance]]&lt;br /&gt;
[[Category:Audio]]&lt;br /&gt;
[[Category:SCI Audio]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17435</id>
		<title>SCI How To</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=SCI_How_To&amp;diff=17435"/>
		<updated>2025-04-02T21:26:34Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Adding Sound Support]]&lt;br /&gt;
*[[Adding Troflip&amp;#039;s alt Debugging]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 2 - Qualifying Adjectives]]&lt;br /&gt;
*[[Advanced Said() Strings - Part 3 - Prepositions]]&lt;br /&gt;
*[[Automatic doors]]&lt;br /&gt;
*[[Death Handler]]&lt;br /&gt;
*[[Determining Location of Mouse Cursor]]&lt;br /&gt;
*[[Fixing F2 (ToggleSound) issue with Companion]]&lt;br /&gt;
*[[Generic Keypad class]]&lt;br /&gt;
*[[Get and Use Specific Keyboard Keys]]&lt;br /&gt;
*[[How to keep your gTheSoundFX from interupting gTheMusic]]&lt;br /&gt;
*[[Manipulating the Parser - Part 1 - &amp;#039;Complex&amp;#039; Nouns]]&lt;br /&gt;
*[[Manipulating the Parser - Part 2 - Addressing Actors]]&lt;br /&gt;
*[[Placing Inventory Descriptions in a Text Resource]]&lt;br /&gt;
*[[Resource Corruption from Rebuilding while Running]]&lt;br /&gt;
*[[Said() Strings - Comprehensive Examples]]&lt;br /&gt;
*[[Taking Inventory Item away from character]]&lt;br /&gt;
*[[Template Game Bug Fixes]]&lt;br /&gt;
*[[Timers]]&lt;br /&gt;
*[[Word Suffixes]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Determining_Location_of_Mouse_Cursor&amp;diff=17434</id>
		<title>Determining Location of Mouse Cursor</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Determining_Location_of_Mouse_Cursor&amp;diff=17434"/>
		<updated>2025-04-02T21:25:59Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: Andrew Branscom moved page Determining location of mouse cursor to Determining Location of Mouse Cursor without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Determining Location of Mouse Cursor&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
This is a question that I recently asked at Mega-Tokyo in which Troflip was good enough to write up some code illustrating that exact functionality. This is a little snippet of code which I had hoped Troflip could enter here, but as he has not signed up yet and I really didn&amp;#039;t want to lose this snippet as I plan to find a use for it, I have moved it here.&lt;br /&gt;
&lt;br /&gt;
Troflip&amp;#039;s code to get a view to follow the cursor broken up with small explanations added by me.&lt;br /&gt;
&lt;br /&gt;
We first need to create an instance of an Actor, it needs to be an actor so that it can move around the screen. An init method has been included in the instance telling the actor to do what that script says.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;&lt;br /&gt;
(instance thing of Act&lt;br /&gt;
   (properties&lt;br /&gt;
      x 100&lt;br /&gt;
      y 100&lt;br /&gt;
      view 800&lt;br /&gt;
   )&lt;br /&gt;
   (method (init)&lt;br /&gt;
      (super:init())&lt;br /&gt;
      (self:setScript(thingScript))&lt;br /&gt;
   )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that the instance is complete, we also need to create the script which the instances init method references. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance thingScript of Script&lt;br /&gt;
   (properties)&lt;br /&gt;
   (method (doit)&lt;br /&gt;
      (var myEvent)&lt;br /&gt;
      (super:doit())&lt;br /&gt;
      (= myEvent Event:new(evNULL))&lt;br /&gt;
      (send client:setMotion(MoveTo (send myEvent:x) (send myEvent:y)))&lt;br /&gt;
      (send myEvent:dispose())&lt;br /&gt;
   )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and then of course do (thing:init()) in your room&amp;#039;s init method.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Cursors]]&lt;br /&gt;
[[Category:Mouse]]&lt;br /&gt;
[[Category:I/O]]&lt;br /&gt;
[[Category:SCI I/O]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Determining_Location_of_Mouse_Cursor&amp;diff=17433</id>
		<title>Determining Location of Mouse Cursor</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Determining_Location_of_Mouse_Cursor&amp;diff=17433"/>
		<updated>2025-04-02T21:25:39Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Determining Location of Mouse Cursor&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
This is a question that I recently asked at Mega-Tokyo in which Troflip was good enough to write up some code illustrating that exact functionality. This is a little snippet of code which I had hoped Troflip could enter here, but as he has not signed up yet and I really didn&amp;#039;t want to lose this snippet as I plan to find a use for it, I have moved it here.&lt;br /&gt;
&lt;br /&gt;
Troflip&amp;#039;s code to get a view to follow the cursor broken up with small explanations added by me.&lt;br /&gt;
&lt;br /&gt;
We first need to create an instance of an Actor, it needs to be an actor so that it can move around the screen. An init method has been included in the instance telling the actor to do what that script says.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;&lt;br /&gt;
(instance thing of Act&lt;br /&gt;
   (properties&lt;br /&gt;
      x 100&lt;br /&gt;
      y 100&lt;br /&gt;
      view 800&lt;br /&gt;
   )&lt;br /&gt;
   (method (init)&lt;br /&gt;
      (super:init())&lt;br /&gt;
      (self:setScript(thingScript))&lt;br /&gt;
   )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that the instance is complete, we also need to create the script which the instances init method references. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(instance thingScript of Script&lt;br /&gt;
   (properties)&lt;br /&gt;
   (method (doit)&lt;br /&gt;
      (var myEvent)&lt;br /&gt;
      (super:doit())&lt;br /&gt;
      (= myEvent Event:new(evNULL))&lt;br /&gt;
      (send client:setMotion(MoveTo (send myEvent:x) (send myEvent:y)))&lt;br /&gt;
      (send myEvent:dispose())&lt;br /&gt;
   )&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and then of course do (thing:init()) in your room&amp;#039;s init method.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Cursors]]&lt;br /&gt;
[[Category:Mouse]]&lt;br /&gt;
[[Category:I/O]]&lt;br /&gt;
[[Category:SCI I/O]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Death_Handler&amp;diff=17432</id>
		<title>Death Handler</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Death_Handler&amp;diff=17432"/>
		<updated>2025-04-02T21:24:03Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Death Handler&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Examples of Utilizing the Death Handler ==&lt;br /&gt;
&lt;br /&gt;
Most cases of a death event can be done in the same way, by adding in a doit method. For instance being too close to a character or view, crossing a road or perhaps standing in the wrong spot, like under a piano. Would all be handled in the doit method.&lt;br /&gt;
&lt;br /&gt;
Kill the character whenever something else gets too close. We will of course need to have an instance of the oPPonent actor, as well as having it inited, but otherwise to activate the death script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(method (doit)&lt;br /&gt;
(var dyingScript) // don&amp;#039;t forget this line&lt;br /&gt;
(super:doit())&lt;br /&gt;
&lt;br /&gt;
  (if(not(gProgramControl))&lt;br /&gt;
    (if(&amp;lt; (send gEgo:distanceTo(oPPonent)) 40)&lt;br /&gt;
      ProgramControl()&lt;br /&gt;
      // (oPPonent:cel(0)loop(4)setMotion(NULL)setCycle(Fwd)) // switch opponent to attacking&lt;br /&gt;
      // (send gEgo:view(1)cel(0)setMotion(NULL)setCycle(Fwd))// switch ego to getting attacked&lt;br /&gt;
 &lt;br /&gt;
      = dyingScript ScriptID(DYING_SCRIPT)&lt;br /&gt;
      (send dyingScript:&lt;br /&gt;
       caller(3)&lt;br /&gt;
       register(&amp;quot;You&amp;#039;re dead&amp;quot;)&lt;br /&gt;
      )&lt;br /&gt;
      (send gGame:setScript(dyingScript))    &lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
) // end method&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, if ego were to attempt crossing an uncrossable road. Rather than measure the distance between ego and something you can just simply lay down say a purple control color line on the road where ego can&amp;#039;t cross. For this you will still need a doit method but the car which is still an actor since we need to apply motion to it, but you won&amp;#039;t need to init it when you do all the normal things, but rather right when it&amp;#039;s needed, after all, it may never actually be needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(method (doit)&lt;br /&gt;
(var dyingScript)&lt;br /&gt;
(super:doit())&lt;br /&gt;
&lt;br /&gt;
  (if(not(gProgramControl))&lt;br /&gt;
    (if(== (send gEgo:onControl()) $0021)// purple and black&lt;br /&gt;
      ProgramControl()&lt;br /&gt;
      (oPPonent:cel(0)loop(4)setMotion(walk)MoveTo(0 165)init()) // Car starts down road&lt;br /&gt;
      (send gEgo:view(1)cel(0)setMotion(NULL)setCycle(End))// switch ego to getting hit&lt;br /&gt;
 &lt;br /&gt;
      = dyingScript ScriptID(DYING_SCRIPT)&lt;br /&gt;
      (send dyingScript:&lt;br /&gt;
       caller(3)&lt;br /&gt;
       register(&amp;quot;You&amp;#039;re dead&amp;quot;)&lt;br /&gt;
      )&lt;br /&gt;
      (send gGame:setScript(dyingScript)) &lt;br /&gt;
   &lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
) // end method&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another way of doing it would also be to check if ego was in a rectangle and whenever they are trigger the events. It&amp;#039;s exactly the last two examples except the beginning if statement, which is essentially what typing the word die in is in that section of the tutorial, it is simply the trigger to start the death event.  The best way by far, giving the most room for animations is to place the death handler at the end of a changestate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Death]]&lt;br /&gt;
[[Category:Events]]&lt;br /&gt;
[[Category:SCI Events]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Death_Handler&amp;diff=17431</id>
		<title>Death Handler</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Death_Handler&amp;diff=17431"/>
		<updated>2025-04-02T21:23:42Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Death Handler&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples of Utilizing the Death Handler ==&lt;br /&gt;
&lt;br /&gt;
Most cases of a death event can be done in the same way, by adding in a doit method. For instance being too close to a character or view, crossing a road or perhaps standing in the wrong spot, like under a piano. Would all be handled in the doit method.&lt;br /&gt;
&lt;br /&gt;
Kill the character whenever something else gets too close. We will of course need to have an instance of the oPPonent actor, as well as having it inited, but otherwise to activate the death script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(method (doit)&lt;br /&gt;
(var dyingScript) // don&amp;#039;t forget this line&lt;br /&gt;
(super:doit())&lt;br /&gt;
&lt;br /&gt;
  (if(not(gProgramControl))&lt;br /&gt;
    (if(&amp;lt; (send gEgo:distanceTo(oPPonent)) 40)&lt;br /&gt;
      ProgramControl()&lt;br /&gt;
      // (oPPonent:cel(0)loop(4)setMotion(NULL)setCycle(Fwd)) // switch opponent to attacking&lt;br /&gt;
      // (send gEgo:view(1)cel(0)setMotion(NULL)setCycle(Fwd))// switch ego to getting attacked&lt;br /&gt;
 &lt;br /&gt;
      = dyingScript ScriptID(DYING_SCRIPT)&lt;br /&gt;
      (send dyingScript:&lt;br /&gt;
       caller(3)&lt;br /&gt;
       register(&amp;quot;You&amp;#039;re dead&amp;quot;)&lt;br /&gt;
      )&lt;br /&gt;
      (send gGame:setScript(dyingScript))    &lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
) // end method&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, if ego were to attempt crossing an uncrossable road. Rather than measure the distance between ego and something you can just simply lay down say a purple control color line on the road where ego can&amp;#039;t cross. For this you will still need a doit method but the car which is still an actor since we need to apply motion to it, but you won&amp;#039;t need to init it when you do all the normal things, but rather right when it&amp;#039;s needed, after all, it may never actually be needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(method (doit)&lt;br /&gt;
(var dyingScript)&lt;br /&gt;
(super:doit())&lt;br /&gt;
&lt;br /&gt;
  (if(not(gProgramControl))&lt;br /&gt;
    (if(== (send gEgo:onControl()) $0021)// purple and black&lt;br /&gt;
      ProgramControl()&lt;br /&gt;
      (oPPonent:cel(0)loop(4)setMotion(walk)MoveTo(0 165)init()) // Car starts down road&lt;br /&gt;
      (send gEgo:view(1)cel(0)setMotion(NULL)setCycle(End))// switch ego to getting hit&lt;br /&gt;
 &lt;br /&gt;
      = dyingScript ScriptID(DYING_SCRIPT)&lt;br /&gt;
      (send dyingScript:&lt;br /&gt;
       caller(3)&lt;br /&gt;
       register(&amp;quot;You&amp;#039;re dead&amp;quot;)&lt;br /&gt;
      )&lt;br /&gt;
      (send gGame:setScript(dyingScript)) &lt;br /&gt;
   &lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
) // end method&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another way of doing it would also be to check if ego was in a rectangle and whenever they are trigger the events. It&amp;#039;s exactly the last two examples except the beginning if statement, which is essentially what typing the word die in is in that section of the tutorial, it is simply the trigger to start the death event.  The best way by far, giving the most room for animations is to place the death handler at the end of a changestate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Death]]&lt;br /&gt;
[[Category:Events]]&lt;br /&gt;
[[Category:SCI Events]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Death_Handler&amp;diff=17430</id>
		<title>Death Handler</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Death_Handler&amp;diff=17430"/>
		<updated>2025-04-02T21:22:57Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Death Handler&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By &amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples of Utilizing the Death Handler ==&lt;br /&gt;
&lt;br /&gt;
Most cases of a death event can be done in the same way, by adding in a doit method. For instance being too close to a character or view, crossing a road or perhaps standing in the wrong spot, like under a piano. Would all be handled in the doit method.&lt;br /&gt;
&lt;br /&gt;
Kill the character whenever something else gets too close. We will of course need to have an instance of the oPPonent actor, as well as having it inited, but otherwise to activate the death script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(method (doit)&lt;br /&gt;
(var dyingScript) // don&amp;#039;t forget this line&lt;br /&gt;
(super:doit())&lt;br /&gt;
&lt;br /&gt;
  (if(not(gProgramControl))&lt;br /&gt;
    (if(&amp;lt; (send gEgo:distanceTo(oPPonent)) 40)&lt;br /&gt;
      ProgramControl()&lt;br /&gt;
      // (oPPonent:cel(0)loop(4)setMotion(NULL)setCycle(Fwd)) // switch opponent to attacking&lt;br /&gt;
      // (send gEgo:view(1)cel(0)setMotion(NULL)setCycle(Fwd))// switch ego to getting attacked&lt;br /&gt;
 &lt;br /&gt;
      = dyingScript ScriptID(DYING_SCRIPT)&lt;br /&gt;
      (send dyingScript:&lt;br /&gt;
       caller(3)&lt;br /&gt;
       register(&amp;quot;You&amp;#039;re dead&amp;quot;)&lt;br /&gt;
      )&lt;br /&gt;
      (send gGame:setScript(dyingScript))    &lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
) // end method&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, if ego were to attempt crossing an uncrossable road. Rather than measure the distance between ego and something you can just simply lay down say a purple control color line on the road where ego can&amp;#039;t cross. For this you will still need a doit method but the car which is still an actor since we need to apply motion to it, but you won&amp;#039;t need to init it when you do all the normal things, but rather right when it&amp;#039;s needed, after all, it may never actually be needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(method (doit)&lt;br /&gt;
(var dyingScript)&lt;br /&gt;
(super:doit())&lt;br /&gt;
&lt;br /&gt;
  (if(not(gProgramControl))&lt;br /&gt;
    (if(== (send gEgo:onControl()) $0021)// purple and black&lt;br /&gt;
      ProgramControl()&lt;br /&gt;
      (oPPonent:cel(0)loop(4)setMotion(walk)MoveTo(0 165)init()) // Car starts down road&lt;br /&gt;
      (send gEgo:view(1)cel(0)setMotion(NULL)setCycle(End))// switch ego to getting hit&lt;br /&gt;
 &lt;br /&gt;
      = dyingScript ScriptID(DYING_SCRIPT)&lt;br /&gt;
      (send dyingScript:&lt;br /&gt;
       caller(3)&lt;br /&gt;
       register(&amp;quot;You&amp;#039;re dead&amp;quot;)&lt;br /&gt;
      )&lt;br /&gt;
      (send gGame:setScript(dyingScript)) &lt;br /&gt;
   &lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
) // end method&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another way of doing it would also be to check if ego was in a rectangle and whenever they are trigger the events. It&amp;#039;s exactly the last two examples except the beginning if statement, which is essentially what typing the word die in is in that section of the tutorial, it is simply the trigger to start the death event.  The best way by far, giving the most room for animations is to place the death handler at the end of a changestate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Death]]&lt;br /&gt;
[[Category:Events]]&lt;br /&gt;
[[Category:SCI Events]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Automatic_Doors&amp;diff=17429</id>
		<title>Automatic Doors</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Automatic_Doors&amp;diff=17429"/>
		<updated>2025-04-02T21:21:51Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Automatic doors&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
When using Doors and AutoDoors, I am not sure why but things always seemed to go awry. This little tutorial will have a simple Automatic Door (when the player walks near them, they open) up and running with two simple lines of code.&lt;br /&gt;
&lt;br /&gt;
We begin at the very top of the script. We will need to tell the script that we are going to be using an automatic door and to include that functionality. This is done simply by adding in another use command where all of the others are.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(use &amp;quot;autodoor&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that one line is finished, lets go on to the second one, the hard one. Just kidding, there is nothing hard to this method of using automatic doors. The script can now handle AutoDoor instances now, but we are not making one of those, at least not the traditional way. In the rooms init method, where you init() your rooms views and actors, you will need to add in the call that inits the automatic door. the parameters are of the basic type, and I don&amp;#039;t think it&amp;#039;s necessary to go into detail about them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(send (AutoDoor:new()):view(211)&lt;br /&gt;
                       setLoop(0)&lt;br /&gt;
                       posn(161 62)&lt;br /&gt;
                       setPri(2)&lt;br /&gt;
                       entranceTo(101)&lt;br /&gt;
                       init())&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, as long as you have added the doors view, and have set up the doors control colors Navy and Green (you won&amp;#039;t need a Yellow one because this type of door does not get blocked) for when to open or transport to a new room. We don&amp;#039;t need to create an instance or anything else, we are all done coding.&lt;br /&gt;
&lt;br /&gt;
This simple type of door has some limitations though, because there is not an instance name to reference you won&amp;#039;t be able to program interactions with it as the code stands now. So keep this in mind. This door can&amp;#039;t be locked or blocked, if all you need is a door that opens when you near it, then this will work.&lt;br /&gt;
&lt;br /&gt;
For more advanced needs, such as multiple doors in the same room, see [[Advanced Use of Control Areas]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Doors]]&lt;br /&gt;
[[Category:Control Areas]]&lt;br /&gt;
[[Category:SCI Control Areas]]&lt;br /&gt;
[[Category:Props]]&lt;br /&gt;
[[Category:SCI Props]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Automatic_Doors&amp;diff=17428</id>
		<title>Automatic Doors</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Automatic_Doors&amp;diff=17428"/>
		<updated>2025-04-02T21:21:34Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Automatic doors&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Cloudee1&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Introduction ==&lt;br /&gt;
&lt;br /&gt;
When using Doors and AutoDoors, I am not sure why but things always seemed to go awry. This little tutorial will have a simple Automatic Door (when the player walks near them, they open) up and running with two simple lines of code.&lt;br /&gt;
&lt;br /&gt;
We begin at the very top of the script. We will need to tell the script that we are going to be using an automatic door and to include that functionality. This is done simply by adding in another use command where all of the others are.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(use &amp;quot;autodoor&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that one line is finished, lets go on to the second one, the hard one. Just kidding, there is nothing hard to this method of using automatic doors. The script can now handle AutoDoor instances now, but we are not making one of those, at least not the traditional way. In the rooms init method, where you init() your rooms views and actors, you will need to add in the call that inits the automatic door. the parameters are of the basic type, and I don&amp;#039;t think it&amp;#039;s necessary to go into detail about them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;(send (AutoDoor:new()):view(211)&lt;br /&gt;
                       setLoop(0)&lt;br /&gt;
                       posn(161 62)&lt;br /&gt;
                       setPri(2)&lt;br /&gt;
                       entranceTo(101)&lt;br /&gt;
                       init())&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, as long as you have added the doors view, and have set up the doors control colors Navy and Green (you won&amp;#039;t need a Yellow one because this type of door does not get blocked) for when to open or transport to a new room. We don&amp;#039;t need to create an instance or anything else, we are all done coding.&lt;br /&gt;
&lt;br /&gt;
This simple type of door has some limitations though, because there is not an instance name to reference you won&amp;#039;t be able to program interactions with it as the code stands now. So keep this in mind. This door can&amp;#039;t be locked or blocked, if all you need is a door that opens when you near it, then this will work.&lt;br /&gt;
&lt;br /&gt;
For more advanced needs, such as multiple doors in the same room, see [[Advanced Use of Control Areas]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Doors]]&lt;br /&gt;
[[Category:Control Areas]]&lt;br /&gt;
[[Category:SCI Control Areas]]&lt;br /&gt;
[[Category:Props]]&lt;br /&gt;
[[Category:SCI Props]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
	<entry>
		<id>http://sciwiki.sierrahelp.com/index.php?title=Advanced_Said()_Strings_-_Part_3_-_Prepositions&amp;diff=17427</id>
		<title>Advanced Said() Strings - Part 3 - Prepositions</title>
		<link rel="alternate" type="text/html" href="http://sciwiki.sierrahelp.com/index.php?title=Advanced_Said()_Strings_-_Part_3_-_Prepositions&amp;diff=17427"/>
		<updated>2025-04-02T21:20:18Z</updated>

		<summary type="html">&lt;p&gt;Andrew Branscom: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SCI Pages]]&lt;br /&gt;
[[Category:Temp SCI Import Pages]]&lt;br /&gt;
[[Category:Temp SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials]]&lt;br /&gt;
[[SCI Tutorials and Guides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 22pt&amp;quot;&amp;gt;Advanced Said() Strings - Part 3 - Prepositions&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;By Gumby&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==&amp;lt;br /&amp;gt; Prepositions (and Unclassified words) ==&lt;br /&gt;
&lt;br /&gt;
Example of the preposition &amp;#039;in&amp;#039;, which is classified in the vocab as a preposition (in the template game):&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;    // Responds to user input of: &amp;#039;put key in lock&amp;#039;&lt;br /&gt;
    (if(Said(&amp;#039;put&amp;lt;in/key/lock&amp;#039;))&lt;br /&gt;
       Print(&amp;quot;You put the key in the lock&amp;quot;)&lt;br /&gt;
    )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of the preposition &amp;#039;with&amp;#039;, but has an unclassified word class in the template game:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;CodeBlockHeader&amp;quot;&amp;gt;Code:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sci&amp;quot;&amp;gt;    // Responds to user input of: &amp;#039;open door with key&amp;#039;&lt;br /&gt;
    (if(Said(&amp;#039;open/door/key&amp;lt;with&amp;#039;))&lt;br /&gt;
       Print(&amp;quot;You open the door with the key&amp;quot;)&lt;br /&gt;
    )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t despair with this discrepancy.  By setting &amp;#039;with&amp;#039; to a preposition it will behave just like the &amp;#039;in&amp;#039; preposition example.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Prepositions]]&lt;br /&gt;
[[Category:SCI Prepositions]]&lt;br /&gt;
[[Category:Said() Strings]]&lt;br /&gt;
[[Category:SCI Said() Strings]]&lt;br /&gt;
[[Category:The Parser]]&lt;br /&gt;
[[Category:The SCI Parser]]&lt;br /&gt;
[[Category:Examples]]&lt;br /&gt;
[[Category:SCI Examples]]&lt;/div&gt;</summary>
		<author><name>Andrew Branscom</name></author>
	</entry>
</feed>