diff --git a/library/DFHackAPI.cpp b/library/DFHackAPI.cpp index ab0498b82..eae353c1b 100644 --- a/library/DFHackAPI.cpp +++ b/library/DFHackAPI.cpp @@ -876,7 +876,7 @@ void API::getItemIndexesInBox(vector &indexes, temp2 temp2; for(int i =0;ip_itm->at(i); - Mread(temp+sizeof(uint32_t),5 * sizeof(uint16_t), (uint8_t *) &temp2); + g_pProcess->read(temp+sizeof(uint32_t),5 * sizeof(uint16_t), (uint8_t *) &temp2); if(temp2.flags & (1 << 0)){ if (temp2.coords[0] >= x1 && temp2.coords[0] < x2) { @@ -947,7 +947,7 @@ bool API::ReadCreature (const int32_t &index, t_creature & furball) for(uint32_t i = 0;iread(temp2,sizeof(t_like),(uint8_t *) &furball.likes[i]); } g_pProcess->readDWord (temp + d->creature_happiness_offset, furball.happiness); @@ -1332,6 +1332,9 @@ bool API::ReadItemTypes(vector< vector< t_itemType > > & itemTypes) } return true; } + +// FIXME: Too dangerous. Contains hardcoded addresses and some arbitrary stuff +/* bool API::ReadAllMatgloss(vector< vector< string > > & all) { memory_info * minfo = d->offset_descriptor; @@ -1381,3 +1384,4 @@ bool API::ReadAllMatgloss(vector< vector< string > > & all) all.push_back(stringsForVec); return true; } +*/ diff --git a/library/DFHackAPI.h b/library/DFHackAPI.h index 02a446caf..be9b6b638 100644 --- a/library/DFHackAPI.h +++ b/library/DFHackAPI.h @@ -209,8 +209,10 @@ namespace DFHack memory_info getMemoryInfo(); Process * getProcess(); DFWindow * getWindow(); - - bool ReadAllMatgloss(vector< vector< string > > & all); + /* + // FIXME: BAD! + bool ReadAllMatgloss(vector< vector< string > > & all); + */ bool ReadItemTypes(vector< vector< t_itemType > > & itemTypes); }; } // namespace DFHack diff --git a/tools/creaturedump.cpp b/tools/creaturedump.cpp index 255c11fb9..8fab227cf 100644 --- a/tools/creaturedump.cpp +++ b/tools/creaturedump.cpp @@ -177,144 +177,150 @@ int main (void) uint32_t numCreatures = DF.InitReadCreatures(); for(uint32_t i = 0; i < numCreatures; i++) { - DF.Suspend(); DFHack::t_creature temp; DF.ReadCreature(i, temp); - DF.ForceResume(); - if(string(creaturestypes[temp.type].id) == "DWARF"){ - cout << "address: " << temp.origin << " creature type: " << creaturestypes[temp.type].id << ", position: " << temp.x << "x " << temp.y << "y "<< temp.z << "z" << endl; - bool addendl = false; - if(temp.first_name[0]) - { - cout << "first name: " << temp.first_name; - addendl = true; - } - if(temp.nick_name[0]) - { - cout << ", nick name: " << temp.nick_name; - addendl = true; - } - string transName = DF.TranslateName(temp.last_name,names,creaturestypes[temp.type].id); - if(!transName.empty()){ - cout << ", trans name: " << transName; - addendl=true; - } - //cout << ", generic name: " << DF.TranslateName(temp.last_name,names,"GENERIC"); - /* - if(!temp.trans_name.empty()){ - cout << ", trans name: " << temp.trans_name; - addendl =true; - } - if(!temp.generic_name.empty()){ - cout << ", generic name: " << temp.generic_name; - addendl=true; - } - */ - cout << ", likes: "; - for(uint32_t i = 0;i 0){ - cout << ", "; + cout << "happiness: " << temp.happiness << ", strength: " << temp.strength << ", agility: " + << temp.agility << ", toughness: " << temp.toughness << ", money: " << temp.money << ", id: " << temp.id; + if(temp.squad_leader_id != -1) + { + cout << ", squad_leader_id: " << temp.squad_leader_id; } - cout << temp.skills[i].name << ": " << temp.skills[i].rating; - } -*/ - /* - * FLAGS 1 - */ - cout << "flags1: "; - print_bits(temp.flags1.whole, cout); - cout << endl; - if(temp.flags1.bits.dead) - { - cout << "dead "; - } - if(temp.flags1.bits.on_ground) - { - cout << "on the ground, "; - } - if(temp.flags1.bits.skeleton) - { - cout << "skeletal "; - } - if(temp.flags1.bits.zombie) - { - cout << "zombie "; - } - if(temp.flags1.bits.tame) - { - cout << "tame "; - } - if(temp.flags1.bits.royal_guard) - { - cout << "royal_guard "; - } - if(temp.flags1.bits.fortress_guard) - { - cout << "fortress_guard "; - } + cout << ", sex: "; + if(temp.sex == 0) + { + cout << "Female"; + } + else + { + cout <<"Male"; + } + cout << endl; /* - * FLAGS 2 + //skills + for(unsigned int i = 0; i < temp.skills.size();i++){ + if(i > 0){ + cout << ", "; + } + cout << temp.skills[i].name << ": " << temp.skills[i].rating; + } */ - cout << endl << "flags2: "; - print_bits(temp.flags2.whole, cout); - cout << endl; - if(temp.flags2.bits.killed) - { - cout << "killed by kill function, "; - } - if(temp.flags2.bits.resident) - { - cout << "resident, "; - } - if(temp.flags2.bits.gutted) - { - cout << "gutted, "; - } - if(temp.flags2.bits.slaughter) - { - cout << "marked for slaughter, "; - } - if(temp.flags2.bits.underworld) - { - cout << "from the underworld, "; + /* + * FLAGS 1 + */ + cout << "flags1: "; + print_bits(temp.flags1.whole, cout); + cout << endl; + if(temp.flags1.bits.dead) + { + cout << "dead "; + } + if(temp.flags1.bits.on_ground) + { + cout << "on the ground, "; + } + if(temp.flags1.bits.skeleton) + { + cout << "skeletal "; + } + if(temp.flags1.bits.zombie) + { + cout << "zombie "; + } + if(temp.flags1.bits.tame) + { + cout << "tame "; + } + if(temp.flags1.bits.royal_guard) + { + cout << "royal_guard "; + } + if(temp.flags1.bits.fortress_guard) + { + cout << "fortress_guard "; + } + /* + * FLAGS 2 + */ + cout << endl << "flags2: "; + print_bits(temp.flags2.whole, cout); + cout << endl; + if(temp.flags2.bits.killed) + { + cout << "killed by kill function, "; + } + if(temp.flags2.bits.resident) + { + cout << "resident, "; + } + if(temp.flags2.bits.gutted) + { + cout << "gutted, "; + } + if(temp.flags2.bits.slaughter) + { + cout << "marked for slaughter, "; + } + if(temp.flags2.bits.underworld) + { + cout << "from the underworld, "; + } + cout << endl << endl; } - cout << endl << endl; - } - } + } DF.FinishReadCreatures(); DF.Detach(); #ifndef LINUX_BUILD