In this release of XorGramana, things are nearly all working. The first level, "Newbies Request" is fully playable, while the second level "My Race Mud" is only half-designed - coming stuck upon the fact that not everything is working (ie bomb detonation checks for gravitating objects does not handle the new up-rising and right-running objects).
Another development is the icons for objects now have 'indicators' overlaid representing the object's behavioural characteristics. A long blue arrow represents the direction the object will 'gravitate' given the chance (don't get in their way). A long red arrow represents the orientation of a bomb object's blast (ie horizontal or vertical). A single green stubby arrow means that the object can be pushed one block at a time in that direction. Two green stubby arrows joined means the object will 'run' when pushed in that direction (and won't stop until it is blocked).
Get this ALPHA (0.0.6) release from http://www.jwm-art.net/art/archive/XorGramana-0.0.6.tar.bz2.
This file illustrates what checks should take place when a bomb object is detonated. Please view in a FIXED-WIDTH FONT. Game Logic ---------- The game logic within the original Xor game, which I (hopefully) correctly implemented in XorCurses, had the following important rules governing precedence of moving objects: If player moves right to collect a pickup which has both a falling object and a left-running object resting against it (the pickup) then which moves first depends on which direction the player moves to get out of it. If player moves down, the left-moving object moves before the falling object. If the player moves left, the falling object moves before the left-moving object. (And if there were chains of objects all of each type move before the other type). This logic was also relfected in the detonation of bombs and the order in which consequences of the detonation were checked (I believe). The immediate concern here was the difference between (aside from h-bombs and v-bombs) detonators that fell, and detonators which ran left, as to which points were checked for further gravitating objects which were resting before the bomb went off. Game Logic II ------------- XorGramana on the other hand has further behaviour characteristics to bear in mind: objects can now also rise up, or run right. (My source code uses the term 'gravitate' for these objects which move as soon as their path is clear up to the point their path is blocked - they gravitate always in the same direction, and can be pushed vertically if they move one of the horizontal directions, or pushed horizontally if they move in one of vertical directions). (Gravitating objects exclude the Doll object which only moves when the player pushes it - the doll continues moving until it is blocked - but it is excluded from the definition and logic of gravitational behaviour - the Doll cannot pass through force fields, cannot detonate bombs, and cannot harm the player, nor can the doll move without being pushed). Therefor with four different types of gravitating movement: down left up right We have a more complex set of rules to check and a decision to be made on how the precedence of these rules is to be set. In XorGramana, it has been decided that the down/left precedences will remain, and that objects moving down and left will also preside over objects moving up and right - the down and left therefor are the 'natural' directions (which does not mean up and right are 'supernatural'). Bomb Types ---------- 1a) h-bomb which falls down 2a) v-bomb which runs left 1b) h-bomb which rises up 2b) v-bomb which runs right. (note: types 1a and 2a are those from orignal Xor game and therefor have precedence over the two new types). Detonator Types --------------- 1) detonator falls down 2) detonator runs left 3) detonator rises up 4) detonator runs right (note: types 3 and 4 and new and have lower precedence than those from original Xor game). -========================- Bomb Detonation Checking -========================- #-key----------------------------- # # # ^ | or <- or -> # # | or V = detonator direction # # # # X = bomb position # # # # x = bomb explosion # # # # 0,1,2,3,4,5,6,7,8,9 # # = coord to be checked in # # order (lowest first) # # # --------------------------------- 1) bomb type: 1a (h-bomb,down) detonator type: 1 (down) | V 2x0 3xXx1 5 4 2) bomb type: 1a (h-bomb,down) detonator type: 2 (left) 210 5xXx<- 4 3 3) bomb type: 1a (h-bomb,down) detonator type: 1 (up) 5 4 3xXx1 2^0 | 4) bomb type: 1a (h-bomb,down) detonator type: 2 (right) 210 ->xXx3 5 4 bomb type: 1b (h-bomb,up) detonator type: 1 (down) (yes this is possible) | 2V0 3xXx1 654 bomb type: 1b (h-bomb,up) detonator type: 2 (left) xXx<- (((UNFINISHED)))13:43 Friday 13th March 2009