[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

My patch




Well, I don't know if I'm going to spend time doing XArchon stuff in the
near future, so I thought I'd just make my large patch from 0.50 available
for anyone who wanted to play with it.  Note that the tactical AI (that is,
the AI in charge of combat) is broken; I was playing with making it smarter
(and able to handle the free-movement change I'd made), but didn't finish
it.  Currently, the computer just moves the creature to what it considers
to be a safe distance from the enemy, and sits there doing nothing.  Try
shooting at it - I was quite happy with my dodging routine :)

Another change I did that needs fixing was a temporary hack to pre-load the
graphics in the binary, to speed up the startup and therefore debugging (it
didn't speed up as much as I'd hoped, but was still faster).  That's all
contained in the new file archon_theme.c, plus a hack to canvas.c to use
the compiled-in data rather than loading from the theme directory, in the
function canvas_image_load().  I intended to take this hack out again
before releasing it...

The initial playing around with an Adept mode I did means that the Adept
tiles are munged in with the existing theme.  The easiest way to distribute
that is to just include the complete hacked 'archon' theme, which you can
download using the URL below and un-tar in the data directory (both the one
in xarchon-0.50/data and the configured data directory, since the above
pre-loading hack still reads the inodes and filenames in the configured
data dir).

Anyway, here are the URLs, for the adventurous:

    http://www.serc.rmit.edu.au/~rob/xarchon-0.50.diff.gz
    http://www.serc.rmit.edu.au/~rob/xarchon-theme.tar.gz

Here's the 'done' list again:

    * implement mouse support
    * bug in imprison - if last enemy piece on board is not
	    wizard/sorceress, it didn't target the correct square.
    * take out nasty hack in field.c for weapon_data, give weapons their own
	    structs in the field struct.
    * fights should start with creatures offset by 1 in the y direction
    * simplify field_collision to 4 comparisons.
    * make iface_revive go straight to the target, rather than up to the top
	    and then down to the target.
    * take out hard-coded OS timer resolution in main.c, calculate
	    dynamically.  Account for the time executing code, as well as the
	    time spent sleeping.
    * add double-kills and stalemates
	* immediately abort cloud weapons if their wielder dies
    * undefined keys for human control were automatically hit every frame!
    * Shapeshifter should take the health of an *undamaged* member of the
	    enemy's type, but with the dark side's luminance bonus.
    * Elementals should be unaffected by the luminance cycle.
    * From screenshots of the original Archon running on the C64 emulator,
	    measure creatures' health and weapon damage inflicted.
    * From screenshots of the original Archon running on the C64 emulator,
	    the luminance cycle gives health bonuses of +0, +1, +3, +4, +6, +7
	    as the cell goes from the opposite colour to the piece's own.
    * use emu to time recharging, bullet and movement speed.  Also, damage
	    rate of phoenix and banshee.
    * move all the hard-coded duration and switch()-ed upon stuff into the
	    ACTOR struct.  Things like the per-frame damage of cloud weapons,
	    the fire delay, the duration of cloud and hand weapons, the speed
	    in pixels per frame of creatures and attacks
    * make phoenix explosion build up in stages.
    * remove whole-square rounding in field mode
    * make diagonal-moving-of-ground-units a general property of diagonals
	    on the board, and remove from mouse-specific code.
    * In original game, combatants could overlap.
    * collision detection is too coarse.  Bitmasks
	* if an image has no mask, it means it's rectangular.  Can still do
		mask testing on the other image.
    * make actor invisible if firing a ACTOR_IMMUNE_USER weapon
    * ensure that field actors don't start on rocks
    * have a lookup table with values multiplied by sqrt(2), used to slow
	    diagonal movement down to the same as axial.
    * clouds should really be circular, rather than oval (oval in the
         original was from the distortion of vertical distances)
    * erase clouds that fall outside the field
    * change layout of human configure dialog - all directions & fire at once.
    * if a chosen key mapping in human configure dialog is already used,
         clear the old mapping to null.
    * wizard/sorceress teleport
    * unselect unit if it finishes in its starting location
    * change facing on light/dark to a separate bit
    * animated board cells: have some bits that can be set which give the #
         to & with frame_time to determine stepping

							Have fun,
							 Rob R.
							  \((/
							  ~oo~
							  /))\