ghost.zh
Version 2.8.1

Changes in 2.7.0 and earlier were not tracked at the time. The logs for
those versions may be incomplete.

2.8.1 (2016-09-16)
* Fixed a bug in positioning enemies after knockback in Ghost_HaltingWalk4()
    and Ghost_ConstantWalk4().
* Fixed an error in validating spawn locations in FindSpawnPoint().
* Fixed some weird behavior in weapons with EWD_AIM_AT_LINK spinning while
    waiting to aim.
* EWM_THROW with an argument of -1 (land at Link's position) is now much more
    accurate at long distances.
* Added ghostZHChangelog.txt.

2.8.0 (2015-10-06)
* Moved files into a numbered subdirectory so multiple versions can coexist.
* Added an option to always read the script's name from the enemy's name,
    freeing misc. attribute 12 for other uses.
* Added Ghost_SetSize().
* Added __IsPit() to allow customization of what constitutes a "pit."
* Added a new death animation in which the enemy shrinks to nothing.
* Added constants to use as arguments to Ghost_DeathAnimation() and
    Waitframe functions.
* SetEnemyProperty() now directly affects the npc's data as well as the
    stored global variable.
* The "All Enemies Are Invisible" screen flag now works, although it makes
    enemies completely invisible.
* The "Can Only Be Seen By Lens Of Truth" flag now works as long as
    __GH_USE_DRAWCOMBO is disabled.
* Fixed spawning enemies not being hidden correctly.
* Fixed an issue with knockback in Ghost_ConstantWalk4().
* Fixed __Ghost_NewDir4() ignoring random rate.
* Fixed walkability detection in walking functions when hitbox size is not
    a multiple of 16.
* The FFC is now more thoroughly cleaned up when an enemy dies.
* EWF_ROTATE_360 now works with large weapons.
* Weapons with EWF_ROTATE_360 are no longer drawn when Link is dead.
* Added EWF_FAKE_Z and a setting to make all weapons use fake Z values.
* Fixed dummy weapons being instantly deleted in some cases.

2.7.2 (2014-08-20)
* AutoGhost() will no longer grab changers.
* AutoGhost() now sets the FFC's size.
* FindUnusedFFC() will no longer return changers.
* When an enemy dies, its FFC is set to 0 instead of GH_INVISIBLE_COMBO.
* Fixed some walkability checking issues in the walking functions.
* Fixed the exploding and flashing death animation not flashing.
* Corrected flashing CSets.
* Legacy Waitframes are now included when ghost.zh scripts are suspended.

2.7.1 (2014-01-30)
* AutoGhost() doesn't run when ghost.zh scripts are suspended.
* Fixed enemies being unable to drop items if they use a death animation.
* FindUnusedFFC() now checks for GH_INVISIBLE_COMBO.
* Fixed walkability checking issues when turning in the walking functions.

2.7.0 (2013-11-21)
* Added Ghost_FloaterWalk().
* Added EWF_ROTATE_360.
* Added settings to change how big an enemy must be to use large shadows.
* Added an option to use scripted shadows rather than built-in ones
    whenever possible.
* Added new Ghost_Waitframe() variants to simplify usage; you can now leave out
    the quitOnDeath and clearOnDeath arguments (they'll both be true) or
    specify a death animation
* The global script functions have been consolidated into three. This should
    eliminate the need to update the global script for future updates.

2.6.0 (2013-02-27)
* Added GetEnemyProperty() and SetEnemyProperty().
* SetEWeaponMovement() now takes another argument. Some similar weapon movement
    types have been merged with the differing functionality now controlled by
    the second argument.
* The movement functions have been rewritten to be more accurate and faster.
* The FireEWeapon functions can now take -1 for the sprite and sound arguments
    to use defaults for the weapon type.
* 2x2 shadows are now used for enemies 3x3 and larger.
    (Only applies if GH_FAKE_Z or GHF_FAKE_Z is used)
* Added GHF_STATIC_SHADOW for enemies whose shadows should never animate.
    (Only applies if GH_FAKE_Z or GHF_FAKE_Z is used)

2.5.1 (2012-12-21)
* AutoGhost scripts can now be read from the enemy's name. Set misc.
    attribute 12 to -1 and put the script name in the enemy's name after @.
* Added constants to control flashing and knockback.

2.5.0 (2012-12-09)
* Split ghost.zh into multiple files.
* Drawing has been moved to the global script, so enemies won't disappear
    when the screen freezes.
* The multi-FFC functions have been replaced.
* Directions 8-15 should be handled correctly now.
* Ghost_Explode() has been replaced by Ghost_DeathAnimation().
* Added functions to suspend and resume ghost.zh scripts.
* Added functions to find random spawn points.
* Added functions to simplify reading attributes.
* Shadows can now be animated.
* The "Is Flashing" and "Is Flickering" enemy flags work now.

2.4.0 (2012-07-22)
* Added Ghost_WasFrozen().

2.3.2 (2012-07-12)
* Added __GH_INVISIBLE_EXTEND, which will set up an FFC with the invisible
    combo but still set npc->Extend to 3.

2.3.1 (2012-06-15)
* Fixed a drawing error.

2.3.0 (2012-05-20)
* Added support for enemies to use multiple FFCs.
* It's now possible to use Screen->DrawCombo rather than making the FFC
    itself visible.
* Enemy blocking combos and flags are now respected.
* Ghost_CanMove and Ghost_CanMovePixel now take an optional argument indicating
    whether the enemy is in the air; this defaults to Ghost_Z>0.
* Added a setting to make all Z-axis movement actually use the Y axis.
* Added a setting to make enemies flicker instead of flash.
* You can now use an alternate number (-1 by default) instead of
    GH_INVISIBLE_COMBO to make enemies use the invisible combo.
* Added GHF_FLYING_ENEMY, GHF_IGNORE_NO_ENEMY, GHF_WATER_ONLY, and 
    GHF_DEEP_WATER_ONLY
* GHF_ flags can no longer be ORed together; they must be set individually.
* Ghost_SetFlags() and the init functions with a flags argument are deprecated.
* Ghost_WaitframeLight() now takes ffc and npc arguments. The old version
    is deprecated and may not work correctly with existing scripts.

2.2.0 (2012-02-28)
* Added some handling for sideview screens.
* Added GHF_FULL_TILE_MOVEMENT, which makes the enemy consider a combo
    completely solid if any quadrant of it is.
* Various bug fixes.

2.1.0 (2011-08-14)
* Added Ghost_ConstantWalk4(), Ghost_ConstantWalk8(), Ghost_HaltingWalk4(),
    and Ghost_VariableWalk8().
* Added EWM_DRIFT and EWM_DRIFT_WAIT.
* The hitbox adjustments made by Ghost_SetHitOffsets() are now
    taken into account by Ghost_CanMove().

2.0.0 (2011-08-03)
* First version of modern ghost.zh. Completely overhauled since previous versions.

