Raycasting Engine WIP Demo #7
by Aaron Curtis
<acurti1@umbc.edu>
August 2001


This is a short demo of a game I'm working on, which seems to be
turning into an RPG of some sort *shrug*.  It doesn't have a title or
story or anything yet...  This version adds some usefulness to the
character creation screen and has some other improvements.  Check
the history section for a full description.

I've been threatening to change the combat system a little, and it
actually happened this time.  You now have a "wind-up" animation
when swinging a sword (the jab move is exempt).  It looks very, very
strange with some of the attacks, but as a whole I think it plays
better this way...

As usual, level files from this version will crash old versions of the
engine and vice-versa (it was the intro texts that did it this time).
Of course I'll warn you that the thing is likely to crash anyway, as
it's not really far enough along to be called a beta.

The first time you run the demo, it'll spend a few seconds relocating
memory.  This only needs to be done once though.  The relocation causes
incompatibilities with some shells, so I've set it up to kick you back
to the home screen when the program exits for the first time.

By now you might be getting the idea that this program does some weird
evil stuff to your calculator and well, it does.  So back up anything
important before you run this, ok?

One more warning -- this thing will eat your batteries like crazy, so
um...  don't run it all day.  Fresh batteries also make the "slow
rendering" mode somewhat playable (imo anyway).


Controls
--------
Arrows -- move around
Alpha -- "moonwalk" button, lets you move without changing direction
Graph -- sort of the opposite, lets you change direction without moving
2nd -- swings your sword
Exit -- exits (wow)
Custom -- switches rendering modes
More -- cycles through attack select / inventory screens
+/- -- change contrast
* -- change grayscale mixing ratio
1 -- shortcut to attack select screen
2 -- shortcut to inventory screen
3 -- shortcut to stats screen

Objects can be activated by just walking up to them.  Currently this
includes fountains, doors, stairs, switches, chests, and NPCs.


Character Creation Screen
-------------------------
This is what you see at the beginning of the game, there are 4 primary
attributes and then 4 weapon proficiencies.  Use the right and left
arrow keys to allocate points where you like, and 2nd to finish.

The primary attributes will affect your abilities...  strength increases
your damage and carrying capacity, dexterity improves your defense rating,
constitution determines your maximum health, and perception affects
your attack rating.

The proficiencies will affect your attack rating with that particular
weapon, which isn't a huge deal (yet).


Attack Select Screen
--------------------
At the attack select screen, you have a choice of skills, which vary
based on what weapon you're using.  These are currently very
unbalanced...

Short Swords...
	Jab -- quick, low damage move, nothing special about it
	Stab -- similar to jab but a little better damage...  might
		have been some other differences but I've forgotten.
	Eye Gouge -- like stab, but a little slower and you're more
		likely to miss your target.  Causes critical hits much
		more often and stuns your enemy for twice as much time.
Long Swords...
	Slash -- basic low damage move, covers a wide area
	Thrust -- similar to the short sword series of attacks, but
		slower and you get higher criticals (3x)
Two-handed Swords...
	Swing -- covers a wide area, otherwise unremarkable
	Behead -- similar to swing, but more likely to get critical
		hits, which are done at 4x.  You take a large attack
		penalty though (more misses).
	Berserk -- swings your sword in a full circle
Scimitars...
	Slash -- same as for long swords...
	(I'll do something with scimitars, really)


Inventory Screen
----------------
This screen shows icons for all items in your pack (maximum 32), and
a description of the one currently selected.  Arrow keys move the 
selector around, 2ND equips an item.  Equipped items are shown on the
right side of the screen and are selectable as well.  DEL will drop an
item, but you won't be able to get it back.

2ND will also drink potions, since it wouldn't make sense to equip
them.  An icon appears in the lower right of the screen when you're
being affected by a potion.

Similarly, 2ND will use a healing herb.  These restore 50% of your
health.


Regarding Armor
---------------
Armor in this game will absorb some damage as well as deflect some hits
entirely.  Currently the order goes like this (best to worst):

plate mail -- +3 defense, -2 damage
chain mail -- +2 defense, -1 damage
studded leather -- +2 defense
leather armor -- +1 defense
cloak -- same as no armor, but you get the benefit of any modifiers

There is a trade-off though, as the better armors are much heavier and
slow your hit recovery.


Regarding the Loot System
-------------------------
Any time you get some loot out of a chest, it is assigned some random
modifiers.  These are for weapons:

	fine -- better attack rating
	sharp -- higher critical percentage
	blinding -- stuns opponents much longer
	lion's -- +3 damage
	overlord's -- huge attack rating bonus, +3 damage
	hero's -- +4 damage, more criticals
	of pain -- stuns opponents longer
	of brilliacne -- small damage and attack rating bonus
	of murder -- +4 damage
	of agility -- defense bonus, faster hit recovery
	of the demon -- +3 damage, more criticals, attack rating bonus
	of terror -- +4 damage, longer stun time, +1 strength

for armor:

	radiant -- reduces criticals taken by a small amount
	hardened -- small defense rating bonus
	blackened -- -1 damage taken
	superior -- small defense bonus, faster hit recovery
	hero's -- -2 damage, defense rating bonus
	champion's -- large defense bonus, faster hit recovery, +1 dexterity
	of the heavens -- small defensive bonus
	of the beast -- -1 damage
	of harmony -- faster hit recovery (better than others)
	of power -- +3 strength
	of protection -- -2 damage, reduces criticals by a large amount
	of deliverance -- defensive bonus, reduces criticals a lot

and for potions:

	of rage -- +3 damage
	of defense -- +2 defense rating
	of accuracy -- +2 attack rating
	of clarity -- +6 perception
	of defiance -- +3 defense, -1 damage taken
	of fortitude -- sets constitution to 15

Known Issues
------------
-monsters don't always face you when attacking
-one of the rooms has no exit (consider it the end of the demo)


The Next Demo
-------------
I'm hoping to add some new enemy types with different AI...  maybe
missile weapons or something.  Eventually I'm going to want to
put in an experience system and character levels.  That would
go on the stats screen which needs some more work anyway.  There's
always the matter of a title for the game, but I'm going to avoid
it as long as I can keep adding miscellaneous features to the
engine :)


Thanks to
---------
The findpixel routine in this is kind of based on one by Code7


History
-------
WIP demo 7
-values are limited and initialized properly for character creation
-items now have weight (carrying capacity based on strength)
-pushable blocks added
-hit points are now determined by constitution
-added into/extro texts
-strength now affects damage, dexterity affects defense rating
-intelligence stat replaced with perception, which affects attack rating
-menus are now accessible through number keys (1-3)
-healing herbs added
-started a stats screen
-monster attack animations work a little better now
-minor changes to the way health is displayed
-fixed minor bug in object creation routines
-added some more animation frames for player attacks
-armor now affects how fast you recover from hits (minor effect)
-added some more modifiers, tweaked some old ones

WIP demo 6
-F keys now function outside of the skill select screen
-locks and keys added
-switches can now affect multiple objects
-inventory space increased to 32 items
-inventory scrolling implemented
-added one-time text objects
-text wrapping adjusted slightly
-support for multiple world maps added
-fixed scrolling/collision bug
-potions added (pick them up in treasure chests)
-fixed it so the game runs properly from the home screen
 (the TI-OS has a "feature" where it doesn't load a program if it
 thinks it's been run twice in a row)
-put in a work-around for a hardware bug that was causing some of
 the key routines to crash if your batteries were low
-contrast is now adjustable in-game
-you can now switch grayscale modes (1:2 or 2:3)
-healing fountains added (ok, they don't look like fountains)
-eliminated flickering in the menu screens
-added a very basic character creation screen

WIP demo 5
-fixed the stairs (they were crashing)
-automatic text wrapping added
-added armor - leather, studded leather, chain, plate, and the cloak
-added treasure chests
-added long swords, two-handed swords, and scimitars
-inventory screen added (and redone 3 or 4 times)
-level format finalized?

WIP demo 4
-small improvements to the engine speed-wise, a lot of extra code though
-redid the health display
-started work on an inventory system
-damage is now calulated from a series of stats and randomized a little
-damage is now displayed
-enemies can now be killed (so can you)
-redid the animation system (internally, it doesn't look any different)
-fixed a bug with saving off-screen objects
-fixed a minor bug with the text display routines
-added attack select screen

WIP demo 3
-added the beginnings of a level select screen (doesn't show up with only one level)
-sprites are now clipped
-player no longer jumps onto the screen after scrolling
-player health added
-changed player movement/animation routines a little
-pause routine now waits for you to release the button
-objects can now follow you around
-doors and switches added
-objects are now (sort of) saved when you move off the screen
-started work on a combat system

WIP demo 2
-flashing/animated lights implemented
-added teleporters (stairs)
-touched up the graphics and map a little
-added some random movement code for objects
-added code to display text
-fixed a crash bug...
-added some transition effects
-added low-detail mode, this only draws half as many pixels
-major internal changes...

WIP demo 1
-first release, unstable (not that the other ones were stable)

--
Must destroy mankind... [watch beeps] ooh, lunchtime!