.LOG

10:29 PM, 12/28/2018
Add:		Keyboard shortcuts for zooming in, out, and resetting to 100%

3:03 PM, 1/21/2019
Change:		rpgSprite SWF command editor - You can now drag to rearrange the stored order of the SWF variables.

9:06 PM, 4/18/2019
Change:		loadSwf now has noCollide set to "true" by default

6:11 PM, 4/20/2019
Change:		added a collision check to rpgSprite to detect if it overlaps the player when it spawns and temporarily stops colliding until the overlap stops.

6:07 PM, 4/27/2019
Add:			Database's startingPlace:  Added a button to move the player off-screen
Change:		Database's startingPlace:  When updating the player's position, the image slides from the old location to the new location.  This is intended to clearly show what is happening when you click the "move off-screen" button, in a visual way.

1:34 PM, 4/28/2019
Fix:			The cursor no longer gets "stuck" when dragging out of the map or chipset  (map editor + collision editor)

7:47 PM, 4/30/2019
Change:		rpgSprite editor "event" comment defaults to "ROOT" container, because listening for events within COMMON doesn't seem to work for some reason.

10:27 PM, 5/4/2019
Fix:			rpgSprite.  Fixed an edge case where reverting (rewinding) a script that referred to a sprite that's currently hidden by a flag, would stall, preventing options from being displayed for any selected command from that point on. The solution was to delete dummy-sprites and then re-create them instead of attempting to restore their starting appearance. (even though that should theoretically work)

7:01 PM, 5/6/2019
Fix:			rpgSprite.  Fixed a glitch where some on-map sprites would mistakenly be added to the dummy-sprites list upon selecting a script command, and then removed when selecting another script command.

10:15 AM, 5/12/2019
Fix:			The hit-box of onScreen and offScreen detection was positioned wrong.  (halfway up the screen)

8:41 PM, 5/16/2019
Change:		Can drag-and-drop a saved-game .txt file onto game_test.exe to load that saved-game

9:35 AM, 10/23/2019
Change:		skipReplay.swf  Now responds to "replay" and "skip" properties.  Also responds to initial "reply" property as "replay" (Because it has been a common typo)
													Hides the "skip" button if multiple teleports are detected.
													Resolves absolute and relative level paths exactly the same way that "teleport" commands do.  (copied code)
Change:		rpgSprite editor.		"teleport" command editor can now display a true preview of any transition effect.

12:50 PM, 10/27/2019
Change:		rpgSprite "teleport" command editor.  Now uses the existing map_pane instead of making another one on top of it.

2:18 PM, 11/28/2019
Change:		sprite editors are no longer loaded using the ScrollPane component, and now use my imageLoader component instead.
						I wasn't scrolling the entire editor anyway.  Scrolling would look ugly, and be akward to use.  The editors have always been designed to accomodate the parent-editor anyway.  They're like the SWF add-ons for my games. The add-ons know about the game, the game does not know about the add-ons.

9:41 PM, 12/28/2019
Fix:			rpgSprite "while" loops now resume the main script instead of aborting everything when their inner-scripts contain nothing/are all comments
Fix:			rpgSprite "wait" command's "promise" mode can now wait for SPRITES.mySprite.talk.promise / this.talk.promise
Change:		Fully revised how the entire script system works to avoid creating an endless call-stack which can cause Flash to loop-panic
Fix:			loadGame removes previous permSwf BEFORE loading+replacing the saved RAM object, so that permSwf doesn't accidentally get cleared after the load

10:13 PM, 1/2/2020
Fix:			skipReplay.swf  Now searches for levels upon init.  Now ignores un-spawned sprites when searching for teleports.

9:25 PM, 1/10/2020
Change:		rpgSprite moveRelative,moveAbsolute command can now resolve instantly when their durations are 0
Change:		rpgSprite move commands resolve instantly instead of waiting 1ms

2:41 PM, 1/21/2020
Add:			cameraTrap.swf
Change:		"swf" command now automatically converts passed variables to implied values
	(this MIGHT break a ton of stuff... or it might simply do what everything already expects)
	(the pokemon game might not like this?)
	(not yet clear how this will affect display components like choice.swf )
Change:		textbox.swf will choose to display booleans, numbers, and null  (but not undefined)
Change:		textThought.swf will choose to display booleans, numbers, and null  (but not undefined)
Change:		textBaloon.swf will choose to display booleans, numbers, and null  (but not undefined)

11:51 PM, 2/3/2020
Add:			persistent_textbox.swf

10:46 PM, 2/6/2020
Change:		"swf" command now passes data to loaded SWF file twice. Once after load (for convenience), and once after frame-1 runs (for legacy compatibility)
					Internal linkage movieClips only receive data once, same as before.
Fix:			"swf" command now is able to call loaded SWF file's start() function. (was broken before)

10:07 PM, 3/3/2020
Add:			GameEditor now loads "updateSprites.swf" SWF files for each type of sprite.

12:15 AM, 3/27/2020
Change:		follower.swf can now copy the appearance of COMMON sprites
Fix:			"if" script command will now compare implied values as well as literal values.  ex: "false" === false

9:21 PM, 3/30/2020
Add:			loading and saving the game now fires "loadGame" and "saveGame" events
Change:		loadSave.swf now fully uses the ROOT loading and saving functions instead of using duplicate code
Change:		loading a saved game now re-runs all COMMON "auto" scripts		(Pokemon game needs to be updated)

6:25 AM, 4/7/2020
Change:		ROOT.swfLoader now evaluates SWF data settings with nestedEval() before storing. This preserves the values when local temporary sprite variables are used.
Change:		swf command passes a reference to the current sprite to the new ROOT.swfLoader
Change:		follower.swf will default to following the player when previous follower cannot be found

7:10 PM, 4/11/2020
Change:		rpgSprite's now detect forced overlapping with the player and disables collision during that time, to prevent "trapping" the player

12:29 AM, 4/12/2020
Change:		"move" command now fires "onMoveScriptFinish" instead of "onMoveFinish"
Change:		"moveRelative" and "moveAbsolute" commands now fire "onMoveFinish" when they complete
Change:		rpgSprite's "noCollide" is now a property, so that auto overlap collision-disable can detect when outside code changes its intended value at any time between events

8:45 PM, 6/23/2020
Change:		Loading a saved game now clears the HUD

1:56 PM, 7/12/2020
Change:		player sprite now has collisionAdd() and collisionRemove() functions
					player sprite reacts when scrolling mode changes
Change:		"scroll" sprite now uses EventClip class
					"scroll" sprite announces "change_mode" event
					"scroll" sprite allows "loop" scroll mode
Change:		map3 system now has scroll-panels added to the map edges for looping scrolling

11:18 PM, 8/4/2020
Change:		On-map rpgSprites can now react to "leaveMap"  (synchronous commands only)

8:28 PM, 8/6/2020
Change:		game_mc tells the map to use scroll-panels, since they are now optional and OFF by default.

3:02 PM, 8/29/2020
Add:			Sprite scripts can send an output value using this.output
					this.output gets returned as its promise's resolved value,  and stored directly within the promise as this.waitPromise.output.
						So... Scripts can call another script via function-call and store a reference to its returned promise, and then simply read the promise's .output property.
Add:			Sprite scripts add their promises to their event objects as evt.promise
						So... Code can trigger a script using an event, and then wait for that script to finish using evt.promise... as well as reading its output value.

9:31 PM, 9/2/2020
Fix:			"pause" command now waits 1 frame before resuming script, so that code has time to respond to the change
						Specifically, rpgSprite won't know it's paused until it checks 1 frame later. Animation misbehaves otherwise.

1:06 PM, 9/29/2020
Add:			zincFullScreen.as

9:58 PM, 10/3/2020
Add:			overlay_fullScreen

8:41 PM, 10/5/2020
Add:			Added ROOT.tempContainers which is a list of all movieClips that get removed upon teleport.
Change:		game_mc now uses this list to remove those clips
Change:		SWF command uses this list to figure out whether to check if the current level changed during the SWF's animation.  SWF's placed in non-level parents don't need to check this.
Change:		ROOT.swfLoader uses this list to identify "tempContainers"

9:15 PM, 10/5/2020
Fix:			rpgScriptSystem  Now correctly detects when the level unloads while waiting for an asynchronous command and interrupts the script
Change:		rpgSprite no longer fires its auto() script when it is a COMMON sprite.  Regular level sprites will still call their own auto() script.
Change:		COMMON now manually fires all auto() scripts for COMMON sprites instead of those sprites running it themselves.

1:00 AM, 10/6/2020
Change:		re-wrote "while" rpgSprite script command.  Maybe faster?  Maybe more consistent speed?  Seems slightly less stable.

9:49 PM, 10/7/2020
Add:			"appearance" command can now change the pose without changing the direction.

10:17 PM, 10/7/2020
Add:			setKeys.as can now position its keyboard window anywhere, based on x and y settings.

2:50 PM, 10/12/2020
Add:			moveRelative script command can now collide with walls.

6:50 PM, 10/20/2020
Fix:			improved moveRelative's wall collision to be pixel-accurate. (Still only checks sprite's center)

8:30 PM, 10/25/2020
Change:		showVar.swf can now read a sprite's local variables
Fix:			follower.swf now always stops animating upon map-switch

7:26 PM, 10/27/2020
Fix:			"while" script-command now detects map-change and interrupts itself
Fix:			COMMON rpgSprite auto() scripts now reliaby run right after loading a saved game.

9:40 PM, 11/11/2020
Change:		"scroll" sprite detects maps that are smaller than the screen, then crops and centers the map and switched to "none" scroll-mode.  (This is reset each time a map loads, because the scroll sprite is re-created for each map)

1:33 PM, 11/15/2020
Added:		"colorTrans" object to all sprites
Added:		"brightness" perperty to all sprites

10:31 PM, 11/15/2020
Added:		hud_itemPane.swf

12:02 AM, 11/22/2020
Added:		list.swf
Change:		choice.swf can now handle local paths for "target"

10:37 PM, 11/25/2020
Fix:			The "onRemoveLevelStart" event was being fired twice whenever the player exited a map.

8:36 PM, 11/27/2020
Change:		Altered chipset yipe2.png to add a forest tile

10:21 PM, 12/3/2020
Change:		Added a "mask" property to textbox.swf, scrollbox.swf, and hover_scrollbox.swf to set the fading of the background
Change:		rpgSprite's textbox editor now always uses the textbox_editor.swf instead of the internal textbox editor.
						This allows access to the SWF settings if desired.  There's also no need to have 2 editors anyway.

6:44 PM, 12/5/2020
Fix:		Improved the spawn no-collide code of rpgSprite to be more reliable,
					allowing scripts to reliably change the "noCollide" property of a sprite while it's waiting for the player to step away.
					This means when when teleporting to a new map, the player won't immediately collide with sprites that they're next to, and scripts can still disable the collision of a sprite (this.noCollide) while it's waiting for the player to step away.  Preventing a glitch where a sprite that's not intended to have collision will accidentally re-gain collision after the player steps away from it.

10:08 PM, 12/5/2020
Added:	Scripts can now wait for events.

3:33 AM, 12/7/2020
Change:		Flag checking no longer treats (0) as being the same as (undefined)
					Flag checking now uses === for most comparisons
Fix:			Loading a saved game no longer attempts to restore SWF files placed into "this" since it won't exist

6:14 PM, 12/7/2020
Fix:			"wait" rpgSprite command.  When waiting for an "event", it no longer succeeds when eventContainer is undefined

2:11 AM, 12/8/2020
Fix:			Made "leaveMap" scripts more reliable (but still not perfect)  by making ROOT.loadLevel() wait for all leaveMap scripts to finish. (within a reasonable time limit)

3:05 PM, 12/12/2020
Fix:			textbox_editor.swf no longer always overrides all the SWF settings. (It was a naive design choice)

12:19 PM, 12/13/2020
Fix:			FINALLY made leaveMap scripts reliable, by replacing their interruptCheck() with alwaysTrue().
					 loadLevel() will wait up to 3 seconds before aborting scripts.
Add:			Added the event ROOT.spawn_update which announces when sprite-spawning has been updated.
					 Useful when something wants to check whether new sprites have appeared.

10:35 PM, 12/17/2020
Fix:			Made the "tile" property more accurate by making it read from the onTileChange event whenever possible.
Change:		Made collision checks much more efficient by disabling the event reaction when the "allow_collision" flag is turned OFF
Change:		Made "see" checks much more efficient by disabling the event reactions when the "canSee" flag is turned OFF or there's no "see" script
					... and by making it only check when tile-movement or direction-change occurs, instead of using a frame-loop
Change:		Made onScreen and offScreen checks much more efficient by disabling the event reaction when the "allow_screen" flag is turned OFF

11:22 PM, 12/17/2020
Change:		Replaced game.exe and game_taller.exe with Flash 9 versions to improve scrollRect performance.

5:47 PM, 12/29/2020
Change:		rpgSprites automatically disable their collision when they overlap the player

11:28 AM, 1/5/2021
Fix:			rpgSprite "onMoveFinish" event now occurs after each moveRelative or moveAbsolute command.
					re-coded automatic collision overlap to use onMoveFinish instead of onTileChange.  Sprites don't always correspond to tiles.

7:44 PM, 2/7/2021
Change:		comment commands starting with a ; will always display trace() output in Flash
Add:			RAM_F.array.shuffle() added to helper functions
Change:		RAM_F.array.remove() now returns the item that was removed.
						And it now returns null when it fails.

10:38 PM, 2/17/2021
Remove:		ROOT.swfLoader because it often tends to confuse game scripts, causing unexpected problems.

9:55 PM, 3/28/2021
Add:			sprites can display arbitrary preview.swf files,
					 which can see their own sprite's data,
					 and react to editor events.

4:37 PM, 4/5/2021
Change:		testZinc_gameEditor.exe can use a command-line switch -debug:off to hide the debug output window
Change:		GameEditor.exe can auto-open a lvl file passsed to it via drag-and-drop or command-line

9:27 PM, 4/9/2021
Fix:			dragging and dropping files onto the editor now works in Windows 10

8:21 PM, 4/10/2021
Added:		titleScreen.swf database editor.  Can now drag and drop .url files onto the URL field to use their address.
Change:		titleScreen.swf You can now drag-and-drop image files onto the background and directly onto the watermark to replace their images.

1:32 PM, 4/13/2021
Change:		Added hover-hint to gallery.swf
Change:		Added hover-hint to tabMenu.swf

11:11 PM, 4/21/2021
Change:		Added "alwaysCollide" initialization-flag to rpgSprites, to enable spawn-collisions, which are normally avoided by default.  To work, this flag must be true at spawn time, not set afterwards.

9:25 PM, 4/26/2021
Fix:			moveRelative, moveAbsolute  SPRITE_GRID now gets updated after each movement finishes.

6:54 PM, 5/1/2021
Add:			When zoomed-out, a screen-size preview rectangle is displayed around the mouse
Change:		SpriteEditor's map and all movieClips within it are cropped to the map's size
Add:			SpriteEditor.  When selecting a sprite that's outside of the map, an arrow will point at it.

8:26 PM, 5/5/2021
Change:		SpriteEditor's off-screen sprite arrow no longer scrolls with the map and instead is displayed on top of the map at its edges.
					This arrow now rotates to show the sprite's exact direction,  and scales up to show how far away the sprite is.

8:20 PM, 5/10/2021
Add:			COMMON sprites can now react to the title screen using ROOT.onTitleScreen and ROOT.offTitleScreen

11:18 AM, 5/11/2021
Change:		gallery.swf  sends and reacts to events:  ROOT.gallery:show ROOT.gallery:hide

12:18 AM, 5/14/2021
Change:		loadSave.swf		added keyboard shortcuts CTRL+L CTRL+S for loading and saving cookies.

1:34 AM, 5/14/2021
Add:			Added a loading animation throbber.

12:55 AM, 5/17/2021
Add:			Added efficient tile-based collision for sprites that have "tileCollision" scripts.  These automatically disable that sprite's "collision" script.  This is controlled using the "useTileCollision" variable.

11:38 PM, 5/21/2021
Change:		Sprite collision now only collides with sprites near the player instead of EVERY sprite on the map.

10:18 PM, 6/8/2021
Add:			invisible_wall sprite
Fix:			title screen reliably triggers its "unload" event
Fix:			newMap triggers weren't occurring when maps had very few sprites

7:16 PM, 6/12/2021
Fix:			readXml.as now correctly recreates variables containing NULL

9:25 AM, 7/18/2021
Change:		GameEditor numList component uses narrower buttons
Change:		GameEditor collision editor has colors for collision values from 0 to 17
	(game editor re-compile is pending)

10:33 PM, 8/1/2021
Change:		eraseTile.swf can now remove multiple layers at once by setting the "layer" setting to 1,2 (a comma-separated string of numbers)

10:10 PM, 8/24/2021
Change:		re-coded the moveAbsolute command editor to use the existing map instead of displaying a new one
Change:		moveRelative now reads the walkSpeed from previous moveAbsolute commands
Change:		re-designed the event command editor to use a single value storing the event path together with the event name at the end
Change:		The event editor now reads "customEvents.json"

8:58 PM, 9/21/2021
Change:		sepiaTone.swf now re-applies its effect to its target movieClip when it vanishes and a new one replaces it.

7:42 PM, 10/16/2021
Add:			ROOT.invisible_wall:hit event

7/28/2023, 9:44 AM
Change:		Re-drew Ayla nude walk, nude stand sprite.

7/30/2023, 7:05 PM
Fix:			"swf" command resumes the calling script when a movieClip vanishes, unless the calling script's map changes
