Attnam / ivan

Iter Vehemens ad Necem - a continuation of the graphical roguelike by members of http://attnam.com
GNU General Public License v2.0
296 stars 42 forks source link

Bone files from Aslona appearing in GC #621

Open red-kangaroo opened 3 years ago

red-kangaroo commented 3 years ago

A player reported that they entered GC1 and the floor it pulled was just the salt mines from the goblin hideout in Aslona. Going down a floor immediately put them in GC6 and going back up then in the Enner cave. They later had a repeat with GC2 being generated with a bone file from fungal caves.

AquariusPower commented 3 years ago

I guess it could be a clash with dungeon index + deungeonLevel index when creating the filename.

See the dungeon indexes:

#define RANDOM 0
#define ELPURI_CAVE 1
#define ATTNAM 2
#define NEW_ATTNAM 3
#define UNDER_WATER_TUNNEL 4
#define EMPTY_AREA 5
#define XINROCH_TOMB 6
#define BLACK_MARKET 7
#define ASLONA_CASTLE 8
#define REBEL_CAMP 9
#define GOBLIN_FORT 10
#define FUNGAL_CAVE 11
#define PYRAMID 12
#define MONDEDR 13
#define IRINOX 14
#define DARK_FOREST 15

define ELPURI_CAVE 1

GloomyCaves.dat, has 13 levels!

It will clash with:

define GOBLIN_FORT 10

define FUNGAL_CAVE 11

define PYRAMID 12

Now some filenames will end with: .111 # ELPURI_CAVE level 11 .111 # FUNGAL_CAVE level 1 !!!

A way to fix this would be to put some non numeric char between dungeon and level when creating the filenames, could be: .1_11 .11_1

EDIT: it may be simple to patch:

./Main/Source/dungeon.cpp
void dungeon::SaveLevel(cfestring& SaveName, int Number, truth DeleteAfterwards)
{
  outputfile SaveFile(SaveName + '.' + Index + '_' + Number);

level* dungeon::LoadLevel(cfestring& SaveName, int Number)
{
  inputfile SaveFile(SaveName + '.' + Index + '_' + Number);

and do the same about bones files.