diff --git a/dfhack/modules/Maps.cpp b/dfhack/modules/Maps.cpp index 7d4efbd4e..f2e6df197 100644 --- a/dfhack/modules/Maps.cpp +++ b/dfhack/modules/Maps.cpp @@ -186,6 +186,7 @@ bool Maps::Start() } delete [] temp_x; delete [] temp_y; + d->Started = true; return true; } @@ -656,6 +657,10 @@ bool Maps::ReadGeology (vector < vector >& assign) bool Maps::ReadLocalFeatures( std::map > & local_features ) { + // can't be used without a map! + if(!d->block) + return false; + Process * p = d->owner; memory_info * mem = p->getDescriptor(); // deref pointer to the humongo-structure @@ -675,10 +680,12 @@ bool Maps::ReadLocalFeatures( std::map > & //uint16_t region_x_plus8 = ( block48_x + 8 ) / 16; // region X coord offset by 8 big blocks (48x48 tiles) - uint16_t region_x_plus8 = ( blockX / 3 + d->regionX /*+ 8*/ ) / 16; - + uint16_t region_x_plus8 = ( (blockX / 3 ) + d->regionX /*+ 8*/ ) / 16; + //((BYTE4(region_x_local) & 0xF) + (_DWORD)region_x_local) >> 4; + //int16_t region_x_local = (blockX / 3) + d->regionX; + //int16_t region_x_plus8 = ((region_x_local & 0xF) + region_x_local) >> 4; // plain region Y coord - uint64_t region_y_local = ( blockY / 3 + d->regionY ) / 16; + uint64_t region_y_local = ( (blockY / 3) + d->regionY ) / 16; // this is just a few pointers to arrays of 16B (4 DWORD) structs uint32_t array_elem = p->readDWord(base + (region_x_plus8 / 16) * 4); @@ -740,6 +747,10 @@ bool Maps::ReadLocalFeatures( std::map > & bool Maps::ReadGlobalFeatures( std::vector & features) { + // can't be used without a map! + if(!d->block) + return false; + Process * p = d->owner; memory_info * mem = p->getDescriptor();