diff --git a/assets/img2map.py b/assets/img2map.py index f451a9b..6108e8c 100644 --- a/assets/img2map.py +++ b/assets/img2map.py @@ -20,6 +20,7 @@ elementTypes = [ "TERMINAL", "COLUMN", "RUIN", + "LAMP", "CARD0", "CARD1", "CARD2", diff --git a/assets/item_lamp.png b/assets/item_lamp.png new file mode 100644 index 0000000..840f64e Binary files /dev/null and b/assets/item_lamp.png differ diff --git a/assets/levelY.gif b/assets/levelY.gif index a73ba26..4fc0515 100644 Binary files a/assets/levelY.gif and b/assets/levelY.gif differ diff --git a/images.h b/images.h index f1010a7..9670188 100644 --- a/images.h +++ b/images.h @@ -623,7 +623,25 @@ SFG_PROGRAM_MEMORY uint8_t SFG_itemSprites[][SFG_TEXTURE_STORE_SIZE] = 0,84,68,71,84,119,117,146,34,40,51,246,0,0,0,0,0,0,68,85,85,85,67,18,35,35,34, 52,0,0,0,0,0,0,0,5,80,0,0,51,51,51,51,51,0,0,0,0,0,0,0,5,0,0,0,0,51,50,51,35 }, - { // 11, access card + { // 11, lamp +175,0,49,31,7,106,27,28,107,3,4,105,1,2,26,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,220,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,220, +16,0,0,0,0,0,0,0,0,0,0,0,0,0,29,220,193,0,0,0,0,0,0,0,0,0,0,0,0,0,22,220,91,0,0, +0,0,0,0,0,0,17,0,1,16,85,103,146,88,85,0,0,0,0,0,0,1,33,0,22,133,51,103,146,232, +51,80,0,0,0,0,0,1,33,17,215,131,51,103,146,248,67,80,0,0,1,16,0,25,33,28,103, +132,68,103,146,248,68,59,187,177,26,33,17,153,33,28,119,132,68,231,98,232,68,55, +119,226,42,34,34,153,33,28,167,132,68,103,111,104,68,59,187,177,26,33,17,169,33, +17,167,131,51,119,98,136,67,80,0,0,1,16,0,26,33,0,23,85,51,119,111,230,51,80,0, +0,0,0,0,1,33,0,1,16,85,119,146,230,85,0,0,0,0,0,0,1,33,0,0,0,0,26,146,97,0,0,0, +0,0,0,0,0,17,0,0,0,0,26,162,241,0,0,0,0,0,0,0,0,0,0,0,0,0,1,175,16,0,0,0,0,0,0, +0,0,0,0,0,0,0,1,162,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + { // 12, access card 175,0,21,45,44,23,46,2,19,34,69,22,68,60,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,17,17,17,17,0,0,0,0,0,0,0,0,1, 68,17,24,102,101,86,97,0,0,0,0,0,0,0,0,1,68,17,24,102,85,86,101,16,0,0,0,0,0,0, diff --git a/levels.h b/levels.h index 49f20bb..7641ff0 100644 --- a/levels.h +++ b/levels.h @@ -98,16 +98,17 @@ typedef struct #define SFG_LEVEL_ELEMENT_TERMINAL 0x09 #define SFG_LEVEL_ELEMENT_COLUMN 0x0a #define SFG_LEVEL_ELEMENT_RUIN 0x0b -#define SFG_LEVEL_ELEMENT_CARD0 0x0c ///< Access card, unlocks doors with lock. -#define SFG_LEVEL_ELEMENT_CARD1 0x0d -#define SFG_LEVEL_ELEMENT_CARD2 0x0e -#define SFG_LEVEL_ELEMENT_LOCK0 0x0f /**< Special level element that must be +#define SFG_LEVEL_ELEMENT_LAMP 0x0c +#define SFG_LEVEL_ELEMENT_CARD0 0x0d ///< Access card, unlocks doors with lock. +#define SFG_LEVEL_ELEMENT_CARD1 0x0e +#define SFG_LEVEL_ELEMENT_CARD2 0x0f +#define SFG_LEVEL_ELEMENT_LOCK0 0x10 /**< Special level element that must be placed on a tile with door. This door is then unlocked by taking the corresponding access card. */ -#define SFG_LEVEL_ELEMENT_LOCK1 0x10 -#define SFG_LEVEL_ELEMENT_LOCK2 0x11 -#define SFG_LEVEL_ELEMENT_BLOCKER 0x12 ///< Invisible wall. +#define SFG_LEVEL_ELEMENT_LOCK1 0x11 +#define SFG_LEVEL_ELEMENT_LOCK2 0x12 +#define SFG_LEVEL_ELEMENT_BLOCKER 0x13 ///< Invisible wall. /* Monsters have lower 4 bits zero and are only distinguished by the 4 upper diff --git a/main.c b/main.c index 59d53d8..9729bac 100755 --- a/main.c +++ b/main.c @@ -1166,6 +1166,7 @@ void SFG_getItemSprite( { case SFG_LEVEL_ELEMENT_TREE: case SFG_LEVEL_ELEMENT_RUIN: + case SFG_LEVEL_ELEMENT_LAMP: *spriteSize = 2; break; @@ -1206,7 +1207,8 @@ uint8_t SFG_itemCollides(uint8_t elementType) elementType == SFG_LEVEL_ELEMENT_TERMINAL || elementType == SFG_LEVEL_ELEMENT_COLUMN || elementType == SFG_LEVEL_ELEMENT_RUIN || - elementType == SFG_LEVEL_ELEMENT_BLOCKER; + elementType == SFG_LEVEL_ELEMENT_BLOCKER || + elementType == SFG_LEVEL_ELEMENT_LAMP; } void SFG_setAndInitLevel(const SFG_Level *level)