diff --git a/library/DFHackAPI.cpp b/library/DFHackAPI.cpp index 72e1d5418..cab02fdc1 100644 --- a/library/DFHackAPI.cpp +++ b/library/DFHackAPI.cpp @@ -41,6 +41,9 @@ class API::Private uint32_t tile_type_offset; uint32_t designation_offset; uint32_t occupancy_offset; + uint32_t biome_stuffs; + uint32_t veinvector; + uint32_t veinsize; uint32_t window_x_offset; uint32_t window_y_offset; @@ -151,7 +154,10 @@ bool API::InitMap() d->tile_type_offset = d->offset_descriptor->getOffset("type"); d->designation_offset = d->offset_descriptor->getOffset("designation"); d->occupancy_offset = d->offset_descriptor->getOffset("occupancy"); - + d->biome_stuffs = d->offset_descriptor->getOffset("biome_stuffs"); + + d->veinvector = d->offset_descriptor->getOffset("v_vein"); + d->veinsize = d->offset_descriptor->getHexValue("v_vein_size"); // get the map pointer uint32_t x_array_loc = MreadDWord(map_offset); @@ -211,14 +217,14 @@ bool API::DestroyMap() bool API::isValidBlock(uint32_t x, uint32_t y, uint32_t z) { - return d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z] != NULL; + return d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z] != 0; } // 256 * sizeof(uint16_t) bool API::ReadTileTypes(uint32_t x, uint32_t y, uint32_t z, uint16_t *buffer) { uint32_t addr = d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z]; - if (addr!=NULL) + if (addr) { Mread(addr+d->tile_type_offset, 256 * sizeof(uint16_t), (uint8_t *)buffer); return true; @@ -231,7 +237,7 @@ bool API::ReadTileTypes(uint32_t x, uint32_t y, uint32_t z, uint16_t *buffer) bool API::ReadDesignations(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer) { uint32_t addr = d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z]; - if (addr!=NULL) + if (addr) { Mread(addr+d->designation_offset, 256 * sizeof(uint32_t), (uint8_t *)buffer); return true; @@ -244,7 +250,7 @@ bool API::ReadDesignations(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer) bool API::ReadOccupancy(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer) { uint32_t addr = d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z]; - if (addr!=NULL) + if (addr) { Mread(addr+d->occupancy_offset, 256 * sizeof(uint32_t), (uint8_t *)buffer); return true; @@ -257,7 +263,7 @@ bool API::ReadOccupancy(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer) bool API::WriteTileTypes(uint32_t x, uint32_t y, uint32_t z, uint16_t *buffer) { uint32_t addr = d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z]; - if (addr!=NULL) + if (addr) { Mwrite(addr+d->tile_type_offset, 256 * sizeof(uint16_t), (uint8_t *)buffer); return true; @@ -270,7 +276,7 @@ bool API::WriteTileTypes(uint32_t x, uint32_t y, uint32_t z, uint16_t *buffer) bool API::WriteDesignations(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer) { uint32_t addr = d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z]; - if (addr!=NULL) + if (addr) { Mwrite(addr+d->designation_offset, 256 * sizeof(uint32_t), (uint8_t *)buffer); return true; @@ -283,7 +289,7 @@ bool API::WriteDesignations(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer bool API::WriteOccupancy(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer) { uint32_t addr = d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z]; - if (addr!=NULL) + if (addr) { Mwrite(addr+d->occupancy_offset, 256 * sizeof(uint32_t), (uint8_t *)buffer); return true; @@ -296,11 +302,10 @@ bool API::WriteOccupancy(uint32_t x, uint32_t y, uint32_t z, uint32_t *buffer) // 16 * sizeof(uint8_t) bool API::ReadRegionOffsets(uint32_t x, uint32_t y, uint32_t z, uint8_t *buffer) { - uint32_t biome_stuffs = d->offset_descriptor->getOffset("biome_stuffs"); uint32_t addr = d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z]; - if (addr!=NULL) + if (addr) { - Mread(addr+biome_stuffs, 16 * sizeof(uint8_t), buffer); + Mread(addr+d->biome_stuffs, 16 * sizeof(uint8_t), buffer); return true; } return false; @@ -311,25 +316,25 @@ bool API::ReadRegionOffsets(uint32_t x, uint32_t y, uint32_t z, uint8_t *buffer) bool API::ReadVeins(uint32_t x, uint32_t y, uint32_t z, vector & veins) { uint32_t addr = d->block[x*d->y_block_count*d->z_block_count + y*d->z_block_count + z]; - int veinvector = d->offset_descriptor->getOffset("v_vein"); - int veinsize = d->offset_descriptor->getHexValue("v_vein_size"); + assert(sizeof(t_vein) == d->veinsize); veins.clear(); - if(addr!=NULL && veinvector && veinsize) + if(addr && d->veinvector && d->veinsize) { - assert(sizeof(t_vein) == veinsize); // veins are stored as a vector of pointers to veins /*pointer is 4 bytes! we work with a 32bit program here, no matter what architecture we compile khazad for*/ - DfVector p_veins = d->dm->readVector(addr + veinvector, 4); - + DfVector p_veins = d->dm->readVector(addr + d->veinvector, 4); + uint32_t size = p_veins.getSize(); + veins.reserve(size); + // read all veins - for (uint32_t i = 0; i< p_veins.getSize();i++) + for (uint32_t i = 0; i< size;i++) { t_vein v; // read the vein pointer from the vector uint32_t temp = *(uint32_t *) p_veins[i]; // read the vein data (dereference pointer) - Mread(temp, veinsize, (uint8_t *)&v); + Mread(temp, d->veinsize, (uint8_t *)&v); // store it in the vector veins.push_back(v); } diff --git a/library/DFHackAPI.h b/library/DFHackAPI.h index adc7a1ba2..538ecfc3d 100644 --- a/library/DFHackAPI.h +++ b/library/DFHackAPI.h @@ -29,29 +29,12 @@ distribution. #include #include #include "integers.h" +#include "DFTileTypes.h" namespace DFHack { class memory_info; class Process; - - enum VegetationType - { - TREE_DEAD, - TREE_OK, - SAPLING_DEAD, - SAPLING_OK, - SHRUB_DEAD, - SHRUB_OK - }; - - DFHACK_EXPORT bool isWallTerrain(int in); - DFHACK_EXPORT bool isFloorTerrain(int in); - DFHACK_EXPORT bool isRampTerrain(int in); - DFHACK_EXPORT bool isStairTerrain(int in); - DFHACK_EXPORT bool isOpenTerrain(int in); - DFHACK_EXPORT int getVegetationType(int in); - class DFHACK_EXPORT API { class Private; diff --git a/library/DFMemInfo.cpp b/library/DFMemInfo.cpp index e48c14a1b..27629a812 100644 --- a/library/DFMemInfo.cpp +++ b/library/DFMemInfo.cpp @@ -39,7 +39,7 @@ void memory_info::setVersion(const char * v) } -void memory_info::setVersion(string v) +void memory_info::setVersion(const string &v) { version = v; } @@ -63,7 +63,7 @@ void memory_info::setOS(const char *os) } -void memory_info::setOS(string os) +void memory_info::setOS(const string &os) { if(os == "windows") OS = OS_WINDOWS; @@ -85,7 +85,7 @@ void memory_info::setOS(OSType os) } -memory_info::OSType memory_info::getOS() +memory_info::OSType memory_info::getOS() const { return OS; } @@ -112,57 +112,57 @@ memory_info::memory_info(const memory_info &old) } -uint32_t memory_info::getBase () +uint32_t memory_info::getBase () const { return base; } -void memory_info::setBase (string s) +void memory_info::setBase (const string &s) { base = strtol(s.c_str(), NULL, 16); } -void memory_info::setBase (uint32_t b) +void memory_info::setBase (const uint32_t b) { base = b; } -void memory_info::setOffset (string key, string value) +void memory_info::setOffset (const string & key, const string & value) { uint32_t offset = strtol(value.c_str(), NULL, 16); offsets[key] = offset; } -void memory_info::setAddress (string key, string value) +void memory_info::setAddress (const string & key, const string & value) { uint32_t address = strtol(value.c_str(), NULL, 16); addresses[key] = address; } -void memory_info::setHexValue (string key, string value) +void memory_info::setHexValue (const string & key, const string & value) { uint32_t hexval = strtol(value.c_str(), NULL, 16); hexvals[key] = hexval; } -void memory_info::setString (string key, string value) +void memory_info::setString (const string & key, const string & value) { strings[key] = value; } -void memory_info::setLabor(string key, string value) +void memory_info::setLabor(const string & key, const string & value) { uint32_t keyInt = strtol(key.c_str(), NULL, 10); labors[keyInt] = value; } -void memory_info::setProfession (string key, string value) +void memory_info::setProfession (const string & key, const string & value) { uint32_t keyInt = strtol(key.c_str(), NULL, 10); if(professions.size() <= keyInt) @@ -172,7 +172,7 @@ void memory_info::setProfession (string key, string value) professions[keyInt] = value; } -void memory_info::setJob (string key, string value) +void memory_info::setJob (const string & key, const string & value) { uint32_t keyInt = strtol(key.c_str(), NULL, 10); if(jobs.size() <= keyInt) @@ -182,7 +182,7 @@ void memory_info::setJob (string key, string value) jobs[keyInt] = value; } -void memory_info::setSkill (string key, string value) +void memory_info::setSkill (const string & key, const string & value) { uint32_t keyInt = strtol(key.c_str(), NULL, 10); if(skills.size() <= keyInt){ @@ -191,7 +191,14 @@ void memory_info::setSkill (string key, string value) skills[keyInt] = value; } -void memory_info::setTrait(string key,string value,string zero,string one,string two,string three,string four,string five) +void memory_info::setTrait(const string & key, + const string & value, + const string & zero, + const string & one, + const string & two, + const string & three, + const string & four, + const string & five) { uint32_t keyInt = strtol(key.c_str(), NULL, 10); if(traits.size() <= keyInt) @@ -341,7 +348,7 @@ void memory_info::copyBuildings(vector & v_buildingtypes) // change base of all addresses -void memory_info::RebaseAddresses(int32_t new_base) +void memory_info::RebaseAddresses(const int32_t new_base) { map::iterator iter; int32_t rebase = - (int32_t)base + new_base; @@ -375,74 +382,115 @@ void memory_info::RebaseVTable(int32_t offset) } } - // Get named address -uint32_t memory_info::getAddress (string key) +uint32_t memory_info::getAddress (const char *key) { - if(addresses.count(key)) + map ::iterator iter = addresses.find(key); + + if(iter != addresses.end()) { - return addresses[key]; + return (*iter).second; } return 0; } // Get named offset -uint32_t memory_info::getOffset (string key) +uint32_t memory_info::getOffset (const char *key) +{ + map ::iterator iter = offsets.find(key); + if(iter != offsets.end()) + { + return (*iter).second; + } + return 0; +} + +// Get named numerical value +uint32_t memory_info::getHexValue (const char *key) { - if(offsets.count(key)) + map ::iterator iter = hexvals.find(key); + if(iter != hexvals.end()) { - return offsets[key]; + return (*iter).second; } return 0; } -// Get named string -std::string memory_info::getString (string key) +// Get named address +uint32_t memory_info::getAddress (const string &key) { - if(strings.count(key)) + map ::iterator iter = addresses.find(key); + + if(iter != addresses.end()) { - return strings[key]; + return (*iter).second; } - else return string(""); + return 0; } +// Get named offset +uint32_t memory_info::getOffset (const string &key) +{ + map ::iterator iter = offsets.find(key); + if(iter != offsets.end()) + { + return (*iter).second; + } + return 0; +} + // Get named numerical value -uint32_t memory_info::getHexValue (string key) +uint32_t memory_info::getHexValue (const string &key) { - if(hexvals.count(key)) + map ::iterator iter = hexvals.find(key); + if(iter != hexvals.end()) { - return hexvals[key]; + return (*iter).second; } return 0; } +// Get named string +std::string memory_info::getString (const string &key) +{ + map ::iterator iter = strings.find(key); + if(iter != strings.end()) + { + return (*iter).second; + } + return string(""); +} + // Get Profession -string memory_info::getProfession (uint32_t key) +string memory_info::getProfession (const uint32_t key) const { if(professions.size() > key) { return professions[key]; } - else{ + else + { return string(""); } } // Get Job -string memory_info::getJob (uint32_t key) +string memory_info::getJob (const uint32_t key) const { - if(jobs.size() > key){ + if(jobs.size() > key) + { return jobs[key]; } return string("Job Does Not Exist"); } -string memory_info::getSkill (uint32_t key) +string memory_info::getSkill (const uint32_t key) const { - if(skills.size() > key){ + if(skills.size() > key) + { return skills[key]; } return string("Skill is not Defined"); @@ -456,7 +504,7 @@ int absolute (int number) return number; } -string memory_info::getTrait (uint32_t traitIdx, uint32_t traitValue) +string memory_info::getTrait (const uint32_t traitIdx, const uint32_t traitValue) const { if(traits.size() > traitIdx) { @@ -481,7 +529,7 @@ string memory_info::getTrait (uint32_t traitIdx, uint32_t traitValue) return string("Trait is not Defined"); } -string memory_info::getTraitName(uint32_t traitIdx) +string memory_info::getTraitName(const uint32_t traitIdx) const { if(traits.size() > traitIdx) { @@ -490,7 +538,7 @@ string memory_info::getTraitName(uint32_t traitIdx) return string("Trait is not Defined"); } -string memory_info::getLabor (uint32_t laborIdx) +string memory_info::getLabor (const uint32_t laborIdx) { if(labors.count(laborIdx)) { diff --git a/library/DFMemInfo.h b/library/DFMemInfo.h index b9fb4a4c4..8d28ddbd7 100644 --- a/library/DFMemInfo.h +++ b/library/DFMemInfo.h @@ -60,59 +60,63 @@ namespace DFHack memory_info(const memory_info&); - void RebaseAddresses(int32_t new_base); - void RebaseAll(int32_t new_base); - uint32_t getBase (); - void setBase (string); - void setBase (uint32_t); - - uint32_t getOffset (string); - uint32_t getAddress (string); - uint32_t getHexValue (string); - string getString (string); - string getProfession(uint32_t); - string getJob(uint32_t); - string getSkill (uint32_t); - string getTrait (uint32_t, uint32_t); - string getTraitName(uint32_t); - string getLabor (uint32_t); + void RebaseAddresses(const int32_t new_base); + void RebaseAll(const int32_t new_base); + uint32_t getBase () const; + void setBase (const string&); + void setBase (const uint32_t); + + uint32_t getOffset (const string&); + uint32_t getAddress (const string&); + uint32_t getHexValue (const string&); + uint32_t getOffset (const char *); + uint32_t getAddress (const char *); + uint32_t getHexValue (const char *); + + string getString (const string&); + string getProfession(const uint32_t) const; + string getJob(const uint32_t) const; + string getSkill (const uint32_t) const; + string getTrait (const uint32_t, const uint32_t) const; + string getTraitName(const uint32_t) const; + string getLabor (const uint32_t); void setVersion(const char *); - void setVersion(string); + void setVersion(const string&); string getVersion(); void setOS(const char *); - void setOS(string); - void setOS(OSType); - OSType getOS(); - - void setOffset (string, int32_t); - void setAddress (string, uint32_t); - void setHexValue (string, uint32_t); - - void setOffset (string, const char *); - void setAddress (string, const char *); - void setHexValue (string, const char *); - void setString (string, const char *); - - void setOffset (string, string); - void setAddress (string, string); - void setHexValue (string, string); - void setString (string, string); - - void setProfession(string, string); - void setJob(string, string); - void setSkill(string, string); - void setTrait(string,string,string,string,string,string,string,string); - void setLabor(string, string); - - void RebaseVTable(int32_t offset); + void setOS(const string&); + void setOS(const OSType); + OSType getOS() const; + + void setOffset (const string &, const int32_t); + void setAddress (const string &, const uint32_t); + void setHexValue (const string &, const uint32_t); + + void setOffset (const string &, const char *); + void setAddress (const string &, const char *); + void setHexValue (const string &, const char *); + void setString (const string &, const char *); + + void setOffset (const string &, const string &); + void setAddress (const string &, const string &); + void setHexValue (const string &, const string &); + void setString (const string &, const string &); + + void setProfession(const string &, const string &); + void setJob(const string &, const string &); + void setSkill(const string &, const string &); + void setTrait(const string &,const string &,const string &,const string &,const string &,const string &,const string &,const string &); + void setLabor(const string &, const string &); + + void RebaseVTable(const int32_t offset); void setClass (const char * name, const char * vtable); uint32_t setMultiClass (const char * name, const char * vtable, const char * typeoffset); void setMultiClassChild (uint32_t multi_index, const char * name, const char * type); // ALERT: uses memory reading directly - bool resolveClassId(uint32_t address, int32_t & classid); + bool resolveClassId(const uint32_t address, int32_t & classid); void copyBuildings(vector & v_buildingtypes); void flush(); diff --git a/library/DFTileTypes.cpp b/library/DFTileTypes.cpp index 632e0bf66..7ec2f781d 100644 --- a/library/DFTileTypes.cpp +++ b/library/DFTileTypes.cpp @@ -23,1048 +23,7 @@ distribution. */ #include "DFCommonInternal.h" +#include "DFTileTypes.h" -bool DFHack::isWallTerrain(int in) -{ - switch (in) - { - case 65: //stone fortification - case 79: //stone pillar - case 80: //lavastone pillar - case 81: //featstone pillar - case 82: //minstone pillar - case 83: //frozen liquid pillar - case 176: //stone wall worn1 (most worn) - case 177: //stone wall worn2 (sorta worn) - case 178: //stone wall worn3 (least worn) - case 219: //stone wall (not worn) - case 265: //soil wall - case 269: //lavastone wall rd2 - case 270: //lavastone wall r2d - case 271: //lavastone wall r2u - case 272: //lavastone wall ru2 - case 273: //lavastone wall l2u - case 274: //lavastone wall lu2 - case 275: //lavastone wall l2d - case 276: //lavastone wall ld2 - case 277: //lavastone wall lrud - case 278: //lavastone wall rud - case 279: //lavastone wall lrd - case 280: //lavastone wall lru - case 281: //lavastone wall lud - case 282: //lavastone wall rd - case 283: //lavastone wall ru - case 284: //lavastone wall lu - case 285: //lavastone wall ld - case 286: //lavastone wall ud - case 287: //lavastone wall lr - case 288: //featstone wall rd2 - case 289: //featstone wall r2d - case 290: //featstone wall r2u - case 291: //featstone wall ru2 - case 292: //featstone wall l2u - case 293: //featstone wall lu2 - case 294: //featstone wall l2d - case 295: //featstone wall ld2 - case 296: //featstone wall lrud - case 297: //featstone wall rud - case 298: //featstone wall lrd - case 299: //featstone wall lru - case 300: //featstone wall lud - case 301: //featstone wall rd - case 382: //featstone wall ru - case 303: //featstone wall lu - case 304: //featstone wall ld - case 305: //featstone wall ud - case 306: //featstone wall lr - case 307: //stone wall rd2 - case 308: //stone wall r2d - case 309: //stone wall r2u - case 310: //stone wall ru2 - case 311: //stone wall l2u - case 312: //stone wall lu2 - case 313: //stone wall l2d - case 314: //stone wall ld2 - case 315: //stone wall lrud - case 316: //stone wall rud - case 317: //stone wall lrd - case 318: //stone wall lru - case 319: //stone wall lud - case 320: //stone wall rd - case 321: //stone wall ru - case 322: //stone wall lu - case 323: //stone wall ld - case 324: //stone wall ud - case 325: //stone wall lr - case 326: //lavastone fortification - case 327: //featstone fortification - case 328: //lavastone wall worn1 (most worn) - case 329: //lavastone wall worn2 (middle worn) - case 330: //lavastone wall worn3 (least worn) - case 331: //lavastone wall - case 332: //featstone wall worn1 (most worn) - case 333: //featstone wall worn2 (middle worn) - case 334: //featstone wall worn3 (least worn) - case 335: //featstone wall - case 360: //frozen liquid fortification - case 361: //frozen liquid wall worn1 (most worn) - case 362: //frozen liquid wall worn2 (middle worn) - case 363: //frozen liquid wall worn3 (least worn) - case 364: //frozen liquid wall - case 417: //minstone wall rd2 - case 418: //minstone wall r2d - case 419: //minstone wall r2u - case 420: //minstone wall ru2 - case 421: //minstone wall l2u - case 422: //minstone wall lu2 - case 423: //minstone wall l2d - case 424: //minstone wall ld2 - case 425: //minstone wall lrud - case 426: //minstone wall rud - case 427: //minstone wall lrd - case 428: //minstone wall lru - case 429: //minstone wall lud - case 430: //minstone wall rd - case 431: //minstone wall ru - case 432: //minstone wall lu - case 433: //minstone wall ld - case 434: //minstone wall ud - case 435: //minstone wall lr - case 436: //minstone fortification - case 437: //minstone wall worn1 - case 438: //minstone wall worn2 - case 439: //minstone wall worn3 - case 440: //minstone wall worn4 - case 450: //frozen liquid wall rd2 - case 451: //frozen liquid wall r2d - case 452: //frozen liquid wall r2u - case 453: //frozen liquid wall ru2 - case 454: //frozen liquid wall l2u - case 455: //frozen liquid wall lu2 - case 456: //frozen liquid wall l2d - case 457: //frozen liquid wall ld2 - case 458: //frozen liquid wall lrud - case 459: //frozen liquid wall rud - case 460: //frozen liquid wall lrd - case 461: //frozen liquid wall lru - case 462: //frozen liquid wall lud - case 463: //frozen liquid wall rd - case 464: //frozen liquid wall ru - case 465: //frozen liquid wall lu - case 466: //frozen liquid wall ld - case 467: //frozen liquid wall ud - case 468: //frozen liquid wall lr - case 494: //constructed fortification - case 495: //constructed pillar - case 496: //constructed wall rd2 - case 497: //constructed wall r2d - case 498: //constructed wall r2u - case 499: //constructed wall ru2 - case 500: //constructed wall l2u - case 501: //constructed wall lu2 - case 502: //constructed wall l2d - case 503: //constructed wall ld2 - case 504: //constructed wall lrud - case 505: //constructed wall rud - case 506: //constructed wall lrd - case 507: //constructed wall lru - case 508: //constructed wall lud - case 509: //constructed wall rd - case 510: //constructed wall ru - case 511: //constructed wall lu - case 512: //constructed wall ld - case 513: //constructed wall ud - case 514: //constructed wall lr - return true; - break; - } +using namespace DFHack; - return false; -} - -bool DFHack::isFloorTerrain(int in) -{ - switch (in) - { - case 2: //murky pool - - case 19: //driftwood stack - case 24: //tree - // case 27: //up stair frozen liquid - case 34: //shrub - case 35: //Chasm - // case 38: //up stair lavastone - // case 41: //up stair soil - case 42: //eerie pit - case 43: //stone floor detailed - case 44: //lavastone floor detailed - case 45: //featstone? floor detailed - case 46: //minstone? floor detailed [calcite] - case 47: //frozen liquid floor detailed - /* - case 51: //up stair grass1 [muddy?] - case 54: //up stair grass2 - case 57: //up stair stone - case 60: //up stair minstone - case 63: //up stair featstone - */ - case 67: //campfire - case 70: //fire - /* - case 79: //stone pillar - case 80: //lavastone pillar - case 81: //featstone pillar - case 82: //minstone pillar - case 83: //frozen liquid pillar - */ - case 89: //waterfall landing - case 90: //river source - - case 231: //sapling - /* - case 233: //ramp grass dry - case 234: //ramp grass dead - case 235: //ramp grass1 [muddy?] - case 236: //ramp grass2 - case 237: //ramp stone - case 238: //ramp lavastone - case 239: //ramp featstone - case 240: //ramp minstone - case 241: //ramp soil - */ - case 242: //ash1 - case 243: //ash2 - case 244: //ash3 - // frozen floors / ramps - case 245: //ramp frozen liquid - case 258: //frozen liquid 1 - case 259: //frozen liquid 2 - case 260: //frozen liquid 3 - case 262: //frozen liquid 0 - case 261: //furrowed soil [road?] -// case 262: //Ice floor - case 264: //Lava bottom of map - case 336: //stone floor 1 (raw stone) - case 337: //stone floor 2 (raw stone) - case 338: //stone floor 3 (raw stone) - case 339: //stone floor 4 (raw stone) - case 340: //lavastone floor 1 (raw stone) - case 341: //lavastone floor 2 (raw stone) - case 342: //lavastone floor 3 (raw stone) - case 343: //lavastone floor 4 (raw stone) - case 344: //featstone floor 1 (raw stone) - case 345: //featstone floor 2 (raw stone) - case 346: //featstone floor 3 (raw stone) - case 347: //featstone floor 4 (raw stone) - case 348: //grass floor 1 (raw) - case 349: //grass floor 2 (raw) - case 350: //grass floor 3 (raw) - case 351: //grass floor 4 (raw) - case 352: //soil floor 1 (raw) - case 353: //soil floor 2 (raw) - case 354: //soil floor 3 (raw) - case 355: //soil floor 4 (raw) - case 356: //soil floor 1 wet (raw) [red sand?] - case 357: //soil floor 2 wet (raw) [red sand?] - case 358: //soil floor 3 wet (raw) [red sand?] - case 359: //soil floor 4 wet (raw) [red sand?] - - case 365: //river n - case 366: //river s - case 367: //river e - case 368: //river w - case 369: //river nw - case 370: //river ne - case 371: //river sw - case 372: //river se - - case 373: //stream wall n (below) - case 374: //stream wall s (below) - case 375: //stream wall e (below) - case 376: //stream wall w (below) - case 377: //stream wall nw (below) - case 378: //stream wall ne (below) - case 379: //stream wall sw (below) - case 380: //stream wall se (below) - - case 387: //dry grass floor1 - case 388: //dry grass floor2 - case 389: //dry grass floor3 - case 390: //dry grass floor4 - case 391: //dead tree - case 392: //dead sapling - case 393: //dead shrub - case 394: //dead grass floor1 - case 395: //dead grass floor2 - case 396: //dead grass floor3 - case 397: //dead grass floor4 - case 398: //grass floor1b - case 399: //grass floor2b - case 400: //grass floor3b - case 401: //grass floor4b - case 402: //stone boulder - case 403: //lavastone boulder - case 404: //featstone boulder - - case 405: //stone pebbles 1 - case 406: //stone pebbles 2 - case 407: //stone pebbles 3 - case 408: //stone pebbles 4 - - case 409: //lavastone pebbles 1 - case 410: //lavastone pebbles 2 - case 411: //lavastone pebbles 3 - case 412: //lavastone pebbles 4 - - case 413: //featstone pebbles 1 - case 414: //featstone pebbles 2 - case 415: //featstone pebbles 3 - case 416: //featstone pebbles 4 - - case 441: //minstone floor 1 (cavern raw) - case 442: //minstone floor 2 (cavern raw) - case 443: //minstone floor 3 (cavern raw) - case 444: //minstone floor 4 (cavern raw) - case 445: //minstone boulder - case 446: //minstone pebbles 1 - case 447: //minstone pebbles 2 - case 448: //minstone pebbles 3 - case 449: //minstone pebbles 4 - case 493: //constructed floor detailed - //case 495: //constructed pillar - case 517: //stair up constructed - //case 518: //ramp constructed - return true; - break; - } - - return false; -} - -bool DFHack::isRampTerrain(int in) -{ - switch (in) - { - case 233: //ramp grass dry - case 234: //ramp grass dead - case 235: //ramp grass1 [muddy?] - case 236: //ramp grass2 - case 237: //ramp stone - case 238: //ramp lavastone - case 239: //ramp featstone - case 240: //ramp minstone - case 241: //ramp soil - case 245: //ramp frozen liquid - case 518: //ramp constructed - return true; - break; - } - - return false; -} - -bool DFHack::isStairTerrain(int in) -{ - switch (in) - { - case 25: //up-down stair frozen liquid - case 26: //down stair frozen liquid - case 27: //up stair frozen liquid - - - case 36: //up-down stair lavastone - case 37: //down stair lavastone - case 38: //up stair lavastone - - case 39: //up-down stair soil - case 40: //down stair soil - case 41: //up stair soil - - case 49: //up-down stair grass1 [muddy?] - case 50: //down stair grass1 [muddy?] - case 51: //up stair grass1 [muddy?] - - - case 52: //up-down stair grass2 - case 53: //down stair grass2 - case 54: //up stair grass2 - - case 55: //up-down stair stone - case 56: //down stair stone - case 57: //up stair stone - - case 58: //up-down stair minstone - case 59: //down stair minstone - case 60: //up stair minstone - - case 61: //up-down stair featstone - case 62: //down stair featstone - case 63: //up stair featstone - - case 515: //stair up-down constructed - case 516: //stair down constructed - case 517: //stair up constructed - return true; - break; - } - - return false; -} -bool DFHack::isOpenTerrain(int in) -{ - switch (in) - { - case 1: // slope down - case 32: //open space - return true; - } - return false; -} -/* -bool isOpenTerrain(int in) -{ - switch (in) - { - //case -1: //uninitialized tile - case 1: //slope down - case 19: //driftwood stack - case 24: //tree - case 25: //up-down stair frozen liquid - case 26: //down stair frozen liquid - case 27: //up stair frozen liquid - case 32: //open space - case 34: //shrub - case 35: //chasm - case 36: //up-down stair lavastone - case 37: //down stair lavastone - case 38: //up stair lavastone - case 39: //up-down stair soil - case 40: //down stair soil - case 41: //up stair soil - case 42: //eerie pit - - case 43: //stone floor detailed - case 44: //lavastone floor detailed - case 45: //featstone? floor detailed - case 46: //minstone? floor detailed [calcite] - case 47: //frozen liquid floor detailed - - case 49: //up-down stair grass1 [muddy?] - case 50: //down stair grass1 [muddy?] - case 51: //up stair grass1 [muddy?] - case 52: //up-down stair grass2 - case 53: //down stair grass2 - case 54: //up stair grass2 - case 55: //up-down stair stone - case 56: //down stair stone - case 57: //up stair stone - case 58: //up-down stair minstone - case 59: //down stair minstone - case 60: //up stair minstone - case 61: //up-down stair featstone - case 62: //down stair featstone - case 63: //up stair featstone - case 67: //campfire - case 70: //fire - /* - case 79: //stone pillar - case 80: //lavastone pillar - case 81: //featstone pillar - case 82: //minstone pillar - case 83: //frozen liquid pillar - *//* - case 231: //sapling - case 233: //ramp grass dry - case 234: //ramp grass dead - case 235: //ramp grass1 [muddy?] - case 236: //ramp grass2 - case 237: //ramp stone - case 238: //ramp lavastone - case 239: //ramp featstone - case 240: //ramp minstone - case 241: //ramp soil - case 242: //ash1 - case 243: //ash2 - case 244: //ash3 - case 245: //ramp frozen liquid - case 261: //furrowed soil [road?] - case 262: //Ice floor - case 336: //stone floor 1 (raw stone) - case 337: //stone floor 2 (raw stone) - case 338: //stone floor 3 (raw stone) - case 339: //stone floor 4 (raw stone) - case 340: //lavastone floor 1 (raw stone) - case 341: //lavastone floor 2 (raw stone) - case 342: //lavastone floor 3 (raw stone) - case 343: //lavastone floor 4 (raw stone) - case 344: //featstone floor 1 (raw stone) - case 345: //featstone floor 2 (raw stone) - case 346: //featstone floor 3 (raw stone) - case 347: //featstone floor 4 (raw stone) - case 348: //grass floor 1 (raw) - case 349: //grass floor 2 (raw) - case 350: //grass floor 3 (raw) - case 351: //grass floor 4 (raw) - case 352: //soil floor 1 (raw) - case 353: //soil floor 2 (raw) - case 354: //soil floor 3 (raw) - case 355: //soil floor 4 (raw) - case 356: //soil floor 1 wet (raw) [red sand?] - case 357: //soil floor 2 wet (raw) [red sand?] - case 358: //soil floor 3 wet (raw) [red sand?] - case 359: //soil floor 4 wet (raw) [red sand?] - case 381: //stream top (above) - case 387: //dry grass floor1 - case 388: //dry grass floor2 - case 389: //dry grass floor3 - case 390: //dry grass floor4 - case 391: //dead tree - case 392: //dead sapling - case 393: //dead shrub - case 394: //dead grass floor1 - case 395: //dead grass floor2 - case 396: //dead grass floor3 - case 397: //dead grass floor4 - case 398: //grass floor1b - case 399: //grass floor2b - case 400: //grass floor3b - case 401: //grass floor4b - case 402: //stone boulder - case 403: //lavastone boulder - case 404: //featstone boulder - case 405: //stone pebbles 1 - case 406: //stone pebbles 2 - case 407: //stone pebbles 3 - case 408: //stone pebbles 4 - case 409: //lavastone pebbles 1 - case 410: //lavastone pebbles 2 - case 411: //lavastone pebbles 3 - case 412: //lavastone pebbles 4 - case 413: //featstone pebbles 1 - case 414: //featstone pebbles 2 - case 415: //featstone pebbles 3 - case 416: //featstone pebbles 4 - case 441: //minstone floor 1 (cavern raw) - case 442: //minstone floor 2 (cavern raw) - case 443: //minstone floor 3 (cavern raw) - case 444: //minstone floor 4 (cavern raw) - case 445: //minstone boulder - case 446: //minstone pebbles 1 - case 447: //minstone pebbles 2 - case 448: //minstone pebbles 3 - case 449: //minstone pebbles 4 - case 493: //constructed floor detailed - //case 495: //constructed pillar - case 515: //stair up-down constructed - case 516: //stair down constructed - case 517: //stair up constructed - case 518: //ramp constructed - - return true; - break; - } - - return false; -}*/ -/* -int picktexture(int in) -{ - switch ( in ) - { - case 1: //slope down - return 3; - - case 2: //murky pool - return 20; - - case 19: //driftwood stack - return 8; - - case 24: //tree - //return 3; - return 15; - - case 25: //up-down stair frozen liquid - case 26: //down stair frozen liquid - case 27: //up stair frozen liquid - return 25; - - case 32: //open space - return 5; - - case 34: //shrub - return 14; - - case 35: //chasm - return 31; - - case 36: //up-down stair lavastone - case 37: //down stair lavastone - case 38: //up stair lavastone - return 32; - - case 39: //up-down stair soil - case 40: //down stair soil - case 41: //up stair soil - return 10; - - case 42: //eerie pit - return 31; - - case 43: //stone floor detailed - return 7; - - case 44: //lavastone floor detailed - return 32; - - case 45: //featstone? floor detailed - return 18; - - case 46: //minstone? floor detailed [calcite] - return 9; - - case 47: //frozen liquid floor detailed - return 27; - - case 49: //up-down stair grass1 [muddy?] - case 50: //down stair grass1 [muddy?] - case 51: //up stair grass1 [muddy?] - return 0; - - case 52: //up-down stair grass2 - case 53: //down stair grass2 - case 54: //up stair grass2 - return 0; //16; - - case 55: //up-down stair stone - case 56: //down stair stone - case 57: //up stair stone - return 1; - - case 58: //up-down stair minstone - case 59: //down stair minstone - case 60: //up stair minstone - return 9; - - case 61: //up-down stair featstone - case 62: //down stair featstone - case 63: //up stair featstone - return 18; - - case 65: //stone fortification - return 22; - - case 67: //campfire - return 3; - - case 70: //fire - return 3; - - case 79: //stone pillar - return 1; - - case 80: //lavastone pillar - return 32; - - case 81: //featstone pillar - return 18; - - case 82: //minstone pillar - return 9; - - case 83: //frozen liquid pillar - return 27; - - case 89: //waterfall landing - return 20; - - case 90: //river source - return 20; - - case 176: //stone wall worn1 (most worn) - case 177: //stone wall worn2 (sorta worn) - case 178: //stone wall worn3 (least worn) - case 219: //stone wall (not worn) - return 1; - - case 231: //sapling - return 15; - - case 233: //ramp grass dry - return 33; - - case 234: //ramp grass dead - return 33; - - case 235: //ramp grass1 [muddy?] - return 0; - - case 236: //ramp grass2 - return 0; //16; - - case 237: //ramp stone - return 1; - - case 238: //ramp lavastone - return 32; - - case 239: //ramp featstone - return 18; - - case 240: //ramp minstone - return 9; - - case 241: //ramp soil - return 10; - - case 242: //ash1 - case 243: //ash2 - case 244: //ash3 - return 32; - - case 245: //ramp frozen liquid - return 27; - - case 258: //frozen liquid 1 - case 259: //frozen liquid 2 - case 260: //frozen liquid 3 - return 25; - - case 261: //furrowed soil [road?] - return 21; - - case 262: //frozen liquid 0 - return 25; - - case 264: //lava - return 24; - - case 265: //soil wall - return 10; - - case 269: //lavastone wall rd2 - case 270: //lavastone wall r2d - case 271: //lavastone wall r2u - case 272: //lavastone wall ru2 - case 273: //lavastone wall l2u - case 274: //lavastone wall lu2 - case 275: //lavastone wall l2d - case 276: //lavastone wall ld2 - case 277: //lavastone wall lrud - case 278: //lavastone wall rud - case 279: //lavastone wall lrd - case 280: //lavastone wall lru - case 281: //lavastone wall lud - case 282: //lavastone wall rd - case 283: //lavastone wall ru - case 284: //lavastone wall lu - case 285: //lavastone wall ld - case 286: //lavastone wall ud - case 287: //lavastone wall lr - return 32; - - case 288: //featstone wall rd2 - case 289: //featstone wall r2d - case 290: //featstone wall r2u - case 291: //featstone wall ru2 - case 292: //featstone wall l2u - case 293: //featstone wall lu2 - case 294: //featstone wall l2d - case 295: //featstone wall ld2 - case 296: //featstone wall lrud - case 297: //featstone wall rud - case 298: //featstone wall lrd - case 299: //featstone wall lru - case 300: //featstone wall lud - case 301: //featstone wall rd - case 382: //featstone wall ru - case 303: //featstone wall lu - case 304: //featstone wall ld - case 305: //featstone wall ud - case 306: //featstone wall lr - return 18; - - case 307: //stone wall rd2 - case 308: //stone wall r2d - case 309: //stone wall r2u - case 310: //stone wall ru2 - case 311: //stone wall l2u - case 312: //stone wall lu2 - case 313: //stone wall l2d - case 314: //stone wall ld2 - case 315: //stone wall lrud - case 316: //stone wall rud - case 317: //stone wall lrd - case 318: //stone wall lru - case 319: //stone wall lud - case 320: //stone wall rd - case 321: //stone wall ru - case 322: //stone wall lu - case 323: //stone wall ld - case 324: //stone wall ud - case 325: //stone wall lr - return 1; - - case 326: //lavastone fortification - return 32; - - case 327: //featstone fortification - return 18; - - case 328: //lavastone wall worn1 (most worn) - case 329: //lavastone wall worn2 (middle worn) - case 330: //lavastone wall worn3 (least worn) - case 331: //lavastone wall - return 32; - - case 332: //featstone wall worn1 (most worn) - case 333: //featstone wall worn2 (middle worn) - case 334: //featstone wall worn3 (least worn) - case 335: //featstone wall - return 18; - - case 336: //stone floor 1 (raw stone) - case 337: //stone floor 2 (raw stone) - case 338: //stone floor 3 (raw stone) - case 339: //stone floor 4 (raw stone) - return 17; - - case 340: //lavastone floor 1 (raw stone) - case 341: //lavastone floor 2 (raw stone) - case 342: //lavastone floor 3 (raw stone) - case 343: //lavastone floor 4 (raw stone) - return 32; - - case 344: //featstone floor 1 (raw stone) - case 345: //featstone floor 2 (raw stone) - case 346: //featstone floor 3 (raw stone) - case 347: //featstone floor 4 (raw stone) - return 18; - - case 348: //grass floor 1 (raw) - case 349: //grass floor 2 (raw) - case 350: //grass floor 3 (raw) - case 351: //grass floor 4 (raw) - return 0; - - case 352: //soil floor 1 (raw) - case 353: //soil floor 2 (raw) - case 354: //soil floor 3 (raw) - case 355: //soil floor 4 (raw) - return 10; - - case 356: //soil floor 1 wet (raw) [red sand?] - case 357: //soil floor 2 wet (raw) [red sand?] - case 358: //soil floor 3 wet (raw) [red sand?] - case 359: //soil floor 4 wet (raw) [red sand?] - return 10; - - case 360: //frozen liquid fortification - return 27; - - case 361: //frozen liquid wall worn1 (most worn) - case 362: //frozen liquid wall worn2 (middle worn) - case 363: //frozen liquid wall worn3 (least worn) - case 364: //frozen liquid wall - return 25; - - case 365: //river n - case 366: //river s - case 367: //river e - case 368: //river w - case 369: //river nw - case 370: //river ne - case 371: //river sw - case 372: //river se - return 19; - - case 373: //stream wall n (below) - case 374: //stream wall s (below) - case 375: //stream wall e (below) - case 376: //stream wall w (below) - case 377: //stream wall nw (below) - case 378: //stream wall ne (below) - case 379: //stream wall sw (below) - case 380: //stream wall se (below) - case 381: //stream top (above) - return 19; - - case 387: //dry grass floor1 - case 388: //dry grass floor2 - case 389: //dry grass floor3 - case 390: //dry grass floor4 - return 33; - - case 391: //dead tree - case 392: //dead sapling - case 393: //dead shrub - return 13; - - case 394: //dead grass floor1 - case 395: //dead grass floor2 - case 396: //dead grass floor3 - case 397: //dead grass floor4 - return 33; - - case 398: //grass floor1b - case 399: //grass floor2b - case 400: //grass floor3b - case 401: //grass floor4b - return 0; //16; - - case 402: //stone boulder - case 403: //lavastone boulder - case 404: //featstone boulder - return 18; - - case 405: //stone pebbles 1 - case 406: //stone pebbles 2 - case 407: //stone pebbles 3 - case 408: //stone pebbles 4 - return 12; - - case 409: //lavastone pebbles 1 - case 410: //lavastone pebbles 2 - case 411: //lavastone pebbles 3 - case 412: //lavastone pebbles 4 - return 12; - - case 413: //featstone pebbles 1 - case 414: //featstone pebbles 2 - case 415: //featstone pebbles 3 - case 416: //featstone pebbles 4 - return 12; - - case 417: //minstone wall rd2 - case 418: //minstone wall r2d - case 419: //minstone wall r2u - case 420: //minstone wall ru2 - case 421: //minstone wall l2u - case 422: //minstone wall lu2 - case 423: //minstone wall l2d - case 424: //minstone wall ld2 - case 425: //minstone wall lrud - case 426: //minstone wall rud - case 427: //minstone wall lrd - case 428: //minstone wall lru - case 429: //minstone wall lud - case 430: //minstone wall rd - case 431: //minstone wall ru - case 432: //minstone wall lu - case 433: //minstone wall ld - case 434: //minstone wall ud - case 435: //minstone wall lr - return 9; - - case 436: //minstone fortification - return 21; - - case 437: //minstone wall worn1 - case 438: //minstone wall worn2 - case 439: //minstone wall worn3 - case 440: //minstone wall worn4 - return 21; - - case 441: //minstone floor 1 (cavern raw) - case 442: //minstone floor 2 (cavern raw) - case 443: //minstone floor 3 (cavern raw) - case 444: //minstone floor 4 (cavern raw) - return 9; - - case 445: //minstone boulder - return 18; - - case 446: //minstone pebbles 1 - case 447: //minstone pebbles 2 - case 448: //minstone pebbles 3 - case 449: //minstone pebbles 4 - return 12; - - case 450: //frozen liquid wall rd2 - case 451: //frozen liquid wall r2d - case 452: //frozen liquid wall r2u - case 453: //frozen liquid wall ru2 - case 454: //frozen liquid wall l2u - case 455: //frozen liquid wall lu2 - case 456: //frozen liquid wall l2d - case 457: //frozen liquid wall ld2 - case 458: //frozen liquid wall lrud - case 459: //frozen liquid wall rud - case 460: //frozen liquid wall lrd - case 461: //frozen liquid wall lru - case 462: //frozen liquid wall lud - case 463: //frozen liquid wall rd - case 464: //frozen liquid wall ru - case 465: //frozen liquid wall lu - case 466: //frozen liquid wall ld - case 467: //frozen liquid wall ud - case 468: //frozen liquid wall lr - return 25; - - case 493: //constructed floor detailed - return 7; - - case 494: //constructed fortification - return 7; - - case 495: //constructed pillar - return 7; - - case 496: //constructed wall rd2 - case 497: //constructed wall r2d - case 498: //constructed wall r2u - case 499: //constructed wall ru2 - case 500: //constructed wall l2u - case 501: //constructed wall lu2 - case 502: //constructed wall l2d - case 503: //constructed wall ld2 - case 504: //constructed wall lrud - case 505: //constructed wall rud - case 506: //constructed wall lrd - case 507: //constructed wall lru - case 508: //constructed wall lud - case 509: //constructed wall rd - case 510: //constructed wall ru - case 511: //constructed wall lu - case 512: //constructed wall ld - case 513: //constructed wall ud - case 514: //constructed wall lr - return 22; - - case 515: //stair up-down constructed - case 516: //stair down constructed - case 517: //stair up constructed - return 4; - - case 518: //ramp constructed - return 4; - - case -1: //not assigned memory - return 6; - - default: //none of the above - return -1; - } - - return 6; -}*/ -int DFHack::getVegetationType(int in) -{ - switch(in) - { - case 391: //dead tree - return DFHack::TREE_DEAD; - case 392: //dead sapling - return DFHack::SAPLING_DEAD; - case 393: //dead shrub - return DFHack::SHRUB_DEAD; - case 24: //tree - return DFHack::TREE_OK; - case 231: //sapling - return DFHack::SAPLING_OK; - case 34: //shrub - return DFHack::SHRUB_OK; - } - // ???? - return -1; -} diff --git a/library/DFTileTypes.h b/library/DFTileTypes.h index 30b60c764..721a35a19 100644 --- a/library/DFTileTypes.h +++ b/library/DFTileTypes.h @@ -25,4 +25,734 @@ distribution. #ifndef TILETYPES_H_INCLUDED #define TILETYPES_H_INCLUDED +namespace DFHack +{ + enum TileClass + { + EMPTY, + + WALL, + PILLAR, + FORTIFICATION, + + STAIR_UP, + STAIR_DOWN, + STAIR_UPDOWN, + + RAMP, + + FLOOR, + TREE_DEAD, + TREE_OK, + SAPLING_DEAD, + SAPLING_OK, + SHRUB_DEAD, + SHRUB_OK, + BOULDER, + PEBBLES + }; + enum TileMaterial + { + AIR, + SOIL, + STONE, + FEATSTONE, // whatever it is + OBSIDIAN, + + VEIN, + ICE, + GRASS, + GRASS2, + GRASS_DEAD, + GRASS_DRY, + DRIFTWOOD, + HFS, + MAGMA, + CAMPFIRE, + FIRE, + ASHES, + CONSTRUCTED + }; + enum TileVariant + { + VAR_1, + VAR_2, + VAR_3, + VAR_4 + }; + + struct TileRow + { + const char * name; + TileClass c; + TileMaterial m; + TileVariant v; + }; + + const TileRow tileTypeTable[520] = + { + // 0 + {"void",EMPTY, AIR, VAR_1}, + {"ramp top",EMPTY, AIR, VAR_1}, + {"pool",FLOOR, SOIL, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + + // 10 + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {"driftwood stack",FLOOR, DRIFTWOOD, VAR_1}, + + // 20 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"tree",TREE_OK, SOIL, VAR_1}, + {"ice stair up/down",STAIR_UPDOWN, ICE, VAR_1}, + {"ice stair down",STAIR_DOWN, ICE, VAR_1}, + {"ice stair up",STAIR_UP, ICE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 30 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"empty space",EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"shrub",SHRUB_OK, SOIL, VAR_1}, + {"chasm",FLOOR, AIR, VAR_1}, + {"obsidian stair up/down",STAIR_UPDOWN, OBSIDIAN, VAR_1}, + {"obsidian stair down",STAIR_DOWN, OBSIDIAN, VAR_1}, + {"obsidian stair up",STAIR_UP, OBSIDIAN, VAR_1}, + {"soil stair up/down",STAIR_UPDOWN, SOIL, VAR_1}, + + // 40 + {"soil stair down",STAIR_DOWN, SOIL, VAR_1}, + {"soil stair up",STAIR_UP, SOIL, VAR_1}, + {"eerie pit",FLOOR, HFS, VAR_1}, + {"smooth stone floor",FLOOR, STONE, VAR_1}, + {"smooth obsidian floor",FLOOR, OBSIDIAN, VAR_1}, + {"smooth featstone? floor",FLOOR, FEATSTONE, VAR_1}, + {"smooth vein floor",FLOOR, VEIN, VAR_1}, + {"smooth ice floor",FLOOR, ICE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"grass stair up/down",STAIR_UPDOWN, GRASS, VAR_1}, + + // 50 + {"grass stair down",STAIR_DOWN, GRASS, VAR_1}, + {"grass stair up",STAIR_UP, GRASS, VAR_1}, + {"grass2 stair up/down",STAIR_UPDOWN, GRASS2, VAR_1}, + {"grass2 stair down",STAIR_DOWN, GRASS2, VAR_1}, + {"grass2 stair up",STAIR_UP, GRASS2, VAR_1}, + {"stone stair up/down",STAIR_UPDOWN, STONE, VAR_1}, + {"stone stair down",STAIR_DOWN, STONE, VAR_1}, + {"stone stair up",STAIR_UP, STONE, VAR_1}, + {"vein stair up/down",STAIR_UPDOWN, VEIN, VAR_1}, + {"vein stair down",STAIR_DOWN, VEIN, VAR_1}, + + // 60 + {"vein stair up",STAIR_UP, VEIN, VAR_1}, + {"featstone? stair up/down",STAIR_UPDOWN, FEATSTONE, VAR_1}, + {"featstone? stair down",STAIR_DOWN, FEATSTONE, VAR_1}, + {"featstone? stair up",STAIR_UP, FEATSTONE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"stone fortification",FORTIFICATION, STONE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"campfire",FLOOR, CAMPFIRE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 70 + {"fire",FLOOR, FIRE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"stone pillar",PILLAR, STONE, VAR_1}, + + //80 + {"obsidian pillar",PILLAR, OBSIDIAN, VAR_1}, + {"featstone? pillar",PILLAR, FEATSTONE, VAR_1}, + {"vein pillar",PILLAR, VEIN, VAR_1}, + {"ice pillar",PILLAR, ICE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"waterfall landing",FLOOR, SOIL, VAR_1}, // verify material + + // 90 + {"river source",FLOOR, SOIL, VAR_1}, // verify material + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 100 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 110 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 120 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 130 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 140 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 150 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 160 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 170 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"cracked stone wall" ,WALL, STONE, VAR_1}, + {"damaged stone wall" ,WALL, STONE, VAR_1}, + {"worn stone wall" ,WALL, STONE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 180 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 190 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 200 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 210 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"stone wall" ,WALL, STONE, VAR_1}, + + // 220 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 230 + {0 ,EMPTY, AIR, VAR_1}, + {"sapling" ,SAPLING_OK, SOIL, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"dry grass ramp" ,RAMP, GRASS_DRY, VAR_1}, + {"dead grass ramp" ,RAMP, GRASS_DEAD, VAR_1}, + {"grass ramp" ,RAMP, GRASS, VAR_1}, + {"grass ramp" ,RAMP, GRASS2, VAR_1}, + {"stone ramp" ,RAMP, STONE, VAR_1}, + {"obsidian ramp" ,RAMP, OBSIDIAN, VAR_1}, + {"featstone? ramp" ,RAMP, FEATSTONE, VAR_1}, + + // 240 + {"vein ramp" ,RAMP, VEIN, VAR_1}, + {"soil ramp" ,RAMP, SOIL, VAR_1}, + {"ashes" ,FLOOR, ASHES, VAR_1}, + {"ashes" ,FLOOR, ASHES, VAR_2}, + {"ashes" ,FLOOR, ASHES, VAR_3}, + {"ice ramp" ,RAMP, ICE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 250 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"ice floor" ,FLOOR, ICE, VAR_2}, + {"ice floor" ,FLOOR, ICE, VAR_3}, + + // 260 + {"ice floor" ,FLOOR, ICE, VAR_4}, + {"furrowed soil" ,FLOOR, SOIL, VAR_1}, + {"ice floor" ,FLOOR, ICE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"magma" ,FLOOR, MAGMA, VAR_1}, // is it really a floor? + {"soil wall" ,WALL, SOIL, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + + // 270 + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + + // 280 + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + + // 290 + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + + //300 + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth featstone? wall",WALL,FEATSTONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + + //310 + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + + //320 + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"smooth stone wall",WALL,STONE,VAR_1}, + {"obsidian fortification",FORTIFICATION,OBSIDIAN,VAR_1}, + {"featstone? fortification",FORTIFICATION,FEATSTONE,VAR_1}, + {"cracked obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"damaged obsidian wall",WALL,OBSIDIAN,VAR_1}, + + // 330 + {"worn obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"cracked stone wall",WALL,STONE,VAR_1}, + {"damaged stone wall",WALL,STONE,VAR_1}, + {"worn stone wall",WALL,STONE,VAR_1}, + {"stone wall",WALL,STONE,VAR_1}, + {"stone floor",FLOOR,STONE,VAR_1}, + {"stone floor",FLOOR,STONE,VAR_2}, + {"stone floor",FLOOR,STONE,VAR_3}, + {"stone floor",FLOOR,STONE,VAR_4}, + + // 340 + {"obsidian floor",FLOOR,OBSIDIAN,VAR_1}, + {"obsidian floor",FLOOR,OBSIDIAN,VAR_2}, + {"obsidian floor",FLOOR,OBSIDIAN,VAR_3}, + {"obsidian floor",FLOOR,OBSIDIAN,VAR_4}, + {"featstone? floor",FLOOR,FEATSTONE,VAR_1}, + {"featstone? floor",FLOOR,FEATSTONE,VAR_2}, + {"featstone? floor",FLOOR,FEATSTONE,VAR_3}, + {"featstone? floor",FLOOR,FEATSTONE,VAR_4}, + {"grass",FLOOR,GRASS,VAR_1}, + {"grass",FLOOR,GRASS,VAR_2}, + + // 350 + {"grass",FLOOR,GRASS,VAR_3}, + {"grass",FLOOR,GRASS,VAR_4}, + {"soil floor",FLOOR,SOIL,VAR_1}, + {"soil floor",FLOOR,SOIL,VAR_2}, + {"soil floor",FLOOR,SOIL,VAR_3}, + {"soil floor",FLOOR,SOIL,VAR_4}, + {"wet soil floor",FLOOR,SOIL,VAR_1}, + {"wet soil floor",FLOOR,SOIL,VAR_2}, + {"wet soil floor",FLOOR,SOIL,VAR_3}, + {"wet soil floor",FLOOR,SOIL,VAR_4}, + + // 360 + {"ice fortification",FORTIFICATION,ICE,VAR_1}, + {"cracked ice wall",WALL,ICE,VAR_1}, + {"damaged ice wall",WALL,ICE,VAR_1}, + {"worn ice wall",WALL,ICE,VAR_1}, + {"ice wall",WALL,ICE,VAR_1}, + {"river",FLOOR,SOIL,VAR_1}, + {"river",FLOOR,SOIL,VAR_1}, + {"river",FLOOR,SOIL,VAR_1}, + {"river",FLOOR,SOIL,VAR_1}, + {"river",FLOOR,SOIL,VAR_1}, + + //370 + {"river",FLOOR,SOIL,VAR_1}, + {"river",FLOOR,SOIL,VAR_1}, + {"river",FLOOR,SOIL,VAR_1}, + {"stream",FLOOR,SOIL,VAR_1}, + {"stream",FLOOR,SOIL,VAR_1}, + {"stream",FLOOR,SOIL,VAR_1}, + {"stream",FLOOR,SOIL,VAR_1}, + {"stream",FLOOR,SOIL,VAR_1}, + {"stream",FLOOR,SOIL,VAR_1}, + {"stream",FLOOR,SOIL,VAR_1}, + + // 380 + {"stream",FLOOR,SOIL,VAR_1}, + {"stream top",FLOOR,SOIL,VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"dry grass",FLOOR,GRASS_DRY,VAR_1}, + {"dry grass",FLOOR,GRASS_DRY,VAR_2}, + {"dry grass",FLOOR,GRASS_DRY,VAR_3}, + + // 390 + {"dry grass",FLOOR,GRASS_DRY,VAR_4}, + {"dead tree",TREE_DEAD,SOIL,VAR_1}, + {"dead sapling",SAPLING_DEAD,SOIL,VAR_1}, + {"dead shrub",SHRUB_DEAD,SOIL,VAR_1}, + {"dead grass",FLOOR,GRASS_DEAD,VAR_1}, + {"dead grass",FLOOR,GRASS_DEAD,VAR_2}, + {"dead grass",FLOOR,GRASS_DEAD,VAR_3}, + {"dead grass",FLOOR,GRASS_DEAD,VAR_4}, + {"grass",FLOOR,GRASS2,VAR_1}, + {"grass",FLOOR,GRASS2,VAR_2}, + + // 400 + {"grass",FLOOR,GRASS2,VAR_3}, + {"grass",FLOOR,GRASS2,VAR_4}, + {"boulder",BOULDER,STONE,VAR_1}, + {"obsidian boulder",BOULDER,OBSIDIAN,VAR_1}, + {"featstone? boulder",BOULDER,FEATSTONE,VAR_1}, + {"pebbles",PEBBLES,STONE,VAR_1}, + {"pebbles",PEBBLES,STONE,VAR_2}, + {"pebbles",PEBBLES,STONE,VAR_3}, + {"pebbles",PEBBLES,STONE,VAR_4}, + {"obsidian shards",PEBBLES,OBSIDIAN,VAR_1}, + + // 410 + {"obsidian shards",PEBBLES,OBSIDIAN,VAR_2}, + {"obsidian shards",PEBBLES,OBSIDIAN,VAR_3}, + {"obsidian shards",PEBBLES,OBSIDIAN,VAR_4}, + {"featstone? pebbles",PEBBLES,FEATSTONE,VAR_1}, + {"featstone? pebbles",PEBBLES,FEATSTONE,VAR_2}, + {"featstone? pebbles",PEBBLES,FEATSTONE,VAR_3}, + {"featstone? pebbles",PEBBLES,FEATSTONE,VAR_4}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + + // 420 + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + + // 430 + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"smooth vein wall",WALL,VEIN,VAR_1}, + {"vein fortification",FORTIFICATION,VEIN,VAR_1}, + {"cracked vein wall",WALL,VEIN,VAR_1}, + {"damaged vein wall",WALL,VEIN,VAR_1}, + {"worn vein wall",WALL,VEIN,VAR_1}, + + // 440 + {"vein wall",WALL,VEIN,VAR_1}, + {"vein floor",FLOOR,VEIN,VAR_1}, + {"vein floor",FLOOR,VEIN,VAR_2}, + {"vein floor",FLOOR,VEIN,VAR_3}, + {"vein floor",FLOOR,VEIN,VAR_4}, + {"vein boulder",BOULDER,VEIN,VAR_1}, + {"vein pebbles",PEBBLES,VEIN,VAR_1}, + {"vein pebbles",PEBBLES,VEIN,VAR_2}, + {"vein pebbles",PEBBLES,VEIN,VAR_3}, + {"vein pebbles",PEBBLES,VEIN,VAR_4}, + + // 450 + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + + // 460 + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {"smooth ice wall",WALL,ICE,VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 470 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 480 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 490 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"constructed floor",FLOOR,CONSTRUCTED, VAR_1}, + {"constructed fortification",FORTIFICATION,CONSTRUCTED, VAR_1}, + {"constructed pillar",PILLAR,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + + // 500 + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + + // 510 + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1}, + {"constructed stair up/down",STAIR_UPDOWN,CONSTRUCTED, VAR_1}, + {"constructed stair down",STAIR_DOWN,CONSTRUCTED, VAR_1}, + {"constructed stair up",STAIR_UP,CONSTRUCTED, VAR_1}, + {"constructed ramp",STAIR_UPDOWN,CONSTRUCTED, VAR_1}, + {0 ,EMPTY, AIR, VAR_1} // end + }; + + inline + bool isWallTerrain(int in) + { + return tileTypeTable[in].c >= WALL && tileTypeTable[in].c <= FORTIFICATION ; + } + + inline + bool isFloorTerrain(int in) + { + return tileTypeTable[in].c >= FLOOR && tileTypeTable[in].c <= PEBBLES; + } + + inline + bool isRampTerrain(int in) + { + return tileTypeTable[in].c == RAMP; + } + + inline + bool isStairTerrain(int in) + { + return tileTypeTable[in].c >= STAIR_UP && tileTypeTable[in].c <= STAIR_UPDOWN; + } + + inline + bool isOpenTerrain(int in) + { + return tileTypeTable[in].c == EMPTY; + } + + inline + int getVegetationType(int in) + { + return tileTypeTable[in].c; + } +} + + + #endif // TILETYPES_H_INCLUDED diff --git a/library/unmaintained/TileTypeLeftovers.cpp b/library/unmaintained/TileTypeLeftovers.cpp new file mode 100644 index 000000000..70a02d405 --- /dev/null +++ b/library/unmaintained/TileTypeLeftovers.cpp @@ -0,0 +1,1044 @@ +bool DFHack::isWallTerrain(int in) +{ + switch (in) + { + case 65: //stone fortification + case 79: //stone pillar + case 80: //lavastone pillar + case 81: //featstone pillar + case 82: //minstone pillar + case 83: //frozen liquid pillar + case 176: //stone wall worn1 (most worn) + case 177: //stone wall worn2 (sorta worn) + case 178: //stone wall worn3 (least worn) + case 219: //stone wall (not worn) + case 265: //soil wall + case 269: //lavastone wall rd2 + case 270: //lavastone wall r2d + case 271: //lavastone wall r2u + case 272: //lavastone wall ru2 + case 273: //lavastone wall l2u + case 274: //lavastone wall lu2 + case 275: //lavastone wall l2d + case 276: //lavastone wall ld2 + case 277: //lavastone wall lrud + case 278: //lavastone wall rud + case 279: //lavastone wall lrd + case 280: //lavastone wall lru + case 281: //lavastone wall lud + case 282: //lavastone wall rd + case 283: //lavastone wall ru + case 284: //lavastone wall lu + case 285: //lavastone wall ld + case 286: //lavastone wall ud + case 287: //lavastone wall lr + case 288: //featstone wall rd2 + case 289: //featstone wall r2d + case 290: //featstone wall r2u + case 291: //featstone wall ru2 + case 292: //featstone wall l2u + case 293: //featstone wall lu2 + case 294: //featstone wall l2d + case 295: //featstone wall ld2 + case 296: //featstone wall lrud + case 297: //featstone wall rud + case 298: //featstone wall lrd + case 299: //featstone wall lru + case 300: //featstone wall lud + case 301: //featstone wall rd + case 382: //featstone wall ru + case 303: //featstone wall lu + case 304: //featstone wall ld + case 305: //featstone wall ud + case 306: //featstone wall lr + case 307: //stone wall rd2 + case 308: //stone wall r2d + case 309: //stone wall r2u + case 310: //stone wall ru2 + case 311: //stone wall l2u + case 312: //stone wall lu2 + case 313: //stone wall l2d + case 314: //stone wall ld2 + case 315: //stone wall lrud + case 316: //stone wall rud + case 317: //stone wall lrd + case 318: //stone wall lru + case 319: //stone wall lud + case 320: //stone wall rd + case 321: //stone wall ru + case 322: //stone wall lu + case 323: //stone wall ld + case 324: //stone wall ud + case 325: //stone wall lr + case 326: //lavastone fortification + case 327: //featstone fortification + case 328: //lavastone wall worn1 (most worn) + case 329: //lavastone wall worn2 (middle worn) + case 330: //lavastone wall worn3 (least worn) + case 331: //lavastone wall + case 332: //featstone wall worn1 (most worn) + case 333: //featstone wall worn2 (middle worn) + case 334: //featstone wall worn3 (least worn) + case 335: //featstone wall + case 360: //frozen liquid fortification + case 361: //frozen liquid wall worn1 (most worn) + case 362: //frozen liquid wall worn2 (middle worn) + case 363: //frozen liquid wall worn3 (least worn) + case 364: //frozen liquid wall + case 417: //minstone wall rd2 + case 418: //minstone wall r2d + case 419: //minstone wall r2u + case 420: //minstone wall ru2 + case 421: //minstone wall l2u + case 422: //minstone wall lu2 + case 423: //minstone wall l2d + case 424: //minstone wall ld2 + case 425: //minstone wall lrud + case 426: //minstone wall rud + case 427: //minstone wall lrd + case 428: //minstone wall lru + case 429: //minstone wall lud + case 430: //minstone wall rd + case 431: //minstone wall ru + case 432: //minstone wall lu + case 433: //minstone wall ld + case 434: //minstone wall ud + case 435: //minstone wall lr + case 436: //minstone fortification + case 437: //minstone wall worn1 + case 438: //minstone wall worn2 + case 439: //minstone wall worn3 + case 440: //minstone wall worn4 + case 450: //frozen liquid wall rd2 + case 451: //frozen liquid wall r2d + case 452: //frozen liquid wall r2u + case 453: //frozen liquid wall ru2 + case 454: //frozen liquid wall l2u + case 455: //frozen liquid wall lu2 + case 456: //frozen liquid wall l2d + case 457: //frozen liquid wall ld2 + case 458: //frozen liquid wall lrud + case 459: //frozen liquid wall rud + case 460: //frozen liquid wall lrd + case 461: //frozen liquid wall lru + case 462: //frozen liquid wall lud + case 463: //frozen liquid wall rd + case 464: //frozen liquid wall ru + case 465: //frozen liquid wall lu + case 466: //frozen liquid wall ld + case 467: //frozen liquid wall ud + case 468: //frozen liquid wall lr + case 494: //constructed fortification + case 495: //constructed pillar + case 496: //constructed wall rd2 + case 497: //constructed wall r2d + case 498: //constructed wall r2u + case 499: //constructed wall ru2 + case 500: //constructed wall l2u + case 501: //constructed wall lu2 + case 502: //constructed wall l2d + case 503: //constructed wall ld2 + case 504: //constructed wall lrud + case 505: //constructed wall rud + case 506: //constructed wall lrd + case 507: //constructed wall lru + case 508: //constructed wall lud + case 509: //constructed wall rd + case 510: //constructed wall ru + case 511: //constructed wall lu + case 512: //constructed wall ld + case 513: //constructed wall ud + case 514: //constructed wall lr + return true; + break; + } + + return false; +} + +bool DFHack::isFloorTerrain(int in) +{ + switch (in) + { + case 2: //murky pool + + case 19: //driftwood stack + case 24: //tree + // case 27: //up stair frozen liquid + case 34: //shrub + case 35: //Chasm + // case 38: //up stair lavastone + // case 41: //up stair soil + case 42: //eerie pit + case 43: //stone floor detailed + case 44: //lavastone floor detailed + case 45: //featstone? floor detailed + case 46: //minstone? floor detailed [calcite] + case 47: //frozen liquid floor detailed + /* + case 51: //up stair grass1 [muddy?] + case 54: //up stair grass2 + case 57: //up stair stone + case 60: //up stair minstone + case 63: //up stair featstone + */ + case 67: //campfire + case 70: //fire + /* + case 79: //stone pillar + case 80: //lavastone pillar + case 81: //featstone pillar + case 82: //minstone pillar + case 83: //frozen liquid pillar + */ + case 89: //waterfall landing + case 90: //river source + + case 231: //sapling + /* + case 233: //ramp grass dry + case 234: //ramp grass dead + case 235: //ramp grass1 [muddy?] + case 236: //ramp grass2 + case 237: //ramp stone + case 238: //ramp lavastone + case 239: //ramp featstone + case 240: //ramp minstone + case 241: //ramp soil + */ + case 242: //ash1 + case 243: //ash2 + case 244: //ash3 + // frozen floors / ramps + case 245: //ramp frozen liquid + case 258: //frozen liquid 1 + case 259: //frozen liquid 2 + case 260: //frozen liquid 3 + case 262: //frozen liquid 0 + case 261: //furrowed soil [road?] +// case 262: //Ice floor + case 264: //Lava bottom of map + case 336: //stone floor 1 (raw stone) + case 337: //stone floor 2 (raw stone) + case 338: //stone floor 3 (raw stone) + case 339: //stone floor 4 (raw stone) + case 340: //lavastone floor 1 (raw stone) + case 341: //lavastone floor 2 (raw stone) + case 342: //lavastone floor 3 (raw stone) + case 343: //lavastone floor 4 (raw stone) + case 344: //featstone floor 1 (raw stone) + case 345: //featstone floor 2 (raw stone) + case 346: //featstone floor 3 (raw stone) + case 347: //featstone floor 4 (raw stone) + case 348: //grass floor 1 (raw) + case 349: //grass floor 2 (raw) + case 350: //grass floor 3 (raw) + case 351: //grass floor 4 (raw) + case 352: //soil floor 1 (raw) + case 353: //soil floor 2 (raw) + case 354: //soil floor 3 (raw) + case 355: //soil floor 4 (raw) + case 356: //soil floor 1 wet (raw) [red sand?] + case 357: //soil floor 2 wet (raw) [red sand?] + case 358: //soil floor 3 wet (raw) [red sand?] + case 359: //soil floor 4 wet (raw) [red sand?] + + case 365: //river n + case 366: //river s + case 367: //river e + case 368: //river w + case 369: //river nw + case 370: //river ne + case 371: //river sw + case 372: //river se + + case 373: //stream wall n (below) + case 374: //stream wall s (below) + case 375: //stream wall e (below) + case 376: //stream wall w (below) + case 377: //stream wall nw (below) + case 378: //stream wall ne (below) + case 379: //stream wall sw (below) + case 380: //stream wall se (below) + + case 387: //dry grass floor1 + case 388: //dry grass floor2 + case 389: //dry grass floor3 + case 390: //dry grass floor4 + case 391: //dead tree + case 392: //dead sapling + case 393: //dead shrub + case 394: //dead grass floor1 + case 395: //dead grass floor2 + case 396: //dead grass floor3 + case 397: //dead grass floor4 + case 398: //grass floor1b + case 399: //grass floor2b + case 400: //grass floor3b + case 401: //grass floor4b + case 402: //stone boulder + case 403: //lavastone boulder + case 404: //featstone boulder + + case 405: //stone pebbles 1 + case 406: //stone pebbles 2 + case 407: //stone pebbles 3 + case 408: //stone pebbles 4 + + case 409: //lavastone pebbles 1 + case 410: //lavastone pebbles 2 + case 411: //lavastone pebbles 3 + case 412: //lavastone pebbles 4 + + case 413: //featstone pebbles 1 + case 414: //featstone pebbles 2 + case 415: //featstone pebbles 3 + case 416: //featstone pebbles 4 + + case 441: //minstone floor 1 (cavern raw) + case 442: //minstone floor 2 (cavern raw) + case 443: //minstone floor 3 (cavern raw) + case 444: //minstone floor 4 (cavern raw) + case 445: //minstone boulder + case 446: //minstone pebbles 1 + case 447: //minstone pebbles 2 + case 448: //minstone pebbles 3 + case 449: //minstone pebbles 4 + case 493: //constructed floor detailed + //case 495: //constructed pillar + case 517: //stair up constructed + //case 518: //ramp constructed + return true; + break; + } + + return false; +} + +bool DFHack::isRampTerrain(int in) +{ + switch (in) + { + case 233: //ramp grass dry + case 234: //ramp grass dead + case 235: //ramp grass1 [muddy?] + case 236: //ramp grass2 + case 237: //ramp stone + case 238: //ramp lavastone + case 239: //ramp featstone + case 240: //ramp minstone + case 241: //ramp soil + case 245: //ramp frozen liquid + case 518: //ramp constructed + return true; + break; + } + + return false; +} + +bool DFHack::isStairTerrain(int in) +{ + switch (in) + { + case 25: //up-down stair frozen liquid + case 26: //down stair frozen liquid + case 27: //up stair frozen liquid + + + case 36: //up-down stair lavastone + case 37: //down stair lavastone + case 38: //up stair lavastone + + case 39: //up-down stair soil + case 40: //down stair soil + case 41: //up stair soil + + case 49: //up-down stair grass1 [muddy?] + case 50: //down stair grass1 [muddy?] + case 51: //up stair grass1 [muddy?] + + + case 52: //up-down stair grass2 + case 53: //down stair grass2 + case 54: //up stair grass2 + + case 55: //up-down stair stone + case 56: //down stair stone + case 57: //up stair stone + + case 58: //up-down stair minstone + case 59: //down stair minstone + case 60: //up stair minstone + + case 61: //up-down stair featstone + case 62: //down stair featstone + case 63: //up stair featstone + + case 515: //stair up-down constructed + case 516: //stair down constructed + case 517: //stair up constructed + return true; + break; + } + + return false; +} +bool DFHack::isOpenTerrain(int in) +{ + switch (in) + { + case 1: // slope down + case 32: //open space + return true; + } + return false; +} +/* +bool isOpenTerrain(int in) +{ + switch (in) + { + //case -1: //uninitialized tile + case 1: //slope down + case 19: //driftwood stack + case 24: //tree + case 25: //up-down stair frozen liquid + case 26: //down stair frozen liquid + case 27: //up stair frozen liquid + case 32: //open space + case 34: //shrub + case 35: //chasm + case 36: //up-down stair lavastone + case 37: //down stair lavastone + case 38: //up stair lavastone + case 39: //up-down stair soil + case 40: //down stair soil + case 41: //up stair soil + case 42: //eerie pit + + case 43: //stone floor detailed + case 44: //lavastone floor detailed + case 45: //featstone? floor detailed + case 46: //minstone? floor detailed [calcite] + case 47: //frozen liquid floor detailed + + case 49: //up-down stair grass1 [muddy?] + case 50: //down stair grass1 [muddy?] + case 51: //up stair grass1 [muddy?] + case 52: //up-down stair grass2 + case 53: //down stair grass2 + case 54: //up stair grass2 + case 55: //up-down stair stone + case 56: //down stair stone + case 57: //up stair stone + case 58: //up-down stair minstone + case 59: //down stair minstone + case 60: //up stair minstone + case 61: //up-down stair featstone + case 62: //down stair featstone + case 63: //up stair featstone + case 67: //campfire + case 70: //fire + /* + case 79: //stone pillar + case 80: //lavastone pillar + case 81: //featstone pillar + case 82: //minstone pillar + case 83: //frozen liquid pillar + *//* + case 231: //sapling + case 233: //ramp grass dry + case 234: //ramp grass dead + case 235: //ramp grass1 [muddy?] + case 236: //ramp grass2 + case 237: //ramp stone + case 238: //ramp lavastone + case 239: //ramp featstone + case 240: //ramp minstone + case 241: //ramp soil + case 242: //ash1 + case 243: //ash2 + case 244: //ash3 + case 245: //ramp frozen liquid + case 261: //furrowed soil [road?] + case 262: //Ice floor + case 336: //stone floor 1 (raw stone) + case 337: //stone floor 2 (raw stone) + case 338: //stone floor 3 (raw stone) + case 339: //stone floor 4 (raw stone) + case 340: //lavastone floor 1 (raw stone) + case 341: //lavastone floor 2 (raw stone) + case 342: //lavastone floor 3 (raw stone) + case 343: //lavastone floor 4 (raw stone) + case 344: //featstone floor 1 (raw stone) + case 345: //featstone floor 2 (raw stone) + case 346: //featstone floor 3 (raw stone) + case 347: //featstone floor 4 (raw stone) + case 348: //grass floor 1 (raw) + case 349: //grass floor 2 (raw) + case 350: //grass floor 3 (raw) + case 351: //grass floor 4 (raw) + case 352: //soil floor 1 (raw) + case 353: //soil floor 2 (raw) + case 354: //soil floor 3 (raw) + case 355: //soil floor 4 (raw) + case 356: //soil floor 1 wet (raw) [red sand?] + case 357: //soil floor 2 wet (raw) [red sand?] + case 358: //soil floor 3 wet (raw) [red sand?] + case 359: //soil floor 4 wet (raw) [red sand?] + case 381: //stream top (above) + case 387: //dry grass floor1 + case 388: //dry grass floor2 + case 389: //dry grass floor3 + case 390: //dry grass floor4 + case 391: //dead tree + case 392: //dead sapling + case 393: //dead shrub + case 394: //dead grass floor1 + case 395: //dead grass floor2 + case 396: //dead grass floor3 + case 397: //dead grass floor4 + case 398: //grass floor1b + case 399: //grass floor2b + case 400: //grass floor3b + case 401: //grass floor4b + case 402: //stone boulder + case 403: //lavastone boulder + case 404: //featstone boulder + case 405: //stone pebbles 1 + case 406: //stone pebbles 2 + case 407: //stone pebbles 3 + case 408: //stone pebbles 4 + case 409: //lavastone pebbles 1 + case 410: //lavastone pebbles 2 + case 411: //lavastone pebbles 3 + case 412: //lavastone pebbles 4 + case 413: //featstone pebbles 1 + case 414: //featstone pebbles 2 + case 415: //featstone pebbles 3 + case 416: //featstone pebbles 4 + case 441: //minstone floor 1 (cavern raw) + case 442: //minstone floor 2 (cavern raw) + case 443: //minstone floor 3 (cavern raw) + case 444: //minstone floor 4 (cavern raw) + case 445: //minstone boulder + case 446: //minstone pebbles 1 + case 447: //minstone pebbles 2 + case 448: //minstone pebbles 3 + case 449: //minstone pebbles 4 + case 493: //constructed floor detailed + //case 495: //constructed pillar + case 515: //stair up-down constructed + case 516: //stair down constructed + case 517: //stair up constructed + case 518: //ramp constructed + + return true; + break; + } + + return false; +}*/ +/* +int picktexture(int in) +{ + switch ( in ) + { + case 1: //slope down + return 3; + + case 2: //murky pool + return 20; + + case 19: //driftwood stack + return 8; + + case 24: //tree + //return 3; + return 15; + + case 25: //up-down stair frozen liquid + case 26: //down stair frozen liquid + case 27: //up stair frozen liquid + return 25; + + case 32: //open space + return 5; + + case 34: //shrub + return 14; + + case 35: //chasm + return 31; + + case 36: //up-down stair lavastone + case 37: //down stair lavastone + case 38: //up stair lavastone + return 32; + + case 39: //up-down stair soil + case 40: //down stair soil + case 41: //up stair soil + return 10; + + case 42: //eerie pit + return 31; + + case 43: //stone floor detailed + return 7; + + case 44: //lavastone floor detailed + return 32; + + case 45: //featstone? floor detailed + return 18; + + case 46: //minstone? floor detailed [calcite] + return 9; + + case 47: //frozen liquid floor detailed + return 27; + + case 49: //up-down stair grass1 [muddy?] + case 50: //down stair grass1 [muddy?] + case 51: //up stair grass1 [muddy?] + return 0; + + case 52: //up-down stair grass2 + case 53: //down stair grass2 + case 54: //up stair grass2 + return 0; //16; + + case 55: //up-down stair stone + case 56: //down stair stone + case 57: //up stair stone + return 1; + + case 58: //up-down stair minstone + case 59: //down stair minstone + case 60: //up stair minstone + return 9; + + case 61: //up-down stair featstone + case 62: //down stair featstone + case 63: //up stair featstone + return 18; + + case 65: //stone fortification + return 22; + + case 67: //campfire + return 3; + + case 70: //fire + return 3; + + case 79: //stone pillar + return 1; + + case 80: //lavastone pillar + return 32; + + case 81: //featstone pillar + return 18; + + case 82: //minstone pillar + return 9; + + case 83: //frozen liquid pillar + return 27; + + case 89: //waterfall landing + return 20; + + case 90: //river source + return 20; + + case 176: //stone wall worn1 (most worn) + case 177: //stone wall worn2 (sorta worn) + case 178: //stone wall worn3 (least worn) + case 219: //stone wall (not worn) + return 1; + + case 231: //sapling + return 15; + + case 233: //ramp grass dry + return 33; + + case 234: //ramp grass dead + return 33; + + case 235: //ramp grass1 [muddy?] + return 0; + + case 236: //ramp grass2 + return 0; //16; + + case 237: //ramp stone + return 1; + + case 238: //ramp lavastone + return 32; + + case 239: //ramp featstone + return 18; + + case 240: //ramp minstone + return 9; + + case 241: //ramp soil + return 10; + + case 242: //ash1 + case 243: //ash2 + case 244: //ash3 + return 32; + + case 245: //ramp frozen liquid + return 27; + + case 258: //frozen liquid 1 + case 259: //frozen liquid 2 + case 260: //frozen liquid 3 + return 25; + + case 261: //furrowed soil [road?] + return 21; + + case 262: //frozen liquid 0 + return 25; + + case 264: //lava + return 24; + + case 265: //soil wall + return 10; + + case 269: //lavastone wall rd2 + case 270: //lavastone wall r2d + case 271: //lavastone wall r2u + case 272: //lavastone wall ru2 + case 273: //lavastone wall l2u + case 274: //lavastone wall lu2 + case 275: //lavastone wall l2d + case 276: //lavastone wall ld2 + case 277: //lavastone wall lrud + case 278: //lavastone wall rud + case 279: //lavastone wall lrd + case 280: //lavastone wall lru + case 281: //lavastone wall lud + case 282: //lavastone wall rd + case 283: //lavastone wall ru + case 284: //lavastone wall lu + case 285: //lavastone wall ld + case 286: //lavastone wall ud + case 287: //lavastone wall lr + return 32; + + case 288: //featstone wall rd2 + case 289: //featstone wall r2d + case 290: //featstone wall r2u + case 291: //featstone wall ru2 + case 292: //featstone wall l2u + case 293: //featstone wall lu2 + case 294: //featstone wall l2d + case 295: //featstone wall ld2 + case 296: //featstone wall lrud + case 297: //featstone wall rud + case 298: //featstone wall lrd + case 299: //featstone wall lru + case 300: //featstone wall lud + case 301: //featstone wall rd + case 382: //featstone wall ru + case 303: //featstone wall lu + case 304: //featstone wall ld + case 305: //featstone wall ud + case 306: //featstone wall lr + return 18; + + case 307: //stone wall rd2 + case 308: //stone wall r2d + case 309: //stone wall r2u + case 310: //stone wall ru2 + case 311: //stone wall l2u + case 312: //stone wall lu2 + case 313: //stone wall l2d + case 314: //stone wall ld2 + case 315: //stone wall lrud + case 316: //stone wall rud + case 317: //stone wall lrd + case 318: //stone wall lru + case 319: //stone wall lud + case 320: //stone wall rd + case 321: //stone wall ru + case 322: //stone wall lu + case 323: //stone wall ld + case 324: //stone wall ud + case 325: //stone wall lr + return 1; + + case 326: //lavastone fortification + return 32; + + case 327: //featstone fortification + return 18; + + case 328: //lavastone wall worn1 (most worn) + case 329: //lavastone wall worn2 (middle worn) + case 330: //lavastone wall worn3 (least worn) + case 331: //lavastone wall + return 32; + + case 332: //featstone wall worn1 (most worn) + case 333: //featstone wall worn2 (middle worn) + case 334: //featstone wall worn3 (least worn) + case 335: //featstone wall + return 18; + + case 336: //stone floor 1 (raw stone) + case 337: //stone floor 2 (raw stone) + case 338: //stone floor 3 (raw stone) + case 339: //stone floor 4 (raw stone) + return 17; + + case 340: //lavastone floor 1 (raw stone) + case 341: //lavastone floor 2 (raw stone) + case 342: //lavastone floor 3 (raw stone) + case 343: //lavastone floor 4 (raw stone) + return 32; + + case 344: //featstone floor 1 (raw stone) + case 345: //featstone floor 2 (raw stone) + case 346: //featstone floor 3 (raw stone) + case 347: //featstone floor 4 (raw stone) + return 18; + + case 348: //grass floor 1 (raw) + case 349: //grass floor 2 (raw) + case 350: //grass floor 3 (raw) + case 351: //grass floor 4 (raw) + return 0; + + case 352: //soil floor 1 (raw) + case 353: //soil floor 2 (raw) + case 354: //soil floor 3 (raw) + case 355: //soil floor 4 (raw) + return 10; + + case 356: //soil floor 1 wet (raw) [red sand?] + case 357: //soil floor 2 wet (raw) [red sand?] + case 358: //soil floor 3 wet (raw) [red sand?] + case 359: //soil floor 4 wet (raw) [red sand?] + return 10; + + case 360: //frozen liquid fortification + return 27; + + case 361: //frozen liquid wall worn1 (most worn) + case 362: //frozen liquid wall worn2 (middle worn) + case 363: //frozen liquid wall worn3 (least worn) + case 364: //frozen liquid wall + return 25; + + case 365: //river n + case 366: //river s + case 367: //river e + case 368: //river w + case 369: //river nw + case 370: //river ne + case 371: //river sw + case 372: //river se + return 19; + + case 373: //stream wall n (below) + case 374: //stream wall s (below) + case 375: //stream wall e (below) + case 376: //stream wall w (below) + case 377: //stream wall nw (below) + case 378: //stream wall ne (below) + case 379: //stream wall sw (below) + case 380: //stream wall se (below) + case 381: //stream top (above) + return 19; + + case 387: //dry grass floor1 + case 388: //dry grass floor2 + case 389: //dry grass floor3 + case 390: //dry grass floor4 + return 33; + + case 391: //dead tree + case 392: //dead sapling + case 393: //dead shrub + return 13; + + case 394: //dead grass floor1 + case 395: //dead grass floor2 + case 396: //dead grass floor3 + case 397: //dead grass floor4 + return 33; + + case 398: //grass floor1b + case 399: //grass floor2b + case 400: //grass floor3b + case 401: //grass floor4b + return 0; //16; + + case 402: //stone boulder + case 403: //lavastone boulder + case 404: //featstone boulder + return 18; + + case 405: //stone pebbles 1 + case 406: //stone pebbles 2 + case 407: //stone pebbles 3 + case 408: //stone pebbles 4 + return 12; + + case 409: //lavastone pebbles 1 + case 410: //lavastone pebbles 2 + case 411: //lavastone pebbles 3 + case 412: //lavastone pebbles 4 + return 12; + + case 413: //featstone pebbles 1 + case 414: //featstone pebbles 2 + case 415: //featstone pebbles 3 + case 416: //featstone pebbles 4 + return 12; + + case 417: //minstone wall rd2 + case 418: //minstone wall r2d + case 419: //minstone wall r2u + case 420: //minstone wall ru2 + case 421: //minstone wall l2u + case 422: //minstone wall lu2 + case 423: //minstone wall l2d + case 424: //minstone wall ld2 + case 425: //minstone wall lrud + case 426: //minstone wall rud + case 427: //minstone wall lrd + case 428: //minstone wall lru + case 429: //minstone wall lud + case 430: //minstone wall rd + case 431: //minstone wall ru + case 432: //minstone wall lu + case 433: //minstone wall ld + case 434: //minstone wall ud + case 435: //minstone wall lr + return 9; + + case 436: //minstone fortification + return 21; + + case 437: //minstone wall worn1 + case 438: //minstone wall worn2 + case 439: //minstone wall worn3 + case 440: //minstone wall worn4 + return 21; + + case 441: //minstone floor 1 (cavern raw) + case 442: //minstone floor 2 (cavern raw) + case 443: //minstone floor 3 (cavern raw) + case 444: //minstone floor 4 (cavern raw) + return 9; + + case 445: //minstone boulder + return 18; + + case 446: //minstone pebbles 1 + case 447: //minstone pebbles 2 + case 448: //minstone pebbles 3 + case 449: //minstone pebbles 4 + return 12; + + case 450: //frozen liquid wall rd2 + case 451: //frozen liquid wall r2d + case 452: //frozen liquid wall r2u + case 453: //frozen liquid wall ru2 + case 454: //frozen liquid wall l2u + case 455: //frozen liquid wall lu2 + case 456: //frozen liquid wall l2d + case 457: //frozen liquid wall ld2 + case 458: //frozen liquid wall lrud + case 459: //frozen liquid wall rud + case 460: //frozen liquid wall lrd + case 461: //frozen liquid wall lru + case 462: //frozen liquid wall lud + case 463: //frozen liquid wall rd + case 464: //frozen liquid wall ru + case 465: //frozen liquid wall lu + case 466: //frozen liquid wall ld + case 467: //frozen liquid wall ud + case 468: //frozen liquid wall lr + return 25; + + case 493: //constructed floor detailed + return 7; + + case 494: //constructed fortification + return 7; + + case 495: //constructed pillar + return 7; + + case 496: //constructed wall rd2 + case 497: //constructed wall r2d + case 498: //constructed wall r2u + case 499: //constructed wall ru2 + case 500: //constructed wall l2u + case 501: //constructed wall lu2 + case 502: //constructed wall l2d + case 503: //constructed wall ld2 + case 504: //constructed wall lrud + case 505: //constructed wall rud + case 506: //constructed wall lrd + case 507: //constructed wall lru + case 508: //constructed wall lud + case 509: //constructed wall rd + case 510: //constructed wall ru + case 511: //constructed wall lu + case 512: //constructed wall ld + case 513: //constructed wall ud + case 514: //constructed wall lr + return 22; + + case 515: //stair up-down constructed + case 516: //stair down constructed + case 517: //stair up constructed + return 4; + + case 518: //ramp constructed + return 4; + + case -1: //not assigned memory + return 6; + + default: //none of the above + return -1; + } + + return 6; +}*/ +int DFHack::getVegetationType(int in) +{ + switch(in) + { + case 391: //dead tree + return DFHack::TREE_DEAD; + case 392: //dead sapling + return DFHack::SAPLING_DEAD; + case 393: //dead shrub + return DFHack::SHRUB_DEAD; + case 24: //tree + return DFHack::TREE_OK; + case 231: //sapling + return DFHack::SAPLING_OK; + case 34: //shrub + return DFHack::SHRUB_OK; + } + // ???? + return -1; +}