<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rpg.hamsterrepublic.com/ohrrpgce/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=The+Mad+Cacti</id>
	<title>OHRRPGCE-Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://rpg.hamsterrepublic.com/ohrrpgce/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=The+Mad+Cacti"/>
	<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/Special:Contributions/The_Mad_Cacti"/>
	<updated>2026-06-13T18:35:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Not_evil&amp;diff=28751</id>
		<title>Not evil</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Not_evil&amp;diff=28751"/>
		<updated>2013-05-09T13:41:57Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: welcome to the wiki, TMC!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Locked}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is a list of wiki contributors who are known to be real human beings&lt;br /&gt;
# and not spammers or robots, and are consequently allowed to speak forbidden&lt;br /&gt;
# words from the Spamwords list. Being on this list does not represent any&lt;br /&gt;
# opinion about the quality of articles or questions submitted by the user, only&lt;br /&gt;
# verification that they are human&lt;br /&gt;
&lt;br /&gt;
AdrianX&lt;br /&gt;
AJHunter&lt;br /&gt;
Ahkan&lt;br /&gt;
Amarpal&lt;br /&gt;
Andrusi&lt;br /&gt;
Arpgme&lt;br /&gt;
AutoT&lt;br /&gt;
Axcalibar&lt;br /&gt;
B4light&lt;br /&gt;
BattleBlaze&lt;br /&gt;
Bis Senchi&lt;br /&gt;
Bis_Senshi&lt;br /&gt;
BMR&lt;br /&gt;
Bloodblade&lt;br /&gt;
Bob the Hamster&lt;br /&gt;
Bobby Blade&lt;br /&gt;
Calehay&lt;br /&gt;
Caseylocke j&lt;br /&gt;
Chaotix&lt;br /&gt;
Chenzi&lt;br /&gt;
Chronoboy&lt;br /&gt;
Crowtongue&lt;br /&gt;
Daokaioshin&lt;br /&gt;
Dark Sentiel&lt;br /&gt;
Dorumagesu&lt;br /&gt;
Dr. Baconman&lt;br /&gt;
DragonTao&lt;br /&gt;
DukeofDellot&lt;br /&gt;
‎Ep1cLuis&lt;br /&gt;
Fenrir-Lunaris&lt;br /&gt;
FnrrfYgmSchnish&lt;br /&gt;
FyreWulff&lt;br /&gt;
Gagekilmer&lt;br /&gt;
Grady&lt;br /&gt;
Greenwado&lt;br /&gt;
H-Bomb&lt;br /&gt;
Harrison&lt;br /&gt;
Hieran Del8&lt;br /&gt;
Iblis&lt;br /&gt;
Ichiro&lt;br /&gt;
Inferior Minion&lt;br /&gt;
J Taylor&lt;br /&gt;
Jabbercat&lt;br /&gt;
James Paige&lt;br /&gt;
Jesse9705&lt;br /&gt;
Jessica&lt;br /&gt;
Jsh357&lt;br /&gt;
Juste&lt;br /&gt;
Kenny the otter&lt;br /&gt;
King Trode&lt;br /&gt;
Kizul Emeraldfire&lt;br /&gt;
Kyle Pavan&lt;br /&gt;
Lajestic&lt;br /&gt;
LBMixPro&lt;br /&gt;
Legodude760&lt;br /&gt;
Letrompe&lt;br /&gt;
Lil Bob&lt;br /&gt;
Linkmax&lt;br /&gt;
Liquidfired&lt;br /&gt;
Longebane&lt;br /&gt;
Master K&lt;br /&gt;
MasterofKittens&lt;br /&gt;
Meatballsub&lt;br /&gt;
Miff Falden&lt;br /&gt;
Mike61290&lt;br /&gt;
Mms1911&lt;br /&gt;
Moogle1&lt;br /&gt;
Mrrockguy984&lt;br /&gt;
Msw188&lt;br /&gt;
Myroc&lt;br /&gt;
Mystah b&lt;br /&gt;
Mystic&lt;br /&gt;
Necro EX&lt;br /&gt;
Neo&lt;br /&gt;
NeoTA&lt;br /&gt;
Nintendork&lt;br /&gt;
NitroGlycerin&lt;br /&gt;
NeoSpade&lt;br /&gt;
Number1235‎&lt;br /&gt;
Ohr.brazilian.traductor&lt;br /&gt;
OlegPopov&lt;br /&gt;
Patagon196&lt;br /&gt;
Patsen&lt;br /&gt;
PCH&lt;br /&gt;
PK&lt;br /&gt;
Pkmnfrk&lt;br /&gt;
PlayerOne&lt;br /&gt;
PROGUY&lt;br /&gt;
Pullerrush&lt;br /&gt;
Pumpkinbot&lt;br /&gt;
Qscomputing&lt;br /&gt;
RMSephy&lt;br /&gt;
Raekuul&lt;br /&gt;
Rater193&lt;br /&gt;
RedMaverickZero&lt;br /&gt;
Ronin Catholic&lt;br /&gt;
Rossboyjr91&lt;br /&gt;
Salahman&lt;br /&gt;
Samuel C&lt;br /&gt;
Scardpoopoo&lt;br /&gt;
Secret ninjutsu&lt;br /&gt;
Shael Riley&lt;br /&gt;
Sharklover&lt;br /&gt;
Sheamkennedy&lt;br /&gt;
Smeargle&lt;br /&gt;
Somebodys sunshine&lt;br /&gt;
Sorlok reaves&lt;br /&gt;
Sparrowhawk&lt;br /&gt;
Spazztik&lt;br /&gt;
Spoonweaver&lt;br /&gt;
Squall&lt;br /&gt;
Supersoni183&lt;br /&gt;
Surlaw&lt;br /&gt;
Teejaynumber13&lt;br /&gt;
TheCube&lt;br /&gt;
The Geek&lt;br /&gt;
The Mad Cacti&lt;br /&gt;
TMC&lt;br /&gt;
TwinHamster&lt;br /&gt;
Un0&lt;br /&gt;
Uncommon&lt;br /&gt;
Voltire&lt;br /&gt;
Wapamco&lt;br /&gt;
XEpicGodX&lt;br /&gt;
Yoshiboy&lt;br /&gt;
ZiggyTheHamster&lt;br /&gt;
64supermarioreturns&lt;br /&gt;
74-99-239-254&lt;br /&gt;
.:Devina Star:.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Free_Backdrops&amp;diff=28652</id>
		<title>Free Backdrops</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Free_Backdrops&amp;diff=28652"/>
		<updated>2013-05-08T15:12:28Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: The Mad Cacti moved page Free backdrops to Free Backdrops without leaving a redirect: For consistency, and to fix a link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are user-created backdrops/screens that are either in the public domain, or creative commons. They are all free to use in your game. If you are in doubt as to whether or not you need to credit the creator, it&#039;s best to get in touch with him/her. &lt;br /&gt;
&lt;br /&gt;
=Battle Backdrops=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by Fenrir-Lunaris&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|[[File:vikings_backdrops_000.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_001.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_002.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_003.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_004.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_005.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_006.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_007.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_008.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_009.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_010.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_011.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_012.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_013.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_014.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_015.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_016.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_017.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_018.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_019.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_020.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_021.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_022.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_023.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_024.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_025.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_026.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_027.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_028.bmp]]&lt;br /&gt;
|[[File:vikings_backdrops_029.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:vikings_backdrops_030.bmp]]&lt;br /&gt;
|[[File:fenrirBackdrops000.bmp]]&lt;br /&gt;
|[[File:fenrirBackdrops001.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:fenrirBackdrops002.bmp]]&lt;br /&gt;
|[[File:fenrirBackdrops003.bmp]]&lt;br /&gt;
|[[File:fenrirBackdrops004.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|[[File:fenrirBackdrops005.bmp]]&lt;br /&gt;
|[[File:fenrirBackdrops006.bmp]]&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Free_Tilemaps&amp;diff=28651</id>
		<title>Free Tilemaps</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Free_Tilemaps&amp;diff=28651"/>
		<updated>2013-05-08T15:04:53Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: change last table to 3 images per row instead of 4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are user-created tilemaps that are either in the public domain, or creative commons. They are all free to use in your game. If you are in doubt as to whether or not you need to credit the creator, it&#039;s best to get in touch with him/her.&lt;br /&gt;
&lt;br /&gt;
=Tilemaps=&lt;br /&gt;
&lt;br /&gt;
==Import Ready==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by Fenrir-Lunaris&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These tilesets are from Fenrir&#039;s Vikings of Midgard&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_000.bmp]]||[[File:vikings_tilemaps_009.bmp]]||[[File:vikings_tilemaps_018.bmp]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_001.bmp]]||[[File:vikings_tilemaps_010.bmp]]||[[File:vikings_tilemaps_019.bmp]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_002.bmp]]||[[File:vikings_tilemaps_011.bmp]]||[[File:vikings_tilemaps_020.bmp]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_003.bmp]]||[[File:vikings_tilemaps_012.bmp]]||[[File:vikings_tilemaps_021.bmp]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_004.bmp]]||[[File:vikings_tilemaps_013.bmp]]||[[File:vikings_tilemaps_022.bmp]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_005.bmp]]||[[File:vikings_tilemaps_014.bmp]]||[[File:vikings_tilemaps_023.bmp]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_006.bmp]]||[[File:vikings_tilemaps_015.bmp]]||[[File:vikings_tilemaps_024.bmp]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_007.bmp]]||[[File:vikings_tilemaps_016.bmp]]||[[File:vikings_tilemaps_025.bmp]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:vikings_tilemaps_008.bmp]]||[[File:vikings_tilemaps_017.bmp]]||[[File:vikings_tilemaps_026.bmp]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by thespazztikone&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These tilesets are from thespazztikone&#039;s Doom RPG.&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|[[File:thespazztikone_tilemaps_000.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;Dark / Tech tiles - used for the last of the areas in the Doom RPG. This includes gray brick textures, some of them with flesh coming through walls, a few angled tiles, some ammo / armor / health containers, etc. &amp;lt;/span&amp;gt;&lt;br /&gt;
|[[File:thespazztikone_tilemaps_001.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;Embellishments 1 - dead marines, lights, floor-arrows, boxes / crates, and wall embellishments. &amp;lt;/span&amp;gt;&lt;br /&gt;
|[[File:thespazztikone_tilemaps_002.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;Embellishments 2 - Bloody messes, flashing arrows (for pointing out various items on a map), Ceiling supports, Stalactites / stalagmites, and some cabinets / conveyor belts. &amp;lt;/span&amp;gt;&lt;br /&gt;
|----&lt;br /&gt;
|[[File:thespazztikone_tilemaps_003.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;Factory Tiles 1 - These are the tiles used in factory segments of the game. Contains such stuff like danger / caution signs, elevator doors, health / ammo embellishments, flashing floor tiles, etc. &amp;lt;/span&amp;gt;&lt;br /&gt;
|[[File:thespazztikone_tilemaps_004.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;A few sets of floors, and lighting on them&amp;lt;/span&amp;gt;&lt;br /&gt;
|[[File:thespazztikone_tilemaps_005.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;A few sets of floors, and lighting on them&amp;lt;/span&amp;gt;&lt;br /&gt;
|----&lt;br /&gt;
|[[File:thespazztikone_tilemaps_006.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;A few sets of floors, and lighting on them&amp;lt;/span&amp;gt;&lt;br /&gt;
|[[File:thespazztikone_tilemaps_007.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;&amp;quot;Lightside&amp;quot; tiles - tiles used in the factory / Lightside of my game. there could be a few goodies here. Also, the Dopefish was for a hidden area in the first part of the game. &amp;lt;/span&amp;gt;&lt;br /&gt;
|[[File:thespazztikone_tilemaps_008.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;Misc. tiles - Just some other tiles. Some of these weren&#039;t even used in the game! &amp;lt;/span&amp;gt;&lt;br /&gt;
|----&lt;br /&gt;
|[[File:thespazztikone_tilemaps_009.png]]&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:80%;font-style:italic;&amp;quot;&amp;gt;Wall tiles - Just a few sets of walls made for the game. Includes gray / bronze / green techwalls.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Extra==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by BMR&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These works by [http://ld2i.net BMR] are licensed under a [http://creativecommons.org/licenses/by-sa/3.0/deed.en_US Creative Commons Attribution-ShareAlike 3.0 Unported License]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor000.png]]&lt;br /&gt;
|[[image:bmrfloor001.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor002.png]]&lt;br /&gt;
|[[image:bmrfloor003.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor004.png]]&lt;br /&gt;
|[[image:bmrfloor005.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor006.png]]&lt;br /&gt;
|[[image:bmrfloor007.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor008.png]]&lt;br /&gt;
|[[image:bmrfloor009.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor010.png]]&lt;br /&gt;
|[[image:bmrfloor011.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor012.png]]&lt;br /&gt;
|[[image:bmrfloor013.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor014.png]]&lt;br /&gt;
|[[image:bmrfloor015.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor016.png]]&lt;br /&gt;
|[[image:bmrfloor017.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor018.png]]&lt;br /&gt;
|[[image:bmrfloor019.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor020.png]]&lt;br /&gt;
|[[image:bmrfloor021.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor022.png]]&lt;br /&gt;
|[[image:bmrfloor023.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor024.png]]&lt;br /&gt;
|[[image:bmrfloor025.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor026.png]]&lt;br /&gt;
|[[image:bmrfloor027.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor028.png]]&lt;br /&gt;
|[[image:bmrfloor029.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor030.png]]&lt;br /&gt;
|[[image:bmrfloor031.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor032.png]]&lt;br /&gt;
|[[image:bmrfloor033.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor034.png]]&lt;br /&gt;
|[[image:bmrfloor035.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor036.png]]&lt;br /&gt;
|[[image:bmrfloor037.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor038.png]]&lt;br /&gt;
|[[image:bmrfloor039.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor040.png]]&lt;br /&gt;
|[[image:bmrfloor041.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor042.png]]&lt;br /&gt;
|[[image:bmrfloor043.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor044.png]]&lt;br /&gt;
|[[image:bmrfloor045.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor046.png]]&lt;br /&gt;
|[[image:bmrfloor047.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor048.png]]&lt;br /&gt;
|[[image:bmrfloor049.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrfloor050.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall001.png]]&lt;br /&gt;
|[[image:bmrwall002.png]]&lt;br /&gt;
|[[image:bmrwall003.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall004.png]]&lt;br /&gt;
|[[image:bmrwall005.png]]&lt;br /&gt;
|[[image:bmrwall006.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall007.png]]&lt;br /&gt;
|[[image:bmrwall008.png]]&lt;br /&gt;
|[[image:bmrwall009.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall010.png]]&lt;br /&gt;
|[[image:bmrwall011.png]]&lt;br /&gt;
|[[image:bmrwall012.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall013.png]]&lt;br /&gt;
|[[image:bmrwall014.png]]&lt;br /&gt;
|[[image:bmrwall015.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall016.png]]&lt;br /&gt;
|[[image:bmrwall017.png]]&lt;br /&gt;
|[[image:bmrwall018.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall019.png]]&lt;br /&gt;
|[[image:bmrwall020.png]]&lt;br /&gt;
|[[image:bmrwall021.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall022.png]]&lt;br /&gt;
|[[image:bmrwall023.png]]&lt;br /&gt;
|[[image:bmrwall024.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall025.png]]&lt;br /&gt;
|[[image:bmrwall026.png]]&lt;br /&gt;
|[[image:bmrwall027.png]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:bmrwall028.png]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Scripts:Move_NPC_with_the_arrow_keys&amp;diff=28632</id>
		<title>Scripts:Move NPC with the arrow keys</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Scripts:Move_NPC_with_the_arrow_keys&amp;diff=28632"/>
		<updated>2013-05-08T14:04:39Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: a useful script recently posted on SS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You may sometimes want to be able to control an NPC with the arrow keys rather than the hero. This script creates an NPC and lets you move it around until you press ESC.&lt;br /&gt;
&lt;br /&gt;
You may also be interested in the commands {{plot|setNPCobstructs|set NPC obstructs}} (to allow the NPC to walk through other NPCs and heroes), {{plot|setNPCmoves|set NPC moves}} (to prevent the NPC from moving by itself if its movetype isn&#039;t Stand Still), and {{plot|setNPCignoreswalls|set NPC ignores walls}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plotscript, look, begin&lt;br /&gt;
   # Create an NPC 1 tile south of the party leader. You could use an existing NPC instead.&lt;br /&gt;
   variable (npc cursor)&lt;br /&gt;
   npc cursor := create NPC (npc cursor, hero X (0), hero Y (0) + 1)&lt;br /&gt;
&lt;br /&gt;
   suspend player   &lt;br /&gt;
   # Cause the camera to follow the NPC instead of the hero&lt;br /&gt;
   camera follows NPC (npc cursor)&lt;br /&gt;
   # Alternatively, this command causes the camera to remain fixed on a tile (centred on the screen)&lt;br /&gt;
   #focus camera (hero X (0), hero Y (0))&lt;br /&gt;
   &lt;br /&gt;
   while (true) do (&lt;br /&gt;
     if (npc is walking (npc cursor) == false) then (&lt;br /&gt;
       # Only move the NPC after they&#039;ve finished the previous movement,&lt;br /&gt;
       # also use elseif to prevent moving in two directions at once.&lt;br /&gt;
       if (key is pressed (key:Left)) then (walk npc (npc cursor, left, 1))&lt;br /&gt;
       else if (key is pressed (key:Right)) then (walk npc (npc cursor, right, 1))&lt;br /&gt;
       else if (key is pressed (key:Up)) then (walk npc (npc cursor, up, 1))&lt;br /&gt;
       else if (key is pressed (key:Down)) then (walk npc (npc cursor, down, 1))&lt;br /&gt;
     )&lt;br /&gt;
     if (key is pressed(key:ESC) || key is pressed(key:Alt)) then (&lt;br /&gt;
       # Stop the while loop&lt;br /&gt;
       break&lt;br /&gt;
     )&lt;br /&gt;
     wait (1)&lt;br /&gt;
   )&lt;br /&gt;
   # Resume normal player movement and camera&lt;br /&gt;
   camera follows hero (0)&lt;br /&gt;
   resume player&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Example Scripts]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;br /&gt;
[[Category:Advanced Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Talk:Main_Page&amp;diff=28631</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Talk:Main_Page&amp;diff=28631"/>
		<updated>2013-05-08T13:31:43Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: /* Reorganization. */ reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[User:rater193|James:]]&lt;br /&gt;
They are sooooooooooooo anoying&lt;br /&gt;
&lt;br /&gt;
[[User:pkmnfrk|Mike:]]&lt;br /&gt;
Damnit, I hate spammers, don&#039;t you?&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob:]]&lt;br /&gt;
I banned the IP&#039;s of the repeat offenders from last night, but I doubt it will help. These guys are almost certainly using anonymizers or zombie-proxies... so I dug through the wikimedia source code, and discovered some nice filter options I can enable. We ought to be seeing a lot less wikispam in the future &amp;gt;:)&lt;br /&gt;
&lt;br /&gt;
[[User:pkmnfrk|Mike:]]&lt;br /&gt;
Yay! Filters are good! :P&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob:]]&lt;br /&gt;
I just added support for the wiki spammer blacklist at http://chongqed.org/ , which is pretty darn cool. Even better than the filters I added the other day (which have been blocking about one spamming every six hours)&lt;br /&gt;
&lt;br /&gt;
[[User:pkmnfrk|Mike:]] Well, it doesn&#039;t stop &amp;quot;I don&#039;t know how to use a WIKI&amp;quot; spam...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==And now for something different==&lt;br /&gt;
&#039;&#039;&#039;Mike&#039;&#039;&#039;: Erm, where did Bob go? His picture (which I was just in the process of almost using in an OHR related project) is gone! Gone I say!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bob&#039;&#039;&#039; You mean the picture of Bob in the top left corner of the wiki? [http://gilgamesh.hamsterrepublic.com/wiki/ohrrpgce.png] ... It is there. Perhaps your browser?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mike&#039;&#039;&#039;: Hmm, you&#039;re right... When I go to that URL, it pops-up a message saying &amp;quot;it can&#039;t be found&amp;quot;, which is not like other 404 messages... Interesting...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mike&#039;&#039;&#039;: D&#039;oh! It shows up again when I clear my cache... and I thought Firefox was perfect... :(&lt;br /&gt;
&lt;br /&gt;
==RE: The &amp;quot;Q&amp;amp;A&amp;quot; section==&lt;br /&gt;
&#039;&#039;&#039;Mike&#039;&#039;&#039;: Why?&lt;br /&gt;
&lt;br /&gt;
==Future Website Plans==&lt;br /&gt;
&#039;&#039;&#039;Bob&#039;&#039;&#039;: I love mediawiki. With the addition of the editable sidebar in version 1.5, I think I am now ready to convert the &#039;&#039;entire&#039;&#039; OHRRPGCE website to mediawiki. The first step is to move all the content from http://HamsterRepublic.com/ohrrpgce/ to wiki pages. Some of the more important info, such as the official download links, will be on &amp;quot;protected&amp;quot; pages that only sysops can edit. Then I will replace http://HamsterRepublic.com/ohrrpgce/ with a nightly-updated copy of this wiki, similar to the one at http://mirrors/motherhamster.org/ . That way, people will normally browse the static copy at HamsterRepublic.com but if they click an &amp;quot;edit&amp;quot; link, they will be taken to gilgamesh. That means we get delayed updates (for spam control) distributed redundancy, and better performance (since the static copy at HR will put zero PHP/mysql load on the server)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mike&#039;&#039;&#039;: Hmm. Very interesting... I think this is a very good idea.&lt;br /&gt;
&lt;br /&gt;
==Editing the Main Page==&lt;br /&gt;
&#039;&#039;&#039;Bob&#039;&#039;&#039;: The main page uses some extra spam-filtering rules because it is the most spammed page. Only logged-in users will be able to change it. If you try to edit it when you are not logged in, it will look like it worked, but actually nothing happens.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mike&#039;&#039;&#039;: I propose similar rules for the News page, since it&#039;s not really a content page the way everything else is. Or, maybe just protecting it would be better.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
Guest: Hi people! Where are the screenshots? Could you add some? Could avoid useless downloads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMC:&#039;&#039;&#039; Oh.. I miss those screenshots that used to be on the download page. What does everyone think of adding them back? (there&#039;s also a screenshot for custom on the HR download page. Speaking of which... James! I think you forgot to update wandering hamster! (or at least, you forgot to update the &amp;quot;last updated&amp;quot; text... and why do wandering hamster on the HR download page and wandering hamster on the HR OHR games list point to different zips?))&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bob&#039;&#039;&#039;: Yes. We should definitely have a screenshots page, and we should link it from the sidebar. Newcomers will definitely want to see screenshots both of the ditor and some games. (Re: Wandering Hamster, I have not update it at all, and probably will not do so until tirgoviste. The HR downloads page points to the same zip via a symbolic link.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Geek&#039;&#039;&#039;: I concur. The only time I ever download something without seeing screenshots first is if it has come with a very, very high recommendation.&lt;br /&gt;
&lt;br /&gt;
==April Fool&#039;s==&lt;br /&gt;
&#039;&#039;&#039;The Geek&#039;&#039;&#039;: Must... resist... urge... to... make... April Fool&#039;s day edit...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mike&#039;&#039;&#039;: Damnit, I didn&#039;t even think about that. :( :( :(&lt;br /&gt;
&lt;br /&gt;
==Categorization==&lt;br /&gt;
&#039;&#039;&#039;Mike&#039;&#039;&#039;: I&#039;m thinking that we need to use Namespaces more often. Specifically, we need to use them.&lt;br /&gt;
&lt;br /&gt;
I was thinking about how to organize the Editor menus and stuff, so I thought &amp;quot;Menu:Edit Graphics&amp;quot; or whatever. Then, I was looking at the [[Sword of Jade]] page that FyreWulff edited earlier, and I thought &amp;quot;Game:Sword of Jade&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It&#039;s that kind of contextual organization that makes MediaWiki great.&lt;br /&gt;
&lt;br /&gt;
Edit: James, take a look at [http://www.mediawiki.org/wiki/Help:Configuration_settings#Namespaces The Meta-Wiki page on the configuration file]. Also, could you enable the Sub-pages feature? That would be immensly awesome for stuff like Sword of Jade/Screenshots or Graphics menu/Tileset Editor, for example.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bob&#039;&#039;&#039;: I added three new namespaces (with subpages) menu: game: and br:&lt;br /&gt;
&lt;br /&gt;
==Lots of changes in the Recent Changes section?==&lt;br /&gt;
[[User:The Geek|The Geek]]: What happened?! There&#039;s like, 150 changes that MediaWiki made, apparently all to special pages/restricted pages and page titles throughout the wiki aren&#039;t working right!&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob the Hamster]] That was me upgrading to MediaWiki version 1.6.3. The page titles were screwed up because I didn&#039;t know about MediaWiki:Pagetitle, which Mike has already fixed.&lt;br /&gt;
&lt;br /&gt;
[[User:The Geek|The Geek]]: Ah, thanks :)&lt;br /&gt;
&lt;br /&gt;
== Redirector ==&lt;br /&gt;
&lt;br /&gt;
[[User:The Geek|The Geek]]: For those of you like me who are too lazy to type the whole URL every time you want to visit the OHRRPGCE-Wiki, I&#039;ve set up two redirectors with [http://doiop.com doip.com] - go to [http://doiop.com/ohrrpgce http://doiop.com/ohrrpgce] or [http://doiop.com/ohrrpgce-wiki http://doiop.com/ohrrpgce-wiki] to be instantly directed to the Main Page! Spiffy, eh?&lt;br /&gt;
&lt;br /&gt;
== Stupid Error ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#C00&amp;quot;&amp;gt;Sorry! We could not process your edit due to a loss of session data. Please try again. If it still doesn&#039;t work, try logging out and logging back in.&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[User:Pkmnfrk|Mike C.]] Logging out and in again doesn&#039;t do anything. It doesn&#039;t hamper my ability to do anything (it shows up right when I hit &#039;&#039;edit&#039;&#039; on a page, and when I save my changes, it doesn&#039;t come back), but it&#039;s irritating... anyone else getting this?&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob the Hamster]]: I have seen that before, but not recently. Is it still doing it now? I would check and see if your cookie really gets deleted when you log out. If it persists, let me know, and I will search the logs for database errors.&lt;br /&gt;
&lt;br /&gt;
[[User:Pkmnfrk|Mike C.]]: It is still doing that, yes. I manually deleted the cookies, logged back in, and it&#039;s still there.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anonymous&#039;&#039;&#039;: I had this problem, and it was solved by looking in /etc/php.ini for the variable &amp;quot;session.save_path&amp;quot;, and then making the directory it listed (/var/lib/php/session) writable by the apache user.  chown apache:apache /var/lib/php/session ; chmod 770 /var/lib/php/session&lt;br /&gt;
&lt;br /&gt;
Hope it helps. -Nate&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob the Hamster]]: We already solved the problem a long time ago, but thank you for the info anyway, anonymous poster.&lt;br /&gt;
&lt;br /&gt;
If you guys resolved it a while ago then why didnt you post the solution? DING!&lt;br /&gt;
&lt;br /&gt;
== Wiki Logo ==&lt;br /&gt;
&lt;br /&gt;
[[User:The Mad Cacti|The Mad Cacti]]: What happened to the picture of Bob in the top left hand corner? It&#039;s gone!&lt;br /&gt;
&lt;br /&gt;
[[User:James Paige|James Paige]]: Hmmm... I&#039;ll look into it...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anonymous&#039;&#039;&#039;: If you guys resolved it a while ago then why didnt you post the solution? DING!&lt;br /&gt;
&lt;br /&gt;
[[User:James Paige|James Paige]]: It is a [[2007 Epic Marathon Contest|mystery]]&lt;br /&gt;
&lt;br /&gt;
== Question for Bob and/or James ==&lt;br /&gt;
&lt;br /&gt;
Wouldn&#039;t it be wise to have James use Wandering Hamster as a bugtest game for anything that may crop up? ~raekuul&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob the Hamster]]: Oh, I often do. But simplified test-case games are always the best for fixing the really tricky bugs.&lt;br /&gt;
&lt;br /&gt;
== ya! ==&lt;br /&gt;
&lt;br /&gt;
Thanks for making this Rpg maker. Anything else probably would have been to difficult for my feeble mind. =P So, yeah, hamster dudes. XP [[User:Legodude760|Legodude760]] 20:59, 16 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob the Hamster]]: You are welcome :)&lt;br /&gt;
&lt;br /&gt;
[[User:Legodude760|Legodude760]]: YOu guys invented a new way of talking. I&#039;ll try to do it as well. :P&lt;br /&gt;
&lt;br /&gt;
== Warning message when browsing anonymously ==&lt;br /&gt;
[[User:The Mad Cacti|The Mad Cacti]]:I noticed today that when not logged in, nearly every page, but not the Main Page, shows a warning message:&lt;br /&gt;
 &amp;lt;b&amp;gt;Warning&amp;lt;/b&amp;gt;:  Invalid argument supplied for foreach() in &amp;lt;b&amp;gt;/var/www/wiki/ohrrpgce/includes/User.php&amp;lt;/b&amp;gt; on line &amp;lt;b&amp;gt;3634&amp;lt;/b&amp;gt;&lt;br /&gt;
Also, earlier today I saw a warning message when my edit conflicted with David&#039;s, but I didn&#039;t note it down.&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob the Hamster]]: I think this was introduced by a mediawiki bug a couple days ago, and fixed this morning. I forced an early upgrade, and the message is gone now.&lt;br /&gt;
&lt;br /&gt;
== Handhelds ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anonymous&#039;&#039;&#039;: With advanced game systems like Xbox and Wii, it seems difficult to create and rpg that millions of people would want to play..... Unless it was on a mobile device. Do you think it&#039;s possible to one day make your games compatible for smartphones? I think rpgs would be at their strongest on mobile devices. Thank you.&lt;br /&gt;
&lt;br /&gt;
[[User:The Mad Cacti|The Mad Cacti]] ([[User talk:The Mad Cacti|talk]]): We&#039;re very keen on porting the engine to handheld devices running Android, iOS, etc in the future. There are some technical barriers (concerning [[FreeBasic]]) that need to be solved (mostly not up to us), but I don&#039;t think it&#039;s that far off!&lt;br /&gt;
&lt;br /&gt;
== Reorganization. ==&lt;br /&gt;
&lt;br /&gt;
Reposted from SlimeSalad:&lt;br /&gt;
&lt;br /&gt;
I wanted to suggest a reorganization and cleanup for the navigation links.&lt;br /&gt;
&lt;br /&gt;
The general idea was changing some of the names, adding a couple of links, and reorganizing them under 3 different categories (instead of having everything under navigation). &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Project Info &lt;br /&gt;
------------- &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-(Take out main page... most sites don&#039;t have it since it&#039;s taken for granted you can just click an image at the top to go there)&amp;lt;br&amp;gt; &lt;br /&gt;
-About (rename the project info page)&amp;lt;br&amp;gt; &lt;br /&gt;
-News &amp;lt;br&amp;gt;&lt;br /&gt;
-Screenshots&amp;lt;br&amp;gt; &lt;br /&gt;
-Downloads &amp;lt;br&amp;gt;&lt;br /&gt;
-Source Code &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resources &lt;br /&gt;
----------- &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Getting Started (the F.A.Q. page renamed, since it is a good place to start)&amp;lt;br&amp;gt; &lt;br /&gt;
-Tutorials (the HOWTO page renamed) &amp;lt;br&amp;gt;&lt;br /&gt;
-Custom Editor (this page? http://rpg.hamsterrepublic.com/ohrrpgce/Main_Menu)&amp;lt;br&amp;gt; &lt;br /&gt;
-Plotscripting - Put plotscripting links, articles, tutorials here &amp;lt;br&amp;gt;&lt;br /&gt;
-Documentation &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Community &lt;br /&gt;
------------- &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Slime Salad&amp;lt;br&amp;gt; &lt;br /&gt;
Castle Paradox &amp;lt;br&amp;gt;&lt;br /&gt;
Other Links (rename community)&amp;lt;br&amp;gt; &lt;br /&gt;
Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This certainly isn&#039;t perfect, but I think it&#039;s a good starting point. What does everyone think?&lt;br /&gt;
&lt;br /&gt;
[[User:The Mad Cacti|The Mad Cacti]] ([[User talk:The Mad Cacti|talk]]) 06:31, 8 May 2013 (PDT): Thread on SS? I must have missed it. But anyway, thanks for the comments. I&#039;ve been trying to encourage people for years to take more interest in this. Splitting the sidebar up a little seems like a good idea. My comments:&lt;br /&gt;
&lt;br /&gt;
The HOWTO is a far better way to get started than the FAQ. At least it would be if it weren&#039;t so out of date, but many of the FAQ answers are also really out of date. I guess renaming the HOWTO to Tutorials may be a good idea. The original HOWTO was one long tutorial in parts, which was great. The newer chapters don&#039;t fit together in that way. I definitely feel we have two types of tutorials, and they should be separated: the core stuff that explains the main engine features, including the HOWTO plus some of the other stuff linked from the [[HOWTO]] page and elsewhere, and all the other tutorials. So I guess my preference would be to link all tutorial-like articles from a Tutorials page, with the HOWTO (possible renamed) at the top and highlighted. IMO the HOWTO mess is the single biggest problem here.&lt;br /&gt;
&lt;br /&gt;
I don&#039;t want to link to [[Main Menu]] since that set of pages is mostly unfinished and also terribly out of date, and not particularly helpful. The [[Plotscripting]] page is definitely one of the main hubs of the wiki, so perhaps deserves to be on the sidebar, but I wouldn&#039;t promote it above [[Documentation]].&lt;br /&gt;
&lt;br /&gt;
I don&#039;t really think we need links directly to CP and SS instead of [[Forums]] or [[Community]] links. Hmm, we have a lot of double-up between [[Forums]] and [[Community Links]].&lt;br /&gt;
&lt;br /&gt;
(Note to self: [[MediaWiki:Sidebar]] contains the sidebar)&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Where_can_I_find_games%3F&amp;diff=28630</id>
		<title>Where can I find games?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Where_can_I_find_games%3F&amp;diff=28630"/>
		<updated>2013-05-08T13:03:50Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: add rinku&amp;#039;s ohrhits and SS mirror&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A multitude of OHRRPGCE games are available for download on various places in the net. Note that any of these links may be down at any time. As such, a mirror of the Castle Paradox game list is maintained.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&lt;br /&gt;
* [http://www.castleparadox.com/gamelist.php Castle Paradox Game List] ([http://mirror.motherhamster.org/cp/ Mirror])&lt;br /&gt;
* [http://www.slimesalad.com/forum/viewforum.php?f=4 Slime Salad: Independent Game Design] ([http://mirror.motherhamster.org/slimesalad/ Mirror])&lt;br /&gt;
* [[:Category:Games|Games with pages on this Wiki]]&lt;br /&gt;
* [[Top 30|OHRRPGCE Top 30 Lists]]&lt;br /&gt;
&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Old Game Lists===&lt;br /&gt;
* [http://HamsterRepublic.com/ohrrpgce/gamelist.php Hamster Republic Game List] ([[Obsolete Hamster Republic Gamelist|obsolete]])&lt;br /&gt;
* [http://www.castleparadox.com/archive/operationohr/gamelist-listhub.php The Old Operation:OHR Gamelist (archived at Castle Paradox)]&lt;br /&gt;
* [http://www.angelfire.com/scifi/jm11/ The Bahamut RPG community]&lt;br /&gt;
* [http://rinku.castleparadox.com/Ohrhits/ Rinku&#039;s collection of OHR hits] - &amp;lt;small&amp;gt;given out as a contest prize long ago&amp;lt;/small&amp;gt;&lt;br /&gt;
* [http://moogle1.stormpages.com/ohr/biglist.html Charbile&#039;s biglist] - &amp;lt;small&amp;gt;an ancient list of all then-known OHR games. Supposedly none of the links work any more.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Game Distribution]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:Games]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Game Reviews===&lt;br /&gt;
* [http://castleparadox.com/reviewlist.php Castle Paradox&#039;s game review list]&lt;br /&gt;
* [http://superwalrusland.com/ohr/ HamsterSpeak online magazine]&lt;br /&gt;
* [http://www.slimesalad.com/forum/viewforum.php?f=5 Slime Salad&#039;s game review list]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Why_does_my_on-keypress_script_freeze/produce_errors_when_I_hold_down_a_key%3F&amp;diff=28629</id>
		<title>Why does my on-keypress script freeze/produce errors when I hold down a key?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Why_does_my_on-keypress_script_freeze/produce_errors_when_I_hold_down_a_key%3F&amp;diff=28629"/>
		<updated>2013-05-08T12:45:17Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: remove obsolete script buffer overflow link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use on-keypress scripts which contain wait commands (or commands with an implicit wait - check the [[Plotscripting Dictionary]]) your scripts might be in danger of piling up, producing strange behaviour, often freezing, and possibly causing an [[What do the run-time script errors mean?|interpreter overloaded error]].&lt;br /&gt;
&lt;br /&gt;
=When on-keypress scripts are called repeatedly=&lt;br /&gt;
&lt;br /&gt;
The onkeypress script is run every tick that any key is held down and the &amp;quot;topmost&amp;quot; currently running script is NOT the onkeypress script (unless you set the &amp;quot;Permit double triggering of scripts&amp;quot; bitset, which forgoes this safety check) and the topmost script is not using {{plot|waitforkey|wait for key}}.&lt;br /&gt;
&lt;br /&gt;
 script, my onkeypress script, begin&lt;br /&gt;
   handle movement&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 script, handle movement, begin&lt;br /&gt;
   if (key is pressed (key: up)) then (&lt;br /&gt;
    #...&lt;br /&gt;
    wait (2)&lt;br /&gt;
   )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The wait is inside &amp;lt;tt&amp;gt;handle movement&amp;lt;/tt&amp;gt;, so to the engine it appears the on-keypress script is not the currently running script, and it calls it again next tick if any buttons as pressed. As you hold down the up key, it&#039;ll get called over and over.&lt;br /&gt;
&lt;br /&gt;
=Fixing the Problem=&lt;br /&gt;
&lt;br /&gt;
Use a global variable (or a tag) to indicate that the on-keypress script is already running. A local variable will NOT work.&lt;br /&gt;
&lt;br /&gt;
 global variable (10, keyhandler running)&lt;br /&gt;
 &lt;br /&gt;
 script, my onkeypress script, begin&lt;br /&gt;
   if (keyhandler running == false) then (&lt;br /&gt;
     keyhandler running := true&lt;br /&gt;
 &lt;br /&gt;
     # call other scripts, wait commands, whatever&lt;br /&gt;
     # ...&lt;br /&gt;
 &lt;br /&gt;
     keyhandler running := false&lt;br /&gt;
   )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Now the script will immediately exit if it is called while already running.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How does plotscripting work?]]&lt;br /&gt;
* [[How do I avoid script buffer overflows?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting&amp;diff=28628</id>
		<title>Plotscripting</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting&amp;diff=28628"/>
		<updated>2013-05-08T12:42:35Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: another link and a fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What is plotscripting? From the most simple perspective plotscripting is where the computer takes control of the characters in your RPG, and moves them around, and makes them say stuff. Anyone who has played popular RPGs like Final Fantasy will be familiar with this concept.&lt;br /&gt;
&lt;br /&gt;
Plotscripting is actually capable of far more than that, even allowing you to create puzzles, mini-games, and special effects in your game. Plotscripts are written in a simple scripting (programming) language called HamsterSpeak. People who want to learn use HamsterSpeak should read the following resources:&lt;br /&gt;
&lt;br /&gt;
* [[Plotscripting Tutorial]]&lt;br /&gt;
* [[Plotscripting Dictionary]]&lt;br /&gt;
* [[Scripting advice]]&lt;br /&gt;
* [[HamsterSpeak Specification]]&lt;br /&gt;
* [http://moogle1.castleparadox.com/scripts.php Moogle1&#039;s Plotscripting Tutorials]&lt;br /&gt;
* [[Slices Tutorial]]&lt;br /&gt;
&lt;br /&gt;
Plotscripters may also be interested in:&lt;br /&gt;
&lt;br /&gt;
* [[Script triggers]]&lt;br /&gt;
* [[Example scripts]]&lt;br /&gt;
* [[Side scrolling games]] (for more example scripts)&lt;br /&gt;
* [[Games with unique battle systems]] (for more example scripts)&lt;br /&gt;
* [[What is the 3rd Party HSI?|The 3rd Party HSI]] (very outdated)&lt;br /&gt;
&lt;br /&gt;
Plotscripters can look for help from other experienced plotscripters in the [[OHRRPGCE-Wiki:Community Portal|OHR Community]]&lt;br /&gt;
&lt;br /&gt;
Several articles about the basics of scripting and common mistakes are:&lt;br /&gt;
&lt;br /&gt;
*[[What is a script/plotscript and how do I write them?]]&lt;br /&gt;
*[[How do I make a HSS file?]]&lt;br /&gt;
*[[My scripts won&#039;t compile! Why?]]&lt;br /&gt;
*[[What is a variable?]]&lt;br /&gt;
*[[What is a script argument for?]]&lt;br /&gt;
*[[How do I link script files together?]]&lt;br /&gt;
*[[How does plotscripting work?]] -- explains how only one script can run at once&lt;br /&gt;
*[[Why does my on-keypress script freeze/produce errors when I hold down a key?]]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
* [[How does script-debug mode work?]]&lt;br /&gt;
* [[What do the run-time script errors mean?]]&lt;br /&gt;
* Plotscripting related articles in the [[:Category:Plotscripting|Plotscripting Category]]&#039;&#039;&lt;br /&gt;
* Articles in the [[:Category:Advanced Plotscripting|Advanced Plotscripting Category]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting&amp;diff=28627</id>
		<title>Plotscripting</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting&amp;diff=28627"/>
		<updated>2013-05-08T12:39:14Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: add lots more relevant links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What is plotscripting? From the most simple perspective plotscripting is where the computer takes control of the characters in your RPG, and moves them around, and makes them say stuff. Anyone who has played popular RPGs like Final Fantasy will be familiar with this concept.&lt;br /&gt;
&lt;br /&gt;
Plotscripting is actually capable of far more than that, even allowing you to create puzzles, mini-games, and special effects in your game. Plotscripts are written in a simple scripting (programming) language called HamsterSpeak. People who want to learn use HamsterSpeak should read the following resources:&lt;br /&gt;
&lt;br /&gt;
* [[Plotscripting Tutorial]]&lt;br /&gt;
* [[Plotscripting Dictionary]]&lt;br /&gt;
* [[Scripting advice]]&lt;br /&gt;
* [[HamsterSpeak Specification]]&lt;br /&gt;
* [http://moogle1.castleparadox.com/scripts.php Moogle1&#039;s Plotscripting Tutorials]&lt;br /&gt;
* [[Slices Tutorial]]&lt;br /&gt;
&lt;br /&gt;
Plotscripters may also be interested in:&lt;br /&gt;
&lt;br /&gt;
* [[Script triggers]]&lt;br /&gt;
* [[Example scripts]]&lt;br /&gt;
* [[Side scrolling games]] (for more example scripts)&lt;br /&gt;
* [[Games with unique battle systems]] (for more example scripts)&lt;br /&gt;
* [[What is the 3rd Party HSI?|The 3rd Party HSI]] (very outdated)&lt;br /&gt;
&lt;br /&gt;
Plotscripters can look for help from other experienced plotscripters in the [[OHRRPGCE-Wiki:Community Portal|OHR Community]]&lt;br /&gt;
&lt;br /&gt;
Several articles about the basics of scripting and common mistakes are:&lt;br /&gt;
&lt;br /&gt;
*[[What is a script/plotscript and how do I write them?]]&lt;br /&gt;
*[[How do I make a HSS file?]]&lt;br /&gt;
*[[My scripts won&#039;t compile! Why?]]&lt;br /&gt;
*[[What is a variable?]]&lt;br /&gt;
*[[What is a script argument for?]]&lt;br /&gt;
*[[How do I link script files together?]]&lt;br /&gt;
*[[How does plotscripting work?]] -- explains how only one script can run at once&lt;br /&gt;
*[[Why does my on-keypress script freeze/produce errors when I hold down a key?]] -- more information about &lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
*[[How does script-debug mode work?]]&lt;br /&gt;
*Plotscripting related articles in the [[:Category:Plotscripting|Plotscripting Category]]&#039;&#039;&lt;br /&gt;
*Articles in the [[:Category:Advanced Plotscripting|Advanced Plotscripting Category]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_do_I_prevent_my_scripts_from_bugging%3F&amp;diff=28626</id>
		<title>How do I prevent my scripts from bugging?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_do_I_prevent_my_scripts_from_bugging%3F&amp;diff=28626"/>
		<updated>2013-05-08T12:37:50Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: The Mad Cacti moved page How do I prevent my scripts from bugging? to Scripting advice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Scripting advice]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Scripting_advice&amp;diff=28625</id>
		<title>Scripting advice</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Scripting_advice&amp;diff=28625"/>
		<updated>2013-05-08T12:37:50Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: The Mad Cacti moved page How do I prevent my scripts from bugging? to Scripting advice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some advice you can follow when writing scripts to reduce the number of bugs in your scripts and generally make the whole experience more pleasant.&lt;br /&gt;
&lt;br /&gt;
=Readable scripts=&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;most important thing&#039;&#039; is to make your scripts easy to read and easy to understand. That way the bugs will be easier to find, you will be able to figure out what the script is doing when you come back to it months later and have forgotten everything, and other people will be able to understand your scripts when you ask for help.&lt;br /&gt;
&lt;br /&gt;
Structure and &#039;&#039;&#039;indent&#039;&#039;&#039; your code, it prevents mistakes, and makes missing &amp;lt;tt&amp;gt;begin&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;end&amp;lt;/tt&amp;gt; errors &#039;&#039;far&#039;&#039; easier to fix. Add comments explaining things! Also, when asking other people to look over your code, they will be far less likely to throw you out of a window :)&lt;br /&gt;
&lt;br /&gt;
Try not to write scripts that are too long. Splitting things up into several little scripts (even for big scenes) generally makes them easier to understand.&lt;br /&gt;
&lt;br /&gt;
Use constants from your game&#039;s [[HSI]] file, the builtin constants, including those in [[scancode.hsi]], and define your own constants using {{plot|defineconstant|define constant}} whenever possible. &amp;quot;get item(item: hp potion)&amp;quot; is &#039;&#039;so&#039;&#039; much easier to understand than &amp;quot;get item(13)&amp;quot;. You will thank yourself later!&lt;br /&gt;
&lt;br /&gt;
Name your scripts, variables and script arguments things that tell what they actually are or do. &#039;&#039;&#039;npcref&#039;&#039;&#039; could be a good name for a variable which holds an npc reference, but &#039;&#039;&#039;guard&#039;&#039;&#039; is much better.&lt;br /&gt;
&lt;br /&gt;
Consider for example this properly indented and commented script with one mistake:&lt;br /&gt;
 # Triggered when player approaches guards at the bridge outside the port&lt;br /&gt;
 plotscript, stopped by guards, begin&lt;br /&gt;
   show text box (4)  # &amp;quot;Halt, the toll is 50 gold&amp;quot;; choice box &amp;quot;Pay&amp;quot;/&amp;quot;Don&#039;t pay&amp;quot;&lt;br /&gt;
   wait for textbox&lt;br /&gt;
   if (check tag (tag: pay toll)) then (&lt;br /&gt;
     if (pay money (50)) then (&lt;br /&gt;
       show textbox (5) # Paid&lt;br /&gt;
       set tag (tag: paid toll, on)&lt;br /&gt;
     ) else (&lt;br /&gt;
       show textbox (6) # Can&#039;t afford it&lt;br /&gt;
   ) else (&lt;br /&gt;
     show textbox (7) # &amp;quot;Get out of here!&amp;quot;&lt;br /&gt;
   )&lt;br /&gt;
   wait for textbox&lt;br /&gt;
 end&lt;br /&gt;
Can you see where the missing ) is?&lt;br /&gt;
&lt;br /&gt;
=General advice=&lt;br /&gt;
&lt;br /&gt;
If you are a beginner, using one of the [[Plotscripting Tools]] instead of Notepad will let you more easily get help about each script command.&lt;br /&gt;
Otherwise, keep the [[Plotscripting Dictionary]] open in another window for quick reference while you are working, and check commands you are uncertain of (if you are using [[Hamster Whisper]], by press F1 on the command). The same is true of any reference materials that you might find useful, such as a dictionary, if English is not your first language.&lt;br /&gt;
&lt;br /&gt;
You may need to start the game from the beginning (don&#039;t use a previous save) when&lt;br /&gt;
* you have changed the stats or spells of one of the heroes in the hero editor&lt;br /&gt;
* you have changed certain options in the general game data&lt;br /&gt;
&lt;br /&gt;
When you have a partially finished script that you do not want included with your compiled scripts, you can disable it without deleting it by adding # before each line (a # makes the rest of the line a comment, so it is ignored by the compiler). When you are ready to work on the script again, you can un-comment it by deleting the #&#039;s&lt;br /&gt;
&lt;br /&gt;
As often as possible, test the scripts you have just made several times just to be sure that they work correctly.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Plotscripting Tutorial]]&lt;br /&gt;
* [[My scripts won&#039;t compile! Why?]]&lt;br /&gt;
* [[Why don&#039;t my special plotscripts work?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_do_the_run-time_script_errors_mean%3F&amp;diff=28624</id>
		<title>What do the run-time script errors mean?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_do_the_run-time_script_errors_mean%3F&amp;diff=28624"/>
		<updated>2013-05-08T12:25:01Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: link to Script error! Script (scriptid) does not exist instead&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In some cases, GAME might show you a big red script error. Here is an explanation of most possible run-time script error messages. Most of these error messages will never be displayed unless something very serious like file or memory corruption occurs, but a few of them can be triggered by mistakes in scripts.&lt;br /&gt;
&lt;br /&gt;
==Errors indicating a mistake on your part==&lt;br /&gt;
&lt;br /&gt;
===Script # exceeds maximum size by #%===&lt;br /&gt;
This can only happen if one of your scripts is really &#039;&#039;really&#039;&#039; big. If one of your scripts is this large you probably generated it with a computer program! Break it up into smaller pieces and call them one after the other.&lt;br /&gt;
&lt;br /&gt;
===Failed to load (type) script #, interpreter overloaded===&lt;br /&gt;
This error means that you have reached the limit on the number of scripts running at once (currently 128). This means that either you have a recursive script which tried to recurse too deeply, or scripts are piling up without terminating. See [[Why does my on-keypress script freeze/produce errors when I hold down a key?]] for the later problem.&lt;br /&gt;
&lt;br /&gt;
===Failed to load (type) script #, script heap overflow===&lt;br /&gt;
This error message means that the program has run out of space to store local variables and arguments. It is unlikely you will ever see this error. If you do, it probably means you are have a run-away recursive script, or your scripts are piling up without terminating, and also that you are using lots of local variables in your scripts.&lt;br /&gt;
&lt;br /&gt;
===Failed to load (type) script #===&lt;br /&gt;
This error message is usually preceded by another error message that will give you the reason why the attempt to load the script failed. The &amp;quot;type&amp;quot; will tell you how the program was attempting to trigger the script, for example, map-autorun, NPC, after-battle, etc.&lt;br /&gt;
&lt;br /&gt;
===Script # does not exist===&lt;br /&gt;
This error message means that the program tried to run a script, but it could not even find the script&#039;s data file in the RPG file. See [[Script error! Script (scriptid) does not exist]].&lt;br /&gt;
&lt;br /&gt;
===division by zero===&lt;br /&gt;
When I was in school, my teachers would always tell me that it was impossible to divide a number by zero. I always asked &amp;quot;Why not?&amp;quot;. It wasn&#039;t until college that I found a teacher who was capable of giving me a good answer to that question, and when he did, the answer went right over my head. So I decided to take their word for it. If the math-people of the world say it cannot be done, then I am not going to argue with them.&lt;br /&gt;
&lt;br /&gt;
===Script # is in an unsupported format===&lt;br /&gt;
The script was compiled with a version of HSpeak that this version of GAME.EXE doesn&#039;t support. This means you need to upgrade to the latest version to play the game.&lt;br /&gt;
&lt;br /&gt;
===encountered clean noop===&lt;br /&gt;
A clean noop is a deliberate no-operation command that you can put into your script on purpose with the &#039;&#039;&#039;noop&#039;&#039;&#039; command. The only use of this command is as a way to stop the script interpreter and access the script debugger.&lt;br /&gt;
&lt;br /&gt;
==Errors indicating corrupt data or an engine bug==&lt;br /&gt;
These errors would probably indicate a bug in the engine. Please [[How do I report a bug?|report it]]! It may also be possible for them to be caused by corrupt script data or by using mismatched versions of the [[Game]] player, HSpeak, and [[Custom]].&lt;br /&gt;
&lt;br /&gt;
===Interpretloop encountered noop===&lt;br /&gt;
===While fell out of bounds, landed on #===&lt;br /&gt;
===For fell out of bounds, landed on #===&lt;br /&gt;
===If statement overstepped bounds===&lt;br /&gt;
===While statement has jumped the curb===&lt;br /&gt;
===For statement is being difficult&#039;&#039;&#039;===&lt;br /&gt;
===Illegally Suspended Script===&lt;br /&gt;
===Script # became stateless===&lt;br /&gt;
===Illegal Wait Substate===&lt;br /&gt;
===stnext encountered noop # at # in #===&lt;br /&gt;
===Illegal kind # # in stnext===&lt;br /&gt;
===Unsupported math===&lt;br /&gt;
===Illegal statement type===&lt;br /&gt;
===Script # corrupt===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How does script-debug mode work?]]&lt;br /&gt;
* [[How do I report a bug?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Error Messages]]&lt;br /&gt;
[[Category:OHRRPGCE Internals]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_error!_Script_(scriptid)_does_not_exist&amp;diff=28623</id>
		<title>Script error! Script (scriptid) does not exist</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_error!_Script_(scriptid)_does_not_exist&amp;diff=28623"/>
		<updated>2013-05-08T12:24:34Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: forgot to update error message&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Script error! script # does not exist&lt;br /&gt;
&lt;br /&gt;
If you see this error message, it means that your game is trying to run a plotscript, but that plotscript is missing.&lt;br /&gt;
&lt;br /&gt;
The most common cause for this error is a misunderstanding about how to put [[Why can&#039;t I have more than one script at a time?|more than one plotscript]] in your game. All plotscripts belong in a single file. They all get compiled together, and they all get imported together. If you want to use more than one [[HSS]] file, see [[How do I link script files together?]]&lt;br /&gt;
&lt;br /&gt;
Another possible cause for this error is that you have removed or renamed a plotscript, but that script is still being triggered by something in your game. Go to the &#039;&#039;&#039;Script Management&#039;&#039;&#039; menu, and use the &#039;&#039;&#039;Find broken script triggers&#039;&#039;&#039; tool.&lt;br /&gt;
&lt;br /&gt;
This error can also be caused by a call to {{plot|runscriptbyid|run script by ID}} with an invalid ID number.&lt;br /&gt;
&lt;br /&gt;
=New game in old player=&lt;br /&gt;
You may also see this error message if you try to play a new game that uses 32-bit scripts on an old copy of [[GAME]] that only supports 16-bit scripts. The solution to this problem will be to upgrade to the [[latest version]] of the OHRRPGCE&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How do I link script files together?]]&lt;br /&gt;
* [[Why can&#039;t I have more than one script at a time?]]&lt;br /&gt;
* [[What do the run-time script errors mean?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_error!_Script_(scriptid)_does_not_exist&amp;diff=28622</id>
		<title>Script error! Script (scriptid) does not exist</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_error!_Script_(scriptid)_does_not_exist&amp;diff=28622"/>
		<updated>2013-05-08T12:23:37Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: mention runscriptbyid too&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Script error! Failed to unlump #.hsx&lt;br /&gt;
&lt;br /&gt;
If you see this error message, it means that your game is trying to run a plotscript, but that plotscript is missing.&lt;br /&gt;
&lt;br /&gt;
The most common cause for this error is a misunderstanding about how to put [[Why can&#039;t I have more than one script at a time?|more than one plotscript]] in your game. All plotscripts belong in a single file. They all get compiled together, and they all get imported together. If you want to use more than one [[HSS]] file, see [[How do I link script files together?]]&lt;br /&gt;
&lt;br /&gt;
Another possible cause for this error is that you have removed or renamed a plotscript, but that script is still being triggered by something in your game. Go to the &#039;&#039;&#039;Script Management&#039;&#039;&#039; menu, and use the &#039;&#039;&#039;Find broken script triggers&#039;&#039;&#039; tool.&lt;br /&gt;
&lt;br /&gt;
This error can also be caused by a call to {{plot|runscriptbyid|run script by ID}} with an invalid ID number.&lt;br /&gt;
&lt;br /&gt;
=New game in old player=&lt;br /&gt;
You may also see this error message if you try to play a new game that uses 32-bit scripts on an old copy of [[GAME]] that only supports 16-bit scripts. The solution to this problem will be to upgrade to the [[latest version]] of the OHRRPGCE&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How do I link script files together?]]&lt;br /&gt;
* [[Why can&#039;t I have more than one script at a time?]]&lt;br /&gt;
* [[What do the run-time script errors mean?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_error!_Failed_to_unlump_(scriptid).hsx&amp;diff=28621</id>
		<title>Script error! Failed to unlump (scriptid).hsx</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_error!_Failed_to_unlump_(scriptid).hsx&amp;diff=28621"/>
		<updated>2013-05-08T12:20:44Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: The Mad Cacti moved page Script error! Failed to unlump (scriptid).hsx to Script error! Script (scriptid) does not exist: The error displayed for this problem has changed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Script error! Script (scriptid) does not exist]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_error!_Script_(scriptid)_does_not_exist&amp;diff=28620</id>
		<title>Script error! Script (scriptid) does not exist</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_error!_Script_(scriptid)_does_not_exist&amp;diff=28620"/>
		<updated>2013-05-08T12:20:43Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: The Mad Cacti moved page Script error! Failed to unlump (scriptid).hsx to Script error! Script (scriptid) does not exist: The error displayed for this problem has changed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Script error! Failed to unlump #.hsx&lt;br /&gt;
&lt;br /&gt;
If you see this error message, it means that your game is trying to run a plotscript, but that plotscript is missing.&lt;br /&gt;
&lt;br /&gt;
The most common cause for this error is a misunderstanding about how to put [[Why can&#039;t I have more than one script at a time?|more than one plotscript]] in your game. All plotscripts belong in a single file. They all get compiled together, and they all get imported together. If you want to use more than one [[HSS]] file, see [[How do I link script files together?]]&lt;br /&gt;
&lt;br /&gt;
Another possible cause for this error is that you have removed a plotscript, but that script is still being triggered by something in your game. Go to the &#039;&#039;&#039;Script Management&#039;&#039;&#039; menu, and use the &#039;&#039;&#039;Find broken script triggers&#039;&#039;&#039; tool.&lt;br /&gt;
&lt;br /&gt;
=New game in old player=&lt;br /&gt;
You may also see this error message if you try to play a new game that uses 32-bit scripts on an old copy of [[GAME]] that only supports 16-bit scripts. The solution to this problem will be to upgrade to the [[latest version]] of the OHRRPGCE&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How do I link script files together?]]&lt;br /&gt;
* [[Why can&#039;t I have more than one script at a time?]]&lt;br /&gt;
* [[What do the run-time script errors mean?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_do_the_run-time_script_errors_mean%3F&amp;diff=28619</id>
		<title>What do the run-time script errors mean?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_do_the_run-time_script_errors_mean%3F&amp;diff=28619"/>
		<updated>2013-05-08T12:18:11Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: overhaul. Descriptions of most error messages is irrelevant, and many were out of date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In some cases, GAME might show you a big red script error. Here is an explanation of most possible run-time script error messages. Most of these error messages will never be displayed unless something very serious like file or memory corruption occurs, but a few of them can be triggered by mistakes in scripts.&lt;br /&gt;
&lt;br /&gt;
==Errors indicating a mistake on your part==&lt;br /&gt;
&lt;br /&gt;
===Script # exceeds maximum size by #%===&lt;br /&gt;
This can only happen if one of your scripts is really &#039;&#039;really&#039;&#039; big. If one of your scripts is this large you probably generated it with a computer program! Break it up into smaller pieces and call them one after the other.&lt;br /&gt;
&lt;br /&gt;
===Failed to load (type) script #, interpreter overloaded===&lt;br /&gt;
This error means that you have reached the limit on the number of scripts running at once (currently 128). This means that either you have a recursive script which tried to recurse too deeply, or scripts are piling up without terminating. See [[Why does my on-keypress script freeze/produce errors when I hold down a key?]] for the later problem.&lt;br /&gt;
&lt;br /&gt;
===Failed to load (type) script #, script heap overflow===&lt;br /&gt;
This error message means that the program has run out of space to store local variables and arguments. It is unlikely you will ever see this error. If you do, it probably means you are have a run-away recursive script, or your scripts are piling up without terminating, and also that you are using lots of local variables in your scripts.&lt;br /&gt;
&lt;br /&gt;
===Failed to load (type) script #===&lt;br /&gt;
This error message is usually preceded by another error message that will give you the reason why the attempt to load the script failed. The &amp;quot;type&amp;quot; will tell you how the program was attempting to trigger the script, for example, map-autorun, NPC, after-battle, etc.&lt;br /&gt;
&lt;br /&gt;
===Script # does not exist===&lt;br /&gt;
This error message means that the program tried to run a script, but it could not even find the script&#039;s data file in the RPG file. The number indicates the script&#039;s ID number. This error usually means that you attached a script to a script trigger somewhere in Custom, and then removed or renamed that script in your .hss file. Use the &amp;quot;Find broken script triggers&amp;quot; menu in the Script Management Menu to find and fix the problem. This error can also be used by a bad call to {{plot|runscriptbyid|run script by ID}}.&lt;br /&gt;
&lt;br /&gt;
===division by zero===&lt;br /&gt;
When I was in school, my teachers would always tell me that it was impossible to divide a number by zero. I always asked &amp;quot;Why not?&amp;quot;. It wasn&#039;t until college that I found a teacher who was capable of giving me a good answer to that question, and when he did, the answer went right over my head. So I decided to take their word for it. If the math-people of the world say it cannot be done, then I am not going to argue with them.&lt;br /&gt;
&lt;br /&gt;
===Script # is in an unsupported format===&lt;br /&gt;
The script was compiled with a version of HSpeak that this version of GAME.EXE doesn&#039;t support. This means you need to upgrade to the latest version to play the game.&lt;br /&gt;
&lt;br /&gt;
===encountered clean noop===&lt;br /&gt;
A clean noop is a deliberate no-operation command that you can put into your script on purpose with the &#039;&#039;&#039;noop&#039;&#039;&#039; command. The only use of this command is as a way to stop the script interpreter and access the script debugger.&lt;br /&gt;
&lt;br /&gt;
==Errors indicating corrupt data or an engine bug==&lt;br /&gt;
These errors would probably indicate a bug in the engine. Please [[How do I report a bug?|report it]]! It may also be possible for them to be caused by corrupt script data or by using mismatched versions of the [[Game]] player, HSpeak, and [[Custom]].&lt;br /&gt;
&lt;br /&gt;
===Interpretloop encountered noop===&lt;br /&gt;
===While fell out of bounds, landed on #===&lt;br /&gt;
===For fell out of bounds, landed on #===&lt;br /&gt;
===If statement overstepped bounds===&lt;br /&gt;
===While statement has jumped the curb===&lt;br /&gt;
===For statement is being difficult&#039;&#039;&#039;===&lt;br /&gt;
===Illegally Suspended Script===&lt;br /&gt;
===Script # became stateless===&lt;br /&gt;
===Illegal Wait Substate===&lt;br /&gt;
===stnext encountered noop # at # in #===&lt;br /&gt;
===Illegal kind # # in stnext===&lt;br /&gt;
===Unsupported math===&lt;br /&gt;
===Illegal statement type===&lt;br /&gt;
===Script # corrupt===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How does script-debug mode work?]]&lt;br /&gt;
* [[How do I report a bug?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Error Messages]]&lt;br /&gt;
[[Category:OHRRPGCE Internals]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_do_I_import_my_scripts_without_launching_custom.exe_and_then_going_in_the_script_managment_menu%3F&amp;diff=28618</id>
		<title>How do I import my scripts without launching custom.exe and then going in the script managment menu?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_do_I_import_my_scripts_without_launching_custom.exe_and_then_going_in_the_script_managment_menu%3F&amp;diff=28618"/>
		<updated>2013-05-08T08:36:29Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: rewrite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can import scripts into your game without having to open it in [[Custom]] in the normal way by selecting both your .rpg file and your script .hss file at the same time, and drag-dropping them onto the custom.exe or OHRRPGCE-Custom executable. Custom will open the game, import the scripts, and immediately save and quit afterwards.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to passing the .rpg and .hss file as two commandline arguments to Custom.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Plotscripting Tutorial]]&lt;br /&gt;
* [[My Script compiles, but I can&#039;t find the .HS file!]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Why_can%27t_I_launch_a_script_when_already_inside_a_script%3F&amp;diff=28617</id>
		<title>Why can&#039;t I launch a script when already inside a script?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Why_can%27t_I_launch_a_script_when_already_inside_a_script%3F&amp;diff=28617"/>
		<updated>2013-05-08T08:32:24Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: remove obsolete script buffer overflow link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can.&lt;br /&gt;
&lt;br /&gt;
When one script is running, and you activate a second script, the first script pauses and waits for the second script to finish. If you are attempting to activate one script from another script and it does not work, there may be a mistake in your script. You should seek help on one of the [[Forums]].&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How do I call one script directly from another script?]]&lt;br /&gt;
* [[Why does my on-keypress script freeze/produce errors when I hold down a key?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]] [[Category:Plotscripting]] [[Category:Unexpected Behavior]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_should_I_do_if_my_script_has_bugs%3F&amp;diff=28616</id>
		<title>What should I do if my script has bugs?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_should_I_do_if_my_script_has_bugs%3F&amp;diff=28616"/>
		<updated>2013-05-08T08:30:53Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: direct to the forums&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Scripting is a complicated subject, and many things can go wrong. If your script has bugs, you need to be able to describe the problem in more detail before you can find help. What kind of problem are you having?&lt;br /&gt;
&lt;br /&gt;
* A problem understanding how to write your script?&lt;br /&gt;
* A problem compiling your script?&lt;br /&gt;
* A problem importing your script into your RPG file?&lt;br /&gt;
* A problem with unexpected behaviour when your script runs?&lt;br /&gt;
&lt;br /&gt;
A good place to ask for help is on the [[forums]].&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[My scripts won&#039;t compile! Why?]]&lt;br /&gt;
* [[How do I prevent my scripts from bugging?]]&lt;br /&gt;
* [[:Category:Plotscripting|Plotscripting Category]]&lt;br /&gt;
* [[:Category:Unexpected Behavior|Unexpected Behavior]]&lt;br /&gt;
*[[:Category:Error Messages|Error Messages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;br /&gt;
[[Category:Vague Questions]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Is_there_a_limit_to_how_big_a_plotscript_can_be%3F&amp;diff=28615</id>
		<title>Is there a limit to how big a plotscript can be?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Is_there_a_limit_to_how_big_a_plotscript_can_be%3F&amp;diff=28615"/>
		<updated>2013-05-08T08:07:13Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: remove obsolete script buffer overflow link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yes. The limit on individual compiled scripts is currently 256 kilobytes, a limit almost impossible except for scripts generated by computer program. In general, you should never worry about your script being too big, unless you actually see a &#039;&#039;&#039;Script exceeds maximum size&#039;&#039;&#039; error.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[What are the limits on various things?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]] [[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Scripting_advice&amp;diff=28614</id>
		<title>Scripting advice</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Scripting_advice&amp;diff=28614"/>
		<updated>2013-05-08T08:05:13Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: much improvement. Example script. Remove obsolete links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some advice you can follow when writing scripts to reduce the number of bugs in your scripts and generally make the whole experience more pleasant.&lt;br /&gt;
&lt;br /&gt;
=Readable scripts=&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;most important thing&#039;&#039; is to make your scripts easy to read and easy to understand. That way the bugs will be easier to find, you will be able to figure out what the script is doing when you come back to it months later and have forgotten everything, and other people will be able to understand your scripts when you ask for help.&lt;br /&gt;
&lt;br /&gt;
Structure and &#039;&#039;&#039;indent&#039;&#039;&#039; your code, it prevents mistakes, and makes missing &amp;lt;tt&amp;gt;begin&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;end&amp;lt;/tt&amp;gt; errors &#039;&#039;far&#039;&#039; easier to fix. Add comments explaining things! Also, when asking other people to look over your code, they will be far less likely to throw you out of a window :)&lt;br /&gt;
&lt;br /&gt;
Try not to write scripts that are too long. Splitting things up into several little scripts (even for big scenes) generally makes them easier to understand.&lt;br /&gt;
&lt;br /&gt;
Use constants from your game&#039;s [[HSI]] file, the builtin constants, including those in [[scancode.hsi]], and define your own constants using {{plot|defineconstant|define constant}} whenever possible. &amp;quot;get item(item: hp potion)&amp;quot; is &#039;&#039;so&#039;&#039; much easier to understand than &amp;quot;get item(13)&amp;quot;. You will thank yourself later!&lt;br /&gt;
&lt;br /&gt;
Name your scripts, variables and script arguments things that tell what they actually are or do. &#039;&#039;&#039;npcref&#039;&#039;&#039; could be a good name for a variable which holds an npc reference, but &#039;&#039;&#039;guard&#039;&#039;&#039; is much better.&lt;br /&gt;
&lt;br /&gt;
Consider for example this properly indented and commented script with one mistake:&lt;br /&gt;
 # Triggered when player approaches guards at the bridge outside the port&lt;br /&gt;
 plotscript, stopped by guards, begin&lt;br /&gt;
   show text box (4)  # &amp;quot;Halt, the toll is 50 gold&amp;quot;; choice box &amp;quot;Pay&amp;quot;/&amp;quot;Don&#039;t pay&amp;quot;&lt;br /&gt;
   wait for textbox&lt;br /&gt;
   if (check tag (tag: pay toll)) then (&lt;br /&gt;
     if (pay money (50)) then (&lt;br /&gt;
       show textbox (5) # Paid&lt;br /&gt;
       set tag (tag: paid toll, on)&lt;br /&gt;
     ) else (&lt;br /&gt;
       show textbox (6) # Can&#039;t afford it&lt;br /&gt;
   ) else (&lt;br /&gt;
     show textbox (7) # &amp;quot;Get out of here!&amp;quot;&lt;br /&gt;
   )&lt;br /&gt;
   wait for textbox&lt;br /&gt;
 end&lt;br /&gt;
Can you see where the missing ) is?&lt;br /&gt;
&lt;br /&gt;
=General advice=&lt;br /&gt;
&lt;br /&gt;
If you are a beginner, using one of the [[Plotscripting Tools]] instead of Notepad will let you more easily get help about each script command.&lt;br /&gt;
Otherwise, keep the [[Plotscripting Dictionary]] open in another window for quick reference while you are working, and check commands you are uncertain of (if you are using [[Hamster Whisper]], by press F1 on the command). The same is true of any reference materials that you might find useful, such as a dictionary, if English is not your first language.&lt;br /&gt;
&lt;br /&gt;
You may need to start the game from the beginning (don&#039;t use a previous save) when&lt;br /&gt;
* you have changed the stats or spells of one of the heroes in the hero editor&lt;br /&gt;
* you have changed certain options in the general game data&lt;br /&gt;
&lt;br /&gt;
When you have a partially finished script that you do not want included with your compiled scripts, you can disable it without deleting it by adding # before each line (a # makes the rest of the line a comment, so it is ignored by the compiler). When you are ready to work on the script again, you can un-comment it by deleting the #&#039;s&lt;br /&gt;
&lt;br /&gt;
As often as possible, test the scripts you have just made several times just to be sure that they work correctly.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Plotscripting Tutorial]]&lt;br /&gt;
* [[My scripts won&#039;t compile! Why?]]&lt;br /&gt;
* [[Why don&#039;t my special plotscripts work?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_is_the_3rd_Party_HSI%3F&amp;diff=28613</id>
		<title>What is the 3rd Party HSI?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_is_the_3rd_Party_HSI%3F&amp;diff=28613"/>
		<updated>2013-05-08T07:28:46Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: /* cosine (angle, multiplier) */ delete obsolete reference to script buffer overflows&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=About=&lt;br /&gt;
The 3rd Party HSI is a collection of useful plotscripts from various OHRRPGCE plotscripters. FyreWulff maintained the collection. It has not been updated in over five years, so might be a bit stale. If you want to make useful scripts available, the best way to do so is probably to create a new page on the wiki (preferably in the Scripts: namespace; just prefix to the page name), and add it to [[:Category:Example Scripts]]&lt;br /&gt;
&lt;br /&gt;
=Contributors=&lt;br /&gt;
FyreWulff&amp;lt;br&amp;gt;&lt;br /&gt;
The Mad Cacti&amp;lt;br&amp;gt;&lt;br /&gt;
T-Master&amp;lt;br&amp;gt;&lt;br /&gt;
Cube&amp;lt;br&amp;gt;&lt;br /&gt;
Codywatts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contributors, please add documentation for your scripts on this page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Usage of the 3rd Party HSI=&lt;br /&gt;
To use the 3rd Party HSI, go here: [[Scripts:3rd Party HSI]] and copy paste the code into a new text file. Save the file as thirdparty.hsi (or anything else you want). Make sure you don&#039;t save the file as .hsi.txt if you are on Windows.&lt;br /&gt;
&lt;br /&gt;
Finally, type in the line &amp;quot;include, thirdparty.hsi&amp;quot; after the line with &amp;quot;include, plotscr.hsd&amp;quot;. The top of your script file should look something like this:&lt;br /&gt;
 #my script file! &amp;amp;copy; me!&lt;br /&gt;
 include, plotscr.hsd&lt;br /&gt;
 include, thirdparty.hsi&lt;br /&gt;
&lt;br /&gt;
=The Scripts=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==abs(number)==&lt;br /&gt;
Returns the absolute value of &amp;lt;b&amp;gt;number&amp;lt;/b&amp;gt;. &amp;lt;i&amp;gt;Ex: abs(-17) equals 17&amp;lt;/i&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==cosine (angle, multiplier)==&lt;br /&gt;
Returns the cosine of an angle (in degrees), multiplied by some number (default 10000, to give the first 4 decimal digits). You can use any angle or multiplier at all. Note that this function does not give perfect results, when using a large multiplier the answer may be out by a few.&lt;br /&gt;
&lt;br /&gt;
A use of the sine and cosine scripts is to calculate the co-ordinates on the edge of a circle (see example)&lt;br /&gt;
You can use the &#039;&amp;lt;b&amp;gt;multiplier, times cosine, angle&amp;lt;/b&amp;gt;&#039; operator if you want.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Ex: &lt;br /&gt;
x coord := radius, times cosine, (direction * 45)&lt;br /&gt;
y coord := radius, times sine, (direction * 45)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==digit (number,n)==&lt;br /&gt;
Returns &#039;&#039;n&#039;&#039;th decimal of a number. Counts from the smallest place, with the ones digit being n = 1, ten&#039;s is n = 2, etc. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;Ex: digit (12345, 2) = 4 &amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==distance (number1,number2)==&lt;br /&gt;
Calculates the distance between two numbers. Always returned as a positive number. &lt;br /&gt;
&lt;br /&gt;
==divide round (a,b)==&lt;br /&gt;
Division which rounds the result. Normal division using &#039;&amp;lt;b&amp;gt;divide(a,b)&amp;lt;/b&amp;gt;&#039; or &#039;&amp;lt;b&amp;gt;a / b&amp;lt;/b&amp;gt;&#039; does not round.&amp;lt;br&amp;gt;&lt;br /&gt;
You can use the operator &#039;&#039;a, div, b&#039;&#039; instead.&lt;br /&gt;
&#039;&#039;Ex: nearest tile := hero pixel x (me), div, 20&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==fake door (map, x, y)==&lt;br /&gt;
Teleports the player to the specified coordinate on some map without using builtin doors.&lt;br /&gt;
&lt;br /&gt;
==first free id (low range, high range, direction)==&lt;br /&gt;
Use to find an npc id number with no instances on the map. You can create an npc of this id number and use the globally-altering &#039;&amp;lt;i&amp;gt;alter npc&amp;lt;/i&amp;gt;&#039; command without fear of mucking up other npcs on the map.&lt;br /&gt;
Returns the first unused id number it finds. If none is found, it returns -1.&lt;br /&gt;
By default, it starts searching with id 0, and gos up to 35. You can change this behaviour by specifying a range of id numbers to check, and whether to start at the top or bottom. To start from the bottom, pass the constant &amp;lt;b&amp;gt;forwards&amp;lt;/b&amp;gt; (value 1) as &amp;lt;b&amp;gt;direction&amp;lt;/b&amp;gt;. To search from the top, pass the constant &amp;lt;b&amp;gt;backwards&amp;lt;/b&amp;gt; (value -1). You can use the constants for other things too of course.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Ex:&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;npc id := first free id (30, 35, backwards)&lt;br /&gt;
if (npc id &amp;lt;&amp;gt; -1) then (&lt;br /&gt;
  npc := create npc (npc id, 20, 35, south)&lt;br /&gt;
  alter npc (npc, npcstat: picture, 15)&lt;br /&gt;
  alter npc (npc, npcstat: palette, 12)&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==have money (amount,strictness)==&lt;br /&gt;
Checks to see if the player has the &amp;lt;b&amp;gt;amount&amp;lt;/b&amp;gt; of money specified. By default the check is &amp;lt;b&amp;gt;loose&amp;lt;/b&amp;gt;, meaning it will return true if the amount of money the player has is equal or greater than the amount checked for. Using &amp;lt;b&amp;gt;strict&amp;lt;/b&amp;gt; as your second arguement, however, will only return true if they have the exact amount.&lt;br /&gt;
&lt;br /&gt;
==npc above (npc ref, npc ref2, npc ref3, ...)==&lt;br /&gt;
Pass any number of npc references (up to 8), and this script will return the npc reference of the npc that would be drawn on top of the other npcs in game.exe if the npcs were all placed on the same tile. Largely intended for use with &#039;&amp;lt;b&amp;gt;swap npc ref&amp;lt;/b&amp;gt;&#039; to allow you to change which npc is drawn on top of/underneath another (npc layering depends on the npc reference number of npcs).&lt;br /&gt;
&lt;br /&gt;
==npc below (npc ref, npc ref2, npc ref3, ...)==&lt;br /&gt;
Like &#039;&amp;lt;b&amp;gt;npcabove&amp;lt;/b&amp;gt;&#039;, this script will return the npc reference of the npc that would be drawn below other npcs on the same tile in game.exe. Largely intended for use with &#039;&amp;lt;b&amp;gt;swap npc ref&amp;lt;/b&amp;gt;&#039; to allow you to change which npc is drawn on top of/underneath another.&lt;br /&gt;
&lt;br /&gt;
==number of npcs (low range, high range)==&lt;br /&gt;
By default (when passing no arguments to it), returns the total number of npc instances on the map. You can set the low and high limits of the npc id numbers it checks for, for instance, &#039;&amp;lt;i&amp;gt;number of npcs (5, 8)&amp;lt;/i&amp;gt;&#039; will return the total number of npcs on the map with id numbers between (and including) 5 and 8.&lt;br /&gt;
&lt;br /&gt;
==reset time==&lt;br /&gt;
Reset the OHRRPGCE&#039;s internal time clock. A save file created right after this command would read 0 days, 0 hours, and 0 minutes. &lt;br /&gt;
&lt;br /&gt;
==restore vehicle==&lt;br /&gt;
After calling save vehicle, you can use this command to restore the NPC as you left it. This command assumes you have placed the NPC somewhere on the map in CUSTOM.EXE already. The best place to use this script would be in the On Map Load script. &lt;br /&gt;
&lt;br /&gt;
==save vehicle(npc)==&lt;br /&gt;
Saves the direction, x, y, and ID of the vehicle NPC specified. For use with restore vehicle. The best way to use this command would be in a dismount script. Note that you can only currently save one vehicle at a time. &lt;br /&gt;
&lt;br /&gt;
==sine (angle, multiplier)==&lt;br /&gt;
Sine behaves in the same way as &#039;&#039;&#039;cosine&#039;&#039;&#039;. It has its own operator, &#039;&amp;lt;b&amp;gt;multiplier, times sine, angle&amp;lt;/b&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
==sqrt (number)==&lt;br /&gt;
Returns the rounded square root of a number. Square root of a negative returns zero.&lt;br /&gt;
==swap npc ref (npc ref1, npc ref2)==&lt;br /&gt;
This swaps the npc reference of two npcs. This is done by swapping the locations, directions, ID numbers, etc. of the two npcs.&lt;br /&gt;
&lt;br /&gt;
When you swap the references, you will notice no difference to the npcs on screen, but if you use the same npc reference which you stored in a variable earlier, you will now manipulate the other npc. &lt;br /&gt;
&lt;br /&gt;
This script can be used to swap the order of layering of two npcs when they appear on the same tile (in conjuction with &#039;&amp;lt;b&amp;gt;npc above&amp;lt;/b&amp;gt;&#039; or &#039;&amp;lt;b&amp;gt;npc below&amp;lt;/b&amp;gt;&#039;; in which case, you may want to swap the values of your variables afterwards), or to juggle npcs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ex:&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;#Example to insure that a damage animation is drawn on top of a boss made of several pieces&lt;br /&gt;
damage pic := create npc (1, 2, 3, 4)&lt;br /&gt;
topnpc := npc above (damage pic, boss torso, boss arms, boss legs) #note that &#039;damage pic&#039; is included&lt;br /&gt;
swap npc ref (damage pic, topnpc)&lt;br /&gt;
temp := damage pic  #swap the values of the locals&lt;br /&gt;
damage pic := topnpc&lt;br /&gt;
topnpc := damage pic&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tan (angle, multiplier)==&lt;br /&gt;
Tan returns the tangent of a angle times some multiplier. It is possible to crash your game with an overflow error if the result is too large. It otherwise behaves in the same way as &#039;&#039;&#039;sine&#039;&#039;&#039;.Tan has its own operator, &#039;&amp;lt;b&amp;gt;multiplier, times tan, angle&amp;lt;/b&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
==tb (textbox)==&lt;br /&gt;
Displays textbox number with automatic wait for textbox. &lt;br /&gt;
&lt;br /&gt;
==trunc(dividend, divisor)==&lt;br /&gt;
Returns the truncation of the &amp;lt;b&amp;gt;dividend&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;divisor&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==unequip party (group)==&lt;br /&gt;
Removes all equipment from party members. If you use &amp;lt;b&amp;gt;entire party&amp;lt;/b&amp;gt; as the group, it will unequip the active and reserve heroes. You can also use &amp;lt;b&amp;gt;active only&amp;lt;/b&amp;gt; to unequip just the active party or &amp;lt;b&amp;gt;reserve only&amp;lt;/b&amp;gt; to unequip just the reserve heroes. If you use no arguement, it defaults to &amp;lt;b&amp;gt;entire party.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==x distance (hero,npc)==&lt;br /&gt;
A simplied version of &amp;lt;b&amp;gt;distance&amp;lt;/b&amp;gt; that finds the x distance between the specified hero rank in the party, and the specified NPC. &lt;br /&gt;
&lt;br /&gt;
==y distance (hero,npc)==&lt;br /&gt;
A simplied version of &amp;lt;b&amp;gt;distance&amp;lt;/b&amp;gt; that finds the y distance between the specified hero rank in the party, and the specified NPC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Plotscripting Dictionary|Standard Dictionary of Plotscripting Commands]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Plotscripting]]&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Extra Tools]]&lt;br /&gt;
[[Category:Example Scripts]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_buffer_overflow&amp;diff=28612</id>
		<title>Script buffer overflow</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Script_buffer_overflow&amp;diff=28612"/>
		<updated>2013-05-08T07:28:00Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: obsolete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{obsolete}}&lt;br /&gt;
This plotscripting error occurred in previous versions of the engine. There no longer is a &amp;quot;script buffer&amp;quot;. See [[What do the run-time script errors mean?]] for current script interpreter errors.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plotscripting]]&lt;br /&gt;
[[Category:Error Messages]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Is_there_a_limit_to_how_big_a_plotscript_can_be%3F&amp;diff=28611</id>
		<title>Is there a limit to how big a plotscript can be?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Is_there_a_limit_to_how_big_a_plotscript_can_be%3F&amp;diff=28611"/>
		<updated>2013-05-08T07:26:04Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yes. The limit on individual compiled scripts is currently 256 kilobytes, a limit almost impossible except for scripts generated by computer program. In general, you should never worry about your script being too big, unless you actually see a &#039;&#039;&#039;Script exceeds maximum size&#039;&#039;&#039; error.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How do I avoid script buffer overflows?]]&lt;br /&gt;
* [[What are the limits on various things?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]] [[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_do_the_run-time_script_errors_mean%3F&amp;diff=28610</id>
		<title>What do the run-time script errors mean?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_do_the_run-time_script_errors_mean%3F&amp;diff=28610"/>
		<updated>2013-05-08T07:01:18Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: Remove &amp;#039;Script buffer overflow&amp;#039;, replace with &amp;#039;Script exceeds maximum size&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In some cases, GAME.EXE might crash and show you a big red script error. Here is an explanation of each possible run-time script error message. Most of these error messages will never be displayed unless something very serious like file or memory corrution occurs, but a few of them can be triggered by mistakes in scripts.&lt;br /&gt;
&lt;br /&gt;
If you recieve one of the errors other than the first 3, it is recommended you attempt to recompile and reimport your scripts first to fix the error.&lt;br /&gt;
&lt;br /&gt;
===Script # exceeds maximum size by #%===&lt;br /&gt;
This can only happen if one of your script is really &#039;&#039;&#039;really&#039;&#039;&#039; big. If one of your scripts is this large you probably generated it with a computer program! Break it up into smaller pieces.&lt;br /&gt;
&lt;br /&gt;
===interpreter overloaded===&lt;br /&gt;
This error means that the script interpreter has run out of handles to load scripts into. It is very unlikely this error message will ever happen, because any runaway recursive script that could cause this would be more likely to generate a &amp;quot;Script buffer overflow&amp;quot; error first.&lt;br /&gt;
&lt;br /&gt;
===script heap overflow===&lt;br /&gt;
This error message means that the program has run out of space to store local variables and arguments. It is unlikely you will ever see this error, because any script likely to use that much heap space would probably generate a &amp;quot;script buffer overflow&amp;quot; error first.&lt;br /&gt;
&lt;br /&gt;
===Failed to load (type) script #===&lt;br /&gt;
This error message is usually preceded by another error message that will give you a clue as to why the attempt to load the script failed. The &amp;quot;type&amp;quot; will tell you how the program was attempting to trigger the script, for example, map-autorun, NPC, after-battle, etc.&lt;br /&gt;
&lt;br /&gt;
===Failed to unlump #.hsx===&lt;br /&gt;
This error message means that the program tried to run a script, but it could not even find the script&#039;s data file in the RPG file. The number indicates the script&#039;s ID numbers. High numbers like 32767 are autonumbered scripts.&lt;br /&gt;
&lt;br /&gt;
===division by zero===&lt;br /&gt;
When I was in school, my teachers would always tell me that it was impossible to divide a number by zero. I always asked &amp;quot;Why not?&amp;quot;. It wasnt until college that I found a teacher who was capable of giving me a good answer to that question, and when he did, the answer went right over my head. So I decided to take their word for it. If the math-people of the world say it cannot be done, then I am not going to argue with them.&lt;br /&gt;
&lt;br /&gt;
===stnext encountered noop # at # in #===&lt;br /&gt;
Stnext is a routine that reads the next command to execute. Noop stands for no-operation. It is an error-catching command to catch errors where script data is missing. The three numbers help pinpoint where the data was missing from. If you see this error it means that either your scripts failed to load, or they have been corrupted on the disk.&lt;br /&gt;
&lt;br /&gt;
===Illegal kind # # in stnext===&lt;br /&gt;
This error catches corrupted data when trying to read the next command. If you see this error it means that either your scripts have been corrupted, or another script error has thrown the script execution pointer into a part of memory where it should not be.&lt;br /&gt;
&lt;br /&gt;
===encountered clean noop===&lt;br /&gt;
A clean noop is a deliberate no-operation command that you can put into your script on purpose with the noop command. Of course, I cant think of any valid reasons why you would want to do that.&lt;br /&gt;
&lt;br /&gt;
===Interpretloop encountered noop===&lt;br /&gt;
Yet another sanity-check to watch for missing data. You may see this if your script fails to load, but you try to continue anyway.&lt;br /&gt;
&lt;br /&gt;
===While fell out of bounds, landed on #===&lt;br /&gt;
===For fell out of bounds, landed on #===&lt;br /&gt;
===If statement overstepped bounds===&lt;br /&gt;
===While statement has jumped the curb===&lt;br /&gt;
===For statement is being difficult&#039;&#039;&#039;===&lt;br /&gt;
while, for and if commands keep an internal pointer to control their actions. If this pointer gets corrupted by a bug in the program, you may see one of these error messages, depending on how the number was corrupted.&lt;br /&gt;
&lt;br /&gt;
===Unsupported math===&lt;br /&gt;
In the unlikely event that I decide to add some new math functions to hamsterspeak, this error would appear to people who where using versions of GAME.EXE too old to support them.&lt;br /&gt;
&lt;br /&gt;
===Illegal statement type===&lt;br /&gt;
Legal statement types are commands, flow-control, variables, and numbers. If you see this error message it proably means that your script data is corrupt.&lt;br /&gt;
&lt;br /&gt;
===Illegally Suspended Script===&lt;br /&gt;
This is a sanity check to watch for corrupted script data. If anybody ever sees this, it means either you have found a bug in the program, or the memory for your DOS box was corrupted&lt;br /&gt;
&lt;br /&gt;
===Script # became stateless===&lt;br /&gt;
Each script has a &amp;quot;state&amp;quot; which tells what operation it is currently doing. If you see this error, it means a script has lost it&#039;s state, either because of a bug in the program, or because of a previous error.&lt;br /&gt;
&lt;br /&gt;
===Illegal Wait Substate===&lt;br /&gt;
This means that a script has been put into a &amp;quot;wait&amp;quot; state on a non-waiting command. If you see this, it probably indicates a bug in the program.&lt;br /&gt;
&lt;br /&gt;
===Script # is in an unsupported format===&lt;br /&gt;
The script was compiled with a version of HSpeak that GAME.EXE doesn&#039;t support. This means you need to upgrade to the latest version to play the game.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[How does script-debug mode work?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Error Messages]]&lt;br /&gt;
[[Category:OHRRPGCE Internals]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Why_does_my_on-keypress_script_freeze/produce_errors_when_I_hold_down_a_key%3F&amp;diff=28609</id>
		<title>Why does my on-keypress script freeze/produce errors when I hold down a key?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Why_does_my_on-keypress_script_freeze/produce_errors_when_I_hold_down_a_key%3F&amp;diff=28609"/>
		<updated>2013-05-08T06:56:59Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: fix links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use on-keypress scripts which contain wait commands (or commands with an implicit wait - check the [[Plotscripting Dictionary]]) your scripts might be in danger of piling up, producing strange behaviour, often freezing, and possibly [[What do the run-time script errors mean?#Script buffer overflow|script buffer overflows]].&lt;br /&gt;
&lt;br /&gt;
=When on-keypress scripts are called repeatedly=&lt;br /&gt;
&lt;br /&gt;
The onkeypress script is run every tick that any key is held down and the &amp;quot;topmost&amp;quot; currently running script is NOT the onkeypress script (unless you set the &amp;quot;Permit double triggering of scripts&amp;quot; bitset, which forgoes this safety check) and the topmost script is not using {{plot|waitforkey|wait for key}}.&lt;br /&gt;
&lt;br /&gt;
 script, my onkeypress script, begin&lt;br /&gt;
   handle movement&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 script, handle movement, begin&lt;br /&gt;
   if (key is pressed (key: up)) then (&lt;br /&gt;
    #...&lt;br /&gt;
    wait (2)&lt;br /&gt;
   )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The wait is inside &amp;lt;tt&amp;gt;handle movement&amp;lt;/tt&amp;gt;, so to the engine it appears the on-keypress script is not the currently running script, and it calls it again next tick if any buttons as pressed. As you hold down the up key, it&#039;ll get called over and over.&lt;br /&gt;
&lt;br /&gt;
=Fixing the Problem=&lt;br /&gt;
&lt;br /&gt;
Use a global variable (or a tag) to indicate that the on-keypress script is already running. A local variable will NOT work.&lt;br /&gt;
&lt;br /&gt;
 global variable (10, keyhandler running)&lt;br /&gt;
 &lt;br /&gt;
 script, my onkeypress script, begin&lt;br /&gt;
   if (keyhandler running == false) then (&lt;br /&gt;
     keyhandler running := true&lt;br /&gt;
 &lt;br /&gt;
     # call other scripts, wait commands, whatever&lt;br /&gt;
     # ...&lt;br /&gt;
 &lt;br /&gt;
     keyhandler running := false&lt;br /&gt;
   )&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Now the script will immediately exit if it is called while already running.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How does plotscripting work?]]&lt;br /&gt;
* [[How do I avoid script buffer overflows?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_does_plotscripting_work%3F&amp;diff=28608</id>
		<title>How does plotscripting work?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_does_plotscripting_work%3F&amp;diff=28608"/>
		<updated>2013-05-08T06:51:48Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: delete the whole &amp;quot;The Buffer&amp;quot; section, as the buffer doesn&amp;#039;t exist anymore.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Or, The Magic Behind the Most Convoluted System in Existance!&lt;br /&gt;
&lt;br /&gt;
=The Stack=&lt;br /&gt;
The main driving force behind plotscripting is this magical entitity known as &#039;&#039;&#039;the stack&#039;&#039;&#039;. It does not like to be refered to by name, instead prefering to do its work behind the scenes.&lt;br /&gt;
&lt;br /&gt;
The stack is like a stack of dishes at a chinese-buffet restaraunt, where they&#039;re in that spring-loaded container, and you can only take the top plate, not any plate in the middle. The stack has two &#039;&#039;&#039;operations&#039;&#039;&#039; that can happen to it: Push and Pop. Pushing something onto the stack is like putting a plate on the stack of plates. Poping it is like taking the top plate off and using it (or, throwing it in the garbage).&lt;br /&gt;
&lt;br /&gt;
So, what does this have to do with plotscripting? Well, when a script is triggered, it&#039;s pushed onto the stack, where it can run. &#039;&#039;&#039;Only the top-most script can run at any time.&#039;&#039;&#039; When it completes, it&#039;s popped off the stack, so whatever&#039;s beneath it can do its stuff (or, if there&#039;s nothing, it does nothing).&lt;br /&gt;
&lt;br /&gt;
=The Script=&lt;br /&gt;
So, we&#039;ve looked at how scripts are stored in memory, and how the engine can find them. But, how do they actually run?&lt;br /&gt;
&lt;br /&gt;
Well, the interpreter starts at the beginning, and works its way from there. Different types of commands have different numbers, and the interpreter uses those numbers to figure out what type of data follows the number. However, that&#039;s beyond the scope of this FAQ ;)&lt;br /&gt;
&lt;br /&gt;
Anyway, the interpreter runs until something puts it into a &#039;&#039;&#039;wait state&#039;&#039;&#039;. The wait state tells the interpreter that it&#039;s done, and should pass control to the rest of the engine. The only thing that can put the interpreter into a wait state is a waiting command, such as &#039;&#039;&#039;wait&#039;&#039;&#039;, &#039;&#039;&#039;wait for hero&#039;&#039;&#039; or &#039;&#039;&#039;wait for camera&#039;&#039;&#039;. This means that the following code will freeze the engine, as the interpreter never goes into a waiting state:&lt;br /&gt;
&lt;br /&gt;
 while(true) do ( )&lt;br /&gt;
&lt;br /&gt;
Also note that this code will &#039;&#039;not&#039;&#039; freeze the engine, as the interpreter will almost continuously be put into a waiting state:&lt;br /&gt;
&lt;br /&gt;
 while(true) do (wait(1))&lt;br /&gt;
&lt;br /&gt;
In fact, if that script it running, it&#039;s mostly harmless, except for taking up a bit of stack and heap space. Of course, the script its in will never end, so you should only use an infinite loop if you really know what you&#039;re doing.&lt;br /&gt;
&lt;br /&gt;
Now, let&#039;s say you have a script like this:&lt;br /&gt;
&lt;br /&gt;
 show text box(1)&lt;br /&gt;
 wait for text box&lt;br /&gt;
 &lt;br /&gt;
 wait(1000)&lt;br /&gt;
 &lt;br /&gt;
 show text box(2)&lt;br /&gt;
 wait for text box&lt;br /&gt;
&lt;br /&gt;
As you can see, between the two text boxes, you have quite a bit of time to do whatever you want: Talk to NPCs, fight battles (which, as far as the script can tell, only take one tick), do whatever. Some of these things might even trigger another script! In this case, the script is loaded into the heap, and pushed onto the stack like anything else.&lt;br /&gt;
&lt;br /&gt;
From the interpreter&#039;s point of view, all that happens is that another script is called. It might be a function in a script, or it might be from a seprate event. It doesn&#039;t know, and it doesn&#039;t care. It just runs that script until it finishes, at which point it&#039;s popped from the stack, and the previous script keeps running, right where it left off. Note that if it had 500 ticks left to wait when the other script happened, it will still have 500 ticks to wait, regardless of how many passed in the other script.&lt;br /&gt;
&lt;br /&gt;
=The End=&lt;br /&gt;
Well, that&#039;s all for now. If you want to know more about how scripts themselves are compiled, check out the (very much incomplete) [[HSX]] docs. They&#039;ll tell you all about how they&#039;re compiled, and how the interpreter runs it.&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]][[Category:Plotscripting]][[Category:Advanced Plotscripting]][[Category:OHRRPGCE Internals]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_is_a_variable%3F&amp;diff=28607</id>
		<title>What is a variable?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_is_a_variable%3F&amp;diff=28607"/>
		<updated>2013-05-08T05:21:45Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: link to What is a script argument for?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Concept=&lt;br /&gt;
A variable (in plotscripting) is a numerical value that varies (in other languages, variables do not have to be numerical).&lt;br /&gt;
You can store values in them, and then use them later in calculations, or to pass a value to a function.&lt;br /&gt;
&lt;br /&gt;
When you write in your script file: &lt;br /&gt;
&amp;lt;pre&amp;gt;global variable(3, var)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you are saying &#039;the name of global variable 3 is &#039;&#039;&#039;var&#039;&#039;&#039;&#039;.&lt;br /&gt;
So, when you write:&lt;br /&gt;
&amp;lt;pre&amp;gt;var := 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setvariable(var, 100)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You are assigning the number 100 into global the variable named &#039;&#039;&#039;var&#039;&#039;&#039;, which you will use to refer to it later.&lt;br /&gt;
The text &#039;var&#039; is not the variable -- it is the &#039;&#039;name&#039;&#039; of the variable.&lt;br /&gt;
&lt;br /&gt;
In OHRRPGCE, variables are stored in particular (constant) memory locations; you can change the content, but not the location.&lt;br /&gt;
&lt;br /&gt;
When you use a variable name in an expression, it means &#039;the value stored in this variable&#039;. Like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;var2 := var + 5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value of var is currently 100. So this is like saying &#039;var2 := 100 + 5&#039; (but it would vary depending on what value var held, naturally.)&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
&lt;br /&gt;
By contrast a constant is something you can&#039;t change, -- for instance, the name &#039;var&#039; -- once you define it, it is the same forever. The name itself is a constant; the value it indirectly refers to can vary. &lt;br /&gt;
&lt;br /&gt;
You can also create constants for your scripts, defining a constant numerical value to a name, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;define constant (10000, ten thousand)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use it in other expressions like a variable, &#039;&#039;but you can not change it&#039;&#039;. The follow &#039;&#039;&#039;&#039;&#039;would not&#039;&#039;&#039;&#039;&#039; be allowed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ten thousand := 10001&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But you could write&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;var2 := ten thousand + 5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So if you can&#039;t change constants, why would you want to use them?  The answer is that they make it easier to keep track of what numbers mean and to change them if you have to.  Let&#039;s say you have fifty scripts that revolve around a battle against three Cleaning Fluid Thieves (formation number 10) and your hero&#039;s speech to the Great Contact Lens (text box number 10), and then you decide you instead want the hero to keep fighting a single Eye Doctor (formation number 37) instead.  If you&#039;ve just typed out 10 every time, now you have to go through and figure out which 10s you need to turn into 37s and which ones need to stay 10s.  On the other hand, if you instead defined constants &amp;quot;lens speech&amp;quot; and &amp;quot;annoying repetitive battle&amp;quot; as both equal to 10, then you can just go up and change &amp;quot;define constant (10, annoying repetitive battle)&amp;quot; to &amp;quot;define constant (37, annoying repetitive battle)&amp;quot;.  Not only that, but if you typo 10 as 01 somewhere in there, HSPEAK won&#039;t catch it and you&#039;ll end up rummaging through your HSS trying to find out why your plotscripts aren&#039;t working correctly, whereas HSPEAK will notice if you type &amp;quot;lnes speech&amp;quot; and will point it out for you.  These sorts of things happen more often than you&#039;d think.&lt;br /&gt;
&lt;br /&gt;
=Uses of variables=&lt;br /&gt;
&lt;br /&gt;
Variables are indeed extremely useful. Without them, your script would be unable to remember anything.&lt;br /&gt;
&lt;br /&gt;
Suppose you want to know where the hero stands. You can create two global variables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global variable(1, hx)&lt;br /&gt;
global variable(2, hy)&lt;br /&gt;
global variable(3, map)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the hero x and y values, and then assign values to them in a script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hx := hero x (me)&lt;br /&gt;
hy := hero y (me)&lt;br /&gt;
map := current map&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now if you want to move the hero back to that point later, you can &#039;pass&#039; the variable as a value to some functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
teleport to map (map, hx, hy)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More uses==&lt;br /&gt;
&lt;br /&gt;
You can do a lot of things with variables. Lets say you want it to pick a variable randomly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
variable(prize)&lt;br /&gt;
setvariable(prize,random(1,3))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That would chose a number from 1 to 3.But now we want to make it do something.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
variable(prize)&lt;br /&gt;
setvariable(number,random(1,3))&lt;br /&gt;
&lt;br /&gt;
if (prize==1) then (get money(5))#that would make you get 5 money&lt;br /&gt;
if (prize==2) then (get item (17,1))# you would get item 17 1 times&lt;br /&gt;
if (prize==3) then (get item (7,3))#you would get item 7 3 times&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using that script, the player will either get 5 money, item 17 1 time, or get item 7 3 times. Then you could make a lottery by making the player pay. Or you could use tags inside the scripts. a lot of things can be done with variables.&lt;br /&gt;
&lt;br /&gt;
=More on how to use variables=&lt;br /&gt;
If you&#039;re having trouble with the concept of variables, check out Mike Caron&#039;s series of Flash movies explaining all about variables:&lt;br /&gt;
&lt;br /&gt;
* [http://ohrdev.com/variable1.html Variables and You]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[What is a script argument for?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting_Tutorial&amp;diff=28606</id>
		<title>Plotscripting Tutorial</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting_Tutorial&amp;diff=28606"/>
		<updated>2013-05-08T05:20:04Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: /* Giving a Script Arguments */ link to What is a script argument for?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What is plotscripting? From the most simple perspective plotscripting is where the computer takes control of the characters in your RPG, and moves them around, and makes them say stuff. Anyone who has played popular RPGs like Final Fantasy will be familiar with this concept. &lt;br /&gt;
&lt;br /&gt;
Plotscripting is actually capable of far more than that, even allowing you to create puzzles, mini-games, and special effects in your game, but that sort of thing is not covered in this tutorial. People who want to use the programming-language-like features of plotscripting should first learn simple plotscripting, and move on to more complex scripts gradually.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
Okay. This tutorial will walk you through writing a script, compiling it with [[HSPEAK.EXE]], importing it into [[CUSTOM.EXE]], telling your RPG file when and where to run it, and testing the finished script in [[GAME.EXE]]. The examples will use [[PSTUTOR.RPG]] but if you already have an RPG file in progress, you may want to adapt these instructions for your own game.&lt;br /&gt;
&lt;br /&gt;
To make sure you have the OHRRPGCE installed and running okay, run GAME.EXE and pick PSTUTOR.RPG from the list. Press a key to get past the title screen, and you should see a silly looking little robot standing on a small platform in space. This is the file that you will be adding plotscripts to as you follow this tutorial. Press ESC and quit. &lt;br /&gt;
&lt;br /&gt;
= Creating a Script File =&lt;br /&gt;
&lt;br /&gt;
Plotscripts are just plain text files that you can create with any text editor. There are a couple plotscript editors such as [[Hamster Whisper]] available on the [[Plotscripting Tools]] page, but you do not have to use them. Any editor that can save plain text is okay (Don&#039;t use microsoft word. &#039;&#039;&#039;.doc&#039;&#039;&#039; files are not text!)&lt;br /&gt;
&lt;br /&gt;
Open a new text file in your editor, and save it in the same folder where you saved PSTUTOR.RPG and name it &#039;&#039;&#039;PSTUTOR.HSS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The .HSS extension stands for HamsterSpeak Script.&lt;br /&gt;
&lt;br /&gt;
At the top of your script, type the following two lines: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include, plotscr.hsd&lt;br /&gt;
include, pstutor.hsi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[plotscr.hsd]] had the definitions of all of the Plotscripting commands.&lt;br /&gt;
&#039;&#039;&#039;pstutor.hsi&#039;&#039;&#039; contains information about PSTUTOR.RPG. For more information about HSI files, See: [[How do I make a HSI file?]]&lt;br /&gt;
&lt;br /&gt;
= Your First Script =&lt;br /&gt;
&lt;br /&gt;
Okay, now it is time to write a script. the first step is to define the script. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include, plotscr.hsd&lt;br /&gt;
include, pstutor.hsi&lt;br /&gt;
 &lt;br /&gt;
plotscript, Hello World, begin&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells the compiler that your script is going to be named &amp;quot;Hello World&amp;quot;&lt;br /&gt;
&lt;br /&gt;
now, you write the body of the script. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include, plotscr.hsd&lt;br /&gt;
include, pstutor.hsi&lt;br /&gt;
 &lt;br /&gt;
plotscript, Hello World, begin&lt;br /&gt;
  show text box (1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This script only has one command, {{plot|show text box}}. When the script is run, it will display the text box numbered in the parenthesis (1) just as if you had talked to an NPC. (Text Box 1 in PSTUTOR.RPG has already been made for you, and all it says is &amp;quot;Hello world!&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Save your script &lt;br /&gt;
&lt;br /&gt;
= Importing &amp;amp; Compiling your Script =&lt;br /&gt;
&lt;br /&gt;
Now it is time to import your script into your RPG. &lt;br /&gt;
&lt;br /&gt;
* Run CUSTOM.EXE and open PSTUTOR.RPG &lt;br /&gt;
* From the main menu, choose &#039;&#039;Script Management&#039;&#039; &lt;br /&gt;
* Choose &#039;&#039;Compile and/or Import scripts&#039;&#039; &lt;br /&gt;
* Find PSTUTOR.HSS in the file browser &lt;br /&gt;
* When you choose PSTUTOR.HSS, The script will be compiled, and it will say &amp;quot;1 script imported successfully&amp;quot; &lt;br /&gt;
* Don&#039;t quit CUSTOM.EXE yet, we need to make something call the script&lt;br /&gt;
&lt;br /&gt;
== Other Ways to Compile ==&lt;br /&gt;
&lt;br /&gt;
Choosing your script from the &#039;&#039;Compile and/or Import scripts&#039;&#039; is not the only way to compile your script. You can learn about other methods in a separate article: [[Other Ways to Compile A Plotscript]]&lt;br /&gt;
&lt;br /&gt;
= Calling your Script =&lt;br /&gt;
&lt;br /&gt;
So when does your script get run?&lt;br /&gt;
&lt;br /&gt;
There are many ways to call a script in your RPG, but for the moment, we will use the autorun script that is run when you start a new game.&lt;br /&gt;
&lt;br /&gt;
* From the main menu in CUSTOM.EXE, pick [[Menu:Main Menu/Edit General Game Data|Main Menu/Edit General Game Data]] &lt;br /&gt;
* Pick [[Menu:Main Menu/Edit General Game Data/Special Plotscripts|Main Menu/Edit General Game Data/Special Plotscripts]] &lt;br /&gt;
* For &#039;&#039;&#039;new game script&#039;&#039;&#039; choose &#039;&#039;&#039;helloworld&#039;&#039;&#039; &lt;br /&gt;
* Exit, and save your changes to PSTUTOR.RPG&lt;br /&gt;
&lt;br /&gt;
= Running Your Script =&lt;br /&gt;
&lt;br /&gt;
* Run GAME.EXE&lt;br /&gt;
* Open PSTUTOR.RPG &lt;br /&gt;
* Press any key when prompted &lt;br /&gt;
* As soon as you start, the script will run, and you will immediately see the &amp;quot;Hello World&amp;quot; text box &lt;br /&gt;
&lt;br /&gt;
Congratulations! You just ran your first plotscript!&lt;br /&gt;
&amp;quot;But that is so boring!&amp;quot; you say. Well, read on. Let&#039;s make your script more interesting.&lt;br /&gt;
&lt;br /&gt;
= Making the Hero Walk Around =&lt;br /&gt;
Showing text boxes is all well and good, but you can do that without plotscripting. Now let&#039;s try something that you can&#039;t do without plotscripting; making your hero move in a predefined pattern. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include, plotscr.hsd&lt;br /&gt;
include, pstutor.hsi&lt;br /&gt;
 &lt;br /&gt;
plotscript, Hello World, begin&lt;br /&gt;
  show text box (1)&lt;br /&gt;
  wait for text box&lt;br /&gt;
  walk hero (me,north,3)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,west,1)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,east,2)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,west,1)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  set hero direction (me,south)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add these new commands to your &amp;quot;Hello World&amp;quot; script. This is what the commands do:&lt;br /&gt;
&lt;br /&gt;
* {{plot|show text box}} &#039;&#039;&#039;(1)&#039;&#039;&#039; displays text box 1, same as before &lt;br /&gt;
* {{plot|wait for text box}} waits for you to press a key and get rid of the text box &lt;br /&gt;
* {{plot|walk hero}} &#039;&#039;&#039;(me,north,3)&#039;&#039;&#039; makes your hero walk north for three spaces. &#039;&#039;me&#039;&#039; is a special name that refers to your main hero&lt;br /&gt;
* {{plot|wait for hero}} &#039;&#039;&#039;(me)&#039;&#039;&#039; waits for the main hero (me) to finish walking &lt;br /&gt;
* {{plot|set hero direction}} &#039;&#039;&#039;(me,south)&#039;&#039;&#039; makes the main hero face south &lt;br /&gt;
&lt;br /&gt;
Now save the changes to your script, recompile your script. This time, HSPEAK.EXE will ask you if you want to overwrite the existing PSTUTOR.HS file. Press Y for yes. Now import your script again&lt;br /&gt;
&lt;br /&gt;
*Run CUSTOM.EXE and open PSTUTOR.RPG &lt;br /&gt;
*From the main menu, choose &#039;&#039;Script Management&#039;&#039; &lt;br /&gt;
*Choose &#039;&#039;Import Compiled Plotscripts&#039;&#039; &lt;br /&gt;
*Choose PSTUTOR.HS in the file browser &lt;br /&gt;
*Exit, and save your changes to PSTUTOR.RPG &lt;br /&gt;
*Run GAME.EXE and open PSTUTOR.RPG &lt;br /&gt;
*After you start, the &amp;quot;Hello World&amp;quot; text box will pop up, and after you press a key, the hero will walk north, walk left and right, and then turn to face you.&lt;br /&gt;
&lt;br /&gt;
= Stopping Normal Controls =&lt;br /&gt;
&lt;br /&gt;
Try running your script again, but this time, press left or right as the robot moves. As you can see, the player can interfere with the plotscript. How do we prevent this? &lt;br /&gt;
&lt;br /&gt;
Go back to your plotscript, and add the following commands: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include, plotscr.hsd&lt;br /&gt;
include, pstutor.hsi&lt;br /&gt;
 &lt;br /&gt;
plotscript, Hello World, begin&lt;br /&gt;
  suspend player&lt;br /&gt;
  show text box (1)&lt;br /&gt;
  wait for text box&lt;br /&gt;
  walk hero (me,north,3)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,west,1)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,east,2)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,west,1)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  set hero direction (me,south)&lt;br /&gt;
  resume player&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The {{plot|suspend player}} command at the begining prevents the player from moving the hero around or bringing up the menu. It effectively blocks all of the players controls (except that it still allows them to advance text boxes). The {{plot|resume player}} command at the end of your script gives control of the hero back to the player. Almost every script you write will start with &#039;&#039;&#039;suspend player&#039;&#039;&#039;, and end with &#039;&#039;&#039;resume player&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Now recompile your script, reimport it, and test it again. This time, you will not be able to interfere when the robot walks.&lt;br /&gt;
&lt;br /&gt;
= Starting a Script with an NPC =&lt;br /&gt;
&lt;br /&gt;
Probably the most common way that you will want to start your scripts is by talking to NPCs. Let&#039;s add a new script, and show you how to start it with an NPC &lt;br /&gt;
&lt;br /&gt;
Add a new script called &amp;quot;Robot Dance&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include, plotscr.hsd&lt;br /&gt;
include, pstutor.hsi&lt;br /&gt;
 &lt;br /&gt;
plotscript, Hello World, begin&lt;br /&gt;
  suspend player&lt;br /&gt;
  show text box (1)&lt;br /&gt;
  wait for text box&lt;br /&gt;
  walk hero (me,north,3)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,west,1)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,east,2)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  walk hero (me,west,1)&lt;br /&gt;
  wait for hero (me)&lt;br /&gt;
  set hero direction (me,south)&lt;br /&gt;
  resume player&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
plotscript, Robot Dance, begin&lt;br /&gt;
  suspend player&lt;br /&gt;
  walk NPC (0,west,1)&lt;br /&gt;
  wait for NPC (0)&lt;br /&gt;
  walk NPC (0,east,2)&lt;br /&gt;
  wait for NPC (0)&lt;br /&gt;
  walk NPC (0,west,1)&lt;br /&gt;
  wait for NPC (0)&lt;br /&gt;
  set NPC direction (0,north)&lt;br /&gt;
  wait (4)&lt;br /&gt;
  set NPC direction (0,east)&lt;br /&gt;
  wait (4)&lt;br /&gt;
  set NPC direction (0,south)&lt;br /&gt;
  resume player&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look at the commands this script uses. NPC zero (the first NPC) will walk left, then right, then back to the center, and then spin in a circle. The {{plot|wait}} &#039;&#039;&#039;(4)&#039;&#039;&#039; commands are to make sure that he does not spin so fast that you can&#039;t see it happen. &lt;br /&gt;
&lt;br /&gt;
Recompile the script, and import it into PSTUTOR.RPG. This time, when you import the .HS file, CUSTOM.EXE will tell you that it successfully imported 2 scripts, and it will show you the names &amp;quot;helloworld&amp;quot; and &amp;quot;robotdance&amp;quot; &lt;br /&gt;
&lt;br /&gt;
* Now, go back to the main menu &lt;br /&gt;
* choose &#039;&#039;&#039;Edit Map Data&#039;&#039;&#039; &lt;br /&gt;
* choose &#039;&#039;&#039;Map 00&#039;&#039;&#039; &lt;br /&gt;
* Choose &#039;&#039;&#039;Edit NPCs&#039;&#039;&#039; &lt;br /&gt;
* PSTUTIR.RPG already has an NPC 0 for you. He is the one with green feet. Choose him, and edit his properties&lt;br /&gt;
* Notice that he has a &#039;&#039;walking speed&#039;&#039; of 4 even though his &#039;&#039;movement type&#039;&#039; is &amp;quot;stand still&amp;quot;. This is because the &#039;&#039;&#039;Walk NPC&#039;&#039;&#039; command will not work on an NPC with 0 speed &lt;br /&gt;
* Change his &#039;&#039;&#039;Run Script:&#039;&#039;&#039; property from [none] to &amp;quot;robotdance&amp;quot; &lt;br /&gt;
* Press ESC twice to get out of the NPC editor &lt;br /&gt;
* Choose &#039;&#039;&#039;Place NPCs&#039;&#039;&#039; and place the green-footed robot somewhere on the platform &lt;br /&gt;
* Exit, and save your changes to PSTUTOR.RPG &lt;br /&gt;
* Run GAME.EXE, open PSTUTOR.RPG, and talk to the NPC &lt;br /&gt;
* The green footed robot should do a dance for you when you talk to him&lt;br /&gt;
&lt;br /&gt;
= Making your Script Easier to Read =&lt;br /&gt;
&lt;br /&gt;
As a script gets bigger, it can get hard to read. To make things easyer on yourself, you can add comments, indentation, and spacing to make your script look cleaner. &lt;br /&gt;
&lt;br /&gt;
Comments are notes to yourself that remind you how your script works. Comments are ignored by the compiler. Spaces are also ignored. To make a comment, just start a line with a # &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is my practice script. It is for use with PSTUTOR.RPG&lt;br /&gt;
&lt;br /&gt;
include, plotscr.hsd&lt;br /&gt;
include, pstutor.hsi&lt;br /&gt;
 &lt;br /&gt;
#-----------------------------------------------------&lt;br /&gt;
#this script makes the robot say &amp;quot;Hello World&amp;quot;&lt;br /&gt;
#and then walk three spaces north, then side-to-side&lt;br /&gt;
&lt;br /&gt;
plotscript, Hello World, begin&lt;br /&gt;
  suspend player&lt;br /&gt;
  show text box      (1)&lt;br /&gt;
  wait for text box&lt;br /&gt;
  walk hero          (me,north,3)&lt;br /&gt;
  wait for hero      (me)&lt;br /&gt;
  walk hero          (me,west,1)&lt;br /&gt;
  wait for hero      (me)&lt;br /&gt;
  walk hero          (me,east,2)&lt;br /&gt;
  wait for hero      (me)&lt;br /&gt;
  walk hero          (me,west,1)&lt;br /&gt;
  wait for hero      (me)&lt;br /&gt;
  set hero direction (me,south)&lt;br /&gt;
  resume player&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#-----------------------------------------------------&lt;br /&gt;
#This script makes an NPC do a dance&lt;br /&gt;
&lt;br /&gt;
plotscript, Robot Dance, begin&lt;br /&gt;
  suspend player&lt;br /&gt;
  walk NPC           (0,west,1)&lt;br /&gt;
  wait for NPC       (0)&lt;br /&gt;
  walk NPC           (0,east,2)&lt;br /&gt;
  wait for NPC       (0)&lt;br /&gt;
  walk NPC           (0,west,1)&lt;br /&gt;
  wait for NPC       (0)&lt;br /&gt;
  set NPC direction  (0,north)&lt;br /&gt;
  wait               (4)&lt;br /&gt;
  set NPC direction  (0,east)&lt;br /&gt;
  wait               (4)&lt;br /&gt;
  set NPC direction  (0,south)&lt;br /&gt;
  resume player&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There, now isn&#039;t that easier to look at?&lt;br /&gt;
&lt;br /&gt;
= Giving a Script Arguments =&lt;br /&gt;
&lt;br /&gt;
Arguments are a way of passing extra information to a script. You can read a full length article about script arguments at [[What is a script argument for?]]&lt;br /&gt;
&lt;br /&gt;
What if you want to be able to make several different NPCs do the NPC dance? The way we have the Robot Dance written right now, the script only works on NPC number zero. What if we want NPC 1, 2 and 3 to do the very same dance when you talk to them? Do we have to make three copies of the script and give them each new ID numbers and names? Nope. That would be way too much work. What we want to do is give the Robot Dance script an argument.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is my practice script. It is for use with PSTUTOR.RPG&lt;br /&gt;
&lt;br /&gt;
include, plotscr.hsd&lt;br /&gt;
include, pstutor.hsi&lt;br /&gt;
 &lt;br /&gt;
#-----------------------------------------------------&lt;br /&gt;
#this script makes the robot say &amp;quot;Hello World&amp;quot;&lt;br /&gt;
#and then walk three spaces north, then side-to-side&lt;br /&gt;
&lt;br /&gt;
plotscript, Hello World, begin&lt;br /&gt;
  suspend player&lt;br /&gt;
  show text box      (1)&lt;br /&gt;
  wait for text box&lt;br /&gt;
  walk hero          (me,north,3)&lt;br /&gt;
  wait for hero      (me)&lt;br /&gt;
  walk hero          (me,west,1)&lt;br /&gt;
  wait for hero      (me)&lt;br /&gt;
  walk hero          (me,east,2)&lt;br /&gt;
  wait for hero      (me)&lt;br /&gt;
  walk hero          (me,west,1)&lt;br /&gt;
  wait for hero      (me)&lt;br /&gt;
  set hero direction (me,south)&lt;br /&gt;
  resume player&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#-----------------------------------------------------&lt;br /&gt;
#This script makes an NPC do a dance&lt;br /&gt;
&lt;br /&gt;
plotscript, Robot Dance, who=0, begin&lt;br /&gt;
  suspend player&lt;br /&gt;
  walk NPC           (who,west,1)&lt;br /&gt;
  wait for NPC       (who)&lt;br /&gt;
  walk NPC           (who,east,2)&lt;br /&gt;
  wait for NPC       (who)&lt;br /&gt;
  walk NPC           (who,west,1)&lt;br /&gt;
  wait for NPC       (who)&lt;br /&gt;
  set NPC direction  (who,north)&lt;br /&gt;
  wait               (4)&lt;br /&gt;
  set NPC direction  (who,east)&lt;br /&gt;
  wait               (4)&lt;br /&gt;
  set NPC direction  (who,south)&lt;br /&gt;
  resume player&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Recompile your script, and reimport it into CUSTOM.EXE &lt;br /&gt;
* Go into the map editor and pick &#039;&#039;&#039;Map 00&#039;&#039;&#039;&lt;br /&gt;
* Go into the NPC editor, and look at the green-footed robot &lt;br /&gt;
* Right Below the name of the script that he runs, you will see a number for the &#039;&#039;Script Argument&#039;&#039;. Whatever value you put there will be used as the &#039;&#039;who&#039;&#039; argument in the script. &lt;br /&gt;
* The green-footed robot should use 0 as his argument because he is NPC number 0 &lt;br /&gt;
* Edit the second NPC, number 1. Give him the Robot Dance script, and make his argument 1 &lt;br /&gt;
* Put the new NPC on the map &lt;br /&gt;
* Exit CUSTOM.EXE and save &lt;br /&gt;
* Load PSTUROR.RPG in GAME.EXE and try out both NPCs. Even though they both use the exact same script, the argument allows that one script to do two slightly different things.&lt;br /&gt;
&lt;br /&gt;
= Other Ways to Start a Script =&lt;br /&gt;
&lt;br /&gt;
So far you know how to start a script as the &#039;&#039;&#039;New-game&#039;&#039;&#039; script for your RPG, and by talking to an NPC, but there are plenty of other ways to trigger plotscripts in your game. Here are some of the ways to start a script.&lt;br /&gt;
&lt;br /&gt;
==New-Game Script==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;Special Plotscripts&#039;&#039;&#039; in the &#039;&#039;&#039;General Game Data&#039;&#039;&#039; editor you can set the script that will be run whenever you begin a new game. This is great for telling the story, showing an intro-sequence, setting up the beginning party, and equiping your heros with their starting equipment &lt;br /&gt;
&lt;br /&gt;
==Game-Over Script==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;Special Plotscripts&#039;&#039;&#039; in the &#039;&#039;&#039;General Game Data&#039;&#039;&#039; editor you can set the &#039;&#039;&#039;Game-over&#039;&#039;&#039; script. Normally when you die in battle, the game resets back to the title screen, but if you have set a game-over script, then it will be run instead. Perhaps you want to restore the dead heros to life with the {{plot|set hero stat}} command. Perhaps you want to show &amp;quot;game over&amp;quot; picture with {{plot|show backdrop}} before reseting the game with the &#039;&#039;game over&#039;&#039; command (which can be called from ANY plotscript, not just a Game-over plotscript) Or perhaps you want to use if statements and do different things depending on the values of tags.&lt;br /&gt;
&lt;br /&gt;
==Load-Game Script==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;Special Plotscripts&#039;&#039;&#039; in the &#039;&#039;&#039;General Game Data&#039;&#039;&#039; editor you can set a script that will be run automatically whenever the player loads a savedgame. If you write your script to accept an argument, it will be filled with the slot-number that the player loaded from 0,1,2, or 3. (or -1 if you load a debugging quicksave with F3) &lt;br /&gt;
&lt;br /&gt;
==Text Box Scripts==&lt;br /&gt;
&lt;br /&gt;
In the text box editor you can select a script that will be run after the text box displays. If you edit the text box&#039;s conditionals you get a little more control over this script. You make it run conditionally depending on a tag, and you can make it run instead of the text box rather than after the text box. &lt;br /&gt;
&lt;br /&gt;
==Item Scripts==&lt;br /&gt;
&lt;br /&gt;
Although you cannot directly call a script from an item, you can call a text box from an item, and attach the script to that text box &lt;br /&gt;
&lt;br /&gt;
==NPC Scripts==&lt;br /&gt;
&lt;br /&gt;
In the NPC editor you can assign a script to be triggered by an NPC. You also have the option of assigning an argument that will be passed to that script. Also, if your script is defined to accept a second argument, it will be automatically filled with an {{plot|NPC reference}} to the NPC. &lt;br /&gt;
&lt;br /&gt;
==Vehicle Scripts==&lt;br /&gt;
&lt;br /&gt;
In the vehicle editor you can assign scipts that will be run when you mount the vehicle, when you dismount the vehicle, or when you press the use or cancel buttons &lt;br /&gt;
&lt;br /&gt;
==Inn Script==&lt;br /&gt;
&lt;br /&gt;
In the Shop Editor you can set a script that will be run when you sleep at the inn. &lt;br /&gt;
&lt;br /&gt;
==Map Autorun Script==&lt;br /&gt;
&lt;br /&gt;
In the [[General Map Data]] menu of the Map editor, you can set a script that will be run automatically whenever you enter a map. You can also assign an argument to be passed to this script &lt;br /&gt;
&lt;br /&gt;
==After-Battle Script==&lt;br /&gt;
&lt;br /&gt;
In the [[General Map Data]] menu of the Map editor, you can set a script that will be run automatically after every battle on the map. It will automatically be passed one argument with a value of &#039;&#039;&#039;true&#039;&#039;&#039; if you won the battle and &#039;&#039;&#039;false&#039;&#039;&#039; if you died or ran away or the battle ended due to a an attack with the &amp;quot;Force battle exit&amp;quot; bit. (The &amp;quot;Force victory&amp;quot; bit counts as winning, of course.)&lt;br /&gt;
&lt;br /&gt;
==Instead-of-Battle Script==&lt;br /&gt;
&lt;br /&gt;
In the [[General Map Data]] menu of the Map editor, you can set a script that will be run instead whenever a random battle would have been triggered. It automatically gets two arguments passed to it, the first is the formation number of the battle you would have fought (in case you want to go ahead and trigger the battle from your script with the {{plot|fight formation}} command), and the second argument is the number of the battle-formation-set that the random battle was chosen from. &lt;br /&gt;
&lt;br /&gt;
==Each-Step Script==&lt;br /&gt;
&lt;br /&gt;
In the [[General Map Data]] menu of the Map editor, you can set a script that gets called every single time your hero takes a step on that map. It is automatically passed three arguments, the hero&#039;s horizontal position (X), the hero&#039;s vertical position (Y), and the hero&#039;s current direction, north, south, east, or west. Since this script will get called frequently, it is a good idea not to use any {{plot|wait}} type commands in it &lt;br /&gt;
&lt;br /&gt;
==On-Keypress Script==&lt;br /&gt;
&lt;br /&gt;
In the [[General Map Data]] menu of the Map editor, you can set a script that gets run every single time the player presses a key on the map. This applies to every key on the keyboard, not just the ones that normally do something. Inside your script you can use the {{plot|key is pressed}} command to see if a key you care about has been triggered. Because holding a key down can cause this script to be rapidly and repeatedly called, don&#039;t make the script too long or you will see your game slow down. Also, be careful using {{plot|wait}} type commands in this kind of script.&lt;br /&gt;
&lt;br /&gt;
==Menu Script==&lt;br /&gt;
&lt;br /&gt;
Menu items that you define in the [[Menu:Main Menu/Edit Menus|Edit Menus]] screen can trigger scripts. The arguments to the script depend on whether the menu bitset &#039;&#039;&#039;Allow gameplay and scripts&#039;&#039;&#039; is turned on:&lt;br /&gt;
*If OFF, the menu will be gone before the script gets a chance to run, so in that case the script will get three arguments containing the &amp;quot;extra&amp;quot; data fields for the menu item. &lt;br /&gt;
*If ON, the first argument to the script will be a menu item handle for the menu item that triggered the script. Note that if you want access to the &amp;quot;extra&amp;quot; data, you should get it using the menu handle. Also note that if the menu item is set to close the menu when used, then the menu item handle is invalid and useless&lt;br /&gt;
&lt;br /&gt;
==Menu On-Close Script==&lt;br /&gt;
Menus can have a script that is run when the menu closes. It is only run when the player closes the menu, not when the menu is closed using the {{plot|close menu}} plotscript command. No arguments are passed to a menu on-close script (the menu handle would not make sense, because the menu is already gone when the script starts)&lt;br /&gt;
&lt;br /&gt;
= Learning More =&lt;br /&gt;
&lt;br /&gt;
I hope this is enough to get you started. The next step is to read the [[Plotscripting Dictionary]] commands and try out some of the commands listed there.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_is_a_script_argument_for%3F&amp;diff=28605</id>
		<title>What is a script argument for?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_is_a_script_argument_for%3F&amp;diff=28605"/>
		<updated>2013-05-08T05:18:25Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: a few small improvements, fix links, remove &amp;#039;revise&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition/What they are=&lt;br /&gt;
&lt;br /&gt;
An argument is a piece of information that a [[plotscripting|script]] or command uses.  In the vast majority of simple cases it is either a number, or a special word that stands for a number.&lt;br /&gt;
&lt;br /&gt;
Before thinking about arguments for your scripts, it may be easier to see them used in basic commands.  Simply put, there are some commands in Hamsterspeak that know what to do without any extra information.  One example would be {{plot|waitfortextbox|wait for text box}}.  This command does not need any arguments, because it always does the same thing.  On the other hand, the command {{plot|showtextbox|show text box}} is rather useless on its own.  It needs to know &#039;&#039;which&#039;&#039; text box to show, and the number of the text box you want to show is called the &#039;&#039;argument&#039;&#039;.  We put arguments in parentheses like so:&lt;br /&gt;
&lt;br /&gt;
 show text box (13)&lt;br /&gt;
&lt;br /&gt;
Here 13 is the argument for the command &amp;quot;show text box&amp;quot;.  Programmers say that they have &amp;quot;passed the argument &#039;&#039;13&#039;&#039; to the command &#039;&#039;show text box&#039;&#039;&amp;quot; in such scenarios.&lt;br /&gt;
&lt;br /&gt;
=How to use them in your own scripts=&lt;br /&gt;
&lt;br /&gt;
First of all, it should be noted that the majority of scripts that authors write will not need arguments of their own.  They may use plenty of commands that need arguments, but the scripts themselves probably won&#039;t need any.  What kind of scripts could an author write that would need their own arguments?&lt;br /&gt;
&lt;br /&gt;
Scripts only need arguments if they are going to occur in a variety of situations.  &amp;quot;Show text box&amp;quot; needs an argument because it is used in a variety of situations, each time doing something slightly different.  Imagine for a moment that we want to write our own script that makes an NPC pace, that is, it makes an NPC walk one step to the left, stop for a moment, and then walk one step to the right (for simplicity&#039;s sake, we will leave this NPC facing right after he&#039;s done pacing).  The reason this script needs an argument is that the script itself has no way of knowing &#039;&#039;which&#039;&#039; NPC is pacing, and if we want this same script to be used over and over in our game to make different NPCs pace, we need to make it use an argument.  Here is how:&lt;br /&gt;
&lt;br /&gt;
First, when we name our script, we have to give a name to our argument right away.  I&#039;m going to name the script &amp;quot;Pace NPC&amp;quot;, and I&#039;m going to name the argument &amp;quot;Who&amp;quot;, so my first line should look like:&lt;br /&gt;
&lt;br /&gt;
 plotscript, Pace NPC, Who, begin&lt;br /&gt;
&lt;br /&gt;
After the word &#039;&#039;&#039;plotscript&#039;&#039;&#039; comes the name of the script, then a comma, then the names of any arguments we&#039;re going to use separated by commas, then we use the word &amp;quot;begin&amp;quot; to signal the end of the list of arguments and the beginning of the actual script (This means you cannot name your argument &amp;quot;begin&amp;quot;!).&lt;br /&gt;
&lt;br /&gt;
In the script itself, we can use our argument names as if they are variables.  So for this example I type:&lt;br /&gt;
&lt;br /&gt;
  walk npc (Who, west, 1)&lt;br /&gt;
  wait for npc (Who)&lt;br /&gt;
  wait (12) #this is so the NPC pauses before pacing back in the other direction&lt;br /&gt;
  walk npc (Who, east, 1)&lt;br /&gt;
  wait for npc (Who)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the script above, the word &#039;&#039;&#039;Who&#039;&#039;&#039; gets replaced by the argument that is passed to this script whenever it is used.  Now to use this script, I can call it by name in any other script like so:&lt;br /&gt;
&lt;br /&gt;
 plotscript, My Other Script, begin&lt;br /&gt;
  # I&#039;m going to use this script to make NPCs 4, 5, and 12 all pace one after another.&lt;br /&gt;
  suspend npcs  #This is to make sure the NPCs don&#039;t move on their own while I&#039;m trying to make them pace&lt;br /&gt;
  Pace NPC (4)  #The 4 is the argument that will take the place of &amp;quot;Who&amp;quot; in the Pace NPC script!&lt;br /&gt;
  Pace NPC (5)&lt;br /&gt;
  Pace NPC (12)&lt;br /&gt;
  resume npcs&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=Advanced stuff=&lt;br /&gt;
&lt;br /&gt;
*More than one argument - Just as the command {{plot|walknpc|walk NPC}} needs three arguments (which NPC to walk, what direction, and how many steps), it is entirely possible to create scripts with as many arguments as desired to allow whatever flexibility is needed.&lt;br /&gt;
*Arguments automatically passed by custom - There are lots of different ways that a script can be triggered in a game.  Some of these triggering mechanisms automatically pass certain special arguments to whatever script they triggered.  A list of the various ways to call scripts, and which arguments are sent by each, can be found here: [[Script_triggers#Other_Ways_to_Start_a_Script|Other Ways To Start A Script]]&lt;br /&gt;
*Formulae, variables, and even calls to commands and scripts can be put into argument slots - Just as we can type &amp;quot;show text box (5+4)&amp;quot; to get a script to show text box number 9, we can pass all sorts of complicated junk as arguments in the parentheses of both commands and scripts as long as whatever it is that we put there boils down to a value in the end.  Mathematical operations are easy to see and understand in this regard, but things can be more complicated. For example, we could create a new NPC and cause it to pace with &amp;quot;Pace NPC (create NPC (1, 2, 3))&amp;quot; (the {{plot|createnpc|create npc}} command returns an NPC reference).&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[wikipedia:Parameter (computer science)|Wikipedia article on Arguments and Parameters]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting_Tools&amp;diff=28604</id>
		<title>Plotscripting Tools</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting_Tools&amp;diff=28604"/>
		<updated>2013-05-08T05:07:44Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: mention mac line endings problem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=The Compiler=&lt;br /&gt;
* [[HSPEAK.EXE]] Plotscript compiler, included with the [[OHRRPGCE]]&lt;br /&gt;
&lt;br /&gt;
=Editors=&lt;br /&gt;
Any text editor can be used to edit plotscripting script files, as long as it saves in plain-text format, using either Unix or DOS line endings (beware that some editors on Macs use Mac line endings by default). [[HSS]] files are just .txt files with an .hss extension. Although using a .hss extension is slightly encouraged, .txt is fine too.&lt;br /&gt;
&lt;br /&gt;
* [[Notepad++]] A general-purpose programmer&#039;s text editor for Windows that is great for plotscripting too!&lt;br /&gt;
* [http://www.barebones.com/products/textwrangler/ TextWrangler] A general-purpose programmer&#039;s text editor for Macintosh suitable for plotscripting&lt;br /&gt;
* [[Hamster Whisper]] In-progress Windows/Linux plotscript editor that aims to replace &#039;&#039;&#039;HssEd&#039;&#039;&#039;.&lt;br /&gt;
* [[Hamster Wrench]] Unfinished Windows plotscript editor that aimed to replace &#039;&#039;&#039;HssEd&#039;&#039;&#039; (dead)&lt;br /&gt;
* [[HssEd]] An old Windows plotscript editor&lt;br /&gt;
* [[Hamspeak]] Another old Windows plotscript editor.&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
* [[HS Importer]] Import scripts directly into an RPG file without opening [[CUSTOM]] (obsolete)&lt;br /&gt;
* [[HS Decompiler]] Recover script text from a compiled script (obsolete/not updated)&lt;br /&gt;
&lt;br /&gt;
=Script Libraries=&lt;br /&gt;
* [[Thirdparty Plotscripts]]&lt;br /&gt;
* [[Eressoft&#039;s Free Script Package]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Plotscripting]]&lt;br /&gt;
[[Category:Extra Tools]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting_Tools&amp;diff=28603</id>
		<title>Plotscripting Tools</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Plotscripting_Tools&amp;diff=28603"/>
		<updated>2013-05-08T05:04:07Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: Add TextWrangler and a note about editors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=The Compiler=&lt;br /&gt;
* [[HSPEAK.EXE]] Plotscript compiler, included with the [[OHRRPGCE]]&lt;br /&gt;
&lt;br /&gt;
=Editors=&lt;br /&gt;
Any text editor can be used to script plotscripting script files, as long as it saves in plain-text format. [[HSS]] files are just .txt files with an .hss extension. Although using a .hss extension is slightly encouraged, .txt is fine too.&lt;br /&gt;
&lt;br /&gt;
* [[Notepad++]] A general-purpose programmer&#039;s text editor for Windows that is great for plotscripting too!&lt;br /&gt;
* [http://www.barebones.com/products/textwrangler/ TextWrangler] A general-purpose programmer&#039;s text editor for Macintosh suitable for plotscripting&lt;br /&gt;
* [[Hamster Whisper]] In-progress Windows/Linux plotscript editor that aims to replace &#039;&#039;&#039;HssEd&#039;&#039;&#039;.&lt;br /&gt;
* [[Hamster Wrench]] Unfinished Windows plotscript editor that aimed to replace &#039;&#039;&#039;HssEd&#039;&#039;&#039; (dead)&lt;br /&gt;
* [[HssEd]] An old Windows plotscript editor&lt;br /&gt;
* [[Hamspeak]] Another old Windows plotscript editor.&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
* [[HS Importer]] Import scripts directly into an RPG file without opening [[CUSTOM]] (obsolete)&lt;br /&gt;
* [[HS Decompiler]] Recover script text from a compiled script (obsolete/not updated)&lt;br /&gt;
&lt;br /&gt;
=Script Libraries=&lt;br /&gt;
* [[Thirdparty Plotscripts]]&lt;br /&gt;
* [[Eressoft&#039;s Free Script Package]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Plotscripting]]&lt;br /&gt;
[[Category:Extra Tools]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Talk:Plotscripting_Tools&amp;diff=28602</id>
		<title>Talk:Plotscripting Tools</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Talk:Plotscripting_Tools&amp;diff=28602"/>
		<updated>2013-05-08T04:43:36Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: Notepad++ page is unreachable!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:The Mad Cacti|The Mad Cacti]] ([[User talk:The Mad Cacti|talk]]): The page at [[Notepad++]] shows up when you search for &#039;Notepad&#039;, but it seems that at some point a change to mediawiki or the webserver made it unreachable. What can we do to fix this?&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_can_I_compile_my_plotscripts_without_using_hssed.exe%3F&amp;diff=28601</id>
		<title>How can I compile my plotscripts without using hssed.exe?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_can_I_compile_my_plotscripts_without_using_hssed.exe%3F&amp;diff=28601"/>
		<updated>2013-05-08T04:38:07Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: remove &amp;#039;OHRRPGCE Internals&amp;#039; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{obsolete}}&lt;br /&gt;
HssEd is obsolete. Consider using another one of the [[Plotscripting Tools]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[HssEd]] is &#039;&#039;not&#039;&#039; required to compile [[Plotscripting|scripts]]. All you need to write a script is a text editor such as &#039;&#039;&#039;Notepad&#039;&#039;&#039;, and all you need to compile your script is [[HSPEAK]].&lt;br /&gt;
&lt;br /&gt;
=Drag and Drop=&lt;br /&gt;
&lt;br /&gt;
To compile your script, drag the script file and drop it on [[HSPEAK]]&lt;br /&gt;
&lt;br /&gt;
=DOS-style=&lt;br /&gt;
&lt;br /&gt;
You can also run HSPEAK from the command-line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hspeak yourgame.hss&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use this method, you will need to understand how to use the DOS [http://www.computerhope.com/cdhlp.htm cd] command, and you may need to know the full names of the location of your script and of hspeak, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd \ohrrpgce&lt;br /&gt;
hspeak c:\yourgame\script\yourgame.hss&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
* [http://www.computerhope.com/msdos.htm ComputerHope MS-DOS Help]&lt;br /&gt;
* [[HssEd keeps asking for HSPEAK]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_do_stats_increase_at_level_up%3F&amp;diff=28588</id>
		<title>How do stats increase at level up?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=How_do_stats_increase_at_level_up%3F&amp;diff=28588"/>
		<updated>2013-05-02T18:19:22Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: fix setherostat link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Without equipment or other interference, the value of a hero&#039;s stat at &#039;&#039;&#039;level&#039;&#039;&#039; is&lt;br /&gt;
&lt;br /&gt;
 stat = floor( (.8 + level / 50) * level * ((a99 - a0) / 275.222) + a0 + .1 )&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;&#039;a0&#039;&#039;&#039; is the value of the stat at level 0, and &#039;&#039;&#039;a99&#039;&#039;&#039; is at level 99.&lt;br /&gt;
&lt;br /&gt;
Of course, stats can vary from this formula due to equipment, use of {{plot|setherostat|set hero stat}} and out of battle use of stat increase items. So when a hero levels, the &#039;&#039;difference&#039;&#039; between the calculated stat at the previous level and the new level is found and added to the actual stat value.&lt;br /&gt;
&lt;br /&gt;
If the [[Menu:Main Menu/Edit General Game Data/Preference Bitsets#Simulate Old Levelup bug|&#039;simulate old level-up bug&#039;]] bitset is on, then the stat modification of all equipment is added on as well - so if you level up 10 times with a +2 DEF helmet, you will gain 20 DEF, plus 2 DEF with the helmet equipped.&lt;br /&gt;
&lt;br /&gt;
A stat growth graph is roughly parabolic. Here is a table of stat growth for a0 = 0, a99 = 1000:&lt;br /&gt;
&lt;br /&gt;
[[Image:Stat-growth.png|right|thumb|200px|The table of stat data in chart form]]&lt;br /&gt;
&lt;br /&gt;
 lvl 0 = 0&lt;br /&gt;
 lvl 1 = 3&lt;br /&gt;
 lvl 2 = 6&lt;br /&gt;
 lvl 3 = 9&lt;br /&gt;
 lvl 4 = 13&lt;br /&gt;
 lvl 5 = 16&lt;br /&gt;
 lvl 6 = 20&lt;br /&gt;
 lvl 7 = 24&lt;br /&gt;
 lvl 8 = 28&lt;br /&gt;
 lvl 9 = 32&lt;br /&gt;
 lvl 10 = 36&lt;br /&gt;
 lvl 11 = 41&lt;br /&gt;
 lvl 12 = 45&lt;br /&gt;
 lvl 13 = 50&lt;br /&gt;
 lvl 14 = 55&lt;br /&gt;
 lvl 15 = 60&lt;br /&gt;
 lvl 16 = 65&lt;br /&gt;
 lvl 17 = 71&lt;br /&gt;
 lvl 18 = 76&lt;br /&gt;
 lvl 19 = 82&lt;br /&gt;
 lvl 20 = 87&lt;br /&gt;
 lvl 21 = 93&lt;br /&gt;
 lvl 22 = 99&lt;br /&gt;
 lvl 23 = 105&lt;br /&gt;
 lvl 24 = 112&lt;br /&gt;
 lvl 25 = 118&lt;br /&gt;
 lvl 26 = 125&lt;br /&gt;
 lvl 27 = 132&lt;br /&gt;
 lvl 28 = 138&lt;br /&gt;
 lvl 29 = 146&lt;br /&gt;
 lvl 30 = 153&lt;br /&gt;
 lvl 31 = 160&lt;br /&gt;
 lvl 32 = 168&lt;br /&gt;
 lvl 33 = 175&lt;br /&gt;
 lvl 34 = 183&lt;br /&gt;
 lvl 35 = 191&lt;br /&gt;
 lvl 36 = 199&lt;br /&gt;
 lvl 37 = 207&lt;br /&gt;
 lvl 38 = 215&lt;br /&gt;
 lvl 39 = 224&lt;br /&gt;
 lvl 40 = 233&lt;br /&gt;
 lvl 41 = 241&lt;br /&gt;
 lvl 42 = 250&lt;br /&gt;
 lvl 43 = 259&lt;br /&gt;
 lvl 44 = 269&lt;br /&gt;
 lvl 45 = 278&lt;br /&gt;
 lvl 46 = 288&lt;br /&gt;
 lvl 47 = 297&lt;br /&gt;
 lvl 48 = 307&lt;br /&gt;
 lvl 49 = 317&lt;br /&gt;
 lvl 50 = 327&lt;br /&gt;
 lvl 51 = 337&lt;br /&gt;
 lvl 52 = 348&lt;br /&gt;
 lvl 53 = 358&lt;br /&gt;
 lvl 54 = 369&lt;br /&gt;
 lvl 55 = 380&lt;br /&gt;
 lvl 56 = 391&lt;br /&gt;
 lvl 57 = 402&lt;br /&gt;
 lvl 58 = 413&lt;br /&gt;
 lvl 59 = 425&lt;br /&gt;
 lvl 60 = 436&lt;br /&gt;
 lvl 61 = 448&lt;br /&gt;
 lvl 62 = 460&lt;br /&gt;
 lvl 63 = 472&lt;br /&gt;
 lvl 64 = 484&lt;br /&gt;
 lvl 65 = 496&lt;br /&gt;
 lvl 66 = 508&lt;br /&gt;
 lvl 67 = 521&lt;br /&gt;
 lvl 68 = 534&lt;br /&gt;
 lvl 69 = 547&lt;br /&gt;
 lvl 70 = 560&lt;br /&gt;
 lvl 71 = 573&lt;br /&gt;
 lvl 72 = 586&lt;br /&gt;
 lvl 73 = 600&lt;br /&gt;
 lvl 74 = 613&lt;br /&gt;
 lvl 75 = 627&lt;br /&gt;
 lvl 76 = 641&lt;br /&gt;
 lvl 77 = 655&lt;br /&gt;
 lvl 78 = 669&lt;br /&gt;
 lvl 79 = 683&lt;br /&gt;
 lvl 80 = 698&lt;br /&gt;
 lvl 81 = 712&lt;br /&gt;
 lvl 82 = 727&lt;br /&gt;
 lvl 83 = 742&lt;br /&gt;
 lvl 84 = 757&lt;br /&gt;
 lvl 85 = 772&lt;br /&gt;
 lvl 86 = 788&lt;br /&gt;
 lvl 87 = 803&lt;br /&gt;
 lvl 88 = 819&lt;br /&gt;
 lvl 89 = 834&lt;br /&gt;
 lvl 90 = 850&lt;br /&gt;
 lvl 91 = 866&lt;br /&gt;
 lvl 92 = 883&lt;br /&gt;
 lvl 93 = 899&lt;br /&gt;
 lvl 94 = 915&lt;br /&gt;
 lvl 95 = 932&lt;br /&gt;
 lvl 96 = 949&lt;br /&gt;
 lvl 97 = 966&lt;br /&gt;
 lvl 98 = 983&lt;br /&gt;
 lvl 99 = 1000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Menu:Main Menu/Edit Hero Stats/Edit Stats|Edit Hero Stats Menu]]&lt;br /&gt;
* [[What do each of the stats (HP, MP, etc...) do?]]&lt;br /&gt;
* [[What is the formula for how much experience it takes for a levelup?]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;br /&gt;
[[Category:Heroes]]&lt;br /&gt;
[[Category:OHRRPGCE Internals]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Talk:Stun,_Regen,_Poison,_and_Mute&amp;diff=28585</id>
		<title>Talk:Stun, Regen, Poison, and Mute</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Talk:Stun,_Regen,_Poison,_and_Mute&amp;diff=28585"/>
		<updated>2013-05-01T14:32:42Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: turn based battles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;raekuul&#039;&#039;&#039;: We need to combine these into one, comprehensive grouping.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bob&#039;&#039;&#039;: This needs to be reformatted as a step-by-step list of instructions on how to create an example attack of each kind.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yoshiboy:&#039;&#039;&#039; I&#039;ve finished! Ha! Well, is it ready to be a HOWTO Chapter? What needs to be done? If it&#039;s ready, where will it be inserted in the chapters?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mystic:&#039;&#039;&#039; Why the (not very accurate, being as pokemon isn&#039;t real time) pokemon references?&lt;br /&gt;
&lt;br /&gt;
[[User:Bob the Hamster|Bob the Hamster]]: I dunno. I guess the author of this article just thought that the Pokemon references would be more recognizable. A comparison to FF4 or FF6 would have probably been my choice, but I doesn&#039;t make a big difference to me.&lt;br /&gt;
&lt;br /&gt;
== TBB usages? ==&lt;br /&gt;
&lt;br /&gt;
How will these be handled in the turn-based system?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMC:&#039;&#039;&#039; have a look at [[Turn-based battles compared to Active-time battles]].&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Stun,_Regen,_Poison,_and_Mute&amp;diff=28584</id>
		<title>Stun, Regen, Poison, and Mute</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Stun,_Regen,_Poison,_and_Mute&amp;diff=28584"/>
		<updated>2013-05-01T14:32:14Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using the OHRRPGCE it is possible to create many of status effects which are in almost every RPG. The ones that are available in the OHRRPGCE are Poison, Stun, Regen and Mute. They are easy to use and add more strategic elements to a game. Also note that all status effects do not continue after ending a battle.&lt;br /&gt;
&lt;br /&gt;
Remember, the suggestions here are just suggestions. Mix around with status effects to create your own spiffy attacks!&lt;br /&gt;
&lt;br /&gt;
Status effects behave a little differently whether you are using the &#039;&#039;Active-time&#039;&#039; or &#039;&#039;Turn-based&#039;&#039; battle modes. Though explained below, [[Turn-based battles compared to Active-time battles]] explains the difference briefly.&lt;br /&gt;
&lt;br /&gt;
== Poison ==&lt;br /&gt;
This is very obvious; almost every RPG has some form of Poison, though for the sake of the HOWTO I&#039;ll explain it anyways. Poison is a status effect that will slowly decrease the HP stat. Poison could also be called sickness or other things.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; To poison an enemy, go to the &amp;quot;Damage Settings&amp;quot; of the selected attack, and set the &amp;quot;Target Stat&amp;quot; to &amp;quot;Poison Register.&amp;quot; This means that the amount of damage done to this register (counter-intuitively, the amount it is &#039;&#039;decreased&#039;&#039;) will be slowly repeated (with some randomisation) over and over until the enemy (or hero) dies. How often it is done depends on the battle mode:&lt;br /&gt;
* Active-time battles: repetition time depends on the hero&#039;s or enemy&#039;s speed stat: faster enemies take damage more often. Whichever is more frequent: either every 1.5 turns, or every 8 seconds.&lt;br /&gt;
* Turn-based battles: at the end of each turn.&lt;br /&gt;
&lt;br /&gt;
If another attack is used that poisons the enemy, then the damage repeated will increase. Be careful of how you use poison, because it can pile up and cause large amounts of damage at a time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Curing Poison:&#039;&#039;&#039; To cure Poison, you must use an attack. To cure poison, make an attack that cures (&#039;&#039;increases&#039;&#039;) the poison register, or one that sets the poison register to 100% of its maximum. &#039;&#039;This may be confusing to you. Setting the poison register to 0% might seem more logical, but in fact that will make the target really really really severely poisoned. Remember: Poison damage = Max Poison Register - Current Poison Register&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Poisonheal.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suggestions:&#039;&#039;&#039; When using Poison, I recommend you set the &amp;quot;Damage Math&amp;quot; to pure damage, then the &amp;quot;Base Atk Stat&amp;quot; to 100. Then, go to &amp;quot;Extra Damage&amp;quot; and set the percent into the minus (by pressing LEFT on the keyboard). Depending on the amount you put into the minus in the &amp;quot;Extra Damage&amp;quot; will be taken off from the 100, in &amp;quot;Base Atk Stat.&amp;quot; So if you want the attack to take roughly 20HP from the enemy each time, set the &amp;quot;Extra Damage&amp;quot; to -80%. You might also want to turn on the &amp;quot;Do not randomize&amp;quot; damage bitset.&lt;br /&gt;
&lt;br /&gt;
[[Image:Poison.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can use the &amp;quot;Fail if Target is Poisoned&amp;quot; attack bitset to stop the poison being inflicted to keep growing each time the enemy is hit, or alternatively use the &amp;quot;Reset target stat to max before hit&amp;quot; damage bitset.&lt;br /&gt;
&lt;br /&gt;
== Stun ==&lt;br /&gt;
Stun is somewhat like &amp;quot;Sleep&amp;quot; from Pokemon. Stun will freeze the ready bar where it is, stopping the target from attacking. This could also be considered a Paralyze Attack, a Sleep Attack, or a Freeze Attack. The idea is that it stops the target from moving. Be careful how long stun will last, and how frequently it will be used when being cast from an enemy. Getting hit by Stun continuously when you only have a few heroes can make a battle very boring and difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; Using Stun is just like using any status effecting attack. Set the Target Stat of an enemy to &amp;quot;Stun Register.&amp;quot; When the target is hit with a Stun attack, the damage done to the enemy will be how many seconds (yes not ticks!) the target will wait before being able to attack again. Remember, like other status effects, Stun can pile up if used repetitively. So be sure to not make the damage too high. Expect the brainless enemies to use the attack multiple times. Another way to stop the annoyingness, is to set the &amp;quot;Fail if target is Stunned&amp;quot; bitset on so that it won&#039;t repeat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suggestions:&#039;&#039;&#039; Like I mentioned in Poison, use the 100 Stat, and Pure Damage, to ensure that the same amount of controlled damage is sent every time. This time though, you can try using the &amp;quot;Do Not Randomize&amp;quot; Bitset.&lt;br /&gt;
&lt;br /&gt;
== Regen ==&lt;br /&gt;
Regen is short for Regenerate. This is one of the less obvious status effects. Regen, works the same way as poison, but it does the opposite thing. It &#039;&#039;cures&#039;&#039; the target repetitively. This is usually used on allies, you don&#039;t want to heal an enemy. There is no symbol that goes in the ready bar for regen, so a caption box would do nicely to show that the target is regenerating.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; You now already know how to use status effects, this time just set the Target Stat to, &amp;quot;Regen Register.&amp;quot; If someone is using Regen it&#039;s usually on a friend, so be sure to set the target as &amp;quot;Ally.&amp;quot; During the battle, the damage done to this register will repeat ceaselessly. It&#039;s a pretty good deal, having some extra HP every so-and-so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Curing Regen:&#039;&#039;&#039; By curing Regen, I mean stopping regen. Regen does not wear off automatically over time. Regen is a good thing, and no body would want to stop it, but you might want to stop your enemies from regenerating. Stopping regen would be done the same way Poison is cured. When using this &amp;quot;Stop Regen&amp;quot; attack, set the target to enemy, because no body would want to use it on a friend. The easiest way to make an attack that cancels regen is to make an attack that targets the regen register and sets it to 0% (&#039;&#039;&#039;[[User:Pkmnfrk|Mike C.]]: Or, should you set it to 100%?&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suggestions:&#039;&#039;&#039; Try to use Regen at low numbers if you are allowing pile-ups. Having extra HP every now and then is a big boost. If repeated really high numbers, it would make the hero or enemy become unstoppable. Since Regen is such a good thing, make MP for it high. Or better yet, make it an item, a &#039;&#039;rare&#039;&#039; item, the kind people save for boss battles.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget pile-ups. If you don&#039;t want to allow them, the set the, &amp;quot;Fail if Target is Regenerating&amp;quot; Bitset on.&lt;br /&gt;
&lt;br /&gt;
== Mute ==&lt;br /&gt;
Mute is an interesting power, somewhat like &amp;quot;Disable&amp;quot; from Pokemon. Mute stops the target from using certain attacks, which are marked by an attack bitset, &#039;&#039;&#039;Mutable&#039;&#039;&#039;. Like stun, it lasts for a certain amount of time, tracked internally with a counter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; Creating a mute attack is as simple as eating cheese. Like the other status effects, set the Target Stat to &amp;quot;Mute Register.&amp;quot; Each point of Damage done to this register will be taken away after each tick. So if you do 100 damage, it will be a 100 ticks until you are cured of mute. When muted, the target will not be able to use certian attacks. You have to choose which attacks are not available when you are muted. Go into the attacks you want to be unavailable, and select &amp;quot;Muteable&amp;quot; under the bitset menu.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suggestions:&#039;&#039;&#039; When using mute, notice it is in ticks, not seconds like stun is. Mute isn&#039;t as powerful as stun is, so it would be best to make it last longer.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t make all the attacks &amp;quot;Muteable&amp;quot; or the effect will be just like stun. Just make the special attacks muteable. Try to make it so that every hero and enemy has at least one attack that can&#039;t be muted. The original idea behind mute was that magical attacks can be muted (since you need to chant a spell), while physical attacks could not (you don&#039;t need to talk to run someone through with a sword).&lt;br /&gt;
&lt;br /&gt;
== Status Ideas ==&lt;br /&gt;
Here are some multiple usages for statuses, if you have any you would like to share, than please add them to this list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Captions:&#039;&#039;&#039; It&#039;s good to add captions when using a status effecting attack. The user may not be entirely aware when a enemy attacks with a status attack. The user my get frustrated, and wonders why he&#039;s losing so much HP with poison, or why the ready bar is stuck when they are stunned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Status Identifiers:&#039;&#039;&#039; Just so you know that your hero is Poisoned, Stunned, or Muted (but not Regenerating!), there are symbols that will appear in the Health Bar, you can set these in &amp;quot;General Game Data.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Image:Identifiers.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Doesn&#039;t Work with certain Status Effect:&#039;&#039;&#039; You can make it so that certain attacks don&#039;t work when YOU are inflicted with a certain status effect then try this...&lt;br /&gt;
&lt;br /&gt;
* Lets say, you don&#039;t want to be able to &amp;quot;&#039;&#039;Super Attack&#039;&#039;&amp;quot; when your poisoned. &lt;br /&gt;
* Make the attack called &amp;quot;&#039;&#039;Super Attack&#039;&#039;&amp;quot; but make it have no appearance or damage. &lt;br /&gt;
* Set the bitset, &amp;quot;Fail if Target is Poisoned&amp;quot; on, and set the &amp;quot;Target Class&amp;quot;, to Self.&lt;br /&gt;
* Then make the real attack (Lets call it, &amp;quot;&#039;&#039;Super Attack Chain&#039;&#039;&amp;quot;) with the Damage, Appearance, and everything else to the way you want.&lt;br /&gt;
* The go back to &amp;quot;&#039;&#039;Super Attack&#039;&#039;&amp;quot; and make it chain to &amp;quot;&#039;&#039;Super Attack Chain&#039;&#039;&amp;quot; and set the Chain Rate to 100%. &lt;br /&gt;
*Make sure you give the hero the &amp;quot;&#039;&#039;Super Attack&#039;&#039;&amp;quot; and not &amp;quot;&#039;&#039;Super Attack Chain&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Side Effects:&#039;&#039;&#039; You can make attacks have status effecting side effects. Just make your attack, chain to an attack, that inflicts a status effect. If you want, make the chain rate NOT 100% so that these extra effects are rare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Perspectives ==&lt;br /&gt;
&#039;&#039;Here are other&#039;s advice for using status effects!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Raekuul:&#039;&#039;&#039;&lt;br /&gt;
It&#039;s fun to toy with these!&lt;br /&gt;
&lt;br /&gt;
Poison - Slowly saps the target stat. To do this, put your target stat as &amp;quot;Poison Register&amp;quot; on the attack menu.&lt;br /&gt;
&lt;br /&gt;
Regen - Reverse of Poison. Short for Regenerative.&lt;br /&gt;
&lt;br /&gt;
Stun - Stops the target from attacking until a time (determined by the *damage*) expires.&lt;br /&gt;
&lt;br /&gt;
Stun and Regen work best with the &amp;quot;Do not display damage&amp;quot; bitset. Also, I&#039;m not sure what a poison/regen one would do if the &amp;quot;Absorb damage&amp;quot; bitset is on... someone get back to me on that...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H-Bomb:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Poison and Stun - &lt;br /&gt;
&lt;br /&gt;
Because Players can be re-poisoned, which heightens the amount of damage taken, I prefer to make individual attacks for Poison and stun, and chain them to another &amp;quot;real&amp;quot; attack, which will have this effect, and set the probability of chaining to 50% or less. Create a graphic by spelling &amp;quot;poison&amp;quot; or &amp;quot;stun&amp;quot; and making it flash different colors for effect if you want. The word will have to be reversed to appear correctly (due to the enemies facing the opposite way as the characters do). For attacker animation, select &amp;quot;null&amp;quot; and then link the poison or stun to the attack which you want to have this effect.&lt;br /&gt;
&lt;br /&gt;
Regen - &lt;br /&gt;
&lt;br /&gt;
Damage math: regen register = 99% of current&lt;br /&gt;
Base ATK stat: Attack&lt;br /&gt;
Base DEF Stat: default&lt;br /&gt;
Target stat: Regen Register&lt;br /&gt;
Extra Damage%: -1&lt;br /&gt;
Aim Math: Never Misses&lt;br /&gt;
Extra Hits: 1&lt;br /&gt;
Delay Before Attack: 0 &lt;br /&gt;
&lt;br /&gt;
The Regen will be based on your attack stats, the extra damage bitset&lt;br /&gt;
is backwards, -1% will regenerate small chunks of life at a time, as where -80% would generate hundreds of hitpoints at a time (depending on attack strength) You will obviously need to select cure instead of harm, and set the attack to target Ally, and link it to an attack, item, or spell.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dr. Baconman:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Stopping Poison, Regen, or Stun &amp;quot;Pileups&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The normal thing that happens when you set Poison, Regen, or Stun to a specific number for damage is that the damage is added to the total every time.&lt;br /&gt;
For example, a Poison attack that deals 20 points of damage each turn is inflicted upon you. The enemy repeats the same attack, adding 20 more points of damage, so you take 40 damage because the attack was repeated. If that were to happen over, say, 10 turns, the damage would pile up to a whopping 240 points each turn.&lt;br /&gt;
&lt;br /&gt;
To stop this from happening, be sure to set the Damage to a Percent of the striker&#039;s Atk or Mag, or a Percent of the target&#039;s HP. Since percents aren&#039;t added together in the [[CUSTOM]] program, you won&#039;t have to worry about Poison, Stun, or Regen being repeated to outrageous numbers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Platypus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Special Effects:&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to stick with these basic effects.  Poison, Regen, Stun, and Mute can be inter-combined  to make effects like Continuous Drain (Poison on an enemy &amp;amp; Regen on yourself), though there are complications involved with speed differences and Poison-eliminating attacks and such.&lt;br /&gt;
&lt;br /&gt;
You can also use Mute to stop a specific class of attacks, but call it something else.  I personally like to stop Cure attacks, so I made those Mutable and made the Muting attack &amp;quot;Lumina Lock&amp;quot; to prevent foes from healing themselves, additionally attaching an attack that resets Regen to max before doing no damage.  But it&#039;s really up to taste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{HOWTO}}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How do I make a poisoning or stunning attack?]]&lt;br /&gt;
* [[What does the &#039;mute&#039; attack option do?]]&lt;br /&gt;
* [[Battles]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Battles]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Stun,_Regen,_Poison,_and_Mute&amp;diff=28583</id>
		<title>Stun, Regen, Poison, and Mute</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Stun,_Regen,_Poison,_and_Mute&amp;diff=28583"/>
		<updated>2013-05-01T13:51:21Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: start updating article for turn based battles, and improve writing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using the OHRRPGCE it is possible to create many of status effects which are in almost every RPG. The ones that are available in the OHRRPGCE are Poison, Stun, Regen and Mute. They are easy to use and add more strategic elements to a game. Also note that all status effects do not continue after ending a battle.&lt;br /&gt;
&lt;br /&gt;
Remember, the suggestions here are just suggestions. Mix around with status effects to create your own spiffy attacks!&lt;br /&gt;
&lt;br /&gt;
Status effects behave a little differently whether you are using the &#039;&#039;Active-time&#039;&#039; or &#039;&#039;Turn-based&#039;&#039; battle modes. Though explained below, &#039;&#039;&#039;Turn-based battles compared to Active-time battles&#039;&#039;&#039; explains the difference briefly.&lt;br /&gt;
&lt;br /&gt;
== Poison ==&lt;br /&gt;
This is very obvious; almost every RPG has some form of Poison, though for the sake of the HOWTO I&#039;ll explain it anyways. Poison is a status effect that will slowly decrease the HP stat. Poison could also be called sickness or other things.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; To poison an enemy, go to the &amp;quot;Damage Settings&amp;quot; of the selected attack, and set the &amp;quot;Target Stat&amp;quot; to &amp;quot;Poison Register.&amp;quot; This means that the amount of damage done to this register (counter-intuitively, the amount it is &#039;&#039;decreased&#039;&#039;) will be slowly repeated (with some randomisation) over and over until the enemy (or hero) dies. How often it is done depends on the battle mode:&lt;br /&gt;
* Active-time battles: repetition time depends on the hero&#039;s or enemy&#039;s speed stat: faster enemies take damage more often. Whichever is more frequent: either every 1.5 turns, or every 8 seconds.&lt;br /&gt;
* Turn-based battles: at the end of each turn.&lt;br /&gt;
&lt;br /&gt;
If another attack is used that poisons the enemy, then the damage repeated will increase. Be careful of how you use poison, because it can pile up and cause large amounts of damage at a time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Curing Poison:&#039;&#039;&#039; To cure Poison, you must use an attack. To cure poison, make an attack that cures (&#039;&#039;increases&#039;&#039;) the poison register, or one that sets the poison register to 100% of its maximum. &#039;&#039;This may be confusing to you. Setting the poison register to 0% might seem more logical, but in fact that will make the target really really really severely poisoned. Remember: Poison damage = Max Poison Register - Current Poison Register&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Poisonheal.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suggestions:&#039;&#039;&#039; When using Poison, I recommend you set the &amp;quot;Damage Math&amp;quot; to pure damage, then the &amp;quot;Base Atk Stat&amp;quot; to 100. Then, go to &amp;quot;Extra Damage&amp;quot; and set the percent into the minus (by pressing LEFT on the keyboard). Depending on the amount you put into the minus in the &amp;quot;Extra Damage&amp;quot; will be taken off from the 100, in &amp;quot;Base Atk Stat.&amp;quot; So if you want the attack to take roughly 20HP from the enemy each time, set the &amp;quot;Extra Damage&amp;quot; to -80%. You might also want to turn on the &amp;quot;Do not randomize&amp;quot; damage bitset.&lt;br /&gt;
&lt;br /&gt;
[[Image:Poison.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can use the &amp;quot;Fail if Target is Poisoned&amp;quot; attack bitset to stop the poison being inflicted to keep growing each time the enemy is hit, or alternatively use the &amp;quot;Reset target stat to max before hit&amp;quot; damage bitset.&lt;br /&gt;
&lt;br /&gt;
== Stun ==&lt;br /&gt;
Stun is somewhat like &amp;quot;Sleep&amp;quot; from Pokemon. Stun will freeze the ready bar where it is, stopping the target from attacking. This could also be considered a Paralyze Attack, a Sleep Attack, or a Freeze Attack. The idea is that it stops the target from moving. Be careful how long stun will last, and how frequently it will be used when being cast from an enemy. Getting hit by Stun continuously when you only have a few heroes can make a battle very boring and difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; Using Stun is just like using any status effecting attack. Set the Target Stat of an enemy to &amp;quot;Stun Register.&amp;quot; When the target is hit with a Stun attack, the damage done to the enemy will be how many seconds (yes not ticks!) the target will wait before being able to attack again. Remember, like other status effects, Stun can pile up if used repetitively. So be sure to not make the damage too high. Expect the brainless enemies to use the attack multiple times. Another way to stop the annoyingness, is to set the &amp;quot;Fail if target is Stunned&amp;quot; bitset on so that it won&#039;t repeat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suggestions:&#039;&#039;&#039; Like I mentioned in Poison, use the 100 Stat, and Pure Damage, to ensure that the same amount of controlled damage is sent every time. This time though, you can try using the &amp;quot;Do Not Randomize&amp;quot; Bitset.&lt;br /&gt;
&lt;br /&gt;
== Regen ==&lt;br /&gt;
Regen is short for Regenerate. This is one of the less obvious status effects. Regen, works the same way as poison, but it does the opposite thing. It &#039;&#039;cures&#039;&#039; the target repetitively. This is usually used on allies, you don&#039;t want to heal an enemy. There is no symbol that goes in the ready bar for regen, so a caption box would do nicely to show that the target is regenerating.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; You now already know how to use status effects, this time just set the Target Stat to, &amp;quot;Regen Register.&amp;quot; If someone is using Regen it&#039;s usually on a friend, so be sure to set the target as &amp;quot;Ally.&amp;quot; During the battle, the damage done to this register will repeat ceaselessly. It&#039;s a pretty good deal, having some extra HP every so-and-so.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Curing Regen:&#039;&#039;&#039; By curing Regen, I mean stopping regen. Regen does not wear off automatically over time. Regen is a good thing, and no body would want to stop it, but you might want to stop your enemies from regenerating. Stopping regen would be done the same way Poison is cured. When using this &amp;quot;Stop Regen&amp;quot; attack, set the target to enemy, because no body would want to use it on a friend. The easiest way to make an attack that cancels regen is to make an attack that targets the regen register and sets it to 0% (&#039;&#039;&#039;[[User:Pkmnfrk|Mike C.]]: Or, should you set it to 100%?&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suggestions:&#039;&#039;&#039; Try to use Regen at low numbers if you are allowing pile-ups. Having extra HP every now and then is a big boost. If repeated really high numbers, it would make the hero or enemy become unstoppable. Since Regen is such a good thing, make MP for it high. Or better yet, make it an item, a &#039;&#039;rare&#039;&#039; item, the kind people save for boss battles.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget pile-ups. If you don&#039;t want to allow them, the set the, &amp;quot;Fail if Target is Regenerating&amp;quot; Bitset on.&lt;br /&gt;
&lt;br /&gt;
== Mute ==&lt;br /&gt;
Mute is an interesting power, somewhat like &amp;quot;Disable&amp;quot; from Pokemon. Mute stops the target from using certain attacks, which are marked by an attack bitset, &#039;&#039;&#039;Mutable&#039;&#039;&#039;. Like stun, it lasts for a certain amount of time, tracked internally with a counter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; Creating a mute attack is as simple as eating cheese. Like the other status effects, set the Target Stat to &amp;quot;Mute Register.&amp;quot; Each point of Damage done to this register will be taken away after each tick. So if you do 100 damage, it will be a 100 ticks until you are cured of mute. When muted, the target will not be able to use certian attacks. You have to choose which attacks are not available when you are muted. Go into the attacks you want to be unavailable, and select &amp;quot;Muteable&amp;quot; under the bitset menu.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suggestions:&#039;&#039;&#039; When using mute, notice it is in ticks, not seconds like stun is. Mute isn&#039;t as powerful as stun is, so it would be best to make it last longer.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t make all the attacks &amp;quot;Muteable&amp;quot; or the effect will be just like stun. Just make the special attacks muteable. Try to make it so that every hero and enemy has at least one attack that can&#039;t be muted. The original idea behind mute was that magical attacks can be muted (since you need to chant a spell), while physical attacks could not (you don&#039;t need to talk to run someone through with a sword).&lt;br /&gt;
&lt;br /&gt;
== Status Ideas ==&lt;br /&gt;
Here are some multiple usages for statuses, if you have any you would like to share, than please add them to this list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Captions:&#039;&#039;&#039; It&#039;s good to add captions when using a status effecting attack. The user may not be entirely aware when a enemy attacks with a status attack. The user my get frustrated, and wonders why he&#039;s losing so much HP with poison, or why the ready bar is stuck when they are stunned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Status Identifiers:&#039;&#039;&#039; Just so you know that your hero is Poisoned, Stunned, or Muted (but not Regenerating!), there are symbols that will appear in the Health Bar, you can set these in &amp;quot;General Game Data.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Image:Identifiers.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Doesn&#039;t Work with certain Status Effect:&#039;&#039;&#039; You can make it so that certain attacks don&#039;t work when YOU are inflicted with a certain status effect then try this...&lt;br /&gt;
&lt;br /&gt;
* Lets say, you don&#039;t want to be able to &amp;quot;&#039;&#039;Super Attack&#039;&#039;&amp;quot; when your poisoned. &lt;br /&gt;
* Make the attack called &amp;quot;&#039;&#039;Super Attack&#039;&#039;&amp;quot; but make it have no appearance or damage. &lt;br /&gt;
* Set the bitset, &amp;quot;Fail if Target is Poisoned&amp;quot; on, and set the &amp;quot;Target Class&amp;quot;, to Self.&lt;br /&gt;
* Then make the real attack (Lets call it, &amp;quot;&#039;&#039;Super Attack Chain&#039;&#039;&amp;quot;) with the Damage, Appearance, and everything else to the way you want.&lt;br /&gt;
* The go back to &amp;quot;&#039;&#039;Super Attack&#039;&#039;&amp;quot; and make it chain to &amp;quot;&#039;&#039;Super Attack Chain&#039;&#039;&amp;quot; and set the Chain Rate to 100%. &lt;br /&gt;
*Make sure you give the hero the &amp;quot;&#039;&#039;Super Attack&#039;&#039;&amp;quot; and not &amp;quot;&#039;&#039;Super Attack Chain&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Side Effects:&#039;&#039;&#039; You can make attacks have status effecting side effects. Just make your attack, chain to an attack, that inflicts a status effect. If you want, make the chain rate NOT 100% so that these extra effects are rare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Perspectives ==&lt;br /&gt;
&#039;&#039;Here are other&#039;s advice for using status effects!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Raekuul:&#039;&#039;&#039;&lt;br /&gt;
It&#039;s fun to toy with these!&lt;br /&gt;
&lt;br /&gt;
Poison - Slowly saps the target stat. To do this, put your target stat as &amp;quot;Poison Register&amp;quot; on the attack menu.&lt;br /&gt;
&lt;br /&gt;
Regen - Reverse of Poison. Short for Regenerative.&lt;br /&gt;
&lt;br /&gt;
Stun - Stops the target from attacking until a time (determined by the *damage*) expires.&lt;br /&gt;
&lt;br /&gt;
Stun and Regen work best with the &amp;quot;Do not display damage&amp;quot; bitset. Also, I&#039;m not sure what a poison/regen one would do if the &amp;quot;Absorb damage&amp;quot; bitset is on... someone get back to me on that...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H-Bomb:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Poison and Stun - &lt;br /&gt;
&lt;br /&gt;
Because Players can be re-poisoned, which heightens the amount of damage taken, I prefer to make individual attacks for Poison and stun, and chain them to another &amp;quot;real&amp;quot; attack, which will have this effect, and set the probability of chaining to 50% or less. Create a graphic by spelling &amp;quot;poison&amp;quot; or &amp;quot;stun&amp;quot; and making it flash different colors for effect if you want. The word will have to be reversed to appear correctly (due to the enemies facing the opposite way as the characters do). For attacker animation, select &amp;quot;null&amp;quot; and then link the poison or stun to the attack which you want to have this effect.&lt;br /&gt;
&lt;br /&gt;
Regen - &lt;br /&gt;
&lt;br /&gt;
Damage math: regen register = 99% of current&lt;br /&gt;
Base ATK stat: Attack&lt;br /&gt;
Base DEF Stat: default&lt;br /&gt;
Target stat: Regen Register&lt;br /&gt;
Extra Damage%: -1&lt;br /&gt;
Aim Math: Never Misses&lt;br /&gt;
Extra Hits: 1&lt;br /&gt;
Delay Before Attack: 0 &lt;br /&gt;
&lt;br /&gt;
The Regen will be based on your attack stats, the extra damage bitset&lt;br /&gt;
is backwards, -1% will regenerate small chunks of life at a time, as where -80% would generate hundreds of hitpoints at a time (depending on attack strength) You will obviously need to select cure instead of harm, and set the attack to target Ally, and link it to an attack, item, or spell.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dr. Baconman:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Stopping Poison, Regen, or Stun &amp;quot;Pileups&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The normal thing that happens when you set Poison, Regen, or Stun to a specific number for damage is that the damage is added to the total every time.&lt;br /&gt;
For example, a Poison attack that deals 20 points of damage each turn is inflicted upon you. The enemy repeats the same attack, adding 20 more points of damage, so you take 40 damage because the attack was repeated. If that were to happen over, say, 10 turns, the damage would pile up to a whopping 240 points each turn.&lt;br /&gt;
&lt;br /&gt;
To stop this from happening, be sure to set the Damage to a Percent of the striker&#039;s Atk or Mag, or a Percent of the target&#039;s HP. Since percents aren&#039;t added together in the [[CUSTOM]] program, you won&#039;t have to worry about Poison, Stun, or Regen being repeated to outrageous numbers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Platypus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Special Effects:&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to stick with these basic effects.  Poison, Regen, Stun, and Mute can be inter-combined  to make effects like Continuous Drain (Poison on an enemy &amp;amp; Regen on yourself), though there are complications involved with speed differences and Poison-eliminating attacks and such.&lt;br /&gt;
&lt;br /&gt;
You can also use Mute to stop a specific class of attacks, but call it something else.  I personally like to stop Cure attacks, so I made those Mutable and made the Muting attack &amp;quot;Lumina Lock&amp;quot; to prevent foes from healing themselves, additionally attaching an attack that resets Regen to max before doing no damage.  But it&#039;s really up to taste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{HOWTO}}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How do I make a poisoning or stunning attack?]]&lt;br /&gt;
* [[What does the &#039;mute&#039; attack option do?]]&lt;br /&gt;
* [[Battles]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Battles]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Turn-based_battles_compared_to_Active-time_battles&amp;diff=28582</id>
		<title>Turn-based battles compared to Active-time battles</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Turn-based_battles_compared_to_Active-time_battles&amp;diff=28582"/>
		<updated>2013-05-01T07:01:13Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: correct desciption of active-time regen/posion rate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OHRRPGCE supports two battle system modes.&lt;br /&gt;
&lt;br /&gt;
=Active-time=&lt;br /&gt;
&lt;br /&gt;
This is the default battle mode. The OHRRPGCE has always supported this mode. Each hero and enemy takes turns at their own pace, choosing attacks whenever their ready-meter fills up. This is similar to the battle system used in Final Fantasy 4, 5, 6, 7 and 8. Active time mode has general bitsets that control whether or not battle time pauses when you are using menus.&lt;br /&gt;
&lt;br /&gt;
=Turn-based=&lt;br /&gt;
&lt;br /&gt;
This is a new battle mode, added in the [[Beelzebufo]] release. In turn-based mode, all heroes and enemies choose their attacks at the beginning of a turn, then they all perform their attacks in an order determined by their speed stats, and then the next turn begins. This is similar to the battle system used by Final Fantasy 1, 2, 3, the Dragon Quest/Dragon Warrior series, Pokemon, and almost all other traditional console RPG games.&lt;br /&gt;
&lt;br /&gt;
=Choosing Battle Modes=&lt;br /&gt;
&lt;br /&gt;
Choose battle modes in the &#039;&#039;&#039;&amp;quot;Battle System Options&amp;quot;&#039;&#039;&#039; submenu under &#039;&#039;&#039;&amp;quot;Edit General Game Data&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Converting an Active-time game to Turn-based=&lt;br /&gt;
&lt;br /&gt;
If you are changing an existing game from Active-time to Turn-based (or vice-versa) you need to pay attention to a few important details.&lt;br /&gt;
&lt;br /&gt;
==Speed balance==&lt;br /&gt;
In turn-based mode, a very high speed stat is not such a big advantage. it just means attacking first, not attacking more often. In the same way, a very low speed stat is no longer a big disadvantage. it just means attacking last, rather than attacking less often.&lt;br /&gt;
&lt;br /&gt;
==Delays==&lt;br /&gt;
In Active-time mode, small variations in attack delay have almost no consequence. Only large attack delays really are really important.&lt;br /&gt;
&lt;br /&gt;
In turn-based mode, a 1 tick delay can cause the attack to be performed later, after the next slowest hero or enemy. Very large attack delays should be avoided in turn-based mode because the turn cannot end until all characters have finished their attack.&lt;br /&gt;
&lt;br /&gt;
==Endless Loops==&lt;br /&gt;
If you make an endless loop of chained attacks or counterattacks in active-time mode, only the hero or enemy involved in the loop will be stuck. All other heroes and enemies can continue to fight.&lt;br /&gt;
&lt;br /&gt;
An endless loop in turn-based mode really will be endless.&lt;br /&gt;
&lt;br /&gt;
==Stun and Mute==&lt;br /&gt;
In Active-time mode, damage to the stun and mute registers is measured in seconds. 10 damage to stun will cause the target to be stunned for 10 seconds.&lt;br /&gt;
&lt;br /&gt;
In Turn-based mode, damage to stun and mute registers is measured in turns. 10 damage to stun will cause the target to be stunned for 10 turns.&lt;br /&gt;
&lt;br /&gt;
==Poison and Regen==&lt;br /&gt;
In Active-time mode, poison and regen happen based on timers that take one and a half times as long to fill as the hero or enemy&#039;s ready-meter, unless they have a speed less than 7, in which case they happen every 8 seconds.&lt;br /&gt;
&lt;br /&gt;
In Turn-based mode, poison and regen happen at the end of each turn.&lt;br /&gt;
&lt;br /&gt;
[[Category:Battles]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Turn-based_battles_compared_to_Active-time_battles&amp;diff=28581</id>
		<title>Turn-based battles compared to Active-time battles</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Turn-based_battles_compared_to_Active-time_battles&amp;diff=28581"/>
		<updated>2013-05-01T06:19:45Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: beelzebufo release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OHRRPGCE supports two battle system modes.&lt;br /&gt;
&lt;br /&gt;
=Active-time=&lt;br /&gt;
&lt;br /&gt;
This is the default battle mode. The OHRRPGCE has always supported this mode. Each hero and enemy takes turns at their own pace, choosing attacks whenever their ready-meter fills up. This is similar to the battle system used in Final Fantasy 4, 5, 6, 7 and 8. Active time mode has general bitsets that control whether or not battle time pauses when you are using menus.&lt;br /&gt;
&lt;br /&gt;
=Turn-based=&lt;br /&gt;
&lt;br /&gt;
This is a new battle mode, added in the [[Beelzebufo]] release. In turn-based mode, all heroes and enemies choose their attacks at the beginning of a turn, then they all perform their attacks in an order determined by their speed stats, and then the next turn begins. This is similar to the battle system used by Final Fantasy 1, 2, 3, the Dragon Quest/Dragon Warrior series, Pokemon, and almost all other traditional console RPG games.&lt;br /&gt;
&lt;br /&gt;
=Choosing Battle Modes=&lt;br /&gt;
&lt;br /&gt;
Choose battle modes in the &#039;&#039;&#039;&amp;quot;Battle System Options&amp;quot;&#039;&#039;&#039; submenu under &#039;&#039;&#039;&amp;quot;Edit General Game Data&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Converting an Active-time game to Turn-based=&lt;br /&gt;
&lt;br /&gt;
If you are changing an existing game from Active-time to Turn-based (or vice-versa) you need to pay attention to a few important details.&lt;br /&gt;
&lt;br /&gt;
==Speed balance==&lt;br /&gt;
In turn-based mode, a very high speed stat is not such a big advantage. it just means attacking first, not attacking more often. In the same way, a very low speed stat is no longer a big disadvantage. it just means attacking last, rather than attacking less often.&lt;br /&gt;
&lt;br /&gt;
==Delays==&lt;br /&gt;
In Active-time mode, small variations in attack delay have almost no consequence. Only large attack delays really are really important.&lt;br /&gt;
&lt;br /&gt;
In turn-based mode, a 1 tick delay can cause the attack to be performed later, after the next slowest hero or enemy. Very large attack delays should be avoided in turn-based mode because the turn cannot end until all characters have finished their attack.&lt;br /&gt;
&lt;br /&gt;
==Endless Loops==&lt;br /&gt;
If you make an endless loop of chained attacks or counterattacks in active-time mode, only the hero or enemy involved in the loop will be stuck. All other heroes and enemies can continue to fight.&lt;br /&gt;
&lt;br /&gt;
An endless loop in turn-based mode really will be endless.&lt;br /&gt;
&lt;br /&gt;
==Stun and Mute==&lt;br /&gt;
In Active-time mode, damage to the stun and mute registers is measured in seconds. 10 damage to stun will cause the target to be stunned for 10 seconds.&lt;br /&gt;
&lt;br /&gt;
In Turn-based mode, damage to stun and mute registers is measured in turns. 10 damage to stun will cause the target to be stunned for 10 turns.&lt;br /&gt;
&lt;br /&gt;
==Poison and Regen==&lt;br /&gt;
In Active-time mode, poison and regen happen based on timers that take the same amount of time as the hero or enemy&#039;s ready-meter.&lt;br /&gt;
&lt;br /&gt;
In Turn-based mode, poison and regen happen at the end of each turn.&lt;br /&gt;
&lt;br /&gt;
[[Category:Battles]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Turn-based_battles_compared_to_Active-time_battles&amp;diff=28580</id>
		<title>Turn-based battles compared to Active-time battles</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Turn-based_battles_compared_to_Active-time_battles&amp;diff=28580"/>
		<updated>2013-05-01T06:16:37Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: add battles category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP}}&lt;br /&gt;
&lt;br /&gt;
The OHRRPGCE supports two battle modes.&lt;br /&gt;
&lt;br /&gt;
=Active-time=&lt;br /&gt;
&lt;br /&gt;
This is the default battle mode. The OHRRPGCE has always supported this mode. Each hero and enemy takes turns at their own pace, choosing attacks whenever their ready-meter fills up. This is similar to the battle system used in Final Fantasy 4, 5, 6, 7 and 8. Active time mode has general bitsets that control whether or not battle time pauses when you are using menus.&lt;br /&gt;
&lt;br /&gt;
=Turn-based=&lt;br /&gt;
&lt;br /&gt;
This is the new mode. Turn-based mode will be added starting with the [[Beelzebufo]] release, (and can be tested now using nightly builds from Dec 5 2012 and later) In turn-based mode, all heroes and enemies choose their attacks at the beginning of a turn, then they all perform their attacks in an order determined by their speed stats, and then the next turn begins. This is similar to the battle system used by Final Fantasy 1, 2, 3, the Dragon Quest/Dragon Warrior series, Pokemon, and almost all other traditional console RPG games.&lt;br /&gt;
&lt;br /&gt;
=Choosing Battle Modes=&lt;br /&gt;
&lt;br /&gt;
Choose battle modes in the &#039;&#039;&#039;&amp;quot;Battle System Options&amp;quot;&#039;&#039;&#039; submenu under &#039;&#039;&#039;&amp;quot;Edit General Game Data&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Converting an Active-time game to Turn-based=&lt;br /&gt;
&lt;br /&gt;
If you are changing an existing game from Active-time to Turn-based (or vice-versa) you need to pay attention to a few important details.&lt;br /&gt;
&lt;br /&gt;
==Speed balance==&lt;br /&gt;
In turn-based mode, a very high speed stat is not such a big advantage. it just means attacking first, not attacking more often. In the same way, a very low speed stat is no longer a big disadvantage. it just means attacking last, rather than attacking less often.&lt;br /&gt;
&lt;br /&gt;
==Delays==&lt;br /&gt;
In Active-time mode, small variations in attack delay have almost no consequence. Only large attack delays really are really important.&lt;br /&gt;
&lt;br /&gt;
In turn-based mode, a 1 tick delay can cause the attack to be performed later, after the next slowest hero or enemy. Very large attack delays should be avoided in turn-based mode because the turn cannot end until all characters have finished their attack.&lt;br /&gt;
&lt;br /&gt;
==Endless Loops==&lt;br /&gt;
If you make an endless loop of chained attacks or counterattacks in active-time mode, only the hero or enemy involved in the loop will be stuck. All other heroes and enemies can continue to fight.&lt;br /&gt;
&lt;br /&gt;
An endless loop in turn-based mode really will be endless.&lt;br /&gt;
&lt;br /&gt;
==Stun and Mute==&lt;br /&gt;
In Active-time mode, damage to the stun and mute registers is measured in seconds. 10 damage to stun will cause the target to be stunned for 10 seconds.&lt;br /&gt;
&lt;br /&gt;
In Turn-based mode, damage to stun and mute registers is measured in turns. 10 damage to stun will cause the target to be stunned for 10 turns.&lt;br /&gt;
&lt;br /&gt;
==Poison and Regen==&lt;br /&gt;
In Active-time mode, poison and regen happen based on timers that take the same amount of time as the hero or enemy&#039;s ready-meter.&lt;br /&gt;
&lt;br /&gt;
In Turn-based mode, poison and regen happen at the end of each turn.&lt;br /&gt;
&lt;br /&gt;
[[Category:Battles]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=MENUS.BIN&amp;diff=28579</id>
		<title>MENUS.BIN</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=MENUS.BIN&amp;diff=28579"/>
		<updated>2013-05-01T06:15:46Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: beelzebufo release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MENUS.BIN stores data about custom menus. This lump only contains data applicable to an entire menu. Data about individual menu items is located in [[MENUITEM.BIN]]. The record size is stored in [[BINSIZE.BIN]]&lt;br /&gt;
&lt;br /&gt;
[[About Formal Specs]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset || Data || Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0-10||VSTR(1i+20b=11i)|| Menu name&lt;br /&gt;
|-&lt;br /&gt;
|11 ||INT|| Box style (same as text box background color)&lt;br /&gt;
|-&lt;br /&gt;
|12 ||INT|| Default text color&lt;br /&gt;
|-&lt;br /&gt;
|13 ||INT|| Max rows to show at a time (0=default, cannot exceed screen height)&lt;br /&gt;
|-&lt;br /&gt;
|14 ||INT|| Bitsets&amp;lt;br&amp;gt;&lt;br /&gt;
0=Transparent box&amp;lt;br&amp;gt;&lt;br /&gt;
1=Never show scrollbar&amp;lt;br&amp;gt;&lt;br /&gt;
2=Allow gameplay while menu is active&amp;lt;br&amp;gt;&lt;br /&gt;
3=Suspend player even if gameplay allowed&amp;lt;br&amp;gt;&lt;br /&gt;
4=No box&amp;lt;br&amp;gt;&lt;br /&gt;
5=Cancel button doesn&#039;t close menu&amp;lt;br&amp;gt;&lt;br /&gt;
6=No player control of menu&amp;lt;br&amp;gt;&lt;br /&gt;
7=Prevent main menu from opening&amp;lt;br&amp;gt;&lt;br /&gt;
8=Advance text box when menu closes&amp;lt;br&amp;gt;&lt;br /&gt;
9=Highlight selection background&amp;lt;br&amp;gt;&lt;br /&gt;
10-15=Unused&lt;br /&gt;
|-&lt;br /&gt;
|15 ||INT|| Offset X (positive or negative)&lt;br /&gt;
|-&lt;br /&gt;
|16 ||INT|| Offset Y (positive or negative)&lt;br /&gt;
|-&lt;br /&gt;
|17 ||INT|| Anchor X (-1=left, 0=center, 1=right)&lt;br /&gt;
|-&lt;br /&gt;
|18 ||INT|| Anchor Y (-1=top, 0=center, 1=bottom)&lt;br /&gt;
|-&lt;br /&gt;
|19 ||INT|| Text align (-1=left, 0=center, 1=right)&lt;br /&gt;
|-&lt;br /&gt;
|20 ||INT|| Minimum width (in text chars, default=0)&lt;br /&gt;
|-&lt;br /&gt;
|21 ||INT|| Maximum width (in text chars, 0=none, &amp;gt;=1 crops strings)&lt;br /&gt;
|-&lt;br /&gt;
|22 ||INT|| Border thickness (in pixels, can be negative)&lt;br /&gt;
|-&lt;br /&gt;
|23 ||INT|| On-close [[script trigger]]&lt;br /&gt;
|-&lt;br /&gt;
|24 ||INT|| Menu ID -1 to open when pressing ESC (or 0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|25 ||INT|| Garbage (do not repurpose)&lt;br /&gt;
|-&lt;br /&gt;
|26 ||INT|| Item spacing, in pixels to be added to the default. Negative makes the items closer together, positive stretches them apart. This value alters the vertical size of the whole menu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[MENUITEM.BIN]]&lt;br /&gt;
&lt;br /&gt;
{{LumpSpec}}&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Permanent_Stat-Boosters&amp;diff=28578</id>
		<title>Permanent Stat-Boosters</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Permanent_Stat-Boosters&amp;diff=28578"/>
		<updated>2013-05-01T06:12:29Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: beelzebufo release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;First, some background. Each stat has a current value, a maximum value, and a base value. The maximum value is always equal to the base value plus equipment bonuses, and then with stat caps applied. (Stat caps are set in the &#039;&#039;General Game Settings -&amp;gt; Battle System Options -&amp;gt; Stat Caps&#039;&#039; menu.) Base stats are never capped, and they aren&#039;t visible in-game anywhere. Modifying a stat&#039;s maximum in any way modifies its base value by the same amount, and vice-versa, but stat caps are preserved.&lt;br /&gt;
&lt;br /&gt;
For example, suppose you define a hero Joe who has 20 ATK at level 0, and his default weapon is SoftTwig which gives -10 ATK. Suppose ATK is capped at 99.&lt;br /&gt;
When you add Joe to the party at level 0, his ATK stats will be:&lt;br /&gt;
 Base ATK: 20&lt;br /&gt;
 Max ATK: 10&lt;br /&gt;
 Current ATK: 10&lt;br /&gt;
If you use one of the methods below to give him a permanent +100 boost to Base ATK, his ATK stats are:&lt;br /&gt;
 Base ATK: 120&lt;br /&gt;
 Max ATK: 99&lt;br /&gt;
 Current ATK: 99&lt;br /&gt;
&lt;br /&gt;
During battles, all attacks modify the current value of all stats. There&#039;s no way to modify maximums. Now to explain how the engine handles the HP and MP stats differently to the others. &lt;br /&gt;
&lt;br /&gt;
After each battle, changes to the current values of all stats other than HP and MP are discarded. You can&#039;t make changes to any other stats which persist after the end of battle.&lt;br /&gt;
&lt;br /&gt;
If an item (attack) used outside of battle changes the HP or MP of a hero, then it affects the &#039;&#039;current&#039;&#039; value. If it targets a stat other than HP or MP, then it modifies both the &#039;&#039;current&#039;&#039; and &#039;&#039;maximum&#039;&#039; values (to be exact, it modifies the current, and then sets the maximum to the current... unless the &amp;quot;Don&#039;t reset max stats after OOB attack&amp;quot; general bitset is enabled), and the attack always acts as if the &#039;&#039;&#039;allow cure to exceed maximum&#039;&#039;&#039; bitset is &#039;&#039;on&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Increasing the maximum of a stat other HP or MP (outside battle only)==&lt;br /&gt;
&lt;br /&gt;
Doing this with a healing item should now be obvious. Create a new attack with target stat as HP or MP, &#039;&#039;&#039;cure instead of harm&#039;&#039;&#039; turned on, and target &amp;quot;Ally&amp;quot;. Attach this attack to an item as its &#039;&#039;&#039;When used outside of battle&#039;&#039;&#039; action. The &amp;quot;Don&#039;t reset max stats after OOB attack&amp;quot; general bitset also needs to be disabled for this to work properly (otherwise the change would be temporary instead).&lt;br /&gt;
&lt;br /&gt;
If you want, you can use a script instead; see the next section. Those scripts can also be used for stats other than HP and MP.&lt;br /&gt;
&lt;br /&gt;
==Increasing maximum HP or MP (outside battle only)==&lt;br /&gt;
&lt;br /&gt;
If you want to change the maximum value of HP or MP you must use a script. See the [[Plotscripting Tutorial]] for details on writing and compiling scripts. You can attach a script to an item by creating a new textbox, and in the Conditionals submenu, set &amp;quot;run &amp;lt;script&amp;gt; instead&amp;quot; (Always). Then set the textbox as the out-of-battle effect of the item. The textbox won&#039;t display.&lt;br /&gt;
&lt;br /&gt;
The last argument of the {{plot|setherostat|set hero stat}} command tells whether to change the current, maximum or base stat. &lt;br /&gt;
&lt;br /&gt;
You can use the {{plot|pickhero|pick hero}} command to imitate the hero picker you normally see when using a healing item.&lt;br /&gt;
&lt;br /&gt;
You can modify the following script:&lt;br /&gt;
&lt;br /&gt;
 plotscript, add ten max HP, begin&lt;br /&gt;
  variable(who)&lt;br /&gt;
  who := pick hero&lt;br /&gt;
  if (who == -1) then (exit script)  # player cancelled&lt;br /&gt;
  variable(old stat)&lt;br /&gt;
  old stat := get hero stat(who, stat:HP, base stat)&lt;br /&gt;
  set hero stat(who, stat:HP, old stat + 10, base stat)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
If you want to reset the current HP to the new maximum, add the following line to the end of the script:&lt;br /&gt;
  set hero stat(who, stat:HP, old stat + 10, get hero stat(who, stat:HP, maximum stat))&lt;br /&gt;
&lt;br /&gt;
If you want to target a specific hero instead of letting the player choose, modify this script instead:&lt;br /&gt;
 plotscript, add ten max HP, begin&lt;br /&gt;
  variable(who)&lt;br /&gt;
  who := find hero (hero:Bob)&lt;br /&gt;
  variable(old stat)&lt;br /&gt;
  old stat := get hero stat(who, stat:HP, base stat)&lt;br /&gt;
  set hero stat(who, stat:HP, old stat + 10, base stat)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
This script modifies the base stat instead of the maximum stat so that it works correctly with stat caps, but it will still work in most cases if you replace &amp;quot;base stat&amp;quot; with &amp;quot;maximum stat&amp;quot;. To continue the example above, if you added Joe at level 0 to the party and ran&lt;br /&gt;
  who := find hero (hero:Joe)&lt;br /&gt;
  old stat := get hero stat(who, stat:HP, maximum stat)&lt;br /&gt;
  set hero stat(who, stat:HP, oldstat + 100, maximum stat)&lt;br /&gt;
you would end up with&lt;br /&gt;
 Base ATK: 120&lt;br /&gt;
 Max ATK: 110&lt;br /&gt;
 Current ATK: 10&lt;br /&gt;
and at the next opportunity (such as after the next battle) the Max ATK will be capped down to 99.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[How do I make a healing item?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{HOWTO}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]] [[Category:Items]] [[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Heroes.reld&amp;diff=28577</id>
		<title>Heroes.reld</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Heroes.reld&amp;diff=28577"/>
		<updated>2013-05-01T06:11:44Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: beelzebufo release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[RELOAD]] format lump for storage of hero definitions.&lt;br /&gt;
&lt;br /&gt;
This lump replaced [[DT0]] in all versions after Dec 21 2012. (CURRENT_RPG_VERSION &amp;gt;= 19)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;heroes&#039;&#039;&#039; - this is the root node&lt;br /&gt;
** &#039;&#039;&#039;hero&#039;&#039;&#039; int - one node for each hero. value is id number&lt;br /&gt;
*** &#039;&#039;&#039;name&#039;&#039;&#039; string&lt;br /&gt;
**** &#039;&#039;&#039;maxlen&#039;&#039;&#039; int - max length of name when renaming. if node not present use default&lt;br /&gt;
*** &#039;&#039;&#039;appearance&#039;&#039;&#039; contains appearance data&lt;br /&gt;
**** &#039;&#039;&#039;walkabout&#039;&#039;&#039;&lt;br /&gt;
***** &#039;&#039;&#039;pic&#039;&#039;&#039; int - picture id&lt;br /&gt;
***** &#039;&#039;&#039;pal&#039;&#039;&#039; int - palette number. If not is not present use default palette for pic&lt;br /&gt;
**** &#039;&#039;&#039;battle&#039;&#039;&#039;&lt;br /&gt;
***** &#039;&#039;&#039;pic&#039;&#039;&#039; int - picture id&lt;br /&gt;
***** &#039;&#039;&#039;pal&#039;&#039;&#039; int - palette number. If not is not present use default palette for pic&lt;br /&gt;
***** &#039;&#039;&#039;hand_a&#039;&#039;&#039; - node containing hand offset data for attack frame A&lt;br /&gt;
****** &#039;&#039;&#039;x&#039;&#039;&#039; int - x offset of hand&lt;br /&gt;
****** &#039;&#039;&#039;y&#039;&#039;&#039; int - y offset of hand&lt;br /&gt;
***** &#039;&#039;&#039;hand_b&#039;&#039;&#039; - node containing hand offset data for attack frame B&lt;br /&gt;
****** &#039;&#039;&#039;x&#039;&#039;&#039; int - x offset of hand&lt;br /&gt;
****** &#039;&#039;&#039;y&#039;&#039;&#039; int - y offset of hand&lt;br /&gt;
**** &#039;&#039;&#039;portrait&#039;&#039;&#039;&lt;br /&gt;
***** &#039;&#039;&#039;pic&#039;&#039;&#039; int - picture id&lt;br /&gt;
***** &#039;&#039;&#039;pal&#039;&#039;&#039; int - palette number. If not is not present use default palette for pic&lt;br /&gt;
*** &#039;&#039;&#039;default_level&#039;&#039;&#039; int - value is level number. Use default if node is not present&lt;br /&gt;
*** &#039;&#039;&#039;default_weapon&#039;&#039;&#039; int - item id number&lt;br /&gt;
*** &#039;&#039;&#039;stats_at_zero&#039;&#039;&#039; - contains stats at level 0&lt;br /&gt;
**** &#039;&#039;&#039;stat&#039;&#039;&#039; int - one node for each stat. value is stat ID number 0-11&lt;br /&gt;
***** &#039;&#039;&#039;value&#039;&#039;&#039; int - value for this stat&lt;br /&gt;
*** &#039;&#039;&#039;stats_at_max&#039;&#039;&#039; - contains stats at max level (often, but not always level 99)&lt;br /&gt;
**** &#039;&#039;&#039;stat&#039;&#039;&#039; int - one node for each stat. value is stat ID number 0-11&lt;br /&gt;
***** &#039;&#039;&#039;value&#039;&#039;&#039; int - value for this stat&lt;br /&gt;
*** &#039;&#039;&#039;battle_menus&#039;&#039;&#039; - stores the hero&#039;s battle menu data&lt;br /&gt;
**** &#039;&#039;&#039;menu&#039;&#039;&#039; - one for each hero battle menu slot.&lt;br /&gt;
***** &#039;&#039;&#039;kind&#039;&#039;&#039; only has one child node. The valid options are listed below&lt;br /&gt;
****** &#039;&#039;&#039;weapon&#039;&#039;&#039; - if this node is present, this is the attack specified by the hero&#039;s equipped weapon&lt;br /&gt;
****** &#039;&#039;&#039;attack&#039;&#039;&#039; int - if this node is present, this is an attack. Value is attack ID number&lt;br /&gt;
****** &#039;&#039;&#039;items&#039;&#039;&#039; - if this node it present, this is the item menu&lt;br /&gt;
****** &#039;&#039;&#039;spells&#039;&#039;&#039; int - if this node is present, this is a spell list. Value is list id 0-3&lt;br /&gt;
***** &#039;&#039;&#039;tag&#039;&#039;&#039; int - if this tag check passes the menu option will be visible (If not present, default &amp;quot;always&amp;quot;)&lt;br /&gt;
*** &#039;&#039;&#039;spell_lists&#039;&#039;&#039; - Container for spell lists&lt;br /&gt;
**** &#039;&#039;&#039;list&#039;&#039;&#039; int - one node for each spell list 0-3. value is list id number. Empty lists are not present.&lt;br /&gt;
***** &#039;&#039;&#039;name&#039;&#039;&#039; string - name of the spell list&lt;br /&gt;
***** &#039;&#039;&#039;spells&#039;&#039;&#039; - contains spells&lt;br /&gt;
****** &#039;&#039;&#039;spell&#039;&#039;&#039; int - one node for each defined spell. value is id 0-23&lt;br /&gt;
******* &#039;&#039;&#039;attack&#039;&#039;&#039; int - value is id number of attack to use for this spell&lt;br /&gt;
******* &#039;&#039;&#039;learnlev&#039;&#039;&#039; int - level at which the hero learns the spell. Not present if not used&lt;br /&gt;
******* &#039;&#039;&#039;itemlearn&#039;&#039;&#039; - node is present if the hero can learn this spell from an item&lt;br /&gt;
******* &#039;&#039;&#039;tag&#039;&#039;&#039; int - if this tag check passes, the spell is visible (default &amp;quot;always&amp;quot;)&lt;br /&gt;
******* other nodes related to [[Plan for improved spell learning]] will go here later&lt;br /&gt;
***** &#039;&#039;&#039;random&#039;&#039;&#039; - if this node is present, an attack is automatically randomly selected from the list&lt;br /&gt;
***** &#039;&#039;&#039;use_lmp&#039;&#039;&#039; - if this node is present, all spells in this list require FF1-style level-based-mp &lt;br /&gt;
*** &#039;&#039;&#039;elements&#039;&#039;&#039; - stores the hero&#039;s elemental strengths and weaknesses&lt;br /&gt;
**** &#039;&#039;&#039;element&#039;&#039;&#039; int - an element; value is ID number. Element nodes not present will use the default of 1.0&lt;br /&gt;
***** &#039;&#039;&#039;damage&#039;&#039;&#039; double - damage taken from this element (1.0 = 100% normal)&lt;br /&gt;
*** &#039;&#039;&#039;rename_on_add&#039;&#039;&#039; - if present, the hero is renamed when added to the party&lt;br /&gt;
*** &#039;&#039;&#039;rename_on_status&#039;&#039;&#039; - if present, the hero can be renamed on the status screen&lt;br /&gt;
*** &#039;&#039;&#039;hide_empty_lists&#039;&#039;&#039; - if present, the hero&#039;s empty spell lists are hidden &lt;br /&gt;
*** &#039;&#039;&#039;tags&#039;&#039;&#039; - contains tags automatically set by this hero&lt;br /&gt;
**** &#039;&#039;&#039;have_hero&#039;&#039;&#039; int - tag to turn ON if the hero is in the party&lt;br /&gt;
**** &#039;&#039;&#039;is_alive&#039;&#039;&#039; int - tag to turn ON if the hero is alive&lt;br /&gt;
**** &#039;&#039;&#039;is_leader&#039;&#039;&#039; int - tag to turn ON if the hero is the leader&lt;br /&gt;
**** &#039;&#039;&#039;is_active&#039;&#039;&#039; int - tag to turn on if the hero is a member of the active party&lt;br /&gt;
*** &#039;&#039;&#039;stat_options&#039;&#039;&#039; customize the display of stats&lt;br /&gt;
**** &#039;&#039;&#039;stat&#039;&#039;&#039; int - zero or more nodes for containing stat options. The value is the stat ID number. If a stat has no node, it uses defaults&lt;br /&gt;
***** &#039;&#039;&#039;hide&#039;&#039;&#039; - if this node is present, the stat should be hidden from this hero&#039;s status and equip screens {{WIP|inline}}&lt;br /&gt;
&lt;br /&gt;
{{LumpSpec}}&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=FIXBITS.BIN&amp;diff=28576</id>
		<title>FIXBITS.BIN</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=FIXBITS.BIN&amp;diff=28576"/>
		<updated>2013-05-01T06:11:01Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: warn fixPercentageAttacks not implemented&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIXBITS.BIN stores a series of bits that indicate whether or not various file format fixes have been applied to an RPG file. Due to the nature of files and the fact that the base unit of storage is the byte, the file size will be rounded up to the nearest byte.&lt;br /&gt;
&lt;br /&gt;
Also note that the bits are stored in Little-Endian order (so, the 0th bit is, quite literally, the first bit in the file).&lt;br /&gt;
&lt;br /&gt;
All bits default to 0/false, including those that are beyond the end of the file, and even if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
[[About Formal Specs]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;  style=&amp;quot;font-family:Courier New&amp;quot;&lt;br /&gt;
! Bit !! Const !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0|| fixAttackitems    || Zeroed out item cost (ammunition) data in [[ATTACK.BIN]]&lt;br /&gt;
|-&lt;br /&gt;
|1|| fixWeapPoints     || Fixed hero hand positions in [[DT0]]&lt;br /&gt;
|-&lt;br /&gt;
|2|| fixStunCancelTarg || Turned on &amp;quot;Cancel Target&#039;s Attack&amp;quot; bit in [[ATTACK.BIN]] for old attacks that damage the [[Stun, Regen, Poison, and Mute#Stun|Stun register]]&lt;br /&gt;
|-&lt;br /&gt;
|3|| fixDefaultDissolve || Initialized genEnemyDissolve to default in [[GEN]]&lt;br /&gt;
|-&lt;br /&gt;
|4|| fixDefaultDissolveEnemy || Initialized Enemy dissolves to default in [[DT1]]&lt;br /&gt;
|-&lt;br /&gt;
|5|| fixPushNPCBugCompat || Turned on the &#039;&#039;&#039;Simulate pushable NPC obstruction bug&#039;&#039;&#039; bitset in [[GEN]]&lt;br /&gt;
|-&lt;br /&gt;
|6|| fixDefaultMaxItem || Stored default max item number from [[ITM]] in [[GEN]]&lt;br /&gt;
|-&lt;br /&gt;
|7|| fixBlankDoorLinks || Marked redundant blank doorlinks as unused in [[D|.D##]]&lt;br /&gt;
|-&lt;br /&gt;
|8|| fixShopSounds || Initialized all the sound effects from genItemLearnSFX to genCantSellSFX in [[GEN]] (to one of gen(genAcceptSFX) or gen(genCancelSFX))&lt;br /&gt;
|-&lt;br /&gt;
|9|| fixExtendedNPCs || Initialized all blank NPC data in the empty space at the end of [[N|.N##]] lumps&lt;br /&gt;
|-&lt;br /&gt;
|10|| fixHeroPortrait || Initialized Hero portrait data in [[DT0]]&lt;br /&gt;
|-&lt;br /&gt;
|11|| fixTextBoxPortrait || Initialized text box portrait data in [[SAY]]&lt;br /&gt;
|-&lt;br /&gt;
|12|| fixNPCLocationFormat || Converted NPC locations to new format (FIXME: not implemented yet)&lt;br /&gt;
|-&lt;br /&gt;
|13|| fixInitDamageDisplay || Initialized default values for damage display time and distance in [[GEN]]&lt;br /&gt;
|-&lt;br /&gt;
|14|| fixDefaultLevelCap || Set gen(genLevelCap) to 99 in [[GEN]]&lt;br /&gt;
|-&lt;br /&gt;
|15|| fixHeroElementals || Set the hero elemental data in [[DT0]] from the old weak/strong/absorb bits&lt;br /&gt;
|-&lt;br /&gt;
|16|| fixOldElementalFailBit || Turned on the &#039;Simulate old fail vs. element resist bit&#039; bitset in [[GEN]]&lt;br /&gt;
|-&lt;br /&gt;
|17|| fixAttackElementFails || Initialized elemental failure thresholds in [[DT6]] from old &#039;fail vs. Element #&#039; and &#039;fail vs. Enemytype #&#039; bits&lt;br /&gt;
|-&lt;br /&gt;
|18|| fixEnemyElementals || Set the enemy elemental data in [[DT1]] from the old weak/strong/absorb/enemytype bits&lt;br /&gt;
|-&lt;br /&gt;
|19|| fixItemElementals || Set the equipment elemental data in [[ITM]] from the old weak/strong/absorb bits&lt;br /&gt;
|-&lt;br /&gt;
|20|| fixNumElements || Set genNumElements in [[GEN]] to 16&lt;br /&gt;
|-&lt;br /&gt;
|21|| fixRemoveDamageMP || Change each attack&#039;s ([[DT6]]) target stat from HP to MP if the &#039;Damage MP&#039; bit is set&lt;br /&gt;
|-&lt;br /&gt;
|22|| fixDefaultMaxLevel || Set gen(genMaxLevel) to 99 in [[GEN]]&lt;br /&gt;
|-&lt;br /&gt;
|23|| fixUNUSED23 || Don&#039;t use this fixbit for anything. It was wasted in a plan that did not go as intended, and was replaced with a general bitset&lt;br /&gt;
|-&lt;br /&gt;
|24|| fixPercentageAttacks || If an attack has &amp;quot;%-based attacks damage instead of set&amp;quot; and damage math 5 or 6, change to damage math 7 or 8 {{WIP|inline}} &#039;&#039;Not implemented yet, reserved!&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{LumpSpec}}&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_do_each_of_the_stats_(HP,_MP,_etc...)_do%3F&amp;diff=28575</id>
		<title>What do each of the stats (HP, MP, etc...) do?</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=What_do_each_of_the_stats_(HP,_MP,_etc...)_do%3F&amp;diff=28575"/>
		<updated>2013-05-01T06:09:06Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: beelzebufo release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Any of these stats can be renamed for your game. You can make stats hidden on a per-hero basis in the Hero Stat Editor.&lt;br /&gt;
&lt;br /&gt;
Each stat has a current, maximum, and base value. Read the [[Permanent Stat-Boosters]] article for background information about that.&lt;br /&gt;
&lt;br /&gt;
==HP==&lt;br /&gt;
Health Points. You lose these when you get hit by enemies in battle. When you run out, you die.&lt;br /&gt;
&lt;br /&gt;
==MP==&lt;br /&gt;
Magic Points. Consumed when you cast a spell. When you run out, you cannot cast any more spells. There is also a second MP system, called Level MP; see [[What are Level MP based/FF1 Style spells?]]. A hero always has both regular and Level MP, but the Level MP is hidden unless the hero has spells that use it.&lt;br /&gt;
&lt;br /&gt;
==Atk==&lt;br /&gt;
Attack power. Normally determines the damage you do when you hit the enemy. (Although many other factors affect battle damage; see [[How is damage calculated?]])&lt;br /&gt;
&lt;br /&gt;
==Aim==&lt;br /&gt;
Accuracy. Affects whether or not you miss your target. See also [[How is the attack dodge rate calculated?]]&lt;br /&gt;
&lt;br /&gt;
==Def==&lt;br /&gt;
Defence. Reduces the amount of physical (non-magical) damage done to you. Subtracted from the enemy&#039;s &#039;&#039;&#039;Atk&#039;&#039;&#039; stat.&lt;br /&gt;
&lt;br /&gt;
==Dog==&lt;br /&gt;
Dodge. Affects whether or not you dodge the enemy&#039;s attack. See also [[How is the attack dodge rate calculated?]]&lt;br /&gt;
&lt;br /&gt;
==Mag==&lt;br /&gt;
Magic power. Normally determines the damage your spells/skills do.&lt;br /&gt;
&lt;br /&gt;
==Wil==&lt;br /&gt;
Will Power. Reduces magical damage. Subtracted from the enemy&#039;s &#039;&#039;&#039;Mag&#039;&#039;&#039; stat.&lt;br /&gt;
&lt;br /&gt;
==Spd==&lt;br /&gt;
Speed. For active-time battle mode, this affects how fast your ready-meter fills up. This should usually be within the range of 10-30. A higher number leads to quicker turns.&lt;br /&gt;
&lt;br /&gt;
For turn-based battle mode, this affects turn order. The hero or enemy with the highest speed stat will attack first.&lt;br /&gt;
&lt;br /&gt;
==Ctr==&lt;br /&gt;
Counter. Does nothing. This was originally intended for counterattacks, but was never implemented as such. You can use it for any purpose without worry about it being used for a builtin purpose later.&lt;br /&gt;
&lt;br /&gt;
==MP~==&lt;br /&gt;
MP Modifier. A percentage by which your MP consumption is reduced. A high MP~ lets you cast more spells. Eg. if this stat is set to 50, spells will cost half as much MP.&lt;br /&gt;
&lt;br /&gt;
==Hits==&lt;br /&gt;
Extra Hits. Causes attacks to have a random chance of being be duplicated. For example, a value of 2 means that the hero will hit between 1 and 3 times every time they do an attack (unless the attack is set to ignore the extra hits stat). A value of 5 means they will hit between 1 and 6 times. Use this sparingly-- nothing is more annoying that a game where every single hero and every single enemy randomly does up to 20 hits with every attack.&lt;br /&gt;
&lt;br /&gt;
Note that the Extra Hits stat differs from an attack&#039;s Number of Hits, which is not randomised: the full Number of Hits occurs, plus an additional number of hits between zero and the attacker&#039;s Extra Hits.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[What is the Ctr stat and what does it do?]]&lt;br /&gt;
* [[What are Level MP based/FF1 Style spells?]]&lt;br /&gt;
* [[HOWTO]] chapter: [[Battles]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Questions]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=ITM&amp;diff=28574</id>
		<title>ITM</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=ITM&amp;diff=28574"/>
		<updated>2013-05-01T05:57:51Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: yes, there are 60 equippability bits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.ITM holds item definitions.&lt;br /&gt;
The record length is stored in [[BINSIZE.BIN]].&lt;br /&gt;
&lt;br /&gt;
This lump will eventually be replaced with [[items.reld]] {{WIP|inline}}&lt;br /&gt;
&lt;br /&gt;
== Formal Specs ==&lt;br /&gt;
[[About Formal Specs]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;font-family:Courier New&amp;quot;&lt;br /&gt;
! Offset || Data || Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||VSTR(1i+8i= 18b)||Name&lt;br /&gt;
|-&lt;br /&gt;
|9||VSTR(1i+36i = 74b)||Info (in [[zenzizenzic]] and older, length was 35, with INT at 45 unused)&lt;br /&gt;
|-&lt;br /&gt;
|46||INT||Value (does nothing except provide default buy + sell values in stores)&lt;br /&gt;
|-&lt;br /&gt;
|47||INT||[[DT6|Attack]] when used in battle (attack num+1)&lt;br /&gt;
|-&lt;br /&gt;
|48||INT||[[DT6|Attack]] when used as weapon (attack num+1)&lt;br /&gt;
|-&lt;br /&gt;
|49||INT||Equippable as&amp;lt;br&amp;gt;&lt;br /&gt;
0 = NEVER EQUIPPED&amp;lt;br&amp;gt;&lt;br /&gt;
1 = Weapon&amp;lt;br&amp;gt;&lt;br /&gt;
2 = armor 1&amp;lt;br&amp;gt;&lt;br /&gt;
3 = armor 2&amp;lt;br&amp;gt;&lt;br /&gt;
4 = armor 3&amp;lt;br&amp;gt;&lt;br /&gt;
5 = armor 4&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|50||INT||Teach Spell ([[DT6|attack]] num+1)&lt;br /&gt;
|-&lt;br /&gt;
|51||INT||When used out of battle: &amp;gt; 0 is [[PT5|attack]] num+1, &amp;lt; 0 is -1 * textbox number (box 0 can&#039;t be triggered)&lt;br /&gt;
|-&lt;br /&gt;
|52||INT||Weapon [[PT5|Picture]]&lt;br /&gt;
|-&lt;br /&gt;
|53||INT||Weapon [[PAL|Palette]], or -1 for default&lt;br /&gt;
|-&lt;br /&gt;
|54||INT||HP bonus&lt;br /&gt;
|-&lt;br /&gt;
|55||INT||MP bonus&lt;br /&gt;
|-&lt;br /&gt;
|56||INT||Attack bonus&lt;br /&gt;
|-&lt;br /&gt;
|57||INT||Aim bonus&lt;br /&gt;
|-&lt;br /&gt;
|58||INT||Defense bonus&lt;br /&gt;
|-&lt;br /&gt;
|59||INT||Dodge bonus&lt;br /&gt;
|-&lt;br /&gt;
|60||INT||Magic bonus&lt;br /&gt;
|-&lt;br /&gt;
|61||INT||Will bonus&lt;br /&gt;
|-&lt;br /&gt;
|62||INT||Speed bonus&lt;br /&gt;
|-&lt;br /&gt;
|63||INT||Counter bonus&lt;br /&gt;
|-&lt;br /&gt;
|64||INT||MP~ bonus&lt;br /&gt;
|-&lt;br /&gt;
|65||INT||Hits bonus&lt;br /&gt;
|-&lt;br /&gt;
|66||INT * 4||Equippable by (60 bits, rest unused)&lt;br /&gt;
|-&lt;br /&gt;
|70||INT * 3||Bitsets&amp;lt;br&amp;gt;&lt;br /&gt;
0-7 Weakness to elem 1-8 (Obsolete, see [[#Note 1]])&amp;lt;br&amp;gt;&lt;br /&gt;
8-15 Strength to elem 1-8 (Obsolete, see [[#Note 1]])&amp;lt;br&amp;gt;&lt;br /&gt;
16-23 Absorbs elem 1-8 (Obsolete, see [[#Note 1]])&amp;lt;br&amp;gt;&lt;br /&gt;
24-42 Undefined&lt;br /&gt;
|-&lt;br /&gt;
|73||INT||Consumability&amp;lt;br&amp;gt;&lt;br /&gt;
0 = Unlimited use&amp;lt;br&amp;gt;&lt;br /&gt;
1 = Consumed by use&amp;lt;br&amp;gt;&lt;br /&gt;
2 = Cannot be sold/dropped&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|74||INT||OWN ITEM tag #&lt;br /&gt;
|-&lt;br /&gt;
|75||INT||ITEM IN INVENTORY tag #&lt;br /&gt;
|-&lt;br /&gt;
|76||INT||IS EQUIPPED tag #&lt;br /&gt;
|-&lt;br /&gt;
|77||INT||EQUIPPED BY ACTIVE HERO tag #&lt;br /&gt;
|-&lt;br /&gt;
|78||INT||Frame 2 &amp;quot;Handle&amp;quot; point X coordinate&lt;br /&gt;
|-&lt;br /&gt;
|79||INT||Frame 2 &amp;quot;Handle&amp;quot; point Y coordinate&lt;br /&gt;
|-&lt;br /&gt;
|80||INT||Frame 1 &amp;quot;Handle&amp;quot; point X coordinate&lt;br /&gt;
|-&lt;br /&gt;
|81||INT||Frame 1 &amp;quot;Handle&amp;quot; point Y coordinate&lt;br /&gt;
|-&lt;br /&gt;
|82-209||FLOAT * 64||Elemental resistances. 1.0 is 100%, which is the default value, meaning &#039;no change&#039;. These are &amp;quot;merged&amp;quot; into the elemental resistances of heroes which equip the item according to one of several possible formulae. &amp;lt;sup&amp;gt;[[#Note 1]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|210||INT||Maximum inventory stack size, or 0 to use the default, gen(genItemStackSize)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Note 1==&lt;br /&gt;
If fixItemElementals is OFF, then elemental resistances should be loaded from the absorb/weak/strong bits (default to 1.0, multiply by -1.0 for absorb, 2.0 for weak, 0.12 for strong).&lt;br /&gt;
&lt;br /&gt;
If fixItemElementals is ON then elemental resistances should be loaded from the array of 64 FLOATs, and the old bits are garbage.&lt;br /&gt;
&lt;br /&gt;
{{LumpSpec}}&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Scripts:Activate_doors_with_a_use_key&amp;diff=28569</id>
		<title>Scripts:Activate doors with a use key</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Scripts:Activate_doors_with_a_use_key&amp;diff=28569"/>
		<updated>2013-04-15T06:17:23Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: Created page with &amp;quot;If you want to be able to activate all your doors with the use key you can set the following script as the map&amp;#039;s &amp;#039;&amp;#039;&amp;#039;on-keypress script&amp;#039;&amp;#039;&amp;#039;.  If you don&amp;#039;t want the player to be ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you want to be able to activate all your doors with the use key you can set the following script as the map&#039;s &#039;&#039;&#039;on-keypress script&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the player to be able to activate a door by stepping on it, either put walls around it, or use the {{plot|suspenddoors}} command to prevent doors from activating normally (for example, place that command in a map autorun script).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plotscript, use doors on keypress, begin&lt;br /&gt;
  if (keyval(key:enter) &amp;gt; 1 || keyval(key:ctrl) &amp;gt; 1 || keyval(key:space) &amp;gt; 1) then, begin&lt;br /&gt;
    variable (x, y)&lt;br /&gt;
    x := hero x(me)&lt;br /&gt;
    y := hero y(me)&lt;br /&gt;
    # Find the tile in front of hero&lt;br /&gt;
    switch (hero direction(me)) do, begin&lt;br /&gt;
      case (up)   y -= 1&lt;br /&gt;
      case (down) y += 1&lt;br /&gt;
      case (left) x -= 1&lt;br /&gt;
      case (right) x += 1&lt;br /&gt;
    end&lt;br /&gt;
    if (door at spot(x, y) &amp;gt; -1) then (use door(door at spot(x, y)))&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this script won&#039;t work for activating a door over the edge of a wrap-around map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A simple solution for a single door is to place an invisible NPC at the door and make it run this script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plotscript, door, door id, begin&lt;br /&gt;
  use door (door id)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the &#039;&#039;&#039;Script Argument&#039;&#039;&#039; on the NPC to the right door ID.&lt;br /&gt;
&lt;br /&gt;
[[Category:Example Scripts]]&lt;br /&gt;
[[Category:Plotscripting]]&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
	<entry>
		<id>https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=GEN&amp;diff=28568</id>
		<title>GEN</title>
		<link rel="alternate" type="text/html" href="https://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=GEN&amp;diff=28568"/>
		<updated>2013-04-12T12:25:57Z</updated>

		<summary type="html">&lt;p&gt;The Mad Cacti: genResolutionX/Y&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
The lump with the extension .GEN is a critical one. It contains miscelaneous information about a wide varitey of unrelated things, especially max number of records for other files, password information, and other stuff that I felt like sticking in there too-- some of which really don&#039;t belong.&lt;br /&gt;
&lt;br /&gt;
{{BSAVE Header}}&lt;br /&gt;
&lt;br /&gt;
The .gen lump is normally 1007 bytes long (including 7 byte header), but only 720 bytes are actually loaded -- and most of those are unused or obsolete.&lt;br /&gt;
&lt;br /&gt;
The following is the meaning of each element.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&lt;br /&gt;
|bgcolor=&amp;quot;#D0D0D0&amp;quot;|Grey fields are obsolete or unused.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#FFC8C8&amp;quot;|Pink fields are runtime-only fields used by [[GAME]] that do not really belong GEN in the first place, but are there anyway to make including them in [[SAV]] files more convenient, which is now a moot argument because of the conversion to [[RSAV]].&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8C8FF&amp;quot;|Blue fields are editor-only fields used by [[CUSTOM]] (although some of them, like 39 genMaxTextbox may be used by GAME for error-checking)&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|Green records are preserved in [[SAV]] files.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[About Formal Specs]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&lt;br /&gt;
! Element || Data || Constant || Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||INT ||genMaxMap   ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max maps&lt;br /&gt;
|-&lt;br /&gt;
|1||INT ||genTitle    ||title screen backdrop index in [[MXS]]&lt;br /&gt;
|-&lt;br /&gt;
|2||INT ||genTitleMus ||title music&lt;br /&gt;
|-&lt;br /&gt;
|3||INT ||genVictMus  ||victory music + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|4||INT ||genBatMus   ||default battle music&lt;br /&gt;
|-&lt;br /&gt;
|5||INT ||genPassVersion||bgcolor=&amp;quot;#C8C8FF&amp;quot;| passcode format number&lt;br /&gt;
|-&lt;br /&gt;
|6||INT ||genPW3Rot    ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|old (third-style) passcode rotator&lt;br /&gt;
|-&lt;br /&gt;
|7-15||BYTE*17 + 1 ||           ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|old (third-style) obfuscated passcode + 1 unused byte&lt;br /&gt;
|-&lt;br /&gt;
|16-25||INT*10 ||          ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|ancient (first-style) obsolete password data&lt;br /&gt;
|-&lt;br /&gt;
|26||INT ||genMaxHeroPic    ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max hero graphics in [[PT0]]&lt;br /&gt;
|-&lt;br /&gt;
|27||INT ||genMaxEnemy1Pic  ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max small enemy graphics in [[PT1]]&lt;br /&gt;
|-&lt;br /&gt;
|28||INT ||genMaxEnemy2Pic  ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max med enemy graphics in [[PT2]]&lt;br /&gt;
|-&lt;br /&gt;
|29||INT ||genMaxEnemy3Pic  ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max large graphics in [[PT3]]&lt;br /&gt;
|-&lt;br /&gt;
|30||INT ||genMaxNPCPic     ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max npc graphics in [[PT4]]&lt;br /&gt;
|-&lt;br /&gt;
|31||INT ||genMaxWeaponPic  ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max weapon graphics in [[PT5]]&lt;br /&gt;
|-&lt;br /&gt;
|32||INT ||genMaxAttackPic  ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max attack graphics in [[PT6]]&lt;br /&gt;
|-&lt;br /&gt;
|33||INT ||genMaxTile       ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max tilesets in [[TIL]]&lt;br /&gt;
|-&lt;br /&gt;
|34||INT ||genMaxAttack     ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max attack definitions in [[DT6]]&lt;br /&gt;
|-&lt;br /&gt;
|35||INT ||genMaxHero       ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max hero definitions in [[DT0]]&lt;br /&gt;
|-&lt;br /&gt;
|36||INT ||genMaxEnemy      ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max enemy definitions in [[DT1]]&lt;br /&gt;
|-&lt;br /&gt;
|37||INT ||genMaxFormation  ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max formations in [[FOR]]&lt;br /&gt;
|-&lt;br /&gt;
|38||INT ||genMaxPal        ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max palettes in [[PAL]]&lt;br /&gt;
|-&lt;br /&gt;
|39||INT ||genMaxTextbox    ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max text boxes in [[SAY]]&lt;br /&gt;
|-&lt;br /&gt;
|40||INT ||genMaxPlotscript ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|total available plotscripts (number of records in [[PLOTSCR.LST]])&lt;br /&gt;
|-&lt;br /&gt;
|41||INT ||genNewgameScript ||ID of new-game [[Script Trigger|plotscript]]&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|42||INT ||genGameoverScript||ID of game-over [[Script Trigger|plotscript]]&lt;br /&gt;
|-&lt;br /&gt;
|43||INT ||genMaxRegularScript||bgcolor=&amp;quot;#C8C8FF&amp;quot;|ID of highest manually numbered old-style plotscript&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|44||INT ||genSuspendBits   ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|suspendstuff bits:&amp;lt;br&amp;gt;0 - suspendnpcs&amp;lt;br&amp;gt;1 - suspendplayer&amp;lt;br&amp;gt;2 - suspendobstruction&amp;lt;br&amp;gt;3 - suspendherowalls&amp;lt;br&amp;gt;4 - suspendnpcwalls&amp;lt;br&amp;gt;5 - suspendcatapillar&amp;lt;br&amp;gt;6 - suspendrandomenemies&amp;lt;br&amp;gt;7 - suspendboxadvance&amp;lt;br&amp;gt;8 - suspendoverlay&amp;lt;br&amp;gt;9 - suspendambientmusic&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|45||INT ||genCamera        ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|camera mode&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|46||INT ||genCamArg1       ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|cameraarg1&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|47||INT ||genCamArg2       ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|cameraarg2&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|48||INT ||genCamArg3       ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|cameraarg3&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|49||INT ||genCamArg4       ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|cameraarg4&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|50||INT ||genScrBackdrop   ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|currently displaying script backdrop index in [[MXS]]&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|51||INT ||genDays          ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|days of play&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|52||INT ||genHours         ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|hours of play&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|53||INT ||genMinutes       ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|minutes of play&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|54||INT ||genSeconds       ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|seconds of play&lt;br /&gt;
|-&lt;br /&gt;
|55||INT ||genMaxVehicle    ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|max vehicle types in [[VEH]]&lt;br /&gt;
|-&lt;br /&gt;
|56||INT ||genMaxTagname    ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|Last named tag&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|57||INT ||genLoadgameScript||load-game [[Script Trigger|plotscript]]&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|58||INT ||genTextboxBackdrop||bgcolor=&amp;quot;#FFC8C8&amp;quot;|currently displaying text box backdrop in [[MXS]]&lt;br /&gt;
|-&lt;br /&gt;
|59||INT ||genEnemyDissolve || Default enemy dissolve type. See dissolve types in [[DT1]] (each dissolve type is numbered one less than it is in DT1, for example Random Pixels is 0. &lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|60||INT ||genJoy      ||bgcolor=&amp;quot;#FFC8C8&amp;quot;|Enable/disable joystick&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|61||INT ||genPoison   ||Posion status indicator char&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|62||INT ||genStun     ||Stun status indicator char&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|63||INT ||genDamageCap||Damage cap (0 if there is none)&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|64||INT ||genMute||Mute status indicator char&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|65-76||INT*12 ||genStatCap||Stat caps for each stat, in this order:&amp;lt;br/&amp;gt;HP&amp;lt;br/&amp;gt;MP&amp;lt;br/&amp;gt;Atk&amp;lt;br/&amp;gt;Aim&amp;lt;br/&amp;gt;Def&amp;lt;br/&amp;gt;Dog&amp;lt;br/&amp;gt;Mag&amp;lt;br/&amp;gt;Wil&amp;lt;br/&amp;gt;Spd&amp;lt;br/&amp;gt;Ctr&amp;lt;br/&amp;gt;Focus&amp;lt;br/&amp;gt;Extra Hits&lt;br /&gt;
|-&lt;br /&gt;
|77||INT ||genMaxSFX||bgcolor=&amp;quot;#C8C8FF&amp;quot;|Number of sound effects&lt;br /&gt;
|-&lt;br /&gt;
|78||INT ||genMasterPal||Master palette number in [[PALETTES.BIN]]&lt;br /&gt;
|-&lt;br /&gt;
|79||INT ||genMaxMasterPal||bgcolor=&amp;quot;#C8C8FF&amp;quot;|Max master palette number in [[PALETTES.BIN]] and number of UI color sets in [[UICOLORS.BIN]]&lt;br /&gt;
|-&lt;br /&gt;
|80||INT ||genMaxMenu||Max menu in [[MENUS.BIN]]&lt;br /&gt;
|-&lt;br /&gt;
|81||INT ||genMaxMenuItem||Max menu item in [[MENUITEM.BIN]]&lt;br /&gt;
|-&lt;br /&gt;
|82||INT ||genMaxItem||Max item number in [[ITM]]&lt;br /&gt;
|-&lt;br /&gt;
|83||INT ||genMaxBoxBorder||Max box boder pictures in [[PT7]]&lt;br /&gt;
|-&lt;br /&gt;
|84||INT ||genMaxPortrait||Max portrait graphics in [[PT8]]&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|85||INT ||genMaxInventory||Max available inventory slots. 599 is current default max. Gets rounded &#039;&#039;up&#039;&#039; to the next multiple of 3 slots (counting the zeroth slot). Zero uses the default max of 599 (600 counting zero)&lt;br /&gt;
|-&lt;br /&gt;
|86||INT ||genErrorLevel||Error suppression level: &amp;lt;br&amp;gt;0: default to 4&amp;lt;br&amp;gt;2: show all warnings&amp;lt;br&amp;gt;3: suppress some warnings&amp;lt;br&amp;gt;4: suppress warnings from weak type checking&amp;lt;br&amp;gt;5: don&#039;t show errors not displayed in old versions&amp;lt;br&amp;gt;6: show only errors about corruption or interpreter problems&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#C8FFC8&amp;quot;|87||INT || genLevelCap ||Maximum hero level (0-genMaxLevel) (Unlike genMaxLevel, this can be changed with scripting, and has no effect on stat growth)&lt;br /&gt;
|-&lt;br /&gt;
|88||INT || genEquipMergeFormula ||Function used to calculate total hero elemental resistances from equipment:&amp;lt;br&amp;gt;&lt;br /&gt;
0: Awful compatible formula&amp;lt;br&amp;gt;&lt;br /&gt;
1: Multiplicative&amp;lt;br&amp;gt;&lt;br /&gt;
2: Additive&lt;br /&gt;
|-&lt;br /&gt;
|89||INT || genNumElements ||Number of elements which the game uses, up to 64 (any higher numbered ones should be ignored in-game)&lt;br /&gt;
|-&lt;br /&gt;
|90||INT || genUnlockedReserveXP ||Experience gained by unlocked reserve heroes, as a % of that given to active party heroes&lt;br /&gt;
|-&lt;br /&gt;
|91||INT || genLockedReserveXP ||Experience gained by locked reserve heroes, as a % of that given to active party heroes&lt;br /&gt;
|-&lt;br /&gt;
|92||INT || genPW4Hash ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|Hashed password, 0 if none&lt;br /&gt;
|-&lt;br /&gt;
|93||INT || genPW2Offset ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|old(second-style) passcode offset&lt;br /&gt;
|-&lt;br /&gt;
|94||INT || genPW2Length ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|old(second-style) passcode length (-1 if there is no password)&lt;br /&gt;
|-&lt;br /&gt;
|95||INT ||genVersion ||RPG file format version ID (For latest version see compat.bi. See also [[Incrementing the RPG format version number]])&lt;br /&gt;
|-&lt;br /&gt;
|96||INT ||genStartMoney||starting money&lt;br /&gt;
|-&lt;br /&gt;
|97||INT ||genMaxShop   ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|last shop in [[SHO]]&lt;br /&gt;
|-&lt;br /&gt;
|98||INT || genPW1Offset ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|old-old(first-style) passcode offset&lt;br /&gt;
|-&lt;br /&gt;
|99||INT || genPW1Length ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|old-old(first-style) passcode length&lt;br /&gt;
|-&lt;br /&gt;
|100||INT ||genNumBackdrops||bgcolor=&amp;quot;#C8C8FF&amp;quot;|&#039;&#039;number&#039;&#039; of screens in [[MXS]]&lt;br /&gt;
|-&lt;br /&gt;
|101||INT ||genBits       ||general bitsets:&amp;lt;br&amp;gt;0 - Pause in battle on spell and item menus&amp;lt;br&amp;gt;1 - Enable Caterpillar party&amp;lt;br&amp;gt;2 - don&#039;t restore HP on level-up&amp;lt;br&amp;gt;3 - don&#039;t restore MP on level-up&amp;lt;br&amp;gt;4 - Inns don&#039;t revive dead heros&amp;lt;br&amp;gt;5 - Hero swapping always available&amp;lt;br&amp;gt;6 - Hide ready meter in battle&amp;lt;br&amp;gt;7 - Hide health bar in battle&amp;lt;br&amp;gt;8 - disable debugging keys&amp;lt;br&amp;gt;9 - Simulate old level-up bug&amp;lt;br&amp;gt;10 - Permit double-triggering of scripts&amp;lt;br&amp;gt;11 - Skip title screen&amp;lt;br&amp;gt;12 - Skip load screen&amp;lt;br&amp;gt;13 - Pause in battle on all menus&amp;lt;br&amp;gt;14 - Disable Hero&#039;s Battle Cursor&amp;lt;br&amp;gt;15 - Default passability disabled by default&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|102||INT ||genStartX     ||starting X&lt;br /&gt;
|-&lt;br /&gt;
|103||INT ||genStartY     ||starting Y&lt;br /&gt;
|-&lt;br /&gt;
|104||INT ||genStartMap   ||starting Map&lt;br /&gt;
|-&lt;br /&gt;
|105||INT ||genOneTimeNPC ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|one-time-NPC indexer&lt;br /&gt;
|-&lt;br /&gt;
|106-170||INT*65|| genOneTimeNPCBits ||bgcolor=&amp;quot;#C8C8FF&amp;quot;|one-time-NPC placeholder bits. there are 0-1039 bits, but savegames store 0-1031 and the NPC editor only allows 0-1000&lt;br /&gt;
|-&lt;br /&gt;
|171||INT ||genDefaultDeathSfx ||Default enemy death sound effect ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|172||INT ||genMaxSong||bgcolor=&amp;quot;#C8C8FF&amp;quot;|last song number ([[SNG]] and [[BAM]])&lt;br /&gt;
|-&lt;br /&gt;
|173||INT ||genAcceptSfx||Sound effect to use for &amp;quot;accept&amp;quot; (in menus) ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|174||INT ||genCancelSfx||Sound effect to use for &amp;quot;cancel&amp;quot; (in menus) ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|175||INT ||genChooseSfx||Sound effect to use for moving the cursor (in menus) ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|176||INT ||gentextboxLetter || Sound effect to use for displaying text box lines ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|177-178||INT*2 ||genBits2    || Additional general bitsets&amp;lt;br&amp;gt;&lt;br /&gt;
0 - Simulate pushable NPC collision bug&amp;lt;br&amp;gt;&lt;br /&gt;
1 - Disable ESC to run from battle&amp;lt;br&amp;gt;&lt;br /&gt;
2 - Don&#039;t save gameover/loadgame script IDs (actually prevents &#039;&#039;using&#039;&#039; the stored &amp;quot;game over&amp;quot; or &amp;quot;loadgame&amp;quot; script ID number in preference to the ones specified by gen(genGameoverScript) and gen(genLoadgameScript))&amp;lt;br&amp;gt;&lt;br /&gt;
3 - Dead heroes gain share of experience&amp;lt;br&amp;gt;&lt;br /&gt;
4 - Locked heros can&#039;t be rearranged&amp;lt;br&amp;gt;&lt;br /&gt;
5 - Attack captions pause battle meters&amp;lt;br&amp;gt;&lt;br /&gt;
6 - Don&#039;t randomize battle ready-meters&amp;lt;br&amp;gt;&lt;br /&gt;
7 - Battle menus wait for attack animations&amp;lt;br&amp;gt;&lt;br /&gt;
8 - Enable better scancodes for scripts&amp;lt;br&amp;gt;&lt;br /&gt;
9 - Simulate old fail vs. elemental resist bit&amp;lt;br&amp;gt;&lt;br /&gt;
10 - 0 damage when immune to attack elements&amp;lt;br&amp;gt;&lt;br /&gt;
11 - Recreate map slices when changing maps&amp;lt;br&amp;gt;&lt;br /&gt;
12 - Harm tiles harm non-caterpillar heroes&amp;lt;br&amp;gt;&lt;br /&gt;
13 - Attacks ignore extra hits by default&amp;lt;br&amp;gt;&lt;br /&gt;
14 - Don&#039;t divide experience between heroes&amp;lt;br&amp;gt;&lt;br /&gt;
15 - Don&#039;t reset max stats after OOB attack&amp;lt;br&amp;gt;&lt;br /&gt;
16 - Don&#039;t limit max tags to 1000&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|179||INT ||genItemLearnSFX   || Sound effect when learning a spell from an item. ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|180||INT ||genCantLearnSFX   || Sound effect when a hero couldn&#039;t learn spell from item. ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|181||INT ||genBuySFX         || Sound effect when buying an item from a shop. ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|182||INT ||genHireSFX        || Sound effect when hiring a hero from a shop. ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|183||INT ||genSellSFX        || Sound effect when selling an item to a shop. ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|184||INT ||genCantBuySFX     || Sound effect when you can&#039;t afford item/hire. ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|185||INT ||genCantSellSFX    || Sound effect when trying to sell an unsellable item. ID + 1 (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
|186||INT ||genDamageDisplayTicks || Number of ticks to display damage numbers in battle (default 7)&lt;br /&gt;
|-&lt;br /&gt;
|187||INT ||genDamageDisplayRise || Number of pixels the displayed damage should rise (default 14)&lt;br /&gt;
|-&lt;br /&gt;
|188||INT ||genHeroWeakHP || % HP threshold for hero weak state (default to 20 if 0)&lt;br /&gt;
|-&lt;br /&gt;
|189||INT ||genEnemyWeakHP || % HP threshold for enemy weak state (default to 20 if 0)&lt;br /&gt;
|-&lt;br /&gt;
|190||INT ||genAutosortScheme || Method of autosorting inventory:&amp;lt;br&amp;gt;&lt;br /&gt;
0 - by item type&amp;lt;br&amp;gt;&lt;br /&gt;
1 - into usable/not usable&amp;lt;br&amp;gt;&lt;br /&gt;
2 - alphabetically&amp;lt;br&amp;gt;&lt;br /&gt;
3 - by ID number&amp;lt;br&amp;gt;&lt;br /&gt;
4 - no reordering beyond compacting&lt;br /&gt;
|-&lt;br /&gt;
|191||INT || genMaxLevel || Maximum level (0-99) This is the unchanging maximum allowed level for heroes. it is used in the hero stats editor. (Not to be confused with genLevelCap)&lt;br /&gt;
|-&lt;br /&gt;
|192||INT || genBattleMode || Battle mode 0=Active-time, 1=Turn-based&lt;br /&gt;
|-&lt;br /&gt;
|193||INT || genItemStackSize || Default maximum size of an inventory stack&lt;br /&gt;
|-&lt;br /&gt;
|194||INT || genResolutionX || Width in pixels of the game screen (not including graphics backend scaling) or 0 for default, 320x200 {{WIP|inline}}&lt;br /&gt;
|-&lt;br /&gt;
|195||INT || genResolutionY || Height in pixels of the game screen&lt;br /&gt;
|-&lt;br /&gt;
|196-198||INT*5 ||          ||bgcolor=&amp;quot;#D0D0D0&amp;quot;| unused space&lt;br /&gt;
|-&lt;br /&gt;
|199||INT ||              ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|old (second-style) password scattertable head&lt;br /&gt;
|-&lt;br /&gt;
|200-359||INT*160 ||          ||bgcolor=&amp;quot;#D0D0D0&amp;quot;|old (second-style) password scattertable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Maximums&#039;&#039;&#039; : &amp;quot;max XYZ&amp;quot; means &#039;the highest numbered XYZ&#039;. If you have 80 enemies defined, then &amp;quot;max enemy&amp;quot; == 79, because the numbering starts from 0.&lt;br /&gt;
&lt;br /&gt;
== Passwords ==&lt;br /&gt;
The password protection in the RPG format is necessarily wet-paper-bag weak, due to the GNU GPL licensing of the engine. RPG password protection works entirely on the honor system. It&#039;s kinda like that faded sign hanging on the gates of Anhk-Morpork that says &amp;quot;Thank you for not invading our city&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is how to read the password. Please-please-pretty-please dont just ignore it. It is flimsy pathetic laughable protection, but its all we have! Dont take away our wire umbrella in the lightening storm!&lt;br /&gt;
&lt;br /&gt;
Over time there have been 4 different password formats, referred to as PW1, PW2, PW3, PW4. All are stored in the GEN lump. The format is determined by looking at genVersion and genPassVersion (go down this table):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&lt;br /&gt;
! Format || Indicator || Introduced || Last used&lt;br /&gt;
|-&lt;br /&gt;
|PW4 || gen(genPassVersion) = 257 || pre-Zenzizenzic (Dec 28 2010) || &lt;br /&gt;
|-&lt;br /&gt;
|PW3 || gen(genPassVersion) = 256 || Ozarks (June 28 2004) || Still partial back-compat (see below)&lt;br /&gt;
|-&lt;br /&gt;
|PW2 || gen(genVersion) &amp;gt;= 3 || June 18 1999 || Written until Dec 28 2010&lt;br /&gt;
|-&lt;br /&gt;
|PW1 || Otherwise || Stone Age ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For backwards compatibility, Custom also writes a blank PW3 password is there is no password, or a random PW3 password if there is one.&lt;br /&gt;
&lt;br /&gt;
The easiest thing to do when decoding an RPG file that still has its password in an old format is to print a warning message telling the user to upgrade their RPG file with CUSTOM.EXE&lt;br /&gt;
&lt;br /&gt;
=== PW4 ===&lt;br /&gt;
This new format stores just a 9-bit hash of the password, in gen(genPW4Hash), so that it is not retrievable.&lt;br /&gt;
&lt;br /&gt;
The hash is calculated as follows (or see common.bas for the FB version):&lt;br /&gt;
&lt;br /&gt;
 unsigned short passwordhash (char *p) {&lt;br /&gt;
   if (strlen(p) == 0) return 0;&lt;br /&gt;
   unsigned int hash = 0;&lt;br /&gt;
   while (*p)&lt;br /&gt;
     hash = hash * 3 + *p++ * 31;&lt;br /&gt;
   return (hash &amp;amp; 511) | 512;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== PW3 ===&lt;br /&gt;
In this format, the password is obscured with weak, but space-wasting encription, and the length of the password is totally unprotected.&lt;br /&gt;
&lt;br /&gt;
GEN(6) is the password rotator. It will always be a random number from 1 to 254 that will be used to ascii-rotate/obfuscate the password.&lt;br /&gt;
&lt;br /&gt;
GEN(7-15) is the password text. There are 17 bytes of data here (so the high byte of GEN(15) is unused). Read this string of 17 bytes. ascii-rotate each character by subtracting GEN(6) and if the result is &amp;lt; 0 then add 255, and then discard all characters with ascii values less than 32 (space). The resulting string will be your password. If the string is empty (all 17 chars were under 32) then the RPG file does not have a password.&lt;br /&gt;
&lt;br /&gt;
=== PW2 ===&lt;br /&gt;
This information describes the obsolete scattertable-based password storage format. It is only here as a curiousity... and a monument of shame to security-through-obscurity&lt;br /&gt;
The first element of the password mess GEN(200) is the bit-offset of the first bit in the password, relative to the beginning of the scattertable head (199). The next element (201) is the bit-offset of the next bit in the password, and so on. So GEN(200) thru GEN(207) will give you the bits that make up the first ascii char of the password. GEN(208)-GEN(215) gives you the next char, and so on up to GEN(94)+1 bytes. After you have read all the chars from the scattertable, rotate them down by the value of GEN(93) (that is to say, subtract GEN(93) from the ascii value of each char, and if the result is less than 0, add 256).&lt;br /&gt;
&lt;br /&gt;
Clear as mud, right? Here is an example. Lets suppose that the data in the GEN lump looks like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GEN(93)=172    the ascii-rotate offset&lt;br /&gt;
GEN(94)=23     the number of bits -1.&lt;br /&gt;
               23+1 = 24, thats the total number of bits in the password&lt;br /&gt;
               There are 8 bits in each char of the password, so 24&lt;br /&gt;
               divided by 8 is 3. That means this password will end up being 3 chars long.&lt;br /&gt;
 &lt;br /&gt;
BIT OFFSETS/SCATTERTABLE&lt;br /&gt;
GEN(199)=8 [0001 0000 0000 0000] dummy number. Never 0 or 255&lt;br /&gt;
GEN(200)=4 [0010 0000 0000 0000] Start here. bit 4 in the table is a 0&lt;br /&gt;
GEN(201)=3 [1100 0000 0000 0000] bit 3 in the table is a 1, now we have 01&lt;br /&gt;
GEN(202)=18[0100 1000 0000 0000] bit 18 is 1: 011&lt;br /&gt;
GEN(203)=18[0100 1000 0000 0000] bit 18 is 1: 0111&lt;br /&gt;
GEN(204)=54[0110 1100 0000 0000] bit 58 is 0: 01110&lt;br /&gt;
GEN(205)=33[1000 0010 0000 0000] bit 33 is 1: 011101&lt;br /&gt;
GEN(206)=85[1010 1010 0000 0000] bit 85 is 1: 0111011&lt;br /&gt;
GEN(207)=82[0100 1010 0000 0000] bit 82 is 1: 01110111&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
So we end up with 01110111 which is char 238, (a wierd ascii math symbol) Now we subtract the value of GEN(93) and we get 66, which is the ascii code for upper case B, so we know the first letter of the password is B.&lt;br /&gt;
 &lt;br /&gt;
Ah, what fun. what a mess. what a waste. *sigh*&lt;br /&gt;
&lt;br /&gt;
{{LumpSpec}}&lt;/div&gt;</summary>
		<author><name>The Mad Cacti</name></author>
	</entry>
</feed>