Relax the savefile validity check a little.
There was a very old bug, probably predating the OpenAdventure port, that would poke a stashed value of -1 into the snake object if you did a save in endgame, and then fail the savefile validation on resume. This was masked for a long time by a bug in put() just fixed a couple of revisions ago.
This commit is contained in:
parent
04df0ce64c
commit
0ffb297801
3 changed files with 20 additions and 9 deletions
4
advent.h
4
advent.h
|
@ -32,7 +32,7 @@
|
||||||
#define WRITE_MODE "wb" // b is not needed for POSIX but harmless
|
#define WRITE_MODE "wb" // b is not needed for POSIX but harmless
|
||||||
|
|
||||||
/* Special object-state values - integers > 0 are object-specific */
|
/* Special object-state values - integers > 0 are object-specific */
|
||||||
#define STATE_NOTFOUND -1 // 'Not found" state of treasures */
|
#define STATE_NOTFOUND -1 // 'Not found" state of treasures
|
||||||
#define STATE_FOUND 0 // After discovered, before messed with
|
#define STATE_FOUND 0 // After discovered, before messed with
|
||||||
#define STATE_IN_CAVITY 1 // State value common to all gemstones
|
#define STATE_IN_CAVITY 1 // State value common to all gemstones
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
/* Map a state property value to a negative range, where the object cannot be
|
/* Map a state property value to a negative range, where the object cannot be
|
||||||
* picked up but the value can be recovered later. Avoid colliding with -1,
|
* picked up but the value can be recovered later. Avoid colliding with -1,
|
||||||
* which has its own meaning. */
|
* which has its own meaning as STATE_NOTFOUND. */
|
||||||
#define STASHED(obj) (-1 - game.prop[obj])
|
#define STASHED(obj) (-1 - game.prop[obj])
|
||||||
|
|
||||||
#define PROMPT "> "
|
#define PROMPT "> "
|
||||||
|
|
|
@ -219,7 +219,8 @@ bool is_valid(struct game_t valgame)
|
||||||
|
|
||||||
/* Check that properties of objects aren't beyond expected */
|
/* Check that properties of objects aren't beyond expected */
|
||||||
for (obj_t obj = 0; obj <= NOBJECTS; obj++) {
|
for (obj_t obj = 0; obj <= NOBJECTS; obj++) {
|
||||||
if (valgame.prop[obj] < STATE_NOTFOUND || valgame.prop[obj] > 1) {
|
/* Magic number -2 allows a STASHED version of state 1 */
|
||||||
|
if (valgame.prop[obj] < -2 || valgame.prop[obj] > 1) {
|
||||||
switch (obj) {
|
switch (obj) {
|
||||||
case RUG:
|
case RUG:
|
||||||
case DRAGON:
|
case DRAGON:
|
||||||
|
|
|
@ -10,9 +10,19 @@ down a gully.
|
||||||
> resume
|
> resume
|
||||||
Can't open file y, try again.
|
Can't open file y, try again.
|
||||||
|
|
||||||
A dark fog creeps in to surround you. From somewhere in the fog you
|
You're at sw end.
|
||||||
hear a stern voice. "This Adventure has been tampered with! You have
|
|
||||||
been dabbling in magic, knowing not the havoc you might cause thereby.
|
The grate is locked.
|
||||||
Leave at once, before you do irrevocable harm!" The fog thickens,
|
|
||||||
until at last you can see nothing at all. Your vision then clears,
|
> blast
|
||||||
and you find yourself back in The Real World.
|
|
||||||
|
There is a loud explosion, and a twenty-foot hole appears in the far
|
||||||
|
wall, burying the dwarves in the rubble. You march through the hole
|
||||||
|
and find yourself in the main office, where a cheering band of
|
||||||
|
friendly elves carry the conquering adventurer off into the sunset.
|
||||||
|
|
||||||
|
You scored 423 out of a possible 430, using 468 turns.
|
||||||
|
|
||||||
|
Your score puts you in Master Adventurer Class A.
|
||||||
|
|
||||||
|
To achieve the next higher rating, you need 4 more points.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue