Many game-breaking changes. Ghost added, but running AI is broken. Beginning Item work. Added item and character spawners.

7/28/14

Finally committing, but still very broken.
Testing ghost and healthpot. Ghost does weird stuff before reviving.
After healing, it follows the revived creature around for some reason.
HealthPots work, push h to heal after getting one. Fun stuff.

CHANGES:

Character.java-
*Changed a few fields, to make less silly. Status is now an array
because a character may have multiple statuses.

*Sloppily added a wasHit field that turns true the turn this creature is
hit. Do not confuse with the isHit variable which is used to animate
being hit. This is used to start running.
Also added an IS_RUNNING variable that is true for the creatures that
run when being hit. This should be final, will change later.

*Added a getImage() method for simplicity in getting images. Note this
must be overridden for all characters.

*Added sourceCharacter parameter for dealDamage() method. This is used
for the running character to know who to run from.

*Added overloaded revive method that revives assuming the character is
there. Used in reviver AI

*Made PathFinder return a boolean, true if successful to be used for
alternate actions in case of failure.

*Added RunningPathFinder() that should serve to run from a target but
seems to be broken. Basically reuses pathfinder but prioritizes distance
over closeness.
THIS SEEMS TO BE BROKEN WHILE USING CMD SO YOU MAY NEED TO COMMENT THIS
OUT TO WORK.\

*If RunningPathFinder() fails I have a reflexive portion that blindly
runs away.

*Added AIReviver() That combines Pathfinder and getDeadCharacter to
revive dead characters.

Consumable.java-
*Made initial stack size = 1. Things don't stack yet though.

DungeonBuilder.java-
*Added a spawner subclass and an itemSpawner subclass that are used in
spawning.
Essentially, each encapsulates a Character and item respectively,
keeping track of a spawn rate. They include a method to change the spawn
rate.

*Changed spawningEnemyList to use Spawner instead. Added
spawningItemList that uses ItemSpawner.

*Removed currentFloorInput parameter for a new dungeonBuilder because a
new DungeonBuilder will be floor 1. New floors use the overloaded
constructor.

*Modified getSpawnLists() method so that takes it now uses
spawners/itemSpawner.

*Modified assignTilePos() so that there is a chance that it will
generate a blob instead. Similar tactics can be used to expand to more
interesting capabilities, ex. different themes have different layouts.

*Added setSeed() method used in assignTilePos() to pick the starting
tile. Picks one within 25% to 75%  of x and y lengths.

*Added spawnBlob() method that uses the old floor-building code that
made a blob. Haven't tested it though.

*Renamed generateItems() to spawnItems() for consistency. Made it
similar to enemy spawning.

*Changed spawnEnemies to use Spawners instead of instances of enemies.

*Added spawnIndividualCharacter() and spawnIndividualItem() methods to
facilitate special cases such as testing or bosses. To use, simply call
the method with(CLASS_NAME_HERE.class, x coordinate, y coordinate);

DungeonMain.java-
*Now loads ghost images. They are drawn very large.

*Modified changeSpawnRates() to accommodate for spawners. Still not
happy though.

*I don't like how I displayed creatures, too much if-bashing. However, I
still continued. In future, I will add better methods.

*Ghost becomes tiny on death. Kinda funny.

*Items are drawn by calling DungeonTile.getItemImage().

*Enemy heals are shown with a red number and plus sign.

DungeonTile.java-
*Added getItemImage() method used to get which item to be displayed. The
tiles' inventory should be sorted so it just displays the first one,
i.e. the best one.

GameItem.java-
*Added getImage() method that will be overridden in all items.

*Slowly adding sorting functionality.

Ghost.java-
*Added runTimer that keeps track of how long this ghost should run.

*Set IS_RUNNING to true because this character will run on injury.

*Whipped up a sloppy and broken AI. Essentially, it first checks if it
was hit. If yes, then make this ghost start running. Then It checks if
it is running. If yes, then do AIRun() which is broken at the moment.
If not that then check if there is a deadChar available to heal. If
there is, then run AIReviver. If all else fails, then run AIRandom().

Inventory.java-
*Fixed constructor to take maxSize as argument and apply it.

*Added add() method that takes input a DungeonTile and takes items from
it to place in the inventory.

KeyboardInput-
*Added boolean boolIsHeal that is used to initiate the use of a healing
item.

PathTile.java-
*Added a new comparator to be used RunningPathFinder(). It prioritizes
further tiles and is broken.

Player.java-
*Changed a few things such as inventory.add() to fit other changes.

*Added itemHeal() method that right now uses the first item in the
inventory.
Push h to use it.

Projectile.java-
*Changed parameters of dealDamage() and constructor to match new
version.

Skills.java-
*Changed initialization of projectile due to its constructor change.