+int load_dragon()
+{
+ ifstream infile;
+ char *buf;
+
+ infile.open(dragondata);
+
+ if (infile.fail())
+ {
+ infile.clear();
+ log ("Error opening %s. Trying initialdragon.dat", dragondata);
+ infile.open("data/initialdragon.dat");
+ if (infile.fail())
+ {
+ log ("Error opening data/initialdragon.dat");
+ return 0;
+ }
+ }
+
+ buf = new char[1024];
+
+ infile.getline(buf, 1024, '\n');
+ infile.close(); // Done with the file... we have what we want
+
+ dragon.name = strtok(buf, "~");
+ dragon.weapon = strtok(NULL, "~");
+ dragon.gold = 0;
+ dragon.exp = 0;
+ dragon.strength = stringtoint(strtok(NULL, "~"));
+ dragon.hp = stringtoint(strtok(NULL, "~"));
+ dragon.defense = stringtoint(strtok(NULL, "~"));
+ dragon.death = strtok(NULL, "");
+
+ log ("loaded dragon: %s", dragon.name.c_str());
+
+ delete []buf;
+
+return save_dragon(); // Save the dragon file and return the status code :)
+}
+
+int save_dragon()
+{
+ ofstream outfile;
+
+ outfile.open(dragondata);
+
+ if (outfile.fail())
+ {
+ log ("Error opening %s. Exiting.", dragondata);
+ return 0;
+ }
+
+ outfile << dragon.name.c_str() << '~' << dragon.weapon.c_str() << '~'
+ << dragon.strength << '~' << dragon.hp << '~'
+ << dragon.defense << '~' << dragon.death.c_str() << "\n^"
+ << endl;
+
+outfile.close();
+
+return 1;
+}
+