Преглед изворни кода

Each map now uses it's own text file. No more hardcoded character names: the character and party data it's now exchangeable between the engine core and the Lua scripts. Color in messages reimplementes. Base Lua scripts reformatted and documented. Deleted now unnecessary static text files.

Iñigo Valentin пре 3 година
родитељ
комит
87fbebb0de

+ 7 - 0
V-Gears-Installer/include/DataInstaller.h

@@ -118,6 +118,13 @@ class DataInstaller{
          */
          */
         void ExportMesh(const std::string outdir, const Ogre::MeshPtr &mesh);
         void ExportMesh(const std::string outdir, const Ogre::MeshPtr &mesh);
 
 
+        /**
+         * Converts a FFVII PC field to a V-Gears field.
+         *
+         * @param[in] field The field map to convert.
+         */
+        void PcFieldToVGearsField(VGears::FLevelFilePtr& field);
+
         /**
         /**
          * Initializer for {@see CollectionFieldSpawnAndScaleFactors}.
          * Initializer for {@see CollectionFieldSpawnAndScaleFactors}.
          *
          *

+ 36 - 58
V-Gears-Installer/src/DataInstaller.cpp

@@ -603,32 +603,7 @@ static float FieldScaleFactor(
     return it->second;
     return it->second;
 }
 }
 
 
-/**
- * Converts a FFVII PC field to a V-Gears field.
- *
- * @param[in] field_text_writter The field text writer.
- * @param[in] field The field map.
- * @param[in] out_dir The path to the directory where to save the map file.
- * @param[in] field_id_to_name_lookup Lookup table used to relate map IDs and
- * names
- * @param[in] spawn_map List of spawn points.
- * @param[in] scale_factor_map List of scale factors.
- * @param[in] model_animation_db Database of model animations.
- * @param[out] maps The list of maps. The converted one will be added at the
- * end.
- * @param[in] write_output_line_ Functon to print output to console.
- */
-static void FF7PcFieldToVGearsField(
-  FieldTextWriter& field_text_writter,
-  VGears::FLevelFilePtr& field,
-  const std::string& out_dir,
-  const std::vector<std::string>& field_id_to_name_lookup,
-  FieldSpawnPointsMap& spawn_map,
-  const FieldScaleFactorMap& scale_factor_map,
-  ModelsAndAnimationsDb& model_animation_db,
-  MapCollection& maps,
-  std::function<void(std::string)> write_output_line_
-){
+void DataInstaller::PcFieldToVGearsField(VGears::FLevelFilePtr& field){
     // Generate triggers script to insert into main
     // Generate triggers script to insert into main
     // decompiled FF7 field -> LUA script.
     // decompiled FF7 field -> LUA script.
     std::string gateway_script_data;
     std::string gateway_script_data;
@@ -640,14 +615,14 @@ static void FF7PcFieldToVGearsField(
             const std::string gateway_entity_name = "Gateway" + std::to_string(i);
             const std::string gateway_entity_name = "Gateway" + std::to_string(i);
             gateway_script_data += CreateGateWayScript(
             gateway_script_data += CreateGateWayScript(
               gateway_entity_name,
               gateway_entity_name,
-              FieldName(field_id_to_name_lookup.at(gateway.destination_field_id)),
+              FieldName(map_list_.at(gateway.destination_field_id)),
               "Spawn_" + field->getName() + "_" + std::to_string(i)
               "Spawn_" + field->getName() + "_" + std::to_string(i)
             );
             );
         }
         }
     }
     }
     const VGears::ModelListFilePtr& models = field->GetModelList();
     const VGears::ModelListFilePtr& models = field->GetModelList();
     FieldDecompiler::DecompiledScript decompiled;
     FieldDecompiler::DecompiledScript decompiled;
-    FF7FieldScriptFormatter formatter(field->getName(), models, field_id_to_name_lookup, spawn_map);
+    FF7FieldScriptFormatter formatter(field->getName(), models, map_list_, spawn_points_);
     try{
     try{
         // Get the raw script bytes.
         // Get the raw script bytes.
         const std::vector<u8> raw_field_data = field->GetRawScript();
         const std::vector<u8> raw_field_data = field->GetRawScript();
@@ -657,11 +632,12 @@ static void FF7PcFieldToVGearsField(
           "EntityContainer = {}\n\n"
           "EntityContainer = {}\n\n"
         );
         );
         std::ofstream script_file(
         std::ofstream script_file(
-          out_dir + "/" + FieldMapDir() + "/" + field->getName() + "/script.lua"
+          output_dir_ + "/" + FieldMapDir() + "/" + field->getName() + "/script.lua"
         );
         );
         if (script_file.is_open()){
         if (script_file.is_open()){
             script_file << decompiled.luaScript;
             script_file << decompiled.luaScript;
-            try{field_text_writter.Write(raw_field_data, field->getName());}
+            field_text_writer_.Begin(output_dir_ + "/" + FieldMapDir() + "/" + field->getName() + "/text.xml");
+            try{field_text_writer_.Write(raw_field_data, field->getName());}
             catch (const std::out_of_range& ex){
             catch (const std::out_of_range& ex){
                 write_output_line_(
                 write_output_line_(
                   "[ERROR] Failed to read texts from field " + field->getName() + ": " + ex.what()
                   "[ERROR] Failed to read texts from field " + field->getName() + ": " + ex.what()
@@ -669,6 +645,7 @@ static void FF7PcFieldToVGearsField(
                 std::cerr << "[ERROR] Failed to read texts from field "
                 std::cerr << "[ERROR] Failed to read texts from field "
                   << field->getName() << ": " << ex.what() << std::endl;
                   << field->getName() << ": " << ex.what() << std::endl;
             }
             }
+            field_text_writer_.End();
         }
         }
         else{
         else{
             write_output_line_(
             write_output_line_(
@@ -701,6 +678,12 @@ static void FF7PcFieldToVGearsField(
           "file_name", FieldMapDir() + "/" + field->getName() + "/bg.xml"
           "file_name", FieldMapDir() + "/" + field->getName() + "/bg.xml"
         );
         );
         element->LinkEndChild(xml_background_2d.release());
         element->LinkEndChild(xml_background_2d.release());
+        // Texts.
+        std::unique_ptr<TiXmlElement> xml_texts(new TiXmlElement("texts"));
+        xml_texts->SetAttribute(
+          "file_name", FieldMapDir() + "/" + field->getName() + "/text.xml"
+        );
+        element->LinkEndChild(xml_texts.release());
         // Walkmesh.
         // Walkmesh.
         std::unique_ptr<TiXmlElement> xml_walkmesh(new TiXmlElement("walkmesh"));
         std::unique_ptr<TiXmlElement> xml_walkmesh(new TiXmlElement("walkmesh"));
         xml_walkmesh->SetAttribute(
         xml_walkmesh->SetAttribute(
@@ -714,14 +697,14 @@ static void FF7PcFieldToVGearsField(
         );
         );
         element->LinkEndChild(xml_forward_direction.release());
         element->LinkEndChild(xml_forward_direction.release());
         // Get this fields Id.
         // Get this fields Id.
-        const size_t this_field_id = FieldId(field->getName(), field_id_to_name_lookup);
+        const size_t this_field_id = FieldId(field->getName(), map_list_);
         // Use the ID to find the pre-computed list of gateways in all other fields that link to
         // Use the ID to find the pre-computed list of gateways in all other fields that link to
         // this field.
         // this field.
-        auto spawn_iterator = spawn_map.find(this_field_id);
+        auto spawn_iterator = spawn_points_.find(this_field_id);
         Ogre::Vector3 first_entity_point = Ogre::Vector3::ZERO;
         Ogre::Vector3 first_entity_point = Ogre::Vector3::ZERO;
 
 
         // If none found it probably just means no other fields have doors to this one.
         // If none found it probably just means no other fields have doors to this one.
-        if (spawn_iterator != std::end(spawn_map)){
+        if (spawn_iterator != std::end(spawn_points_)){
             const std::vector<SpawnPointDb::Record>& spawn_point_records
             const std::vector<SpawnPointDb::Record>& spawn_point_records
               = spawn_iterator->second.gateways_to_this_field;
               = spawn_iterator->second.gateways_to_this_field;
             for (size_t i = 0; i < spawn_point_records.size(); i ++){
             for (size_t i = 0; i < spawn_point_records.size(); i ++){
@@ -732,7 +715,7 @@ static void FF7PcFieldToVGearsField(
                     // Spawn points from map jumps have a another algorithm.
                     // Spawn points from map jumps have a another algorithm.
                     xml_entity_point->SetAttribute(
                     xml_entity_point->SetAttribute(
                       "name",
                       "name",
-                      field_id_to_name_lookup.at(
+                      map_list_.at(
                         spawn_point_records[i].field_id) + "_" + spawn_point_records[i].entity_name
                         spawn_point_records[i].field_id) + "_" + spawn_point_records[i].entity_name
                         + "_" + spawn_point_records[i].script_function_name + "_addr_"
                         + "_" + spawn_point_records[i].script_function_name + "_addr_"
                         + std::to_string(spawn_point_records[i].gateway_index_or_map_jump_address)
                         + std::to_string(spawn_point_records[i].gateway_index_or_map_jump_address)
@@ -743,14 +726,12 @@ static void FF7PcFieldToVGearsField(
                     // fields have more than one door linking to each other.
                     // fields have more than one door linking to each other.
                     xml_entity_point->SetAttribute(
                     xml_entity_point->SetAttribute(
                       "name",
                       "name",
-                      "Spawn_"
-                        + field_id_to_name_lookup.at(spawn_point_records[i].field_id)
-                        + "_"
+                      "Spawn_" + map_list_.at(spawn_point_records[i].field_id) + "_"
                         + std::to_string(spawn_point_records[i].gateway_index_or_map_jump_address)
                         + std::to_string(spawn_point_records[i].gateway_index_or_map_jump_address)
                     );
                     );
                 }
                 }
                 const float downscaler_next = 128.0f * FieldScaleFactor(
                 const float downscaler_next = 128.0f * FieldScaleFactor(
-                  scale_factor_map, gateway.destination_field_id
+                  scale_factors_, gateway.destination_field_id
                 );
                 );
 
 
                 // Position Z is actually the target walkmesh triangle ID, so this is tiny bit more
                 // Position Z is actually the target walkmesh triangle ID, so this is tiny bit more
@@ -814,17 +795,18 @@ static void FF7PcFieldToVGearsField(
         for (FieldDecompiler::FieldEntity entity : decompiled.entities){
         for (FieldDecompiler::FieldEntity entity : decompiled.entities){
             // If the entity has been added as a line, skip.
             // If the entity has been added as a line, skip.
             if (line_entities.size() > 0){
             if (line_entities.size() > 0){
-                if (*std::find(line_entities.begin(), line_entities.end(), entity.name) == entity.name) {
+                if (
+                  *std::find(line_entities.begin(), line_entities.end(), entity.name) == entity.name
+                ){
                     continue;
                     continue;
                 }
                 }
             }
             }
             const int char_id = entity.char_id;
             const int char_id = entity.char_id;
             if (char_id != -1){
             if (char_id != -1){
-                const VGears::ModelListFile::ModelDescription& desc
-                  = models->GetModels().at(char_id);
-                auto& animations = model_animation_db.ModelAnimations(desc.hrc_name);
+                const VGears::ModelListFile::ModelDescription& desc = models->GetModels().at(char_id);
+                auto& animations = used_models_and_anims_.ModelAnimations(desc.hrc_name);
                 for (const auto& anim : desc.animations)
                 for (const auto& anim : desc.animations)
-                    animations.insert(model_animation_db.NormalizeAnimationName(anim.name));
+                    animations.insert(used_models_and_anims_.NormalizeAnimationName(anim.name));
                 std::unique_ptr<TiXmlElement> xml_entity_script(new TiXmlElement("entity_model"));
                 std::unique_ptr<TiXmlElement> xml_entity_script(new TiXmlElement("entity_model"));
                 xml_entity_script->SetAttribute("name", entity.name);
                 xml_entity_script->SetAttribute("name", entity.name);
                 // TODO: Add to list of HRC's to convert, obtain name of converted .mesh file.
                 // TODO: Add to list of HRC's to convert, obtain name of converted .mesh file.
@@ -832,7 +814,7 @@ static void FF7PcFieldToVGearsField(
                 VGears::StringUtil::toLowerCase(lower_case_hrc_name);
                 VGears::StringUtil::toLowerCase(lower_case_hrc_name);
                 xml_entity_script->SetAttribute(
                 xml_entity_script->SetAttribute(
                   "file_name",
                   "file_name",
-                  FieldModelDir() + "/" + model_animation_db.ModelMetaDataName(lower_case_hrc_name)
+                  FieldModelDir() + "/" + used_models_and_anims_.ModelMetaDataName(lower_case_hrc_name)
                 );
                 );
                 xml_entity_script->SetAttribute("index", entity.index);
                 xml_entity_script->SetAttribute("index", entity.index);
                 if (desc.type == VGears::ModelListFile::PLAYER){
                 if (desc.type == VGears::ModelListFile::PLAYER){
@@ -863,7 +845,7 @@ static void FF7PcFieldToVGearsField(
                 element->LinkEndChild(xml_entity_script.release());
                 element->LinkEndChild(xml_entity_script.release());
             }
             }
         }
         }
-        const float downscaler_this = 128.0f * FieldScaleFactor(scale_factor_map, this_field_id);
+        const float downscaler_this = 128.0f * FieldScaleFactor(scale_factors_, this_field_id);
         for (size_t i = 0; i < gateways.size(); i ++){
         for (size_t i = 0; i < gateways.size(); i ++){
             const VGears::TriggersFile::Gateway& gateway = gateways[i];
             const VGears::TriggersFile::Gateway& gateway = gateways[i];
             // If non-inactive gateway:
             // If non-inactive gateway:
@@ -896,12 +878,12 @@ static void FF7PcFieldToVGearsField(
             }
             }
         }
         }
         doc.LinkEndChild(element.release());
         doc.LinkEndChild(element.release());
-        doc.SaveFile(out_dir + "/" + FieldMapDir() + "/" + field->getName() + "/map.xml");
+        doc.SaveFile(output_dir_ + "/" + FieldMapDir() + "/" + field->getName() + "/map.xml");
         const VGears::PaletteFilePtr& pal = field->GetPalette();
         const VGears::PaletteFilePtr& pal = field->GetPalette();
         const VGears::BackgroundFilePtr& bg = field->GetBackground();
         const VGears::BackgroundFilePtr& bg = field->GetBackground();
         std::unique_ptr<Ogre::Image> bg_image(bg->CreateImage(pal));
         std::unique_ptr<Ogre::Image> bg_image(bg->CreateImage(pal));
         bg_image->encode("png");
         bg_image->encode("png");
-        bg_image->save(out_dir + "/" + FieldMapDir() + "/" + field->getName() + "/tiles.png");
+        bg_image->save(output_dir_ + "/" + FieldMapDir() + "/" + field->getName() + "/tiles.png");
         {
         {
             TiXmlDocument bg_doc;
             TiXmlDocument bg_doc;
             std::unique_ptr<TiXmlElement> bg_element(new TiXmlElement("background2d"));
             std::unique_ptr<TiXmlElement> bg_element(new TiXmlElement("background2d"));
@@ -914,7 +896,7 @@ static void FF7PcFieldToVGearsField(
             const int height = bg_image->getHeight();
             const int height = bg_image->getHeight();
             const VGears::CameraMatrixFilePtr& camera_matrix = field->GetCameraMatrix();
             const VGears::CameraMatrixFilePtr& camera_matrix = field->GetCameraMatrix();
             const Ogre::Vector3 position
             const Ogre::Vector3 position
-              = camera_matrix->GetPosition() / FieldScaleFactor(scale_factor_map, this_field_id);
+              = camera_matrix->GetPosition() / FieldScaleFactor(scale_factors_, this_field_id);
             const Ogre::Quaternion orientation = camera_matrix->GetOrientation();
             const Ogre::Quaternion orientation = camera_matrix->GetOrientation();
             const Ogre::Degree fov
             const Ogre::Degree fov
               = camera_matrix->GetFov(static_cast<float>(BG_PSX_SCREEN_HEIGHT));
               = camera_matrix->GetFov(static_cast<float>(BG_PSX_SCREEN_HEIGHT));
@@ -988,7 +970,7 @@ static void FF7PcFieldToVGearsField(
                 //}
                 //}
             }
             }
             bg_doc.LinkEndChild(bg_element.release());
             bg_doc.LinkEndChild(bg_element.release());
-            bg_doc.SaveFile(out_dir + "/" + FieldMapDir() + "/" + field->getName() + "/bg.xml");
+            bg_doc.SaveFile(output_dir_ + "/" + FieldMapDir() + "/" + field->getName() + "/bg.xml");
         }
         }
     }
     }
     {
     {
@@ -1007,9 +989,9 @@ static void FF7PcFieldToVGearsField(
             wmesh_element->LinkEndChild(xml_element.release());
             wmesh_element->LinkEndChild(xml_element.release());
         }
         }
         doc.LinkEndChild(wmesh_element.release());
         doc.LinkEndChild(wmesh_element.release());
-        doc.SaveFile(out_dir + "/" + FieldMapDir() + "/" + field->getName() + "/wm.xml");
+        doc.SaveFile(output_dir_ + "/" + FieldMapDir() + "/" + field->getName() + "/wm.xml");
     }
     }
-    maps.insert(field->getName());
+    converted_map_list_.insert(field->getName());
 }
 }
 
 
 /**
 /**
@@ -1305,7 +1287,7 @@ void DataInstaller::CollectionFieldSpawnAndScaleFactors(){
         field_.reset();
         field_.reset();
         iterator_counter_ = 0;
         iterator_counter_ = 0;
         installation_state_ = CONVERT_FIELDS;
         installation_state_ = CONVERT_FIELDS;
-        field_text_writer_.Begin(output_dir_ + "/texts/english/dialogs_mission1.xml");
+        //field_text_writer_.Begin(output_dir_ + "/texts/english/dialogs_mission1.xml");
     }
     }
 }
 }
 
 
@@ -1322,14 +1304,10 @@ void DataInstaller::ConvertFieldsIteration(){
                 //write_output_line_("Converting field " + resource_name);
                 //write_output_line_("Converting field " + resource_name);
                 std::cout << " - Converting field: " << resource_name << std::endl;
                 std::cout << " - Converting field: " << resource_name << std::endl;
                 CreateDir(FieldMapDir() + "/" + resource_name);
                 CreateDir(FieldMapDir() + "/" + resource_name);
-                VGears::FLevelFilePtr field
-                  = VGears::LZSFLevelFileManager::GetSingleton().load(
+                VGears::FLevelFilePtr field = VGears::LZSFLevelFileManager::GetSingleton().load(
                     resource_name, "FFVIIFields"
                     resource_name, "FFVIIFields"
                   ).staticCast<VGears::FLevelFile>();
                   ).staticCast<VGears::FLevelFile>();
-                FF7PcFieldToVGearsField(
-                  field_text_writer_, field, output_dir_, map_list_, spawn_points_, scale_factors_,
-                  used_models_and_anims_, converted_map_list_, write_output_line_
-                );
+                PcFieldToVGearsField(field);
             }
             }
             else{
             else{
                 /*write_output_line_(
                 /*write_output_line_(

+ 45 - 18
V-Gears-Installer/src/FieldTextWriter.cpp

@@ -80,6 +80,9 @@ void FieldTextWriter::Write(
           "<dialog name=\"" + field_name + "_" + std::to_string(i) + "\">"
           "<dialog name=\"" + field_name + "_" + std::to_string(i) + "\">"
         );
         );
         tag_open_ = true;
         tag_open_ = true;
+        // Some maps have unclosed color tags.
+        // Use this counter to close them at the end.
+        int colour_opened = 0;
         for (unsigned char temp = 0x00;; ++ offset){
         for (unsigned char temp = 0x00;; ++ offset){
             temp = GetU8(offset);
             temp = GetU8(offset);
             if (temp == 0xFF) break;
             if (temp == 0xFF) break;
@@ -111,11 +114,11 @@ void FieldTextWriter::Write(
             }
             }
             else if (temp == 0xEA){
             else if (temp == 0xEA){
                 AddText(dialog);
                 AddText(dialog);
-                logger_->Log("<include name=\"char_cloud\" />");
+                logger_->Log("<character id=\"0\" />");
             }
             }
             else if (temp == 0xEB){
             else if (temp == 0xEB){
                 AddText(dialog);
                 AddText(dialog);
-                logger_->Log("<include name=\"char_barret\" />");
+                logger_->Log("<character id=\"1\" />");
             }
             }
             else if (temp == 0xEC){
             else if (temp == 0xEC){
                 AddText(dialog);
                 AddText(dialog);
@@ -147,15 +150,15 @@ void FieldTextWriter::Write(
             }
             }
             else if (temp == 0xF3){
             else if (temp == 0xF3){
                 AddText(dialog);
                 AddText(dialog);
-                logger_->Log("<character party_id=\"0\" />");
+                logger_->Log("<party pos=\"0\" />");
             }
             }
             else if (temp == 0xF4){
             else if (temp == 0xF4){
                 AddText(dialog);
                 AddText(dialog);
-                logger_->Log("<character party_id=\"1\" />");
+                logger_->Log("<party pos=\"1\" />");
             }
             }
             else if (temp == 0xF5){
             else if (temp == 0xF5){
                 AddText(dialog);
                 AddText(dialog);
-                logger_->Log("<character party_id=\"2\" />");
+                logger_->Log("<party pos=\"2\" />");
             }
             }
             else if (temp == 0xF6){
             else if (temp == 0xF6){
                 AddText(dialog);
                 AddText(dialog);
@@ -226,33 +229,55 @@ void FieldTextWriter::Write(
                 // TODO: Maybe value must be RGB?
                 // TODO: Maybe value must be RGB?
                 // TODO: anfrst map fails to terminate a colour breaking all of
                 // TODO: anfrst map fails to terminate a colour breaking all of
                 // the XML, so colours turned off for now.
                 // the XML, so colours turned off for now.
-                if (temp2 == 0xD4){
+                if (temp2 == 0xD2){ // Gray.
                     AddText(dialog);
                     AddText(dialog);
-                   // logger_->Log("<colour value=\"red\">");
+                    logger_->Log("<colour value=\"0.6 0.6 0.6\">");
+                    colour_opened ++;
                 }
                 }
-                else if (temp2 == 0xD5){
+                else if (temp2 == 0xD3){ // Blue.
                     AddText(dialog);
                     AddText(dialog);
-                   // logger_->Log("<colour value=\"purple\" >");
+                    logger_->Log("<colour value=\"0.0 0.0 1.0\">");
+                    colour_opened ++;
                 }
                 }
-                else if (temp2 == 0xD6){
+                else if (temp2 == 0xD4){ // Red.
                     AddText(dialog);
                     AddText(dialog);
-                    //logger_->Log("<colour value=\"green\" >");
+                    logger_->Log("<colour value=\"1.0 0.0 0.0\">");
+                    colour_opened ++;
                 }
                 }
-                else if (temp2 == 0xD7){
+                else if (temp2 == 0xD5){ // Purple
                     AddText(dialog);
                     AddText(dialog);
-                   // logger_->Log("<colour value=\"cyan\" >");
+                    logger_->Log("<colour value=\"1.0 0.2 0.8\" >");
+                    colour_opened ++;
                 }
                 }
-                else if (temp2 == 0xD8){
+                else if (temp2 == 0xD6){ // Green.
                     AddText(dialog);
                     AddText(dialog);
-                   // logger_->Log("<colour value=\"yellow\">");
+                    logger_->Log("<colour value=\"0.0 1.0 0.0\" >");
+                    colour_opened ++;
                 }
                 }
-                else if (temp2 == 0xD9){
+                else if (temp2 == 0xD7){ // Cyan.
                     AddText(dialog);
                     AddText(dialog);
-                   // logger_->Log("</colour>");
+                    logger_->Log("<colour value=\"0.0 1.0 0.8\" >");
+                    colour_opened ++;
+                }
+                else if (temp2 == 0xD8){ // Yellow
+                    AddText(dialog);
+                    logger_->Log("<colour value=\"1.0 1.0 0.4\">");
+                    colour_opened ++;
+                }
+                else if (temp2 == 0xD9){ // White, or back to normal.
+                    AddText(dialog);
+                    logger_->Log("</colour>");
+                    colour_opened --;
+                }
+                else if (temp2 == 0xDA){ // Flash (blink), global for a window.
+                    // TODO: Implement
+                }
+                else if (temp2 == 0xDB){ // Rainbow, global for a window.
+                    // TODO: Implement
                 }
                 }
                 else if (temp2 == 0xDC){
                 else if (temp2 == 0xDC){
                     AddText(dialog);
                     AddText(dialog);
-                   // logger_->Log("<pause_ok >");
+                    logger_->Log("<pause_ok >");
                 }
                 }
                 else if (temp2 == 0xDD){
                 else if (temp2 == 0xDD){
                     u16 wait = GetU16LE(offset + 1);
                     u16 wait = GetU16LE(offset + 1);
@@ -286,6 +311,8 @@ void FieldTextWriter::Write(
                 }
                 }
             }
             }
         }
         }
+        // Close unclosed color tags;
+        for (; colour_opened > 0; colour_opened --) logger_->Log("</colour>");
         AddText(dialog);
         AddText(dialog);
         logger_->Log("</dialog>\n\n");
         logger_->Log("</dialog>\n\n");
         tag_open_ = false;
         tag_open_ = false;

+ 12 - 0
V-Gears/include/core/ScriptManagerBinds.h

@@ -24,6 +24,7 @@
 #include "XmlMapFile.h"
 #include "XmlMapFile.h"
 #include "XmlMapsFile.h"
 #include "XmlMapsFile.h"
 #include "DialogsManager.h"
 #include "DialogsManager.h"
+#include "TextManager.h"
 #include "modules/worldmap/WorldMapModule.h"
 #include "modules/worldmap/WorldMapModule.h"
 
 
 /**
 /**
@@ -297,6 +298,16 @@ void ScriptManager::InitBinds(){
           .def("is_locked", (bool(Walkmesh ::*)(unsigned int)) &Walkmesh ::IsLocked)
           .def("is_locked", (bool(Walkmesh ::*)(unsigned int)) &Walkmesh ::IsLocked)
     ];
     ];
 
 
+    // Text manager commands
+    luabind::module(lua_state_)[
+        luabind::class_<TextManager>("TextManager")
+          .def(
+            "set_character_name",
+            (void(TextManager ::*)(unsigned int, const char*)) &TextManager::SetCharacterName
+          )
+          .def("set_party", (void(TextManager ::*)(int, int, int)) &TextManager::SetParty)
+    ];
+
     // Dialog commands
     // Dialog commands
     luabind::module(lua_state_)[
     luabind::module(lua_state_)[
         luabind::class_<DialogsManager>("Dialog")
         luabind::class_<DialogsManager>("Dialog")
@@ -437,6 +448,7 @@ void ScriptManager::InitBinds(){
       = boost::ref(*(EntityManager::getSingletonPtr()->GetBackground2D()));
       = boost::ref(*(EntityManager::getSingletonPtr()->GetBackground2D()));
     luabind::globals(lua_state_)["walkmesh"]
     luabind::globals(lua_state_)["walkmesh"]
       = boost::ref(*(EntityManager::getSingletonPtr()->GetWalkmesh()));
       = boost::ref(*(EntityManager::getSingletonPtr()->GetWalkmesh()));
+    luabind::globals(lua_state_)["text_manager"] = boost::ref(*(TextManager::getSingletonPtr()));
     luabind::globals(lua_state_)["dialog"] = boost::ref(*(DialogsManager::getSingletonPtr()));
     luabind::globals(lua_state_)["dialog"] = boost::ref(*(DialogsManager::getSingletonPtr()));
     luabind::globals(lua_state_)["ui_manager"] = boost::ref(*(UiManager::getSingletonPtr()));
     luabind::globals(lua_state_)["ui_manager"] = boost::ref(*(UiManager::getSingletonPtr()));
     luabind::globals(lua_state_)["world_map_module"]
     luabind::globals(lua_state_)["world_map_module"]

+ 68 - 11
V-Gears/include/core/TextManager.h

@@ -41,11 +41,18 @@ class TextManager : public Ogre::Singleton<TextManager>{
          */
          */
         void InitCmd();
         void InitCmd();
 
 
+        /**
+         * Loads texts for a specific field.
+         *
+         * @param[in] field_name Name of the field.
+         */
+        void LoadFieldText(const std::string field_name);
+
         /**
         /**
          * Sets the language for texts.
          * Sets the language for texts.
          *
          *
-         * @param[in] language Language identifier. Must be the name of one of
-         * the folders in the data/text/.
+         * @param[in] language Language identifier. Must be the name of one of the folders in the
+         * data/text/.
          */
          */
         void SetLanguage(const Ogre::String& language);
         void SetLanguage(const Ogre::String& language);
 
 
@@ -73,8 +80,7 @@ class TextManager : public Ogre::Singleton<TextManager>{
          * @param[in] height Text height.
          * @param[in] height Text height.
          */
          */
         void AddDialog(
         void AddDialog(
-          const Ogre::String& name, TiXmlNode* node,
-          const float width, const float height
+          const Ogre::String& name, TiXmlNode* node, const float width, const float height
         );
         );
 
 
         /**
         /**
@@ -89,21 +95,55 @@ class TextManager : public Ogre::Singleton<TextManager>{
          * Retrieves a dialog and it's dimensions by name.
          * Retrieves a dialog and it's dimensions by name.
          *
          *
          * @param[in] name Text name or identifier.
          * @param[in] name Text name or identifier.
-         * @param[out] width The text width will be saved here. It won't change
-         * if the dialog is not found.
-         * @param[out] height The text height will be saved here. It won't
-         * change if the dialog is not found.
+         * @param[out] width The text width will be saved here. It won't change if the dialog is
+         * not found.
+         * @param[out] height The text height will be saved here. It won't change if the dialog is
+         * not found.
          * @return Text node in an XML file, or NULL if there is none.
          * @return Text node in an XML file, or NULL if there is none.
          */
          */
-        TiXmlNode* GetDialog(
-          const Ogre::String& name, float &width, float& height
-        ) const;
+        TiXmlNode* GetDialog(const Ogre::String& name, float &width, float& height) const;
 
 
         /**
         /**
          * Deletes all texts in the manager.
          * Deletes all texts in the manager.
          */
          */
         void UnloadTexts();
         void UnloadTexts();
 
 
+        /**
+         * Retrieves a character name from it's ID.
+         *
+         * @param[in] id ID of the character.
+         * @return The name of the character. If the character doesn't exist, "UNKNOWN_CHAR_" + id
+         * will be returned.
+         */
+        std::string GetCharacterName(int id);
+
+        /**
+         * Retrieves a character name from it's party position.
+         *
+         * @param[in] position Position in the party[1-3].
+         * @return The name of the character in the party specified position. If an invalid
+         * position is supplied, "UNKNOWN_PARTY_POS_" + id will be returned. If the position is
+         * correct, but there is no  character on it, an empty string will be returned.
+         */
+        std::string GetPartyCharacterName(int position);
+
+        /**
+         * Sets a character name.
+         *
+         * @param[in] id Character ID.
+         * @param[in] name Character name.
+         */
+        void SetCharacterName(int id, char* name);
+
+        /**
+         * Sets the party member IDs.
+         *
+         * @param[in] char_1 First member id.
+         * @param[in] char_2 Second member id. -1 if not set.
+         * @param[in] char_3 Third member id. -1 if not set.
+         */
+        void SetParty(int char_1, int char_2, int char_3);
+
     private:
     private:
 
 
         /**
         /**
@@ -162,5 +202,22 @@ class TextManager : public Ogre::Singleton<TextManager>{
          * The list of dialogs in the manager.
          * The list of dialogs in the manager.
          */
          */
         std::vector<Dialog> dialogs_;
         std::vector<Dialog> dialogs_;
+
+        /**
+         * Character names, indexed by character IDs.
+         *
+         * Sometimes, character names must appear in texts. This must be refreshed on engine start
+         * and when a character name changes.
+         */
+        std::string character_names_[11];
+
+        /**
+         * Current party formation.
+         *
+         * Sometimes, the name of a character in the party must appear in texts. This holds the
+         * current party member IDs (or -1 if the party is not full). It must be refreshed every
+         * time the party changes.
+         */
+        int current_party_[3];
 };
 };
 
 

+ 59 - 20
V-Gears/include/core/UiTextArea.h

@@ -67,8 +67,9 @@ enum TextState{
     TS_NEXT_PAGE,
     TS_NEXT_PAGE,
 };
 };
 
 
-
-
+/**
+ * A character in a text.
+ */
 struct TextChar{
 struct TextChar{
     TextChar():
     TextChar():
       char_code(0),
       char_code(0),
@@ -83,23 +84,72 @@ struct TextChar{
       sprite_y(0)
       sprite_y(0)
     {}
     {}
 
 
+    /**
+     * The character code.
+     *
+     * Normal character code, no FF7 code tables.
+     */
     int char_code;
     int char_code;
+
+    /**
+     * Color for the character.
+     */
     Ogre::ColourValue colour;
     Ogre::ColourValue colour;
+
+    /**
+     * Indicates if the character is to be actually printed.
+     */
     bool skip;
     bool skip;
+
+    /**
+     * If the character is a variable, the variable name.
+     */
     Ogre::String variable;
     Ogre::String variable;
+
+    /**
+     * If the character is a variable, the variable length.
+     */
     unsigned int variable_len;
     unsigned int variable_len;
+
+    /**
+     * Indicates if the OK button has been pressed during a text pause.
+     */
     bool pause_ok;
     bool pause_ok;
+
+    /**
+     * For pause characters, the time.
+     */
     float pause_time;
     float pause_time;
+
+    /**
+     * Indicates if the character is a new page character.
+     */
     bool next_page;
     bool next_page;
+
+    /**
+     * If the character is a symbol or an image, this is the sprite.
+     */
     UiSprite* sprite;
     UiSprite* sprite;
+
+    /**
+     * If the character is a symbol or an image, this is the Y position.
+     */
     float sprite_y;
     float sprite_y;
 };
 };
 
 
+/**
+ * A variable displayed in a text.
+ */
+struct TextVariable{
 
 
-
-struct TextVariable
-{
+    /**
+     * The variable name.
+     */
     Ogre::String name;
     Ogre::String name;
+
+    /**
+     * The variable value, resolved as a string.
+     */
     Ogre::UTFString value;
     Ogre::UTFString value;
 };
 };
 
 
@@ -129,10 +179,7 @@ class UiTextArea : public UiWidget{
          * @param[in] parent Pointer to the widget that will parent the
          * @param[in] parent Pointer to the widget that will parent the
          * UiTextArea.
          * UiTextArea.
          */
          */
-        UiTextArea(
-          const Ogre::String& name, const Ogre::String& path_name,
-          UiWidget* parent
-        );
+        UiTextArea(const Ogre::String& name, const Ogre::String& path_name, UiWidget* parent);
 
 
         /**
         /**
          * Destroys the UiTextArea.
          * Destroys the UiTextArea.
@@ -283,9 +330,7 @@ class UiTextArea : public UiWidget{
          * @param[in] name Variable name.
          * @param[in] name Variable name.
          * @param[in] value Variable value.
          * @param[in] value Variable value.
          */
          */
-        void SetVariable(
-          const Ogre::String& name, const Ogre::UTFString& value
-        );
+        void SetVariable(const Ogre::String& name, const Ogre::UTFString& value);
 
 
         /**
         /**
          * Gets the value of a variable in the text.
          * Gets the value of a variable in the text.
@@ -340,22 +385,16 @@ class UiTextArea : public UiWidget{
          *
          *
          * @param[in] node The XML node to get the text from.
          * @param[in] node The XML node to get the text from.
          * @param[in] colour The text colour.
          * @param[in] colour The text colour.
-         * @todo Does this call setText?
          */
          */
-        void PrepareTextFromNode(
-          TiXmlNode* node, const Ogre::ColourValue& colour
-        );
+        void PrepareTextFromNode(TiXmlNode* node, const Ogre::ColourValue& colour);
 
 
         /**
         /**
          * Prepares text from a string.
          * Prepares text from a string.
          *
          *
          * @param[in] text The text to prepare.
          * @param[in] text The text to prepare.
          * @param[in] colour The text colour.
          * @param[in] colour The text colour.
-         * @todo Does this call setText?
          */
          */
-        void PrepareTextFromText(
-          const Ogre::UTFString& text, const Ogre::ColourValue& colour
-        );
+        void PrepareTextFromText(const Ogre::UTFString& text, const Ogre::ColourValue& colour);
 
 
         /**
         /**
          * Constructor.
          * Constructor.

+ 52 - 36
V-Gears/include/map/VGearsMapFile.h

@@ -36,20 +36,16 @@ namespace VGears{
             /**
             /**
              * Constructor.
              * Constructor.
              *
              *
-             * @param[in] creator Pointer to the ResourceManager that is
-             * creating this resource.
+             * @param[in] creator Pointer to the ResourceManager that is creating this resource.
              * @param[in] name The unique name of the resource.
              * @param[in] name The unique name of the resource.
              * @param[in] handle @todo Understand and document.
              * @param[in] handle @todo Understand and document.
-             * @param[in] group The name of the resource group to which this
-             * resource belong.
-             * @param[in] is_manual True if the resource is manually loaded,
-             * false otherwise.
-             * @param[in] loader Pointer to a ManualResourceLoader
-             * implementation which will be called when the Resource wishes to
-             * load (should be supplied if is_manual is set to true). It can be
-             * null, but the Resource will never be able to reload if anything
-             * ever causes it to unload. Therefore provision of a proper
-             * ManualResourceLoader instance is strongly recommended.
+             * @param[in] group The name of the resource group to which this resource belong.
+             * @param[in] is_manual True if the resource is manually loaded, false otherwise.
+             * @param[in] loader Pointer to a ManualResourceLoader implementation which will be
+             * called when the Resource wishes to load (should be supplied if is_manual is set to
+             * true). It can be null, but the Resource will never be able to reload if anything
+             * ever causes it to unload. Therefore provision of a proper ManualResourceLoader
+             * instance is strongly recommended.
              */
              */
             MapFile(
             MapFile(
               Ogre::ResourceManager* creator, const String &name, Ogre::ResourceHandle handle,
               Ogre::ResourceManager* creator, const String &name, Ogre::ResourceHandle handle,
@@ -77,28 +73,35 @@ namespace VGears{
             virtual const String& GetScriptName() const;
             virtual const String& GetScriptName() const;
 
 
             /**
             /**
-             * Retrieves the map background name.
+             * Retrieves the map background file name.
              *
              *
-             * @return The background name.
+             * @return The background file name.
              */
              */
             virtual const String& GetBackground2dName() const;
             virtual const String& GetBackground2dName() const;
 
 
             /**
             /**
-             * Retrieves the map walkmesh name.
+             * Retrieves the map texts file name.
              *
              *
-             * @return The walkmesh name.
+             * @return The texts file name.
+             */
+            virtual const String& GetTextsName() const;
+
+            /**
+             * Retrieves the map walkmesh file name.
+             *
+             * @return The walkmesh file name.
              */
              */
             virtual const String& GetWalkmeshName() const;
             virtual const String& GetWalkmeshName() const;
 
 
             /**
             /**
              * Retrieves the map forward direction.
              * Retrieves the map forward direction.
              *
              *
-             * The forward direction is the direction the playable character
-             * moves when 'up' is pressed.
+             * The forward direction is the direction the playable character moves when 'up' is
+             * pressed.
              *
              *
              * @return The forward direction.
              * @return The forward direction.
              */
              */
-            virtual const Ogre::Real& GetForwardDirection () const;
+            virtual const Ogre::Real& GetForwardDirection() const;
 
 
             /**
             /**
              * Retrieves the list of entity points in the map.
              * Retrieves the list of entity points in the map.
@@ -119,31 +122,38 @@ namespace VGears{
              *
              *
              * @param[in] script_name The script name.
              * @param[in] script_name The script name.
              */
              */
-            virtual void SetScriptName(const String &script_name);
+            virtual void SetScriptName(const String& script_name);
+
+            /**
+             * Sets the map background file name.
+             *
+             * @param[in] background2d_name The background file name.
+             */
+            virtual void SetBackground2dName(const String& background2d_name);
 
 
             /**
             /**
-             * Sets the map background name.
+             * Sets the map field texts file name.
              *
              *
-             * @param[in] background2d_name The background name.
+             * @param[in] texts The texts file name.
              */
              */
-            virtual void SetBackground2dName(const String &background2d_name);
+            virtual void SetTextsName(const String& texts_name);
 
 
             /**
             /**
-             * Sets the map walkmesh name.
+             * Sets the map walkmesh file name.
              *
              *
-             * @param[in] walkmesh_name The walkmesh name.
+             * @param[in] walkmesh_name The walkmesh file name.
              */
              */
-            virtual void SetWalkmeshName(const String &walkmesh_name);
+            virtual void SetWalkmeshName(const String& walkmesh_name);
 
 
             /**
             /**
              * Sets the map forward direction.
              * Sets the map forward direction.
              *
              *
-             * The forward direction is the direction the playable character
-             * moves when 'up' is pressed.
+             * The forward direction is the direction the playable character moves when 'up' is
+             * pressed.
              *
              *
              * @param[in] forward_direction The forward direction.
              * @param[in] forward_direction The forward direction.
              */
              */
-            virtual void SetForwardDirection(const Ogre::Real &forward_direction);
+            virtual void SetForwardDirection(const Ogre::Real& forward_direction);
 
 
         protected:
         protected:
 
 
@@ -158,27 +168,33 @@ namespace VGears{
             virtual void unloadImpl() override;
             virtual void unloadImpl() override;
 
 
             /**
             /**
-             * Calculates the size of the palette.
+             * Calculates the size of the map.
+             *
+             * It's the size of the tiles, script, walkmesh and forward direction.
              *
              *
-             * @return The size of the palette.
-             * @todo Units?
+             * @return The size of the map.
              */
              */
             virtual size_t calculateSize() const;
             virtual size_t calculateSize() const;
 
 
         private:
         private:
 
 
             /**
             /**
-             * The script name.
+             * The script file name.
              */
              */
             String script_name_;
             String script_name_;
 
 
             /**
             /**
-             * The background name.
+             * The background file name.
+             */
+            String background_2d_name_;
+
+            /**
+             * The background file name.
              */
              */
-            String background_2d_name;
+            String texts_name_;
 
 
             /**
             /**
-             * The walkmesh name.
+             * The walkmesh file name.
              */
              */
             String walkmesh_name_;
             String walkmesh_name_;
 
 

+ 15 - 7
V-Gears/include/map/VGearsMapFileXMLSerializer.h

@@ -64,7 +64,7 @@ namespace VGears{
             virtual void ReadHeader(TiXmlNode *node);
             virtual void ReadHeader(TiXmlNode *node);
 
 
             /**
             /**
-             * Reads a XML node as a script.
+             * Reads the script file location from the field XML file.
              *
              *
              * @param[in] node The XML node to read.
              * @param[in] node The XML node to read.
              * @param[out] dest The script data will be loaded here.
              * @param[out] dest The script data will be loaded here.
@@ -72,7 +72,7 @@ namespace VGears{
             virtual void ReadScript(TiXmlNode &node, MapFile *dest);
             virtual void ReadScript(TiXmlNode &node, MapFile *dest);
 
 
             /**
             /**
-             * Reads a XML node as a 2D background.
+             * Reads the backgrouns file location from the field XML file.
              *
              *
              * @param[in] node The XML node to read.
              * @param[in] node The XML node to read.
              * @param[out] dest The background data will be loaded here.
              * @param[out] dest The background data will be loaded here.
@@ -80,7 +80,15 @@ namespace VGears{
             virtual void ReadBackground2D(TiXmlNode &node, MapFile *dest);
             virtual void ReadBackground2D(TiXmlNode &node, MapFile *dest);
 
 
             /**
             /**
-             * Reads a XML node as a walkmesh.
+             * Reads the text file location from the field XML file.
+             *
+             * @param[in] node The XML node to read.
+             * @param[out] dest The background data will be loaded here.
+             */
+            virtual void ReadTexts(TiXmlNode &node, MapFile *dest);
+
+            /**
+             * Reads the walkmesh file location from the field XML file.
              *
              *
              * @param[in] node The XML node to read.
              * @param[in] node The XML node to read.
              * @param[out] dest The walkmesh data will be loaded here.
              * @param[out] dest The walkmesh data will be loaded here.
@@ -88,7 +96,7 @@ namespace VGears{
             virtual void ReadWalkmesh(TiXmlNode &node, MapFile *dest);
             virtual void ReadWalkmesh(TiXmlNode &node, MapFile *dest);
 
 
             /**
             /**
-             * Reads a XML node as a forward direction.
+             * Reads the field forward direction location from the field XML file.
              *
              *
              * @param[in] node The XML node to read.
              * @param[in] node The XML node to read.
              * @param[out] dest The direction data will be loaded here.
              * @param[out] dest The direction data will be loaded here.
@@ -96,7 +104,7 @@ namespace VGears{
             virtual void ReadForwardDirection(TiXmlNode &node, MapFile *dest);
             virtual void ReadForwardDirection(TiXmlNode &node, MapFile *dest);
 
 
             /**
             /**
-             * Reads a XML node as a list of entities.
+             * Reads the entities location from the field XML file.
              *
              *
              * @param[in] node The XML node to read.
              * @param[in] node The XML node to read.
              * @param[out] dest The entity data will be loaded here.
              * @param[out] dest The entity data will be loaded here.
@@ -104,7 +112,7 @@ namespace VGears{
             virtual void ReadEntities(TiXmlNode &node, MapFile *dest);
             virtual void ReadEntities(TiXmlNode &node, MapFile *dest);
 
 
             /**
             /**
-             * Reads an XML node as an entity point.
+             * Reads an object from the field XML file.
              *
              *
              * @param[in] node The XML node to read.
              * @param[in] node The XML node to read.
              * @param[out] dest The formed point data.
              * @param[out] dest The formed point data.
@@ -112,7 +120,7 @@ namespace VGears{
             virtual void readObject(TiXmlNode &node, Point &dest);
             virtual void readObject(TiXmlNode &node, Point &dest);
 
 
             /**
             /**
-             * Reads an XML node as a trigger.
+             * Reads a trigger from the field XML file.
              *
              *
              * @param[in] node The XML node to read.
              * @param[in] node The XML node to read.
              * @param[out] dest The formed trigger data.
              * @param[out] dest The formed trigger data.

+ 40 - 12
V-Gears/src/core/TextManager.cpp

@@ -13,18 +13,27 @@
  * GNU General Public License for more details.
  * GNU General Public License for more details.
  */
  */
 
 
+#include <iostream>
 #include "core/TextManager.h"
 #include "core/TextManager.h"
 #include "core/TextManagerCommands.h"
 #include "core/TextManagerCommands.h"
 #include "core/XmlTextsFile.h"
 #include "core/XmlTextsFile.h"
+#include "core/XmlTextFile.h"
 
 
 template<>TextManager* Ogre::Singleton< TextManager >::msSingleton = NULL;
 template<>TextManager* Ogre::Singleton< TextManager >::msSingleton = NULL;
 
 
-TextManager::TextManager():
-  language_("")
-{InitCmd();}
+TextManager::TextManager(): language_(""){
+    for (int i = 0; i < 3; i ++) current_party_[i] = -1;
+    for (int i = 0; i < 11; i ++) character_names_[i] = "CHAR_" + i;
+    InitCmd();
+}
 
 
 TextManager::~TextManager(){UnloadTexts();}
 TextManager::~TextManager(){UnloadTexts();}
 
 
+void TextManager::LoadFieldText(const std::string file_name){
+    XmlTextFile texts("./data/" + file_name);
+    texts.LoadTexts();
+}
+
 void TextManager::SetLanguage(const Ogre::String& language){
 void TextManager::SetLanguage(const Ogre::String& language){
     language_ = language;
     language_ = language;
     UnloadTexts();
     UnloadTexts();
@@ -42,8 +51,7 @@ void TextManager::AddText(const Ogre::String& name, TiXmlNode* node){
 }
 }
 
 
 void TextManager::AddDialog(
 void TextManager::AddDialog(
-  const Ogre::String& name, TiXmlNode* node,
-  const float width, const float height
+  const Ogre::String& name, TiXmlNode* node, const float width, const float height
 ){
 ){
     Dialog dialog;
     Dialog dialog;
     dialog.name = name;
     dialog.name = name;
@@ -60,9 +68,7 @@ TiXmlNode* TextManager::GetText(const Ogre::String& name) const{
     return NULL;
     return NULL;
 }
 }
 
 
-TiXmlNode* TextManager::GetDialog(
-  const Ogre::String& name, float &width, float& height
-) const{
+TiXmlNode* TextManager::GetDialog(const Ogre::String& name, float &width, float& height) const{
     for (unsigned int i = 0; i < dialogs_.size(); ++ i){
     for (unsigned int i = 0; i < dialogs_.size(); ++ i){
         if (dialogs_[i].name == name){
         if (dialogs_[i].name == name){
             width = dialogs_[i].width;
             width = dialogs_[i].width;
@@ -74,10 +80,32 @@ TiXmlNode* TextManager::GetDialog(
 }
 }
 
 
 void TextManager::UnloadTexts(){
 void TextManager::UnloadTexts(){
-    for (unsigned int i = 0; i < texts_.size(); ++ i)
-        delete texts_[i].node;
+    for (unsigned int i = 0; i < texts_.size(); ++ i) delete texts_[i].node;
     texts_.clear();
     texts_.clear();
-    for (unsigned int i = 0; i < dialogs_.size(); ++ i)
-        delete dialogs_[i].node;
+    for (unsigned int i = 0; i < dialogs_.size(); ++ i) delete dialogs_[i].node;
     dialogs_.clear();
     dialogs_.clear();
 }
 }
+
+std::string TextManager::GetCharacterName(int id){
+    if (id >= 0 && id < 11) return character_names_[id];
+    else return std::string("UNKNOWN_CHAR_" + id);
+}
+
+std::string TextManager::GetPartyCharacterName(int position){
+    if (position >= 1 && position <= 3){
+        if (current_party_[position - 1] < 0) return "";
+        else return GetCharacterName(current_party_[position - 1]);
+    }
+    else return std::string("UNKNOWN_PARTY_POS_" + position);
+}
+
+void TextManager::SetCharacterName(int id, char* name){
+    if (id >= 0 && id < 11) character_names_[id] = std::string(name);
+    else LOG_WARNING("Not setting character name for character ID " + std::to_string(id) + ".");
+}
+
+void TextManager::SetParty(int char_1, int char_2, int char_3){
+    current_party_[0] = char_1;
+    current_party_[2] = char_2;
+    current_party_[3] = char_3;
+}

+ 106 - 268
V-Gears/src/core/UiTextArea.cpp

@@ -13,6 +13,7 @@
  * GNU General Public License for more details.
  * GNU General Public License for more details.
  */
  */
 
 
+#include <string>
 #include <iostream>
 #include <iostream>
 #include <OgreBlendMode.h>
 #include <OgreBlendMode.h>
 #include <OgreCommon.h>
 #include <OgreCommon.h>
@@ -34,11 +35,9 @@ UiTextArea::UiTextArea(const Ogre::String& name): UiWidget(name){
     Initialise();
     Initialise();
 }
 }
 
 
-UiTextArea::UiTextArea(
-  const Ogre::String& name, const Ogre::String& path_name, UiWidget* parent
-) : UiWidget(name, path_name, parent){
-    Initialise();
-}
+UiTextArea::UiTextArea(const Ogre::String& name, const Ogre::String& path_name, UiWidget* parent):
+  UiWidget(name, path_name, parent)
+{Initialise();}
 
 
 UiTextArea::~UiTextArea(){DestroyVertexBuffer();}
 UiTextArea::~UiTextArea(){DestroyVertexBuffer();}
 
 
@@ -80,22 +79,14 @@ void UiTextArea::Update(){
             if (time != timer_time_){
             if (time != timer_time_){
                 timer_time_ = time;
                 timer_time_ = time;
                 Ogre::String time_string = "";
                 Ogre::String time_string = "";
-                //time_string
-                //  += Ogre::StringConverter::toString(
-                //    timer_time_ / 60, 2, '0'
-                //  );
-                time_string
-                  += Ogre::StringUtil::format("%2d", timer_time_ / 60);
+                //time_string += Ogre::StringConverter::toString(timer_time_ / 60, 2, '0');
+                time_string += Ogre::StringUtil::format("%2d", timer_time_ / 60);
                 time_string += (timer_time_ & 1) ? ":" : ";";
                 time_string += (timer_time_ & 1) ? ":" : ";";
-                //time_string += Ogre::StringConverter::toString(
-                //  timer_time_ % 60, 2, '0'
-                //);
-                time_string
-                  += Ogre::StringUtil::format("%2d", timer_time_ % 60);
+                //time_string += Ogre::StringConverter::toString(timer_time_ % 60, 2, '0');
+                time_string += Ogre::StringUtil::format("%2d", timer_time_ % 60);
                 SetVariable("UITextAreaTimer", time_string);
                 SetVariable("UITextAreaTimer", time_string);
             }
             }
         }
         }
-
         switch(text_state_){
         switch(text_state_){
             case TS_SHOW_TEXT:
             case TS_SHOW_TEXT:
                 if (text_print_speed_ == -1) text_limit_ = max_letters_;
                 if (text_print_speed_ == -1) text_limit_ = max_letters_;
@@ -104,13 +95,9 @@ void UiTextArea::Update(){
                     float addition;
                     float addition;
                     float limit;
                     float limit;
                     if (next_pressed_ == true || next_repeated_ == true){
                     if (next_pressed_ == true || next_repeated_ == true){
-                        text_print_speed_mod_
-                          += (text_print_speed_mod_ >= 128) ? 0 : 1.0f * time;
-                    }
-                    else{
-                        text_print_speed_mod_
-                          -= (text_print_speed_mod_ <= 1) ? 0 : 1.0f * time;
+                        text_print_speed_mod_ += (text_print_speed_mod_ >= 128) ? 0 : 1.0f * time;
                     }
                     }
+                    else text_print_speed_mod_ -= (text_print_speed_mod_ <= 1) ? 0 : 1.0f * time;
                     if (text_print_speed_ < 128){
                     if (text_print_speed_ < 128){
                         addition = ((128 - text_print_speed_) / 32) + 2;
                         addition = ((128 - text_print_speed_) / 32) + 2;
                         limit = 1;
                         limit = 1;
@@ -119,14 +106,11 @@ void UiTextArea::Update(){
                         addition = 2;
                         addition = 2;
                         limit = ((text_print_speed_ - 128) / 32) + 1;
                         limit = ((text_print_speed_ - 128) / 32) + 1;
                     }
                     }
-                    float char_to_add
-                      = (limit * text_print_speed_mod_ / 16 + addition) / limit;
+                    float char_to_add = (limit * text_print_speed_mod_ / 16 + addition) / limit;
                     text_limit_ += time * char_to_add;
                     text_limit_ += time * char_to_add;
                 }
                 }
-
                 update_transformation_ = true;
                 update_transformation_ = true;
                 break;
                 break;
-
             case TS_SCROLL_TEXT:
             case TS_SCROLL_TEXT:
                 text_y_offset_
                 text_y_offset_
                   -= font_->GetHeight()
                   -= font_->GetHeight()
@@ -139,14 +123,12 @@ void UiTextArea::Update(){
                 }
                 }
                 update_transformation_ = true;
                 update_transformation_ = true;
                 break;
                 break;
-
             case TS_PAUSE_OK:
             case TS_PAUSE_OK:
                 if (next_pressed_ == true){
                 if (next_pressed_ == true){
                     text_print_speed_mod_ = 1;
                     text_print_speed_mod_ = 1;
                     text_state_ = TS_SHOW_TEXT;
                     text_state_ = TS_SHOW_TEXT;
                 }
                 }
                 break;
                 break;
-
             case TS_PAUSE_TIME:
             case TS_PAUSE_TIME:
                 pause_time_ -= Timer::getSingleton().GetGameTimeDelta();
                 pause_time_ -= Timer::getSingleton().GetGameTimeDelta();
                 if (pause_time_ <= 0){
                 if (pause_time_ <= 0){
@@ -154,20 +136,16 @@ void UiTextArea::Update(){
                     text_state_ = TS_SHOW_TEXT;
                     text_state_ = TS_SHOW_TEXT;
                 }
                 }
                 break;
                 break;
-
             case TS_OVERFLOW:
             case TS_OVERFLOW:
                 if (next_pressed_ == true){
                 if (next_pressed_ == true){
                     text_y_offset_target_ = text_y_offset_ - font_->GetHeight();
                     text_y_offset_target_ = text_y_offset_ - font_->GetHeight();
                     text_state_ = TS_SCROLL_TEXT;
                     text_state_ = TS_SCROLL_TEXT;
                 }
                 }
-            break;
-
+                break;
             case TS_NEXT_PAGE:
             case TS_NEXT_PAGE:
                 if (next_pressed_ == true){
                 if (next_pressed_ == true){
                     RemoveSpritesFromText(next_page_start_);
                     RemoveSpritesFromText(next_page_start_);
-                    text_.erase(
-                      text_.begin(), text_.begin() + next_page_start_
-                    );
+                    text_.erase(text_.begin(), text_.begin() + next_page_start_);
                     text_limit_ = 0;
                     text_limit_ = 0;
                     text_print_speed_mod_ = 1;
                     text_print_speed_mod_ = 1;
                     text_y_offset_ = 0;
                     text_y_offset_ = 0;
@@ -177,13 +155,11 @@ void UiTextArea::Update(){
                 break;
                 break;
         }
         }
     }
     }
-
     next_pressed_ = false;
     next_pressed_ = false;
     next_repeated_ = false;
     next_repeated_ = false;
     UiWidget::Update();
     UiWidget::Update();
 }
 }
 
 
-
 void UiTextArea::Render(){
 void UiTextArea::Render(){
     if (update_transformation_ == false && visible_ == true){
     if (update_transformation_ == false && visible_ == true){
         if (render_operation_.vertexData->vertexCount != 0){
         if (render_operation_.vertexData->vertexCount != 0){
@@ -191,32 +167,21 @@ void UiTextArea::Render(){
               Ogre::TVC_NONE, Ogre::FOG_NONE
               Ogre::TVC_NONE, Ogre::FOG_NONE
             );
             );
             render_parameters->setConstant(
             render_parameters->setConstant(
-              Ogre::GpuProgramParameters::ACT_WORLD_MATRIX,
-              Ogre::Matrix4::IDENTITY
+              Ogre::GpuProgramParameters::ACT_WORLD_MATRIX, Ogre::Matrix4::IDENTITY
             );
             );
             render_parameters->setConstant(
             render_parameters->setConstant(
-              Ogre::GpuProgramParameters::ACT_PROJECTION_MATRIX,
-              Ogre::Matrix4::IDENTITY
+              Ogre::GpuProgramParameters::ACT_PROJECTION_MATRIX, Ogre::Matrix4::IDENTITY
             );
             );
             render_parameters->setConstant(
             render_parameters->setConstant(
-              Ogre::GpuProgramParameters::ACT_VIEW_MATRIX,
-              Ogre::Matrix4::IDENTITY
-            );
-            render_system_->applyFixedFunctionParams(
-              render_parameters, Ogre::GPV_GLOBAL
+              Ogre::GpuProgramParameters::ACT_VIEW_MATRIX, Ogre::Matrix4::IDENTITY
             );
             );
-
+            render_system_->applyFixedFunctionParams(render_parameters, Ogre::GPV_GLOBAL);
             //render_system_->_setWorldMatrix(Ogre::Matrix4::IDENTITY);
             //render_system_->_setWorldMatrix(Ogre::Matrix4::IDENTITY);
             //render_system_->_setProjectionMatrix(Ogre::Matrix4::IDENTITY);
             //render_system_->_setProjectionMatrix(Ogre::Matrix4::IDENTITY);
             //render_system_->_setViewMatrix(Ogre::Matrix4::IDENTITY);
             //render_system_->_setViewMatrix(Ogre::Matrix4::IDENTITY);
-
-            scene_manager_->_setPass(
-              material_->getTechnique(0)->getPass(0), true, false
-            );
-
+            scene_manager_->_setPass(material_->getTechnique(0)->getPass(0), true, false);
             //render_system_->setScissorTest(
             //render_system_->setScissorTest(
-            //  true,
-            //  scissor_left_, scissor_top_, scissor_right_, scissor_bottom_
+            //  true, scissor_left_, scissor_top_, scissor_right_, scissor_bottom_
             //);
             //);
             render_system_->setScissorTest(true, Ogre::Rect(
             render_system_->setScissorTest(true, Ogre::Rect(
               scissor_left_, scissor_top_, scissor_right_, scissor_bottom_
               scissor_left_, scissor_top_, scissor_right_, scissor_bottom_
@@ -251,19 +216,14 @@ void UiTextArea::SetPadding(
     padding_left_ = left;
     padding_left_ = left;
 }
 }
 
 
-void UiTextArea::SetText(const char* text){
-    SetText(Ogre::UTFString(text));
-}
+void UiTextArea::SetText(const char* text){SetText(Ogre::UTFString(text));}
 
 
 void UiTextArea::SetText(const Ogre::UTFString& text){
 void UiTextArea::SetText(const Ogre::UTFString& text){
     TiXmlDocument doc;
     TiXmlDocument doc;
     Ogre::UTFString xml_text = "<container>" + text + "</container>";
     Ogre::UTFString xml_text = "<container>" + text + "</container>";
     doc.Parse(xml_text.asUTF8_c_str(), 0, TIXML_ENCODING_UTF8);
     doc.Parse(xml_text.asUTF8_c_str(), 0, TIXML_ENCODING_UTF8);
     if (doc.Error() == true){
     if (doc.Error() == true){
-        LOG_ERROR(
-          "Can't parse text \"" + text + "\". TinyXml Error: "
-          + doc.ErrorDesc()
-        );
+        LOG_ERROR("Can't parse text \"" + text + "\". TinyXml Error: " + doc.ErrorDesc());
         return;
         return;
     }
     }
     SetText(doc.RootElement());
     SetText(doc.RootElement());
@@ -279,21 +239,17 @@ void UiTextArea::SetText(TiXmlNode* text){
     if (font_ != NULL){
     if (font_ != NULL){
         Ogre::String language = font_->GetLanguage();
         Ogre::String language = font_->GetLanguage();
         if (language != "")
         if (language != "")
-            if (TextManager::getSingleton().GetLanguage() != language)
-                SetFont(font_->GetName());
+            if (TextManager::getSingleton().GetLanguage() != language) SetFont(font_->GetName());
     }
     }
-
     TextClear();
     TextClear();
     PrepareTextFromNode(text, colour_1_);
     PrepareTextFromNode(text, colour_1_);
     text_state_ = TS_SHOW_TEXT;
     text_state_ = TS_SHOW_TEXT;
     update_transformation_ = true;
     update_transformation_ = true;
-
     if (text_.size() > max_letters_){
     if (text_.size() > max_letters_){
         text_.clear();
         text_.clear();
         LOG_ERROR(
         LOG_ERROR(
-          "Max number of text reached in \"" + path_name_
-          + "\". Can't render text from node. Max number of letters is "
-          + Ogre::StringConverter::toString(max_letters_) + "."
+          "Max number of text reached in \"" + path_name_ + "\". Can't render text from node. "
+          + "Max number of letters is " + Ogre::StringConverter::toString(max_letters_) + "."
         );
         );
     }
     }
 }
 }
@@ -313,9 +269,7 @@ void UiTextArea::RemoveSpritesFromText(const unsigned int end){
             for (unsigned int j = 0; j < children_.size(); ++j){
             for (unsigned int j = 0; j < children_.size(); ++j){
                 if (text_[i].sprite == children_[j]){
                 if (text_[i].sprite == children_[j]){
                     delete children_[j];
                     delete children_[j];
-                    children_.erase(
-                      children_.begin() + j, children_.begin() + j + 1
-                    );
+                    children_.erase(children_.begin() + j, children_.begin() + j + 1);
                     break;
                     break;
                 }
                 }
             }
             }
@@ -326,9 +280,7 @@ void UiTextArea::RemoveSpritesFromText(const unsigned int end){
 void UiTextArea::SetFont(const Ogre::String& font){
 void UiTextArea::SetFont(const Ogre::String& font){
     font_ = UiManager::getSingleton().GetFont(font);
     font_ = UiManager::getSingleton().GetFont(font);
     if (font_ == nullptr){
     if (font_ == nullptr){
-        LOG_ERROR(
-          "Could not find font \"" + font + "\" for \"" + path_name_ + "\"."
-        );
+        LOG_ERROR("Could not find font \"" + font + "\" for \"" + path_name_ + "\".");
         return;
         return;
     }
     }
     material_ = Ogre::MaterialManager::getSingleton().getByName(
     material_ = Ogre::MaterialManager::getSingleton().getByName(
@@ -357,26 +309,21 @@ void UiTextArea::SetFont(const Ogre::String& font){
 
 
 const UiFont* UiTextArea::GetFont() const{return font_;}
 const UiFont* UiTextArea::GetFont() const{return font_;}
 
 
-void UiTextArea::SetTextPrintSpeed(const float speed){
-    text_print_speed_ = speed;
-}
+void UiTextArea::SetTextPrintSpeed(const float speed){text_print_speed_ = speed;}
 
 
 void UiTextArea::SetTextScrollTime(const float time){text_scroll_time_ = time;}
 void UiTextArea::SetTextScrollTime(const float time){text_scroll_time_ = time;}
 
 
-void UiTextArea::SetVariable(
-  const Ogre::String& name, const Ogre::UTFString& value
-){
+void UiTextArea::SetVariable(const Ogre::String& name, const Ogre::UTFString& value){
     if (name == "") return;
     if (name == "") return;
     bool update = false;
     bool update = false;
     for (unsigned int i = 0; i < text_variable_.size(); ++ i){
     for (unsigned int i = 0; i < text_variable_.size(); ++ i){
         if (text_variable_[i].name == name){
         if (text_variable_[i].name == name){
             text_variable_[i].value = value;
             text_variable_[i].value = value;
             update = true;
             update = true;
-            for (unsigned int j = 0; j < text_.size(); ++j){
+            for (unsigned int j = 0; j < text_.size(); ++ j){
                 if (text_[j].variable == name){
                 if (text_[j].variable == name){
                     text_.erase(
                     text_.erase(
-                      text_.begin() + j + 1,
-                      text_.begin() + j + 1 + text_[j].variable_len
+                      text_.begin() + j + 1, text_.begin() + j + 1 + text_[j].variable_len
                     );
                     );
                 }
                 }
             }
             }
@@ -424,36 +371,23 @@ void UiTextArea::UpdateGeometry(){
         LOG_ERROR("Font for \"" + path_name_ + "\" if not set.");
         LOG_ERROR("Font for \"" + path_name_ + "\" if not set.");
         return;
         return;
     }
     }
-
     float width = 0;
     float width = 0;
     if (text_align_ != LEFT){
     if (text_align_ != LEFT){
         width = GetTextWidth();
         width = GetTextWidth();
         if (text_align_ == CENTER) width /= 2;
         if (text_align_ == CENTER) width /= 2;
     }
     }
-
-    //LOG_ERROR(
-    //  "1) final_origin_.y = "
-    //  + Ogre::StringConverter::toString(final_origin_.y)
-    //  + ", text_y_offset_ = "
-    //  + Ogre::StringConverter::toString(text_y_offset_)
-    //);
-
-    float* write_iterator
-      = (float*) vertex_buffer_->lock(Ogre::HardwareBuffer::HBL_NORMAL);
+    float* write_iterator = (float*) vertex_buffer_->lock(Ogre::HardwareBuffer::HBL_NORMAL);
     render_operation_.vertexData->vertexCount = 0;
     render_operation_.vertexData->vertexCount = 0;
 
 
     float local_x_start
     float local_x_start
-      = -final_origin_.x - (width - padding_left_)
-        * final_scale_.x * screen_height_ / 720.0f;
+      = -final_origin_.x - (width - padding_left_) * final_scale_.x * screen_height_ / 720.0f;
     float local_x1 = local_x_start;
     float local_x1 = local_x_start;
-    float local_y1
-      = -final_origin_.y + ((text_y_offset_ + padding_top_)
-        * final_scale_.y * screen_height_ / 720.0f);
+    float local_y1 = -final_origin_.y + ((text_y_offset_ + padding_top_)
+      * final_scale_.y * screen_height_ / 720.0f);
     float local_x2;
     float local_x2;
     float local_y2;
     float local_y2;
     float x = final_translate_.x;
     float x = final_translate_.x;
     float y = final_translate_.y;
     float y = final_translate_.y;
-
     unsigned int i = 0;
     unsigned int i = 0;
     for (; (i < text_limit_) && (i < text_.size()); ++ i){
     for (; (i < text_limit_) && (i < text_.size()); ++ i){
         if (text_[i].skip == true) continue;
         if (text_[i].skip == true) continue;
@@ -478,84 +412,49 @@ void UiTextArea::UpdateGeometry(){
             float width_percent = 0;
             float width_percent = 0;
             float width = 0;
             float width = 0;
             text_[i].sprite->GetWidth(width_percent, width);
             text_[i].sprite->GetWidth(width_percent, width);
-            text_[i].sprite->SetX(
-              0, local_x1 / (final_scale_.x * screen_height_ / 720.0f)
-            );
+            text_[i].sprite->SetX(0, local_x1 / (final_scale_.x * screen_height_ / 720.0f));
             local_x1 += width * final_scale_.x * screen_height_ / 720.0f;
             local_x1 += width * final_scale_.x * screen_height_ / 720.0f;
             float height_percent = 0;
             float height_percent = 0;
             float height = 0;
             float height = 0;
             text_[i].sprite->GetHeight(height_percent, height);
             text_[i].sprite->GetHeight(height_percent, height);
             text_[i].sprite->SetY(
             text_[i].sprite->SetY(
-              0,
-              text_[i].sprite_y + (
-                local_y1 / (final_scale_.y * screen_height_ / 720.0f)
-              )
+              0, text_[i].sprite_y + (local_y1 / (final_scale_.y * screen_height_ / 720.0f))
             );
             );
             text_[i].sprite->SetVisible(true);
             text_[i].sprite->SetVisible(true);
             text_[i].sprite->UpdateGeometry();
             text_[i].sprite->UpdateGeometry();
             continue;
             continue;
         }
         }
-
         UiCharData char_data = font_->GetCharData(text_[i].char_code);
         UiCharData char_data = font_->GetCharData(text_[i].char_code);
         Ogre::ColourValue colour = text_[i].colour;
         Ogre::ColourValue colour = text_[i].colour;
-
         if (char_data.char_code == 10){ // LF (line feed): \n
         if (char_data.char_code == 10){ // LF (line feed): \n
             local_x1 = local_x_start;
             local_x1 = local_x_start;
-            local_y1
-              += font_->GetHeight() * final_scale_.y * screen_height_ / 720.0f;
+            local_y1 += font_->GetHeight() * final_scale_.y * screen_height_ / 720.0f;
             continue;
             continue;
         }
         }
-
         local_x1 += char_data.pre * final_scale_.x * screen_height_ / 720.0f;
         local_x1 += char_data.pre * final_scale_.x * screen_height_ / 720.0f;
-        local_x2
-          = local_x1 + char_data.width
-            * final_scale_.x * screen_height_ / 720.0f;
-        local_y2
-          = local_y1 + char_data.height
-            * final_scale_.y * screen_height_ / 720.0f;
-
+        local_x2 = local_x1 + char_data.width * final_scale_.x * screen_height_ / 720.0f;
+        local_y2 = local_y1 + char_data.height * final_scale_.y * screen_height_ / 720.0f;
         if (
         if (
           local_x2 + char_data.post * final_scale_.x * screen_height_ / 720.0f
           local_x2 + char_data.post * final_scale_.x * screen_height_ / 720.0f
-          > final_size_.x - padding_right_ * final_scale_.x
-            * screen_height_ / 720.0f
+          > final_size_.x - padding_right_ * final_scale_.x * screen_height_ / 720.0f
         ){
         ){
             local_x1 = local_x_start;
             local_x1 = local_x_start;
-            local_x2
-              = local_x1 + char_data.width * final_scale_.x
-                * screen_height_ / 720.0f;
-            local_y1
-              += font_->GetHeight() * final_scale_.y * screen_height_ / 720.0f;
-            local_y2
-              = local_y1 + char_data.height * final_scale_.y
-                * screen_height_ / 720.0f;
+            local_x2 = local_x1 + char_data.width * final_scale_.x * screen_height_ / 720.0f;
+            local_y1 += font_->GetHeight() * final_scale_.y * screen_height_ / 720.0f;
+            local_y2 = local_y1 + char_data.height * final_scale_.y * screen_height_ / 720.0f;
         }
         }
 
 
         // If the lower border of the textarea is crossed:
         // If the lower border of the textarea is crossed:
         // generate event and stop rendering
         // generate event and stop rendering
-        if (
-          local_y2
-          > final_size_.y - padding_bottom_ *
-            final_scale_.y * screen_height_ / 720.0f
-        ){
+        if (local_y2 > final_size_.y - padding_bottom_ * final_scale_.y * screen_height_ / 720.0f){
             if (text_state_ != TS_SCROLL_TEXT) text_state_ = TS_OVERFLOW;
             if (text_state_ != TS_SCROLL_TEXT) text_state_ = TS_OVERFLOW;
             break;
             break;
         }
         }
         int x1, y1, x2, y2, x3, y3, x4, y4;
         int x1, y1, x2, y2, x3, y3, x4, y4;
-        //LOG_ERROR(name_);
-        //LOG_ERROR(
-        //  "local_x1 = " + Ogre::StringConverter::toString(local_x1)
-        //  + ", local_y1 = " + Ogre::StringConverter::toString(local_y1)
-        //);
-        //LOG_ERROR(
-        //  "local_x2 = " + Ogre::StringConverter::toString(local_x2)
-        //  + ", local_y2 = " + Ogre::StringConverter::toString(local_y2)
-        //);
 
 
         if (final_rotation_ != 0){
         if (final_rotation_ != 0){
-            float cos
-              = Ogre::Math::Cos(Ogre::Radian(Ogre::Degree(final_rotation_)));
-            float sin
-              = Ogre::Math::Sin(Ogre::Radian(Ogre::Degree(final_rotation_)));
+            float cos = Ogre::Math::Cos(Ogre::Radian(Ogre::Degree(final_rotation_)));
+            float sin = Ogre::Math::Sin(Ogre::Radian(Ogre::Degree(final_rotation_)));
             x1 = local_x1 * cos - local_y1 * sin + x;
             x1 = local_x1 * cos - local_y1 * sin + x;
             y1 = local_x1 * sin + local_y1 * cos + y;
             y1 = local_x1 * sin + local_y1 * cos + y;
             x2 = local_x2 * cos - local_y1 * sin + x;
             x2 = local_x2 * cos - local_y1 * sin + x;
@@ -575,24 +474,6 @@ void UiTextArea::UpdateGeometry(){
             x4 = local_x1 + x;
             x4 = local_x1 + x;
             y4 = local_y2 + y;
             y4 = local_y2 + y;
         }
         }
-
-        //LOG_ERROR(
-        //  "x1 = " + Ogre::StringConverter::toString(x1) + ", y1 = "
-        //  + Ogre::StringConverter::toString(y1)
-        //);
-        //LOG_ERROR(
-        //  "x2 = " + Ogre::StringConverter::toString(x2) + ", y2 = "
-        //  + Ogre::StringConverter::toString(y2)
-        //);
-        //LOG_ERROR(
-        //  "x3 = " + Ogre::StringConverter::toString(x3) + ", y3 = "
-        //  + Ogre::StringConverter::toString(y3)
-        //);
-        //LOG_ERROR(
-        //  "x4 = " + Ogre::StringConverter::toString(x4) + ", y4 = "
-        //  + Ogre::StringConverter::toString(y4)
-        //);
-
         float new_x1 = (x1 / screen_width_) * 2 - 1;
         float new_x1 = (x1 / screen_width_) * 2 - 1;
         float new_y1 = -((y1 / screen_height_) * 2 - 1);
         float new_y1 = -((y1 / screen_height_) * 2 - 1);
         float new_x2 = (x2 / screen_width_) * 2 - 1;
         float new_x2 = (x2 / screen_width_) * 2 - 1;
@@ -601,11 +482,7 @@ void UiTextArea::UpdateGeometry(){
         float new_y3 = -((y3 / screen_height_) * 2 - 1);
         float new_y3 = -((y3 / screen_height_) * 2 - 1);
         float new_x4 = (x4 / screen_width_) * 2 - 1;
         float new_x4 = (x4 / screen_width_) * 2 - 1;
         float new_y4 = -((y4 / screen_height_) * 2 - 1);
         float new_y4 = -((y4 / screen_height_) * 2 - 1);
-
-        local_x1
-          += (char_data.width + char_data.post)
-            * final_scale_.x * screen_height_ / 720.0f;
-
+        local_x1 += (char_data.width + char_data.post) * final_scale_.x * screen_height_ / 720.0f;
         float width = font_->GetImageWidth();
         float width = font_->GetImageWidth();
         float height = font_->GetImageHeight();
         float height = font_->GetImageHeight();
         float left = (float)char_data.x / width;
         float left = (float)char_data.x / width;
@@ -613,33 +490,6 @@ void UiTextArea::UpdateGeometry(){
         float top = (float)char_data.y / height;
         float top = (float)char_data.y / height;
         float bottom = (float)(char_data.y + char_data.height) / height;
         float bottom = (float)(char_data.y + char_data.height) / height;
 
 
-        //LOG_ERROR("width = " + Ogre::StringConverter::toString(width) + ".");
-        //LOG_ERROR(
-        //  "height = " + Ogre::StringConverter::toString(height) + "."
-        //);
-        //LOG_ERROR(
-        //  "char_data.x = " + Ogre::StringConverter::toString(char_data.x)
-        //  + "."
-        //);
-        //LOG_ERROR(
-        //  "char_data.y = " + Ogre::StringConverter::toString(char_data.y)
-        //  + "."
-        //);
-        //LOG_ERROR(
-        //  "char_data.width = "
-        //  + Ogre::StringConverter::toString(char_data.width) + "."
-        //);
-        //LOG_ERROR(
-        //  "char_data.height = "
-        //  + Ogre::StringConverter::toString(char_data.height) + "."
-        //);
-        //LOG_ERROR("left = " + Ogre::StringConverter::toString(left) + ".");
-        //LOG_ERROR("right = " + Ogre::StringConverter::toString(right) + ".");
-        //LOG_ERROR("top = " + Ogre::StringConverter::toString(top) + ".");
-        //LOG_ERROR(
-        //  "bottom = " + Ogre::StringConverter::toString(bottom) + "."
-        //);
-
         *write_iterator ++ = new_x1;
         *write_iterator ++ = new_x1;
         *write_iterator ++ = new_y1;
         *write_iterator ++ = new_y1;
         *write_iterator ++ = final_z_;
         *write_iterator ++ = final_z_;
@@ -711,33 +561,29 @@ float UiTextArea::GetTextWidth() const{
     float width_max = 0;
     float width_max = 0;
     for (unsigned int i = 0; i < text_.size(); ++ i){
     for (unsigned int i = 0; i < text_.size(); ++ i){
         UiCharData char_data = font_->GetCharData(text_[i].char_code);
         UiCharData char_data = font_->GetCharData(text_[i].char_code);
-
         // If newline, store previous row max width
         // If newline, store previous row max width
         if (char_data.char_code == 10){
         if (char_data.char_code == 10){
             width_max = (width > width_max) ? width : width_max;
             width_max = (width > width_max) ? width : width_max;
             width = 0;
             width = 0;
         }
         }
-        else
-            width += char_data.pre + char_data.width + char_data.post;
+        else width += char_data.pre + char_data.width + char_data.post;
     }
     }
     return (width > width_max) ? width : width_max;
     return (width > width_max) ? width : width_max;
 }
 }
 
 
-void UiTextArea::PrepareTextFromNode(
-  TiXmlNode* node, const Ogre::ColourValue& colour
-){
+void UiTextArea::PrepareTextFromNode(TiXmlNode* node, const Ogre::ColourValue& colour){
+    Ogre::ColourValue colour_child = colour;
     while (node != NULL){
     while (node != NULL){
         switch(node->Type()){
         switch(node->Type()){
             case TiXmlNode::TINYXML_TEXT:
             case TiXmlNode::TINYXML_TEXT:
                 {
                 {
                     TiXmlText* childText = node->ToText();
                     TiXmlText* childText = node->ToText();
-                    if (childText)
-                        PrepareTextFromText(childText->Value(), colour);
+                    if (childText) PrepareTextFromText(childText->Value(), colour);
                 }
                 }
                 break;
                 break;
             case TiXmlNode::TINYXML_ELEMENT:
             case TiXmlNode::TINYXML_ELEMENT:
                 {
                 {
-                    Ogre::ColourValue colour_child = colour;
+
                     Ogre::String name = node->ValueStr();
                     Ogre::String name = node->ValueStr();
                     if (name == "colour"){
                     if (name == "colour"){
                         colour_child = Ogre::StringConverter::parseColourValue(
                         colour_child = Ogre::StringConverter::parseColourValue(
@@ -754,8 +600,7 @@ void UiTextArea::PrepareTextFromNode(
                           = node->ToElement()->Attribute(Ogre::String("time"));
                           = node->ToElement()->Attribute(Ogre::String("time"));
                         if (string != NULL){
                         if (string != NULL){
                             TextChar new_char;
                             TextChar new_char;
-                            new_char.pause_time
-                              = Ogre::StringConverter::parseReal(*string);
+                            new_char.pause_time = Ogre::StringConverter::parseReal(*string);
                             text_.push_back(new_char);
                             text_.push_back(new_char);
                         }
                         }
                     }
                     }
@@ -799,77 +644,80 @@ void UiTextArea::PrepareTextFromNode(
                             }
                             }
                         }
                         }
                     }
                     }
+                    else if (name == "character"){
+                        const std::string* id = node->ToElement()->Attribute(Ogre::String("id"));
+                        const std::string name = TextManager::getSingleton().GetCharacterName(
+                          std::stoi(*id)
+                        );
+                        for (unsigned int i = 0; i < name.length(); ++ i){
+                            TextChar text_char;
+                            text_char.char_code = name.at(i);
+                            text_char.colour = colour;
+                            text_.push_back(text_char);
+                        }
+                    }
+                    else if (name == "party"){
+                        const std::string* pos = node->ToElement()->Attribute(Ogre::String("pos"));
+                        const std::string name = TextManager::getSingleton().GetPartyCharacterName(
+                          std::stoi(*pos)
+                        );
+                        for (unsigned int i = 0; i < name.length(); ++ i){
+                            TextChar text_char;
+                            text_char.char_code = name.at(i);
+                            text_char.colour = colour;
+                            text_.push_back(text_char);
+                        }
+                    }
                     else if (name == "include"){
                     else if (name == "include"){
-                        const std::string* text_name
-                          = node->ToElement()->Attribute(Ogre::String("name"));
+                        const std::string* text_name = node->ToElement()->Attribute(
+                          Ogre::String("name")
+                        );
                         if (text_name != NULL){
                         if (text_name != NULL){
-                            TiXmlNode* text
-                              = TextManager::getSingleton().GetText(*text_name);
-                            if (text != NULL)
-                                PrepareTextFromNode(text, colour_child);
+                            TiXmlNode* text = TextManager::getSingleton().GetText(*text_name);
+                            if (text != NULL) PrepareTextFromNode(text, colour_child);
                         }
                         }
                     }
                     }
                     else if (name == "image"){
                     else if (name == "image"){
                         Ogre::String name1 = GetString(node, "sprite");
                         Ogre::String name1 = GetString(node, "sprite");
                         if (name1 != ""){
                         if (name1 != ""){
-                            TiXmlNode* sprites
-                              = UiManager::getSingleton().GetPrototype(
-                                "TextAreaSprite"
-                              );
+                            TiXmlNode* sprites = UiManager::getSingleton().GetPrototype(
+                              "TextAreaSprite"
+                            );
                             if (sprites != NULL){
                             if (sprites != NULL){
                                 sprites = sprites->FirstChild();
                                 sprites = sprites->FirstChild();
                                 while (sprites != NULL){
                                 while (sprites != NULL){
                                     if (
                                     if (
-                                      sprites->Type()
-                                        == TiXmlNode::TINYXML_ELEMENT
+                                      sprites->Type() == TiXmlNode::TINYXML_ELEMENT
                                       && sprites->ValueStr() == "sprite"
                                       && sprites->ValueStr() == "sprite"
                                     ){
                                     ){
-                                        Ogre::String name2
-                                          = GetString(sprites, "name");
+                                        Ogre::String name2 = GetString(sprites, "name");
                                         if (name1 == name2){
                                         if (name1 == name2){
                                             TextChar new_char;
                                             TextChar new_char;
-
-                                            UiSprite* sprite
-                                              = new UiSprite(
-                                                name1, name_ + "." + name1, this
-                                              );
-                                            Ogre::String image
-                                              = GetString(sprites, "image");
-                                            if (image != "")
-                                                sprite->SetImage(image);
-                                            Ogre::String y_str
-                                              = GetString(sprites, "y");
+                                            UiSprite* sprite = new UiSprite(
+                                              name1, name_ + "." + name1, this
+                                            );
+                                            Ogre::String image = GetString(sprites, "image");
+                                            if (image != "") sprite->SetImage(image);
+                                            Ogre::String y_str = GetString(sprites, "y");
                                             if (y_str != ""){
                                             if (y_str != ""){
                                                 float y_percent = 0;
                                                 float y_percent = 0;
                                                 float y = 0;
                                                 float y = 0;
-                                                ParsePercent(
-                                                  y_percent, y, y_str
-                                                );
+                                                ParsePercent(y_percent, y, y_str);
                                                 new_char.sprite_y = y;
                                                 new_char.sprite_y = y;
                                             }
                                             }
-                                            Ogre::String width_str
-                                              = GetString(sprites, "width");
+                                            Ogre::String width_str = GetString(sprites, "width");
                                             if (width_str != ""){
                                             if (width_str != ""){
                                                 float width_percent = 0;
                                                 float width_percent = 0;
                                                 float width = 0;
                                                 float width = 0;
-                                                ParsePercent(
-                                                  width_percent, width,
-                                                  width_str
-                                                );
+                                                ParsePercent(width_percent, width, width_str);
                                                 sprite->SetWidth(0, width);
                                                 sprite->SetWidth(0, width);
                                             }
                                             }
-                                            Ogre::String height_str
-                                              = GetString(sprites, "height");
+                                            Ogre::String height_str = GetString(sprites, "height");
                                             if (height_str != ""){
                                             if (height_str != ""){
                                                 float height_percent = 0;
                                                 float height_percent = 0;
                                                 float height = 0;
                                                 float height = 0;
-                                                ParsePercent(
-                                                  height_percent, height,
-                                                  height_str
-                                                );
-                                                sprite->SetHeight(
-                                                  height_percent, height
-                                                );
+                                                ParsePercent(height_percent, height, height_str);
+                                                sprite->SetHeight(height_percent, height);
                                             }
                                             }
                                             sprite->SetVisible(false);
                                             sprite->SetVisible(false);
                                             AddChild(sprite);
                                             AddChild(sprite);
@@ -908,29 +756,19 @@ void UiTextArea::CreateVertexBuffer(){
     max_letters_ = 1024;
     max_letters_ = 1024;
     render_operation_.vertexData = new Ogre::VertexData;
     render_operation_.vertexData = new Ogre::VertexData;
     render_operation_.vertexData->vertexStart = 0;
     render_operation_.vertexData->vertexStart = 0;
-
-    Ogre::VertexDeclaration* vertex_declaration
-      = render_operation_.vertexData->vertexDeclaration;
-
+    Ogre::VertexDeclaration* vertex_declaration = render_operation_.vertexData->vertexDeclaration;
     size_t offset = 0;
     size_t offset = 0;
     vertex_declaration->addElement(0, 0, Ogre::VET_FLOAT3, Ogre::VES_POSITION);
     vertex_declaration->addElement(0, 0, Ogre::VET_FLOAT3, Ogre::VES_POSITION);
     offset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT3);
     offset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT3);
-    vertex_declaration->addElement(
-      0, offset, Ogre::VET_FLOAT4, Ogre::VES_DIFFUSE
-    );
+    vertex_declaration->addElement(0, offset, Ogre::VET_FLOAT4, Ogre::VES_DIFFUSE);
     offset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT4);
     offset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT4);
-    vertex_declaration->addElement(
-      0, offset, Ogre::VET_FLOAT2, Ogre::VES_TEXTURE_COORDINATES
-    );
+    vertex_declaration->addElement(0, offset, Ogre::VET_FLOAT2, Ogre::VES_TEXTURE_COORDINATES);
 
 
-    vertex_buffer_
-      = Ogre::HardwareBufferManager::getSingletonPtr()->createVertexBuffer(
-        vertex_declaration->getVertexSize(0), max_letters_ * 6,
-        Ogre::HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY, false
-      );
-    render_operation_.vertexData->vertexBufferBinding->setBinding(
-      0, vertex_buffer_
+    vertex_buffer_ = Ogre::HardwareBufferManager::getSingletonPtr()->createVertexBuffer(
+      vertex_declaration->getVertexSize(0), max_letters_ * 6,
+      Ogre::HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY, false
     );
     );
+    render_operation_.vertexData->vertexBufferBinding->setBinding(0, vertex_buffer_);
     render_operation_.operationType = Ogre::RenderOperation::OT_TRIANGLE_LIST;
     render_operation_.operationType = Ogre::RenderOperation::OT_TRIANGLE_LIST;
     render_operation_.useIndexes = false;
     render_operation_.useIndexes = false;
 }
 }

+ 29 - 77
V-Gears/src/core/XmlMapFile.cpp

@@ -16,6 +16,7 @@
 #include "core/EntityManager.h"
 #include "core/EntityManager.h"
 #include "core/Logger.h"
 #include "core/Logger.h"
 #include "core/ScriptManager.h"
 #include "core/ScriptManager.h"
+#include "core/TextManager.h"
 #include "core/XmlBackground2DFile.h"
 #include "core/XmlBackground2DFile.h"
 #include "core/XmlMapFile.h"
 #include "core/XmlMapFile.h"
 #include "map/VGearsBackground2DFileManager.h"
 #include "map/VGearsBackground2DFileManager.h"
@@ -28,56 +29,40 @@ XmlMapFile::~XmlMapFile(){}
 void XmlMapFile::LoadMap(){
 void XmlMapFile::LoadMap(){
     TiXmlNode* node = file_.RootElement();
     TiXmlNode* node = file_.RootElement();
     if (node == nullptr || node->ValueStr() != "map"){
     if (node == nullptr || node->ValueStr() != "map"){
-        LOG_ERROR(
-          file_.ValueStr()
-          + " is not a valid fields map file! No <map> in root."
-        );
+        LOG_ERROR(file_.ValueStr() + " is not a valid fields map file! No <map> in root.");
         return;
         return;
     }
     }
     node = node->FirstChild();
     node = node->FirstChild();
     while (node != nullptr){
     while (node != nullptr){
-        if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "walkmesh"
-        ){
+        if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "walkmesh"){
             Ogre::String name(GetString(node, "file_name"));
             Ogre::String name(GetString(node, "file_name"));
             if (!name.empty()){
             if (!name.empty()){
                 VGears::WalkmeshFileManager::getSingleton();
                 VGears::WalkmeshFileManager::getSingleton();
-                VGears::WalkmeshFilePtr walkmesh
-                  = VGears::WalkmeshFileManager::getSingleton()
-                    .load(name, "Game").staticCast<VGears::WalkmeshFile>();
+                VGears::WalkmeshFilePtr walkmesh = VGears::WalkmeshFileManager::getSingleton()
+                  .load(name, "Game").staticCast<VGears::WalkmeshFile>();
                 EntityManager::getSingleton().GetWalkmesh()->load(walkmesh);
                 EntityManager::getSingleton().GetWalkmesh()->load(walkmesh);
             }
             }
         }
         }
         else if (
         else if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "movement_rotation"
+          node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "movement_rotation"
         ){
         ){
             Ogre::Degree rotation = Ogre::Degree(GetFloat(node, "degree", 0));
             Ogre::Degree rotation = Ogre::Degree(GetFloat(node, "degree", 0));
-            EntityManager::getSingleton().SetPlayerMoveRotation(
-              Ogre::Radian(rotation)
-            );
+            EntityManager::getSingleton().SetPlayerMoveRotation(Ogre::Radian(rotation));
         }
         }
-        else if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "background2d"
-        ){
+        else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "background2d"){
             Ogre::String name = GetString(node, "file_name");
             Ogre::String name = GetString(node, "file_name");
             if (name != ""){
             if (name != ""){
-                // TODO Migrate this code to a Resource and use it's group to
-                // load the background.
+                // TODO Migrate this code to a Resource and use it's group to load the background.
                 VGears::Background2DFilePtr background
                 VGears::Background2DFilePtr background
                   = VGears::Background2DFileManager::getSingleton()
                   = VGears::Background2DFileManager::getSingleton()
                     .load(name, "Game").staticCast<VGears::Background2DFile>();
                     .load(name, "Game").staticCast<VGears::Background2DFile>();
-                EntityManager::getSingleton().GetBackground2D()->load(
-                  background
-                );
+                EntityManager::getSingleton().GetBackground2D()->load(background);
             }
             }
         }
         }
-        else if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "entity_model"
-        ){
+        else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "texts"){
+            TextManager::getSingleton().LoadFieldText(GetString(node, "file_name"));
+        }
+        else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "entity_model"){
             Ogre::String name = GetString(node, "name");
             Ogre::String name = GetString(node, "name");
             if (name == ""){
             if (name == ""){
                 LOG_ERROR("There is no name specified for <entity_model> tag.");
                 LOG_ERROR("There is no name specified for <entity_model> tag.");
@@ -85,50 +70,32 @@ void XmlMapFile::LoadMap(){
             }
             }
             Ogre::String file_name = GetString(node, "file_name");
             Ogre::String file_name = GetString(node, "file_name");
             if (file_name == ""){
             if (file_name == ""){
-                LOG_ERROR(
-                  "There is no file_name specified for <entity_model> tag."
-                );
+                LOG_ERROR("There is no file_name specified for <entity_model> tag.");
                 continue;
                 continue;
             }
             }
             Ogre::Vector3 position(GetVector3(node, "position"));
             Ogre::Vector3 position(GetVector3(node, "position"));
             Ogre::Degree direction(Ogre::Degree(GetFloat(node, "direction")));
             Ogre::Degree direction(Ogre::Degree(GetFloat(node, "direction")));
-            Ogre::Vector3 scale(
-              GetVector3(node, "scale", Ogre::Vector3::UNIT_SCALE)
-            );
-            Ogre::Quaternion orientation(
-              GetQuaternion(node, "root_orientation")
-            );
+            Ogre::Vector3 scale(GetVector3(node, "scale", Ogre::Vector3::UNIT_SCALE));
+            Ogre::Quaternion orientation(GetQuaternion(node, "root_orientation"));
             int index(GetInt(node, "index"));
             int index(GetInt(node, "index"));
             EntityManager::getSingleton().AddEntity(
             EntityManager::getSingleton().AddEntity(
               name, file_name, position, direction, scale, orientation, index
               name, file_name, position, direction, scale, orientation, index
             );
             );
         }
         }
         else if (
         else if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "entity_trigger"
+          node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "entity_trigger"
         ){
         ){
             Ogre::String name = GetString(node, "name");
             Ogre::String name = GetString(node, "name");
             if (name == ""){
             if (name == ""){
-                LOG_ERROR(
-                  "There is no name specified for <entity_trigger> tag."
-                );
+                LOG_ERROR("There is no name specified for <entity_trigger> tag.");
                 continue;
                 continue;
             }
             }
-            Ogre::Vector3 point1 = GetVector3(
-              node, "point1", Ogre::Vector3::ZERO
-            );
-            Ogre::Vector3 point2 = GetVector3(
-              node, "point2", Ogre::Vector3::ZERO
-            );
+            Ogre::Vector3 point1 = GetVector3(node, "point1", Ogre::Vector3::ZERO);
+            Ogre::Vector3 point2 = GetVector3(node, "point2", Ogre::Vector3::ZERO);
             bool enabled = GetBool(node, "enabled", false);
             bool enabled = GetBool(node, "enabled", false);
-            EntityManager::getSingleton().AddEntityTrigger(
-              name, point1, point2, enabled
-            );
+            EntityManager::getSingleton().AddEntityTrigger(name, point1, point2, enabled);
         }
         }
-        else if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "entity_point"
-        ){
+        else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "entity_point"){
             Ogre::String name = GetString(node, "name");
             Ogre::String name = GetString(node, "name");
             if (name == ""){
             if (name == ""){
                 LOG_ERROR("There is no name specified for <entity_point> tag.");
                 LOG_ERROR("There is no name specified for <entity_point> tag.");
@@ -136,30 +103,19 @@ void XmlMapFile::LoadMap(){
             }
             }
             Ogre::Vector3 position = GetVector3(node, "position");
             Ogre::Vector3 position = GetVector3(node, "position");
             float rotation = GetFloat(node, "rotation");
             float rotation = GetFloat(node, "rotation");
-            EntityManager::getSingleton().AddEntityPoint(
-              name, position, rotation
-            );
+            EntityManager::getSingleton().AddEntityPoint(name, position, rotation);
         }
         }
-        else if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "entity_script"
-        ){
+        else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "entity_script"){
             Ogre::String name = GetString(node, "name");
             Ogre::String name = GetString(node, "name");
             if (name == ""){
             if (name == ""){
-                LOG_ERROR(
-                  "There is no name specified for <entity_script> tag."
-                );
+                LOG_ERROR("There is no name specified for <entity_script> tag.");
                 continue;
                 continue;
             }
             }
             EntityManager::getSingleton().AddEntityScript(name);
             EntityManager::getSingleton().AddEntityScript(name);
         }
         }
-        else if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "script"
-        ){
+        else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "script"){
             Ogre::String file_name = GetString(node, "file_name");
             Ogre::String file_name = GetString(node, "file_name");
-            if (file_name != "")
-                ScriptManager::getSingleton().RunFile(file_name);
+            if (file_name != "") ScriptManager::getSingleton().RunFile(file_name);
         }
         }
         node = node->NextSibling();
         node = node->NextSibling();
     }
     }
@@ -176,12 +132,8 @@ const Ogre::String XmlMapFile::GetWalkmeshFileName(){
     }
     }
     node = node->FirstChild();
     node = node->FirstChild();
     while (node != nullptr){
     while (node != nullptr){
-        if (
-          node->Type() == TiXmlNode::TINYXML_ELEMENT
-          && node->ValueStr() == "walkmesh"
-        ){
+        if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "walkmesh")
             return GetString(node, "file_name");
             return GetString(node, "file_name");
-        }
         node = node->NextSibling();
         node = node->NextSibling();
     }
     }
     LOG_WARNING("Can't find field's walkmesh in " + file_.ValueStr() + ".");
     LOG_WARNING("Can't find field's walkmesh in " + file_.ValueStr() + ".");

+ 1 - 0
V-Gears/src/data/VGearsFLevelFile.cpp

@@ -206,6 +206,7 @@ namespace VGears{
         StringUtil::splitFull(getName(), base_name);
         StringUtil::splitFull(getName(), base_name);
         base_name += SUFFIX_BACKGROUND_2D;
         base_name += SUFFIX_BACKGROUND_2D;
         return base_name;
         return base_name;
+
     }
     }
 
 
 }
 }

+ 16 - 18
V-Gears/src/map/VGearsMapFile.cpp

@@ -21,9 +21,8 @@ namespace VGears{
     const String MapFile::RESOURCE_TYPE("VGearsMapFile");
     const String MapFile::RESOURCE_TYPE("VGearsMapFile");
 
 
     MapFile::MapFile(
     MapFile::MapFile(
-      Ogre::ResourceManager *creator, const String &name,
-      Ogre::ResourceHandle handle, const String &group, bool is_manual,
-      Ogre::ManualResourceLoader *loader
+      Ogre::ResourceManager *creator, const String &name, Ogre::ResourceHandle handle,
+      const String &group, bool is_manual, Ogre::ManualResourceLoader *loader
     ) : Resource(creator, name, handle, group, is_manual, loader){}
     ) : Resource(creator, name, handle, group, is_manual, loader){}
 
 
     MapFile::~MapFile(){unload();}
     MapFile::~MapFile(){unload();}
@@ -36,42 +35,41 @@ namespace VGears{
 
 
     void MapFile::unloadImpl(){
     void MapFile::unloadImpl(){
         script_name_.clear();
         script_name_.clear();
-        background_2d_name.clear();
+        background_2d_name_.clear();
         walkmesh_name_.clear();
         walkmesh_name_.clear();
         forward_direction_ = 0;
         forward_direction_ = 0;
     }
     }
 
 
     size_t MapFile::calculateSize() const{
     size_t MapFile::calculateSize() const{
+        // TODO: Should text size be considered?
         return
         return
-          script_name_.size() + background_2d_name.size()
+          script_name_.size() + background_2d_name_.size()
           + walkmesh_name_.size() + sizeof(forward_direction_);
           + walkmesh_name_.size() + sizeof(forward_direction_);
     }
     }
 
 
     const String& MapFile::GetScriptName() const{return script_name_;}
     const String& MapFile::GetScriptName() const{return script_name_;}
 
 
-    const String& MapFile::GetBackground2dName() const{
-        return background_2d_name;
-    }
+    const String& MapFile::GetBackground2dName() const{return background_2d_name_;}
+
+    const String& MapFile::GetTextsName() const{return texts_name_;}
 
 
     const String& MapFile::GetWalkmeshName() const{return walkmesh_name_;}
     const String& MapFile::GetWalkmeshName() const{return walkmesh_name_;}
 
 
-    const Ogre::Real& MapFile::GetForwardDirection() const{
-        return forward_direction_;
-    }
+    const Ogre::Real& MapFile::GetForwardDirection() const{return forward_direction_;}
+
     MapFile::PointList& MapFile::GetPoints(){return points_;}
     MapFile::PointList& MapFile::GetPoints(){return points_;}
 
 
     MapFile::TriggerList& MapFile::GetTriggers(){return triggers_;}
     MapFile::TriggerList& MapFile::GetTriggers(){return triggers_;}
 
 
-    void MapFile::SetScriptName(const String &script_name){
-        script_name_ = script_name;
-    }
+    void MapFile::SetScriptName(const String &script_name){script_name_ = script_name;}
+
     void MapFile::SetBackground2dName(const String &background2d_name){
     void MapFile::SetBackground2dName(const String &background2d_name){
-        background_2d_name = background2d_name;
+        background_2d_name_ = background2d_name;
     }
     }
 
 
-    void MapFile::SetWalkmeshName(const String &walkmesh_name){
-        walkmesh_name_ = walkmesh_name;
-    }
+    void MapFile::SetTextsName(const String& texts_name){texts_name_ = texts_name;}
+
+    void MapFile::SetWalkmeshName(const String &walkmesh_name){walkmesh_name_ = walkmesh_name;}
 
 
     void MapFile::SetForwardDirection(const Ogre::Real &forward_direction){
     void MapFile::SetForwardDirection(const Ogre::Real &forward_direction){
         forward_direction_ = forward_direction;
         forward_direction_ = forward_direction;

+ 9 - 0
V-Gears/src/map/VGearsMapFileXMLSerializer.cpp

@@ -66,6 +66,15 @@ namespace VGears{
         }
         }
     }
     }
 
 
+    void MapFileXMLSerializer::ReadTexts(TiXmlNode &node, MapFile *dest){
+        TiXmlNode *child(FindChildNode(node, "texts"));
+        if (child != nullptr){
+            String file_name;
+            ReadAttribute(*child, "file_name", file_name);
+            dest->SetTextsName(file_name);
+        }
+    }
+
     void MapFileXMLSerializer::ReadWalkmesh(TiXmlNode &node, MapFile *dest){
     void MapFileXMLSerializer::ReadWalkmesh(TiXmlNode &node, MapFile *dest){
         TiXmlNode *child(FindChildNode(node, "walkmesh"));
         TiXmlNode *child(FindChildNode(node, "walkmesh"));
         if (child != nullptr){
         if (child != nullptr){

+ 5 - 4
data/data/scripts.xml

@@ -1,9 +1,5 @@
 <scripts>
 <scripts>
     <script file="scripts/data.lua" />
     <script file="scripts/data.lua" />
-    <script file="scripts/system.lua" />
-    <script file="scripts/field.lua" />
-    <script file="scripts/battle.lua" />
-    <script file="scripts/battle_ai.lua" />
     <script file="game/accessories.lua" />
     <script file="game/accessories.lua" />
     <script file="game/armors.lua" />
     <script file="game/armors.lua" />
     <script file="game/attacks.lua" />
     <script file="game/attacks.lua" />
@@ -16,5 +12,10 @@
     <script file="game/weapons.lua" />
     <script file="game/weapons.lua" />
     <!-- TODO: Don't always parse initial savemap when loading is implemented. -->
     <!-- TODO: Don't always parse initial savemap when loading is implemented. -->
     <script file="game/initial_savemap.lua" />
     <script file="game/initial_savemap.lua" />
+    <script file="scripts/system.lua" />
+    <script file="scripts/field.lua" />
+    <script file="scripts/battle.lua" />
+    <script file="scripts/battle_ai.lua" />
+
     <system_script name="MapChanger" />
     <system_script name="MapChanger" />
 </scripts>
 </scripts>

+ 4 - 9
data/data/scripts/field.lua

@@ -1,3 +1,6 @@
+-- When V-Gears is run, export character names.
+export_character_names()
+
 --- Helper function that changes field maps through fade in and fadeout
 --- Helper function that changes field maps through fade in and fadeout
 --
 --
 -- @param map_name The target map name.
 -- @param map_name The target map name.
@@ -136,6 +139,7 @@ bit_off = function(bank, variable, bit)
 end
 end
 
 
 --- Retrieves a bit variable.
 --- Retrieves a bit variable.
+--
 -- @param bank Memory bank (0-index, as in game).
 -- @param bank Memory bank (0-index, as in game).
 -- @param variable Bank address (0-index, as in game).
 -- @param variable Bank address (0-index, as in game).
 -- @param bit Address bit (0-index, as in game).
 -- @param bit Address bit (0-index, as in game).
@@ -144,14 +148,6 @@ bit = function(bank, variable, bit)
     return FFVII.BitBanks[bank + 1][variable + 1][bit + 1]
     return FFVII.BitBanks[bank + 1][variable + 1][bit + 1]
 end
 end
 
 
---- Checks if a key is being pressed.
--- @param key_code The code of the key to check.
--- @return True if the key is being pressed, false otherwise.
-KeyOn = function(key_code)
-    return true;
-end
-
-
 --- Stores the coordinates and walkmesh triangle in memory.
 --- Stores the coordinates and walkmesh triangle in memory.
 --
 --
 -- Stores the values as in the original game, without scaling.
 -- Stores the values as in the original game, without scaling.
@@ -170,7 +166,6 @@ axyzi = function(bx, by, bz, bt, id, ax, ay, az, at, scale)
     if entity == nil then
     if entity == nil then
         do return end
         do return end
     end
     end
-    script:wait(0.666667)
     local x, y, z = entity:get_position()
     local x, y, z = entity:get_position()
     local t = entity:get_move_triangle_id()
     local t = entity:get_move_triangle_id()
     FFVII.Banks[bx + 1][ax + 1] = math.floor(x * scale)
     FFVII.Banks[bx + 1][ax + 1] = math.floor(x * scale)

+ 166 - 105
data/data/scripts/system.lua

@@ -1,191 +1,252 @@
-FFVII.set_party = function( character1, character2, character3 )
+--- Export character names to the text manager.
+--
+-- Used to compose dialog with character names. Must be called on start and when a character is
+-- renamed.
+export_character_names = function()
+    for c = 0, 8 do
+        if Characters[c] ~= nil then
+            text_manager:set_character_name(c, Characters[c].name)
+        end
+    end
+end
+
+--- Export party members to the text manager.
+--
+-- Used to compose dialog with party character names. Must be called when the party formation is
+-- changed in any way.
+export_party_members = function()
+    if FFVII.Party[1] == nil then
+        c1 = -1
+    else
+        c1 = FFVII.Party[1]
+    end
+    if FFVII.Party[2] == nil then
+        c2 = -1
+    else
+        c2 = FFVII.Party[2]
+    end
+    if FFVII.Party[3] == nil then
+        c3 = -1
+    else
+        c3 = FFVII.Party[3]
+    end
+    text_manager:set_party(c1, c2, c3)
+end
+
+--- Sets the current party.
+--
+-- @param character1 The first member character ID, the party leader.
+-- @param character2 The second member character ID, can be nil.
+-- @param character3 The third member character ID, can be nil.
+FFVII.set_party = function(character1, character2, character3)
     FFVII.Party[1] = character1
     FFVII.Party[1] = character1
     FFVII.Party[2] = character2
     FFVII.Party[2] = character2
     FFVII.Party[3] = character3
     FFVII.Party[3] = character3
+    export_party_members()
 end
 end
 
 
-
-
-FFVII.is_character = function( character )
+--- Checks if a a character ID actually belongs to a character.
+--
+-- @param character The ID to check.
+-- @return True if the ID is a valid character ID, false otherwise.
+FFVII.is_character = function(character)
     if FFVII.Characters[character] == nil then
     if FFVII.Characters[character] == nil then
         return false
         return false
     end
     end
-
     return true
     return true
 end
 end
 
 
-
-
-FFVII.add_party_character = function( character )
-    if FFVII.Characters[ character ] == nil then
-        print( "Tried add to party invalid character \"" .. character .. "\"." );
+--- Adds a character to the curent party.
+--
+-- @param character ID of the character to add.
+FFVII.add_party_character = function(character)
+    if FFVII.Characters[character] == nil then
+        print("Tried add to party invalid character \"" .. character .. "\".");
         return
         return
     end
     end
-
-    if FFVII.Characters[ character ].party_lock == true then
-        print( "Tried add to party locked character \"" .. character .. "\"." );
+    if FFVII.Characters[character].party_lock == true then
+        print("Tried add to party locked character \"" .. character .. "\".");
         return
         return
     end
     end
-
-    -- check if character already in party
+    -- Check if character already in party
     for x = 1, 3 do
     for x = 1, 3 do
-        if FFVII.Party[ i ] == character then
-            print( "Character \"" .. character .. "\" already in party." );
+        if FFVII.Party[i] == character then
+            print("Character \"" .. character .. "\" already in party.");
             return
             return
         end
         end
     end
     end
-
-    -- try to add in first free slot
+    -- Try to add in first free slot.
     for x = 1, 3 do
     for x = 1, 3 do
-        if FFVII.Party[ i ] == nil then
-            FFVII.Party[ i ] = character
+        if FFVII.Party[i] == nil then
+            FFVII.Party[i] = character
+            export_party_members()
             return
             return
         end
         end
     end
     end
 end
 end
 
 
-
-
-FFVII.remove_party_character = function( character )
-    if FFVII.Characters[ character ] == nil then
-        print( "Tried remove from party invalid character \"" .. character .. "\"." );
+--- Removes a character from the curent party.
+--
+-- @param character ID of the character to remove.
+FFVII.remove_party_character = function(character)
+    if FFVII.Characters[character] == nil then
+        print("Tried remove from party invalid character \"" .. character .. "\".");
         return
         return
     end
     end
-
-    if FFVII.Characters[ character ].party_lock == true then
-        print( "Tried remove from party locked character \"" .. character .. "\"." );
+    if FFVII.Characters[character].party_lock == true then
+        print("Tried remove from party locked character \"" .. character .. "\".");
         return
         return
     end
     end
-
     for x = 1, 3 do
     for x = 1, 3 do
-        if FFVII.Party[ i ] == character then
-            FFVII.Party[ i ] = nil
+        if FFVII.Party[i] == character then
+            FFVII.Party[i] = nil
+            export_party_members()
             return
             return
         end
         end
     end
     end
 end
 end
 
 
-
-
-FFVII.set_party_lock = function( character, lock )
-    if FFVII.Characters[ character ] == nil then
-        print( "Tried set/unset party lock to invalid character \"" .. character .. "\"." );
+--- Locks a character in the party.
+--
+-- Locked characters can't be manually  swapped in or out of the party.
+--
+-- @param character ID of the character to lock.
+FFVII.set_party_lock = function(character, lock)
+    if FFVII.Characters[character] == nil then
+        print("Tried set/unset party lock to invalid character \"" .. character .. "\".");
         return
         return
     end
     end
-
-    FFVII.Characters[ character ].party_lock = lock;
+    FFVII.Characters[character].party_lock = lock;
 end
 end
 
 
-
-
-FFVII.get_party_lock = function( character )
-    if FFVII.Characters[ character ] == nil then
-        print( "Tried get party lock from invalid character \"" .. character .. "\"." );
+--- Checks if a character is locked in the party.
+--
+-- Locked characters can't be manually  swapped in or out of the party.
+--
+-- @param character ID of the character to check for locks.
+FFVII.get_party_lock = function(character)
+    if FFVII.Characters[character] == nil then
+        print("Tried get party lock from invalid character \"" .. character .. "\".");
         return false
         return false
     end
     end
-
-    return FFVII.Characters[ character ].party_lock
+    return FFVII.Characters[character].party_lock
 end
 end
 
 
-
-
-FFVII.set_character_enable = function( character, enable )
-    if FFVII.Characters[ character ] == nil then
-        print( "Tried enable/disable invalid character \"" .. character .. "\"." );
+--- Enables or disables a character is the PHS.
+--
+-- Disabled characters don't appear in the PHS.
+--
+-- @param character ID of the character to enable or disable.
+-- @param enable True to enable, false to disable.
+FFVII.set_character_enable = function(character, enable)
+    if FFVII.Characters[character] == nil then
+        print("Tried enable/disable invalid character \"" .. character .. "\".");
         return
         return
     end
     end
-
-    FFVII.Characters[ character ].enable = enable;
+    FFVII.Characters[character].enable = enable;
 end
 end
 
 
-
-
-FFVII.get_character_enable = function( character )
-    if FFVII.Characters[ character ] == nil then
-        print( "Tried get enabled from invalid character \"" .. character .. "\"." );
+--- Checks if a character is enabled in the PHS.
+--
+-- Disabled characters don't appear in the PHS.
+--
+-- @param character ID of the character to check.
+-- @return True if enabled, false if disables.
+FFVII.get_character_enable = function(character)
+    if FFVII.Characters[character] == nil then
+        print("Tried get enabled from invalid character \"" .. character .. "\".");
         return false
         return false
     end
     end
-
-    return FFVII.Characters[ character ].enable;
+    return FFVII.Characters[character].enable;
 end
 end
 
 
-
-
-FFVII.add_item = function( item, quantity )
-    if FFVII.Items[ item ] == nil then
-        print( "Tried add invalid item \"" .. item .. "\"." );
+--- Adds items to the inventory.
+--
+-- Inventory quantities will be capped at 99.
+--
+-- @param item Item ID.
+-- @param quantity Quantity to add.
+FFVII.add_item = function(item, quantity)
+    if FFVII.Items[item] == nil then
+        print("Tried add invalid item \"" .. item .. "\".");
         return
         return
     end
     end
-
     local old_quantity = 0
     local old_quantity = 0
-    if FFVII.ItemStorage[ item ] ~= nil then
-        old_quantity = FFVII.ItemStorage[ item ]
+    if FFVII.ItemStorage[item] ~= nil then
+        old_quantity = FFVII.ItemStorage[item]
     end
     end
-
-    FFVII.ItemStorage[ item ] = old_quantity + quantity
-
-    if FFVII.ItemStorage[ item ] > 99 then
-        FFVII.ItemStorage[ item ] = 99
+    FFVII.ItemStorage[item] = old_quantity + quantity
+    if FFVII.ItemStorage[item] > 99 then
+        FFVII.ItemStorage[item] = 99
     end
     end
 end
 end
 
 
-
-
-FFVII.get_item_quantity = function( item )
-    if FFVII.Items[ item ] == nil then
-        print( "Tried get quontity for invalid item \"" .. item .. "\"." );
+--- Checks how many items of a type are in the inventory.
+--
+-- @param item The item ID.
+-- @return Number of the items in the inventory.
+FFVII.get_item_quantity = function(item)
+    if FFVII.Items[item] == nil then
+        print("Tried get quontity for invalid item \"" .. item .. "\".");
         return
         return
     end
     end
-
     local quantity = 0
     local quantity = 0
-    if FFVII.ItemStorage[ item ] ~= nil then
-        quantity = FFVII.ItemStorage[ item ]
+    if FFVII.ItemStorage[item] ~= nil then
+        quantity = FFVII.ItemStorage[item]
     end
     end
-
     return quantity
     return quantity
 end
 end
 
 
-
-
-FFVII.remove_item = function( item, quantity )
-    if FFVII.Items[ item ] == nil then
-        print( "Tried remove invalid item \"" .. item .. "\"." );
+--- Removes items from the inventory.
+--
+-- Negative quantities can't remain in the inventory. If there are less than requested to remove,
+-- all of them will be removed.
+--
+-- @param item Item ID.
+-- @param quantity Quantity to remove.
+FFVII.remove_item = function(item, quantity)
+    if FFVII.Items[item] == nil then
+        print("Tried remove invalid item \"" .. item .. "\".");
         return
         return
     end
     end
-
     local old_quantity = 0
     local old_quantity = 0
-    if FFVII.ItemStorage[ item ] ~= nil then
-        old_quantity = FFVII.ItemStorage[ item ]
+    if FFVII.ItemStorage[item] ~= nil then
+        old_quantity = FFVII.ItemStorage[item]
     end
     end
-
-    FFVII.ItemStorage[ item ] = old_quantity - quantity
-
-    if FFVII.ItemStorage[ item ] < 0 then
-        FFVII.ItemStorage[ item ] = 0
+    FFVII.ItemStorage[item] = old_quantity - quantity
+    if FFVII.ItemStorage[item] < 0 then
+        FFVII.ItemStorage[item] = 0
     end
     end
 end
 end
 
 
-
-
-FFVII.add_money = function( amount )
+--- Adds money.
+--
+-- @param amount The money to add.
+-- @todo Fix cap.
+FFVII.add_money = function(amount)
     FFVII.Savemap.money = FFVII.Savemap.money + amount
     FFVII.Savemap.money = FFVII.Savemap.money + amount
 
 
     if FFVII.Savemap.money > 999999 then
     if FFVII.Savemap.money > 999999 then
-        FFVII.ItemStorage[ item ] = 999999
+        FFVII.ItemStorage[item] = 999999
     end
     end
 end
 end
 
 
-
-
+--- Checks the curent money.
+--
+-- @return Current money.
 FFVII.get_money = function()
 FFVII.get_money = function()
     return FFVII.Savemap.money
     return FFVII.Savemap.money
 end
 end
 
 
-
-
-FFVII.remove_money = function( amount )
+--- Removes money.
+--
+-- Negative quantities can't remain as money. If there are less than requested to remove, all of
+-- it will be removed.
+--
+-- @param amount Money to remove.
+FFVII.remove_money = function(amount)
     FFVII.Savemap.money = FFVII.Savemap.money - amount
     FFVII.Savemap.money = FFVII.Savemap.money - amount
     if FFVII.Savemap.money < 0 then
     if FFVII.Savemap.money < 0 then
-        FFVII.ItemStorage[ item ] = 0
+        FFVII.Savemap.money = 0
     end
     end
 end
 end

+ 4 - 7
data/data/texts.xml

@@ -1,14 +1,11 @@
 <texts>
 <texts>
     <language name="english">
     <language name="english">
-        <text file="texts/english/names.xml" />
         <text file="texts/english/menu.xml" />
         <text file="texts/english/menu.xml" />
-        <text file="texts/english/dialogs_receiving.xml" />
-        <text file="texts/english/dialogs_mission1.xml" />
     </language>
     </language>
-    <language name="Japanese">
-        <text file="texts/japanese/names.xml" />
+    <language name="japanese">
         <text file="texts/japanese/menu.xml" />
         <text file="texts/japanese/menu.xml" />
-        <text file="texts/japanese/dialogs_receiving.xml" />
-        <text file="texts/japanese/dialogs_mission1.xml" />
+    </language>
+    <language name="russian">
+        <text file="texts/russian/menu.xml" />
     </language>
     </language>
 </texts>
 </texts>

+ 0 - 2674
data/data/texts/english/dialogs_mission1.xml

@@ -1,2674 +0,0 @@
-<texts>
-<dialog name="elevtr1_0">Platform</dialog>
-
-<dialog name="elevtr1_1">Sector 1 Station</dialog>
-
-<dialog name="elevtr1_2">Sector 1</dialog>
-
-<dialog name="elevtr1_3">No.1 Reactor</dialog>
-
-<dialog name="elevtr1_4">No.5 Reactor</dialog>
-
-<dialog name="elevtr1_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="elevtr1_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="elevtr1_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="elevtr1_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="elevtr1_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="elevtr1_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="elevtr1_11">    <character id="4" />
</dialog>
-
-<dialog name="elevtr1_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="elevtr1_13">    ()
    ()</dialog>
-
-<dialog name="elevtr1_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="elevtr1_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="elevtr1_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="elevtr1_17">opening(<image sprite="ButtonSquare" />)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="elevtr1_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="elevtr1_19">para
66F
67F(<image sprite="ButtonSquare" />)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="elevtr1_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="elevtr1_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="elevtr1_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="elevtr1_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="elevtr1_24"></dialog>
-
-<dialog name="elevtr1_25">        </dialog>
-
-<dialog name="elevtr1_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="elevtr1_27"></dialog>
-
-<dialog name="elevtr1_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="elevtr1_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="elevtr1_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="elevtr1_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="elevtr1_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="elevtr1_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="elevtr1_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="elevtr1_35">Biggs
&quot;Didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="elevtr1_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="elevtr1_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="elevtr1_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="elevtr1_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="elevtr1_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="elevtr1_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="elevtr1_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pushing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="elevtr1_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="elevtr1_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="elevtr1_45">Switch On.</dialog>
-
-<dialog name="elevtr1_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="elevtr1_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="elevtr1_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="elevtr1_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="elevtr1_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="elevtr1_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="elevtr1_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="elevtr1_53"><include name="char_barret" />
&quot;The Planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="elevtr1_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this Planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="elevtr1_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="elevtr1_56"><include name="char_barret" />
&quot;@#&amp;^%$! From now on
    you come with me.&quot;</dialog>
-
-<dialog name="elevtr1_57"><include name="char_barret" />
&quot;Little by little the reactors&apos;ll drain out
    all the life.
    Then that&apos;ll be that.&quot;</dialog>
-
-<dialog name="elevtr1_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="elevtr1_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="elevtr1_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="elevtr1_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="elevtr1_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="elevtr1_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="elevtr1_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="elevtr1_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="elevtr1_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="elevtr1_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="elevtr1_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="elevtr1_69">Biggs
&quot;I only let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="elevtr1_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="elevtr1_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="elevtr1_72">Jessie
&quot;Push [OK] in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="elevtr1_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="elevtr1_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="elevtr1_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="elevtr1_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="elevtr1_77"><include name="char_barret" />
&quot;When we blow this place, this ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="elevtr1_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="elevtr1_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="elevtr1_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="elevtr1_81"><include name="char_cloud" />
&quot;Fine, be my guest.&quot;</dialog>
-
-<dialog name="elevtr1_82">                 Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="elevtr1_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="elevtr1_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="elevtr1_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="elevtr1_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="elevtr1_87"><include name="char_barret" />
&quot;Heads up, here they come!&quot;</dialog>
-
-<dialog name="elevtr1_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="elevtr1_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="elevtr1_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="elevtr1_91">Ten minutes to detonation!</dialog>
-
-<dialog name="elevtr1_92">Two minutes remaining</dialog>
-
-<dialog name="elevtr1_93">One minute remaining</dialog>
-
-<dialog name="elevtr1_94">Thirty seconds remaining</dialog>
-
-<dialog name="elevtr1_95">Ten seconds remaining</dialog>
-
-<dialog name="elevtr1_96">Five seconds remaining</dialog>
-
-<dialog name="elevtr1_97">Four seconds remaining</dialog>
-
-<dialog name="elevtr1_98">Three seconds remaining</dialog>
-
-<dialog name="elevtr1_99">Two seconds remaining</dialog>
-
-<dialog name="elevtr1_100">One second remaining</dialog>
-
-<dialog name="elevtr1_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="elevtr1_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="elevtr1_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="elevtr1_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="elevtr1_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="elevtr1_106"><include name="char_cloud" />
&quot;Let me guess...
    You&apos;re my chaperone, right?&quot;</dialog>
-
-<dialog name="elevtr1_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="elevtr1_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="elevtr1_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="elevtr1_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="elevtr1_111">Am I...human?</dialog>
-
-<dialog name="elevtr1_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="elevtr1_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="md1_2_0">Platform</dialog>
-
-<dialog name="md1_2_1">Sector 1 Station</dialog>
-
-<dialog name="md1_2_2">Sector 1</dialog>
-
-<dialog name="md1_2_3">No.1 Reactor</dialog>
-
-<dialog name="md1_2_4">No.5 Reactor</dialog>
-
-<dialog name="md1_2_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="md1_2_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="md1_2_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="md1_2_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="md1_2_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="md1_2_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="md1_2_11">    <character id="4" />
</dialog>
-
-<dialog name="md1_2_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="md1_2_13">    ()
    ()</dialog>
-
-<dialog name="md1_2_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="md1_2_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="md1_2_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="md1_2_17">opening(<image sprite="ButtonSquare" />)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="md1_2_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="md1_2_19">para
66F
67F(<image sprite="ButtonSquare" />)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="md1_2_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="md1_2_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="md1_2_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="md1_2_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="md1_2_24"></dialog>
-
-<dialog name="md1_2_25">        </dialog>
-
-<dialog name="md1_2_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="md1_2_27"></dialog>
-
-<dialog name="md1_2_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="md1_2_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="md1_2_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="md1_2_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="md1_2_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="md1_2_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="md1_2_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="md1_2_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="md1_2_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1_2_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="md1_2_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="md1_2_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="md1_2_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="md1_2_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="md1_2_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="md1_2_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1_2_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="md1_2_45">Switch On.</dialog>
-
-<dialog name="md1_2_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="md1_2_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="md1_2_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="md1_2_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="md1_2_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="md1_2_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="md1_2_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="md1_2_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="md1_2_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="md1_2_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="md1_2_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="md1_2_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="md1_2_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="md1_2_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="md1_2_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="md1_2_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="md1_2_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="md1_2_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="md1_2_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="md1_2_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="md1_2_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="md1_2_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="md1_2_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="md1_2_69">Biggs
&quot;I just let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="md1_2_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="md1_2_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="md1_2_72">Jessie
&quot;Push the [OK] button in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="md1_2_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="md1_2_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="md1_2_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="md1_2_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="md1_2_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="md1_2_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="md1_2_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="md1_2_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="md1_2_81"><include name="char_cloud" />
&quot;Fine, be my guest.&quot;</dialog>
-
-<dialog name="md1_2_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="md1_2_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="md1_2_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="md1_2_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="md1_2_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="md1_2_87"><include name="char_barret" />
&quot;Heads up, here they come!&quot;</dialog>
-
-<dialog name="md1_2_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="md1_2_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="md1_2_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="md1_2_91">Ten minutes to detonation!</dialog>
-
-<dialog name="md1_2_92">Two minutes remaining</dialog>
-
-<dialog name="md1_2_93">One minute remaining</dialog>
-
-<dialog name="md1_2_94">Thirty seconds remaining</dialog>
-
-<dialog name="md1_2_95">Ten seconds remaining</dialog>
-
-<dialog name="md1_2_96">Five seconds remaining</dialog>
-
-<dialog name="md1_2_97">Four seconds remaining</dialog>
-
-<dialog name="md1_2_98">Three seconds remaining</dialog>
-
-<dialog name="md1_2_99">Two seconds remaining</dialog>
-
-<dialog name="md1_2_100">One second remaining</dialog>
-
-<dialog name="md1_2_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="md1_2_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="md1_2_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="md1_2_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="md1_2_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="md1_2_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperone, right?&quot;</dialog>
-
-<dialog name="md1_2_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="md1_2_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="md1_2_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1_2_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="md1_2_111">Am I...human?</dialog>
-
-<dialog name="md1_2_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="md1_2_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="md8_1_0"><include name="char_barret" />
&quot;Alright, now let&apos;s get out of here.&quot;</dialog>
-
-<dialog name="md8_1_1"><include name="char_barret" />
&quot;Rendezvous at Sector 8 station!
    Split up and get on the train!&quot;</dialog>
-
-<dialog name="md8_1_2"><include name="char_cloud" />
&quot;H, hey!&quot;</dialog>
-
-<dialog name="md8_1_3"><include name="char_barret" />
&quot;If it&apos;s about your money,
    wait &apos;til we get back.&quot;</dialog>
-
-<dialog name="md8_1_4">Sector 8</dialog>
-
-<dialog name="md8_4_0">Biggs
&quot;That should keep the planet going...
    at least a little longer.&quot;</dialog>
-
-<dialog name="md8_4_1">Wedge
&quot;Yeah.&quot;</dialog>
-
-<dialog name="md8_4_2"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="md8_4_3">Jessie
&quot;OK! 
    Now everyone get back.&quot;</dialog>
-
-<dialog name="md8_4_4">Sector 8</dialog>
-
-<dialog name="md1_1_0">Platform</dialog>
-
-<dialog name="md1_1_1">Sector 1 Station</dialog>
-
-<dialog name="md1_1_2">Sector 1</dialog>
-
-<dialog name="md1_1_3">No.1 Reactor</dialog>
-
-<dialog name="md1_1_4">No.5 Reactor</dialog>
-
-<dialog name="md1_1_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="md1_1_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="md1_1_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="md1_1_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="md1_1_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="md1_1_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="md1_1_11">    <character id="4" />
</dialog>
-
-<dialog name="md1_1_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="md1_1_13">    ()
    ()</dialog>
-
-<dialog name="md1_1_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="md1_1_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="md1_1_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="md1_1_17">opening(*)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="md1_1_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="md1_1_19">para
66F
67F(*)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="md1_1_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="md1_1_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="md1_1_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="md1_1_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="md1_1_24"></dialog>
-
-<dialog name="md1_1_25">        </dialog>
-
-<dialog name="md1_1_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="md1_1_27"></dialog>
-
-<dialog name="md1_1_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="md1_1_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="md1_1_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="md1_1_31">Biggs
&quot;Wow! You used to be in SOLDIER, huh?
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="md1_1_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="md1_1_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="md1_1_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="md1_1_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="md1_1_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1_1_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="md1_1_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="md1_1_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="md1_1_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="md1_1_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="md1_1_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="md1_1_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1_1_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="md1_1_45">Switch On.</dialog>
-
-<dialog name="md1_1_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="md1_1_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="md1_1_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="md1_1_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="md1_1_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="md1_1_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="md1_1_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="md1_1_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="md1_1_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="md1_1_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="md1_1_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="md1_1_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="md1_1_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="md1_1_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="md1_1_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="md1_1_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="md1_1_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="md1_1_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="md1_1_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="md1_1_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="md1_1_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="md1_1_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="md1_1_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="md1_1_69">Biggs
&quot;I just let my guard down for a minute...
    and someone got behind me...&quot;</dialog>
-
-<dialog name="md1_1_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="md1_1_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="md1_1_72">Jessie
&quot;Push [OK] in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="md1_1_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="md1_1_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="md1_1_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="md1_1_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="md1_1_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="md1_1_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="md1_1_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="md1_1_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="md1_1_81"><include name="char_cloud" />
&quot;Fine, I&apos;ll do it.&quot;</dialog>
-
-<dialog name="md1_1_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="md1_1_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="md1_1_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="md1_1_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="md1_1_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="md1_1_87"><include name="char_barret" />
&quot;Heads up, here they come!&quot;</dialog>
-
-<dialog name="md1_1_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="md1_1_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="md1_1_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="md1_1_91">Ten minutes to detonation!</dialog>
-
-<dialog name="md1_1_92">Two minutes remaining</dialog>
-
-<dialog name="md1_1_93">One minute remaining</dialog>
-
-<dialog name="md1_1_94">Thirty seconds remaining</dialog>
-
-<dialog name="md1_1_95">Ten seconds remaining</dialog>
-
-<dialog name="md1_1_96">Five seconds remaining</dialog>
-
-<dialog name="md1_1_97">Four seconds remaining</dialog>
-
-<dialog name="md1_1_98">Three seconds remaining</dialog>
-
-<dialog name="md1_1_99">Two seconds remaining</dialog>
-
-<dialog name="md1_1_100">One second remaining</dialog>
-
-<dialog name="md1_1_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="md1_1_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="md1_1_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="md1_1_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="md1_1_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="md1_1_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperone, right?&quot;</dialog>
-
-<dialog name="md1_1_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="md1_1_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="md1_1_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1_1_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="md1_1_111">Am I...human?</dialog>
-
-<dialog name="md1_1_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="md1_1_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="md1stin_0">Platform</dialog>
-
-<dialog name="md1stin_1">Sector 1 Station</dialog>
-
-<dialog name="md1stin_2">Sector 1</dialog>
-
-<dialog name="md1stin_3">No.1 Reactor</dialog>
-
-<dialog name="md1stin_4">No.5 Reactor</dialog>
-
-<dialog name="md1stin_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="md1stin_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="md1stin_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="md1stin_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="md1stin_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="md1stin_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="md1stin_11">    <character id="4" />
</dialog>
-
-<dialog name="md1stin_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="md1stin_13">    ()
    ()</dialog>
-
-<dialog name="md1stin_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="md1stin_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="md1stin_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="md1stin_17">opening(<image sprite="ButtonSquare" />)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="md1stin_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="md1stin_19">para
66F
67F(<image sprite="ButtonSquare" />)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="md1stin_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="md1stin_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="md1stin_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="md1stin_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="md1stin_24"></dialog>
-
-<dialog name="md1stin_25">        </dialog>
-
-<dialog name="md1stin_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="md1stin_27"></dialog>
-
-<dialog name="md1stin_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="md1stin_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="md1stin_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="md1stin_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="md1stin_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="md1stin_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="md1stin_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="md1stin_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="md1stin_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1stin_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="md1stin_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="md1stin_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="md1stin_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="md1stin_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="md1stin_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="md1stin_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1stin_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="md1stin_45">Switch On.</dialog>
-
-<dialog name="md1stin_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="md1stin_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="md1stin_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="md1stin_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="md1stin_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="md1stin_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="md1stin_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="md1stin_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="md1stin_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="md1stin_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="md1stin_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="md1stin_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="md1stin_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="md1stin_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="md1stin_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="md1stin_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="md1stin_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="md1stin_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="md1stin_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="md1stin_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="md1stin_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="md1stin_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="md1stin_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="md1stin_69">Biggs
&quot;I just let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="md1stin_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="md1stin_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="md1stin_72">Jessie
&quot;Push the [OK] button in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="md1stin_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="md1stin_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="md1stin_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="md1stin_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="md1stin_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="md1stin_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="md1stin_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="md1stin_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="md1stin_81"><include name="char_cloud" />
&quot;Fine, be my guest.&quot;</dialog>
-
-<dialog name="md1stin_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="md1stin_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="md1stin_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="md1stin_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="md1stin_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="md1stin_87"><include name="char_barret" />
&quot;Heads up, here they come!&quot;</dialog>
-
-<dialog name="md1stin_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="md1stin_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="md1stin_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="md1stin_91">Ten minutes to detonation!</dialog>
-
-<dialog name="md1stin_92">Two minutes remaining</dialog>
-
-<dialog name="md1stin_93">One minute remaining</dialog>
-
-<dialog name="md1stin_94">Thirty seconds remaining</dialog>
-
-<dialog name="md1stin_95">Ten seconds remaining</dialog>
-
-<dialog name="md1stin_96">Five seconds remaining</dialog>
-
-<dialog name="md1stin_97">Four seconds remaining</dialog>
-
-<dialog name="md1stin_98">Three seconds remaining</dialog>
-
-<dialog name="md1stin_99">Two seconds remaining</dialog>
-
-<dialog name="md1stin_100">One second remaining</dialog>
-
-<dialog name="md1stin_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="md1stin_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="md1stin_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="md1stin_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="md1stin_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="md1stin_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperone, right?&quot;</dialog>
-
-<dialog name="md1stin_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="md1stin_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="md1stin_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="md1stin_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="md1stin_111">Am I...human?</dialog>
-
-<dialog name="md1stin_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="md1stin_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="nmkin_1_0">Platform</dialog>
-
-<dialog name="nmkin_1_1">Sector 1 Station</dialog>
-
-<dialog name="nmkin_1_2">Sector 1</dialog>
-
-<dialog name="nmkin_1_3">No.1 Reactor</dialog>
-
-<dialog name="nmkin_1_4">No.5 Reactor</dialog>
-
-<dialog name="nmkin_1_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="nmkin_1_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="nmkin_1_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="nmkin_1_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="nmkin_1_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="nmkin_1_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="nmkin_1_11">    <character id="4" />
</dialog>
-
-<dialog name="nmkin_1_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="nmkin_1_13">    ()
    ()</dialog>
-
-<dialog name="nmkin_1_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="nmkin_1_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="nmkin_1_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="nmkin_1_17">opening(*)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="nmkin_1_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="nmkin_1_19">para
66F
67F(*)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="nmkin_1_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="nmkin_1_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="nmkin_1_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="nmkin_1_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="nmkin_1_24"></dialog>
-
-<dialog name="nmkin_1_25">        </dialog>
-
-<dialog name="nmkin_1_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="nmkin_1_27"></dialog>
-
-<dialog name="nmkin_1_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="nmkin_1_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="nmkin_1_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="nmkin_1_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="nmkin_1_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="nmkin_1_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="nmkin_1_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="nmkin_1_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="nmkin_1_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_1_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="nmkin_1_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="nmkin_1_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="nmkin_1_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="nmkin_1_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="nmkin_1_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="nmkin_1_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_1_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="nmkin_1_45">Switch On.</dialog>
-
-<dialog name="nmkin_1_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="nmkin_1_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="nmkin_1_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="nmkin_1_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="nmkin_1_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="nmkin_1_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="nmkin_1_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="nmkin_1_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="nmkin_1_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="nmkin_1_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="nmkin_1_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="nmkin_1_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="nmkin_1_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="nmkin_1_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="nmkin_1_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="nmkin_1_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="nmkin_1_62">Jessie
&quot;Code deciphered.&quot;</dialog>
-
-<dialog name="nmkin_1_63">Biggs
&quot;Code deciphered.&quot;</dialog>
-
-<dialog name="nmkin_1_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="nmkin_1_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="nmkin_1_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_1_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="nmkin_1_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="nmkin_1_69">Biggs
&quot;I just let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="nmkin_1_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="nmkin_1_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="nmkin_1_72">Jessie
&quot;Push [OK] in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="nmkin_1_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="nmkin_1_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="nmkin_1_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="nmkin_1_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="nmkin_1_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="nmkin_1_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="nmkin_1_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="nmkin_1_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="nmkin_1_81"><include name="char_cloud" />
&quot;Fine, be my guest.&quot;</dialog>
-
-<dialog name="nmkin_1_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="nmkin_1_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="nmkin_1_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="nmkin_1_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="nmkin_1_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="nmkin_1_87"><include name="char_barret" />
&quot;Heads up, here it comes!&quot;</dialog>
-
-<dialog name="nmkin_1_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="nmkin_1_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="nmkin_1_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="nmkin_1_91">Ten minutes to detonation!</dialog>
-
-<dialog name="nmkin_1_92">Two minutes remaining</dialog>
-
-<dialog name="nmkin_1_93">One minute remaining</dialog>
-
-<dialog name="nmkin_1_94">Thirty seconds remaining</dialog>
-
-<dialog name="nmkin_1_95">Ten seconds remaining</dialog>
-
-<dialog name="nmkin_1_96">Five seconds remaining</dialog>
-
-<dialog name="nmkin_1_97">Four seconds remaining</dialog>
-
-<dialog name="nmkin_1_98">Three seconds remaining</dialog>
-
-<dialog name="nmkin_1_99">Two seconds remaining</dialog>
-
-<dialog name="nmkin_1_100">One second remaining</dialog>
-
-<dialog name="nmkin_1_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="nmkin_1_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_1_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="nmkin_1_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="nmkin_1_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="nmkin_1_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperon, right?&quot;</dialog>
-
-<dialog name="nmkin_1_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="nmkin_1_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="nmkin_1_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_1_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="nmkin_1_111">Am I...human?</dialog>
-
-<dialog name="nmkin_1_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="nmkin_1_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="nmkin_2_0">Platform</dialog>
-
-<dialog name="nmkin_2_1">Sector 1 Station</dialog>
-
-<dialog name="nmkin_2_2">Sector 1</dialog>
-
-<dialog name="nmkin_2_3">No.1 Reactor</dialog>
-
-<dialog name="nmkin_2_4">No.5 Reactor</dialog>
-
-<dialog name="nmkin_2_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="nmkin_2_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="nmkin_2_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="nmkin_2_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="nmkin_2_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="nmkin_2_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="nmkin_2_11">    <character id="4" />
</dialog>
-
-<dialog name="nmkin_2_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="nmkin_2_13">    ()
    ()</dialog>
-
-<dialog name="nmkin_2_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="nmkin_2_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="nmkin_2_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="nmkin_2_17">opening(<image sprite="ButtonSquare" />)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="nmkin_2_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="nmkin_2_19">para
66F
67F(<image sprite="ButtonSquare" />)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="nmkin_2_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="nmkin_2_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="nmkin_2_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="nmkin_2_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="nmkin_2_24"></dialog>
-
-<dialog name="nmkin_2_25">        </dialog>
-
-<dialog name="nmkin_2_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="nmkin_2_27"></dialog>
-
-<dialog name="nmkin_2_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="nmkin_2_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="nmkin_2_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="nmkin_2_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="nmkin_2_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="nmkin_2_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="nmkin_2_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="nmkin_2_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="nmkin_2_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_2_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="nmkin_2_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="nmkin_2_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="nmkin_2_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="nmkin_2_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="nmkin_2_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="nmkin_2_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_2_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="nmkin_2_45">Switch On.</dialog>
-
-<dialog name="nmkin_2_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="nmkin_2_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="nmkin_2_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="nmkin_2_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="nmkin_2_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="nmkin_2_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="nmkin_2_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="nmkin_2_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="nmkin_2_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="nmkin_2_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="nmkin_2_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="nmkin_2_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="nmkin_2_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="nmkin_2_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="nmkin_2_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="nmkin_2_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="nmkin_2_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nmkin_2_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nmkin_2_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="nmkin_2_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="nmkin_2_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_2_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="nmkin_2_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="nmkin_2_69">Biggs
&quot;I just let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="nmkin_2_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="nmkin_2_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="nmkin_2_72">Jessie
&quot;Push [OK] in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="nmkin_2_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="nmkin_2_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="nmkin_2_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="nmkin_2_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="nmkin_2_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="nmkin_2_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="nmkin_2_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="nmkin_2_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="nmkin_2_81"><include name="char_cloud" />
&quot;Fine, be my guest.&quot;</dialog>
-
-<dialog name="nmkin_2_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="nmkin_2_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="nmkin_2_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="nmkin_2_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="nmkin_2_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="nmkin_2_87"><include name="char_barret" />
&quot;Heads up, here it comes!&quot;</dialog>
-
-<dialog name="nmkin_2_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="nmkin_2_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="nmkin_2_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="nmkin_2_91">Ten minutes to detonation!</dialog>
-
-<dialog name="nmkin_2_92">Two minutes remaining</dialog>
-
-<dialog name="nmkin_2_93">One minute remaining</dialog>
-
-<dialog name="nmkin_2_94">Thirty seconds remaining</dialog>
-
-<dialog name="nmkin_2_95">Ten seconds remaining</dialog>
-
-<dialog name="nmkin_2_96">Five seconds remaining</dialog>
-
-<dialog name="nmkin_2_97">Four seconds remaining</dialog>
-
-<dialog name="nmkin_2_98">Three seconds remaining</dialog>
-
-<dialog name="nmkin_2_99">Two seconds remaining</dialog>
-
-<dialog name="nmkin_2_100">One second remaining</dialog>
-
-<dialog name="nmkin_2_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="nmkin_2_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_2_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="nmkin_2_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="nmkin_2_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="nmkin_2_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperon, right?&quot;</dialog>
-
-<dialog name="nmkin_2_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="nmkin_2_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="nmkin_2_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_2_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="nmkin_2_111">Am I...human?</dialog>
-
-<dialog name="nmkin_2_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="nmkin_2_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="nmkin_3_0">Platform</dialog>
-
-<dialog name="nmkin_3_1">Sector 1 Station</dialog>
-
-<dialog name="nmkin_3_2">Sector 1</dialog>
-
-<dialog name="nmkin_3_3">No.1 Reactor</dialog>
-
-<dialog name="nmkin_3_4">No.5 Reactor</dialog>
-
-<dialog name="nmkin_3_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="nmkin_3_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="nmkin_3_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="nmkin_3_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="nmkin_3_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="nmkin_3_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="nmkin_3_11">    <character id="4" />
</dialog>
-
-<dialog name="nmkin_3_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="nmkin_3_13">    ()
    ()</dialog>
-
-<dialog name="nmkin_3_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="nmkin_3_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="nmkin_3_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="nmkin_3_17">opening(<image sprite="ButtonSquare" />)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="nmkin_3_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="nmkin_3_19">para
66F
67F(<image sprite="ButtonSquare" />)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="nmkin_3_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="nmkin_3_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="nmkin_3_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="nmkin_3_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="nmkin_3_24"></dialog>
-
-<dialog name="nmkin_3_25">        </dialog>
-
-<dialog name="nmkin_3_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="nmkin_3_27"></dialog>
-
-<dialog name="nmkin_3_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="nmkin_3_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="nmkin_3_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="nmkin_3_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="nmkin_3_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="nmkin_3_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="nmkin_3_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="nmkin_3_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="nmkin_3_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_3_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="nmkin_3_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="nmkin_3_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="nmkin_3_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="nmkin_3_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="nmkin_3_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="nmkin_3_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_3_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="nmkin_3_45">Switch On.</dialog>
-
-<dialog name="nmkin_3_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="nmkin_3_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="nmkin_3_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="nmkin_3_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="nmkin_3_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="nmkin_3_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="nmkin_3_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="nmkin_3_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="nmkin_3_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="nmkin_3_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="nmkin_3_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="nmkin_3_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="nmkin_3_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="nmkin_3_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="nmkin_3_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="nmkin_3_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="nmkin_3_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nmkin_3_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nmkin_3_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="nmkin_3_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="nmkin_3_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_3_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="nmkin_3_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="nmkin_3_69">Biggs
&quot;I just let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="nmkin_3_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="nmkin_3_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="nmkin_3_72">Jessie
&quot;Push [OK] in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="nmkin_3_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="nmkin_3_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="nmkin_3_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="nmkin_3_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="nmkin_3_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="nmkin_3_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="nmkin_3_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="nmkin_3_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="nmkin_3_81"><include name="char_cloud" />
&quot;Fine, be my guest.&quot;</dialog>
-
-<dialog name="nmkin_3_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="nmkin_3_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="nmkin_3_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="nmkin_3_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="nmkin_3_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="nmkin_3_87"><include name="char_barret" />
&quot;Heads up, here it comes!&quot;</dialog>
-
-<dialog name="nmkin_3_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="nmkin_3_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="nmkin_3_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="nmkin_3_91">Ten minutes to detonation!</dialog>
-
-<dialog name="nmkin_3_92">Two minutes remaining</dialog>
-
-<dialog name="nmkin_3_93">One minute remaining</dialog>
-
-<dialog name="nmkin_3_94">Thirty seconds remaining</dialog>
-
-<dialog name="nmkin_3_95">Ten seconds remaining</dialog>
-
-<dialog name="nmkin_3_96">Five seconds remaining</dialog>
-
-<dialog name="nmkin_3_97">Four seconds remaining</dialog>
-
-<dialog name="nmkin_3_98">Three seconds remaining</dialog>
-
-<dialog name="nmkin_3_99">Two seconds remaining</dialog>
-
-<dialog name="nmkin_3_100">One second remaining</dialog>
-
-<dialog name="nmkin_3_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="nmkin_3_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_3_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="nmkin_3_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="nmkin_3_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="nmkin_3_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperon, right?&quot;</dialog>
-
-<dialog name="nmkin_3_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="nmkin_3_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="nmkin_3_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_3_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="nmkin_3_111">Am I...human?</dialog>
-
-<dialog name="nmkin_3_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="nmkin_3_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="nmkin_4_0">Platform</dialog>
-
-<dialog name="nmkin_4_1">Sector 1 Station</dialog>
-
-<dialog name="nmkin_4_2">Sector 1</dialog>
-
-<dialog name="nmkin_4_3">No.1 Reactor</dialog>
-
-<dialog name="nmkin_4_4">No.5 Reactor</dialog>
-
-<dialog name="nmkin_4_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="nmkin_4_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="nmkin_4_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="nmkin_4_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="nmkin_4_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="nmkin_4_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="nmkin_4_11">    <character id="4" />
</dialog>
-
-<dialog name="nmkin_4_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="nmkin_4_13">    ()
    ()</dialog>
-
-<dialog name="nmkin_4_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="nmkin_4_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="nmkin_4_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="nmkin_4_17">opening(<image sprite="ButtonSquare" />)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="nmkin_4_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="nmkin_4_19">para
66F
67F(<image sprite="ButtonSquare" />)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="nmkin_4_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="nmkin_4_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="nmkin_4_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="nmkin_4_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="nmkin_4_24"></dialog>
-
-<dialog name="nmkin_4_25">        </dialog>
-
-<dialog name="nmkin_4_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="nmkin_4_27"></dialog>
-
-<dialog name="nmkin_4_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="nmkin_4_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="nmkin_4_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="nmkin_4_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="nmkin_4_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="nmkin_4_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="nmkin_4_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="nmkin_4_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="nmkin_4_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_4_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="nmkin_4_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="nmkin_4_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="nmkin_4_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="nmkin_4_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="nmkin_4_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="nmkin_4_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_4_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="nmkin_4_45">Switch On.</dialog>
-
-<dialog name="nmkin_4_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="nmkin_4_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="nmkin_4_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="nmkin_4_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="nmkin_4_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="nmkin_4_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="nmkin_4_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="nmkin_4_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="nmkin_4_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="nmkin_4_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="nmkin_4_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="nmkin_4_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="nmkin_4_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="nmkin_4_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="nmkin_4_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="nmkin_4_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="nmkin_4_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nmkin_4_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nmkin_4_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="nmkin_4_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="nmkin_4_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_4_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="nmkin_4_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="nmkin_4_69">Biggs
&quot;I just let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="nmkin_4_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="nmkin_4_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="nmkin_4_72">Jessie
&quot;Push [OK] in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="nmkin_4_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="nmkin_4_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="nmkin_4_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="nmkin_4_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="nmkin_4_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="nmkin_4_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="nmkin_4_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="nmkin_4_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="nmkin_4_81"><include name="char_cloud" />
&quot;Fine, be my guest.&quot;</dialog>
-
-<dialog name="nmkin_4_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="nmkin_4_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="nmkin_4_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="nmkin_4_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="nmkin_4_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="nmkin_4_87"><include name="char_barret" />
&quot;Heads up, here it comes!&quot;</dialog>
-
-<dialog name="nmkin_4_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="nmkin_4_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="nmkin_4_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="nmkin_4_91">Ten minutes to detonation!</dialog>
-
-<dialog name="nmkin_4_92">Two minutes remaining</dialog>
-
-<dialog name="nmkin_4_93">One minute remaining</dialog>
-
-<dialog name="nmkin_4_94">Thirty seconds remaining</dialog>
-
-<dialog name="nmkin_4_95">Ten seconds remaining</dialog>
-
-<dialog name="nmkin_4_96">Five seconds remaining</dialog>
-
-<dialog name="nmkin_4_97">Four seconds remaining</dialog>
-
-<dialog name="nmkin_4_98">Three seconds remaining</dialog>
-
-<dialog name="nmkin_4_99">Two seconds remaining</dialog>
-
-<dialog name="nmkin_4_100">One second remaining</dialog>
-
-<dialog name="nmkin_4_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="nmkin_4_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_4_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="nmkin_4_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="nmkin_4_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="nmkin_4_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperon, right?&quot;</dialog>
-
-<dialog name="nmkin_4_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="nmkin_4_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="nmkin_4_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_4_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="nmkin_4_111">Am I...human?</dialog>
-
-<dialog name="nmkin_4_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="nmkin_4_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="nmkin_5_0">Platform</dialog>
-
-<dialog name="nmkin_5_1">Sector 1 Station</dialog>
-
-<dialog name="nmkin_5_2">Sector 1</dialog>
-
-<dialog name="nmkin_5_3">No.1 Reactor</dialog>
-
-<dialog name="nmkin_5_4">No.5 Reactor</dialog>
-
-<dialog name="nmkin_5_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="nmkin_5_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="nmkin_5_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="nmkin_5_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="nmkin_5_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="nmkin_5_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="nmkin_5_11">    <character id="4" />
</dialog>
-
-<dialog name="nmkin_5_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="nmkin_5_13">    ()
    ()</dialog>
-
-<dialog name="nmkin_5_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="nmkin_5_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="nmkin_5_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="nmkin_5_17">opening(<image sprite="ButtonSquare" />)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="nmkin_5_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="nmkin_5_19">para
66F
67F(<image sprite="ButtonSquare" />)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="nmkin_5_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="nmkin_5_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="nmkin_5_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="nmkin_5_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="nmkin_5_24"></dialog>
-
-<dialog name="nmkin_5_25">        </dialog>
-
-<dialog name="nmkin_5_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="nmkin_5_27"></dialog>
-
-<dialog name="nmkin_5_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="nmkin_5_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="nmkin_5_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="nmkin_5_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="nmkin_5_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="nmkin_5_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="nmkin_5_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="nmkin_5_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="nmkin_5_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_5_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="nmkin_5_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="nmkin_5_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="nmkin_5_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="nmkin_5_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="nmkin_5_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="nmkin_5_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the mission,
    <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_5_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="nmkin_5_45">Switch On.</dialog>
-
-<dialog name="nmkin_5_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="nmkin_5_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="nmkin_5_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="nmkin_5_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="nmkin_5_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="nmkin_5_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="nmkin_5_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="nmkin_5_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="nmkin_5_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="nmkin_5_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="nmkin_5_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="nmkin_5_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="nmkin_5_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="nmkin_5_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="nmkin_5_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="nmkin_5_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="nmkin_5_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nmkin_5_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nmkin_5_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="nmkin_5_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="nmkin_5_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_5_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="nmkin_5_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="nmkin_5_69">Biggs
&quot;I just let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="nmkin_5_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="nmkin_5_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="nmkin_5_72">Jessie
&quot;Push [OK] in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="nmkin_5_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="nmkin_5_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="nmkin_5_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="nmkin_5_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="nmkin_5_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="nmkin_5_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="nmkin_5_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="nmkin_5_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="nmkin_5_81"><include name="char_cloud" />
&quot;Fine, I&apos;ll do it.&quot;</dialog>
-
-<dialog name="nmkin_5_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="nmkin_5_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="nmkin_5_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="nmkin_5_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="nmkin_5_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="nmkin_5_87"><include name="char_barret" />
&quot;Heads up, here it comes!&quot;</dialog>
-
-<dialog name="nmkin_5_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="nmkin_5_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="nmkin_5_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="nmkin_5_91">Ten minutes to detonation!</dialog>
-
-<dialog name="nmkin_5_92">Two minutes remaining</dialog>
-
-<dialog name="nmkin_5_93">One minute remaining</dialog>
-
-<dialog name="nmkin_5_94">Thirty seconds remaining</dialog>
-
-<dialog name="nmkin_5_95">Ten seconds remaining</dialog>
-
-<dialog name="nmkin_5_96">Five seconds remaining</dialog>
-
-<dialog name="nmkin_5_97">Four seconds remaining</dialog>
-
-<dialog name="nmkin_5_98">Three seconds remaining</dialog>
-
-<dialog name="nmkin_5_99">Two seconds remaining</dialog>
-
-<dialog name="nmkin_5_100">One second remaining</dialog>
-
-<dialog name="nmkin_5_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="nmkin_5_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nmkin_5_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="nmkin_5_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="nmkin_5_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="nmkin_5_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperon, right?&quot;</dialog>
-
-<dialog name="nmkin_5_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="nmkin_5_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="nmkin_5_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nmkin_5_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="nmkin_5_111">Am I...human?</dialog>
-
-<dialog name="nmkin_5_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="nmkin_5_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="nrthmk_0">Platform</dialog>
-
-<dialog name="nrthmk_1">Sector 1 Station</dialog>
-
-<dialog name="nrthmk_2">Sector 1</dialog>
-
-<dialog name="nrthmk_3">No.1 Reactor</dialog>
-
-<dialog name="nrthmk_4">No.5 Reactor</dialog>
-
-<dialog name="nrthmk_5">Received &quot;Restore&quot; Materia!</dialog>
-
-<dialog name="nrthmk_6">Received &quot;Potion&quot;!</dialog>
-
-<dialog name="nrthmk_7">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="nrthmk_8">Received &quot;All&quot; Materia!</dialog>
-
-<dialog name="nrthmk_9">    <include name="char_cloud" />
    <include name="char_barret" />
    <character id="3" />
    <character id="2" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="7" />
    <character id="5" />
    Take Cloud Out</dialog>
-
-<dialog name="nrthmk_10">    Cancel
    <character id="3" />
    <character id="2" />
    <include name="char_barret" />
    <character id="4" />
    cid
    <character id="6" />
    <character id="5" />
    <character id="7" />
    Cloud Lock
    Change Party Members</dialog>
-
-<dialog name="nrthmk_11">    <character id="4" />
</dialog>
-
-<dialog name="nrthmk_12">    <include name="char_barret" />
    <character id="5" />
</dialog>
-
-<dialog name="nrthmk_13">    ()
    ()</dialog>
-
-<dialog name="nrthmk_14">    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()
    ()</dialog>
-
-<dialog name="nrthmk_15">    1
    2
    3
    4
    5</dialog>
-
-<dialog name="nrthmk_16">    <include name="char_barret" />&apos;<character id="4" />
    <include name="char_barret" />&apos;<character id="3" />
    <include name="char_barret" />&apos;<character id="2" />
    <character id="4" />&apos;<character id="3" />
    <character id="4" />&apos;<character id="2" />
    <character id="3" />&apos;<character id="2" /></dialog>
-
-<dialog name="nrthmk_17">opening(<image sprite="ButtonSquare" />)
feel wind
gate1 open
T road(<image sprite="ButtonSquare" />escape)
1reactor(5reactor)
junon(<image sprite="ButtonSquare" />yufi,R1gaiheki)
()</dialog>
-
-<dialog name="nrthmk_18">past jenova(<image sprite="ButtonSquare" />egg)
join vincent
shinra house vincent(<image sprite="ButtonSquare" />present)
shinra under(<image sprite="ButtonSquare" />awake)
nivl reactor
nivl reactor out(<image sprite="ButtonSquare" />with tifa)
nivl mt entrance(<image sprite="ButtonSquare" />past)
Materia cave
new event sininb34
new event sininb35
new midgal
nivgate
()</dialog>
-
-<dialog name="nrthmk_19">para
66F
67F(<image sprite="ButtonSquare" />)
68F
68F2
70F
elevetr
()</dialog>
-
-<dialog name="nrthmk_20">plate down meeting
caught
dead president
app rufaus
after heli</dialog>
-
-<dialog name="nrthmk_21">7 pillar
kolneo under
high way
5 out
airport(<image sprite="ButtonSquare" />gelnica)
after fire cefiros
jairo sky
jairo sea
junon cannon
junon medical
()</dialog>
-
-<dialog name="nrthmk_22">1F
59F
60F
61F
62F
63F
64F
65F
66F
69F</dialog>
-
-<dialog name="nrthmk_23">cancel
bone after arma
san dun
sleep forest
ancent forest
lost lake
water pray
<character id="3" /> dead
rocket(<image sprite="ButtonSquare" />first)
bone first
bone luna
los in</dialog>
-
-<dialog name="nrthmk_24"></dialog>
-
-<dialog name="nrthmk_25">        </dialog>
-
-<dialog name="nrthmk_26">[Save Point]
Access the Menu and select
[SAVE] to save your game.</dialog>
-
-<dialog name="nrthmk_27"></dialog>
-
-<dialog name="nrthmk_28">white
white boogen(key)
white boogen(no key)
before
after
white2
junonn in2</dialog>
-
-<dialog name="nrthmk_29">&quot;Who goes there!?&quot;</dialog>
-
-<dialog name="nrthmk_30">&quot;C&apos;mon newcomer.
    Follow me.&quot;</dialog>
-
-<dialog name="nrthmk_31">Biggs
&quot;Wow! You used to be in SOLDIER all right!
    ...Not everyday ya find one
    in a group like AVALANCHE.&quot;</dialog>
-
-<dialog name="nrthmk_32">Jessie
&quot;SOLDIER? Aren&apos;t they the enemy?&quot;</dialog>
-
-<dialog name="nrthmk_33">Jessie
&quot;What&apos;s he doing with us in AVALANCHE?&quot;</dialog>
-
-<dialog name="nrthmk_34">Biggs
&quot;He WAS in SOLDIER, Jessie.&quot;<next_page />&quot;But he quit and is with us now.&quot;</dialog>
-
-<dialog name="nrthmk_35">Biggs
&quot;I didn&apos;t catch your name...&quot;</dialog>
-
-<dialog name="nrthmk_36"><include name="char_cloud" />
&quot;...<include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nrthmk_37">Biggs
&quot;<include name="char_cloud" />, eh? I&apos;m...&quot;</dialog>
-
-<dialog name="nrthmk_38"><include name="char_cloud" />
&quot;I don&apos;t care what your names are.
    Once this job&apos;s over...I&apos;m outta here.&quot;</dialog>
-
-<dialog name="nrthmk_39">&quot;The hell you all doin&apos;!?
    I thought I told you never to move
    in a group!&quot;</dialog>
-
-<dialog name="nrthmk_40">&quot;Our target&apos;s the North Mako Reactor.
    We&apos;ll meet on the bridge in front of it.&quot;</dialog>
-
-<dialog name="nrthmk_41">&quot;Ex-SOLDIER, huh?
    I don&apos;t trust ya!&quot;</dialog>
-
-<dialog name="nrthmk_42"><include name="char_barret" />
&quot;Press the Directional buttons while
    pressing [CANCEL]
    to run.&quot;</dialog>
-
-<dialog name="nrthmk_43">Wedge
&quot;I&apos;ll secure our escape passage.
    You concentrate on the
    mission, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nrthmk_44">Wedge
&quot;Geez, we&apos;re really gonna blow
    this huge furnace up?
    This&apos;ll be somethin&apos; to see!&quot;</dialog>
-
-<dialog name="nrthmk_45">Switch On.</dialog>
-
-<dialog name="nrthmk_46">Jessie
&quot;Push that button over there!&quot;</dialog>
-
-<dialog name="nrthmk_47"><include name="char_barret" />
&quot;Now let&apos;s go into the reactor!
    From here on out, you stick with me.&quot;</dialog>
-
-<dialog name="nrthmk_48">&quot;Leave this to me!&quot;</dialog>
-
-<dialog name="nrthmk_49">&quot;Don&apos;t mess up SOLDIER-boy!&quot;</dialog>
-
-<dialog name="nrthmk_50">&quot;Bring <include name="char_barret" /> back alive!&quot;</dialog>
-
-<dialog name="nrthmk_51"><include name="char_barret" />
&quot;Yo! This your first time in a reactor?&quot;</dialog>
-
-<dialog name="nrthmk_52"><include name="char_cloud" />
&quot;No. After all, I did work for Shinra, y&apos;know.&quot;</dialog>
-
-<dialog name="nrthmk_53"><include name="char_barret" />
&quot;The planet&apos;s full of Mako energy.
    People here use it everyday.&quot;</dialog>
-
-<dialog name="nrthmk_54"><include name="char_barret" />
&quot;It&apos;s the life blood of this planet.
    But Shinra keeps suckin&apos; the blood out
    with these weird machines.&quot;</dialog>
-
-<dialog name="nrthmk_55"><include name="char_cloud" />
&quot;I&apos;m not here for a lecture.
    Let&apos;s just do it.&quot;</dialog>
-
-<dialog name="nrthmk_56"><include name="char_barret" />
&quot;Alright! You come with me
    from now on.&quot;</dialog>
-
-<dialog name="nrthmk_57"><include name="char_barret" />
&quot;Little by little the reactors are
    draining out all the life.
    And that&apos;ll be that.&quot;</dialog>
-
-<dialog name="nrthmk_58"><include name="char_barret" />
&quot;The planet&apos;s dyin&apos;, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="nrthmk_59"><include name="char_cloud" />
&quot;It&apos;s not my problem.&quot;</dialog>
-
-<dialog name="nrthmk_60"><include name="char_cloud" />
&quot;The only thing I care about is finishin&apos; this job
    before security and the Roboguards come.&quot;</dialog>
-
-<dialog name="nrthmk_61"><include name="char_barret" />
&quot;...&quot;</dialog>
-
-<dialog name="nrthmk_62">Jessie
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nrthmk_63">Biggs
&quot;Code deciphered&quot;</dialog>
-
-<dialog name="nrthmk_64">Can&apos;t decipher code
without Biggs</dialog>
-
-<dialog name="nrthmk_65">Can&apos;t decipher code
without Jessie</dialog>
-
-<dialog name="nrthmk_66"><include name="char_cloud" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nrthmk_67">Jessie
&quot;My leg got stuck.&quot;</dialog>
-
-<dialog name="nrthmk_68">Jessie
&quot;Thanks!&quot;</dialog>
-
-<dialog name="nrthmk_69">Biggs
&quot;I just let my guard down for a minute...
    And someone got behind me...&quot;</dialog>
-
-<dialog name="nrthmk_70">Jessie
&quot;Biggs and I got the code for this door.&quot;</dialog>
-
-<dialog name="nrthmk_71">Biggs
&quot;Think how many of our people risked their
    lives, just for this code...&quot;</dialog>
-
-<dialog name="nrthmk_72">Jessie
&quot;Push [OK] in front of a ladder
    to grab on to it.
    Then use the [Directional button]
    to climb up and down.&quot;</dialog>
-
-<dialog name="nrthmk_73">Jessie
&quot;There you go!&quot;</dialog>
-
-<dialog name="nrthmk_74">Biggs
&quot;Let&apos;s go!&quot;</dialog>
-
-<dialog name="nrthmk_75">Jessie
&quot;Alright, be careful.&quot;</dialog>
-
-<dialog name="nrthmk_76">Biggs
&quot;Jessie still isn&apos;t back yet!&quot;</dialog>
-
-<dialog name="nrthmk_77"><include name="char_barret" />
&quot;When we blow this place, it ain&apos;t gonna
    be nothin&apos; more than a hunka junk.&quot;</dialog>
-
-<dialog name="nrthmk_78"><include name="char_barret" />
&quot;<include name="char_cloud" />, you set the bomb.&quot;</dialog>
-
-<dialog name="nrthmk_79"><include name="char_cloud" />
&quot;Shouldn&apos;t you do it?&quot;</dialog>
-
-<dialog name="nrthmk_80"><include name="char_barret" />
&quot;Jus&apos; do it!
    I gotta watch to make sure
    you don&apos;t pull nothin&apos;.&quot;</dialog>
-
-<dialog name="nrthmk_81"><include name="char_cloud" />
&quot;Fine, be my guest.&quot;</dialog>
-
-<dialog name="nrthmk_82">               Watch out!
        This isn&apos;t just a reactor!!</dialog>
-
-<dialog name="nrthmk_83"><include name="char_barret" />
&quot;What&apos;s wrong?&quot;</dialog>
-
-<dialog name="nrthmk_84"><include name="char_cloud" />
&quot;Huh?&quot;</dialog>
-
-<dialog name="nrthmk_85"><include name="char_barret" />
&quot;What&apos;s wrong, <include name="char_cloud" />?
   Hurry it up!&quot;</dialog>
-
-<dialog name="nrthmk_86"><include name="char_cloud" />
&quot;...Yeah, sorry.&quot;</dialog>
-
-<dialog name="nrthmk_87"><include name="char_barret" />
&quot;Heads up, here it comes!&quot;</dialog>
-
-<dialog name="nrthmk_88"><include name="char_cloud" />
&quot;The alarm!&quot;</dialog>
-
-<dialog name="nrthmk_89"><include name="char_cloud" />
&quot;Come on, let&apos;s get outta here!&quot;</dialog>
-
-<dialog name="nrthmk_90"><include name="char_cloud" />
&quot;This is...
    Materia...&quot;</dialog>
-
-<dialog name="nrthmk_91">Ten minutes to detonation!</dialog>
-
-<dialog name="nrthmk_92">Two minutes remaining</dialog>
-
-<dialog name="nrthmk_93">One minute remaining</dialog>
-
-<dialog name="nrthmk_94">Thirty seconds remaining</dialog>
-
-<dialog name="nrthmk_95">Ten seconds remaining</dialog>
-
-<dialog name="nrthmk_96">Five seconds remaining</dialog>
-
-<dialog name="nrthmk_97">Four seconds remaining</dialog>
-
-<dialog name="nrthmk_98">Three seconds remaining</dialog>
-
-<dialog name="nrthmk_99">Two seconds remaining</dialog>
-
-<dialog name="nrthmk_100">One second remaining</dialog>
-
-<dialog name="nrthmk_101"><include name="char_barret" />
&quot;Damn man, get a hold of yourself!&quot;</dialog>
-
-<dialog name="nrthmk_102"><character id="2" />
&quot;You all right?&quot;</dialog>
-
-<dialog name="nrthmk_103"><include name="char_cloud" />
&quot;...<character id="2" />.&quot;</dialog>
-
-<dialog name="nrthmk_104"><character id="2" />
&quot;Mmm?&quot;</dialog>
-
-<dialog name="nrthmk_105"><include name="char_cloud" />
&quot;No...forget...
    Come on, let&apos;s hurry!&quot;</dialog>
-
-<dialog name="nrthmk_106"><include name="char_cloud" />
&quot;I know.
    You&apos;re my chaperon, right?&quot;</dialog>
-
-<dialog name="nrthmk_107"><include name="char_barret" />
&quot;Damn straight.&quot;</dialog>
-
-<dialog name="nrthmk_108"><include name="char_barret" />
&quot;<character id="2" />&apos;s old friend...
    That ain&apos;t good enough.&quot;</dialog>
-
-<dialog name="nrthmk_109"><character id="2" />
&quot;Let&apos;s hurry, <include name="char_cloud" />.&quot;</dialog>
-
-<dialog name="nrthmk_110"><include name="char_barret" />
&quot;Alright, let&apos;s go.&quot;</dialog>
-
-<dialog name="nrthmk_111">Am I...human?</dialog>
-
-<dialog name="nrthmk_112">I didn&apos;t really understand
what Sephiroth meant then.</dialog>
-
-<dialog name="nrthmk_113">I was even more surprised that
Shinra was producing monsters.</dialog>
-
-<dialog name="rootmap_0">Last Train from Midgar</dialog>
-
-<dialog name="rootmap_1">Jessie
&quot;<include name="char_cloud" />!
    Look over here.&quot;</dialog>
-
-<dialog name="rootmap_2">Jessie
&quot;Okay, it&apos;s about to start.&quot;</dialog>
-
-<dialog name="rootmap_3">Jessie
&quot;This is a complete model
    of the city of Midgar.&quot;<next_page />&quot;It&apos;s about a 1/10000 scale.&quot;<next_page />&quot;The top plate is about 50 meters
    above ground.&quot;</dialog>
-
-<dialog name="rootmap_4">&quot;A main pillar supports
    the plate in the center, 
    and there are other support pillars
    built in each section...&quot;</dialog>
-
-<dialog name="rootmap_5">&quot;Psst...whisper...whisper...
    (The No. 1 Reactor we blew up
    was in the northern section.)&quot;<next_page />&quot;Then there&apos;s No. 2, No. 3 all the way up to
    the No. 8 Reactor.&quot;<next_page />&quot;The 8 Reactors provide Midgar
    with electricity.&quot;</dialog>
-
-<dialog name="rootmap_6">&quot;Each town used to have a name, 
    but no one in Midgar remembers them.&quot;<next_page />&quot;Instead of names, we refer to them
    by numbered sectors.
    That&apos;s how things turned out.&quot;</dialog>
-
-<dialog name="rootmap_7"></dialog>
-
-<dialog name="rootmap_8"></dialog>
-
-<dialog name="rootmap_9"></dialog>
-
-<dialog name="rootmap_10"></dialog>
-
-<dialog name="rootmap_11"></dialog>
-
-<dialog name="rootmap_12"></dialog>
-
-<dialog name="rootmap_13"></dialog>
-
-<dialog name="rootmap_14"></dialog>
-
-<dialog name="rootmap_15"></dialog>
-
-<dialog name="rootmap_16"></dialog>
-
-<dialog name="rootmap_17"></dialog>
-
-<dialog name="rootmap_18"></dialog>
-
-<dialog name="rootmap_19"></dialog>
-
-<dialog name="rootmap_20"></dialog>
-
-<dialog name="rootmap_21"></dialog>
-
-<dialog name="rootmap_22">Jessie
&quot;Phew, look what&apos;s
    next! Look!&quot;</dialog>
-
-<dialog name="rootmap_23">Jessie
&quot;This is the route this train is on.&quot;<next_page />&quot;The route spirals around
    the main pillar.&quot;<next_page />&quot;We should be coming around
    the center, right now.&quot;<next_page />&quot;Each checkpoint has
    an ID sensor device.&quot;<next_page />&quot;It checks the identities and
    backgrounds of each
    passenger on the train
    and is linked up to the central data
    bank at Shinra headquarters.&quot;</dialog>
-
-<dialog name="rootmap_24">&quot;Whisper...whisper...
    (We definitely look suspicious,
    so we&apos;re using fake IDs.)&quot;</dialog>
-
-<dialog name="rootmap_25"></dialog>
-
-<dialog name="rootmap_26"></dialog>
-
-<dialog name="rootmap_27"></dialog>
-
-<dialog name="rootmap_28"></dialog>
-
-<dialog name="rootmap_29"></dialog>
-
-<dialog name="rootmap_30"></dialog>
-
-<dialog name="startmap_0">        NEXT
        MENU ON
        BATTLE LOCK
        BATTLE UNLOCK
        MOVIE LOCK
        MOVIE UNLOCK
        GLOBAL RESET
        FULL NAME
        NEW START
        EXIT</dialog>
-
-<dialog name="startmap_1">        BACK
        SOUND RESET
        FULL MATERIA
        BATTLE999
        EXIT</dialog>
-
-<dialog name="startmap_2">MMMMMMMMMMMMMMM</dialog>
-
-<dialog name="startmap_3">WWWWWWWWWWWWWWW</dialog>
-
-<dialog name="startmap_4">MMMMMMMMMMMMMMM</dialog>
-
-<dialog name="startmap_5">WWWWWWWWWWWWWWW</dialog>
-
-<dialog name="startmap_6">MMMMMMMMMMMMMMM</dialog>
-
-<dialog name="startmap_7">WWWWWWWWWWWWWWW</dialog>
-
-<dialog name="startmap_8">MMMMMMMMMMMMMMM</dialog>
-
-<dialog name="startmap_9">WWWWWWWWWWWWWWW</dialog>
-
-<dialog name="startmap_10">MMMMMMMMMMMMMMM</dialog>
-
-<dialog name="tin_2_0">Inside Train</dialog>
-
-<dialog name="tin_2_1">Last train from Sector 8 Station-
Final stop: sector 7, Train Cemetery-
  Expected time of arrival is 12:23AM,
  Midgar Standard Time</dialog>
-
-<dialog name="tin_2_2">          Level 1 Warning
          Car #1: Lock Down</dialog>
-
-<dialog name="tin_2_3">          Car #1: Locked Down
          Upgrading to Level 2 Warning</dialog>
-
-<dialog name="tin_2_4">Jessie
&quot;Let&apos;s  hurry!!&quot;</dialog>
-
-<dialog name="tin_2_5"><include name="char_barret" />
&quot;What&apos;s happenin&apos;?&quot;</dialog>
-
-<dialog name="tin_2_6">Jessie
&quot;Sorry!!
    I&apos;ve made a mistake...&quot;</dialog>
-
-<dialog name="tin_2_7"><include name="char_barret" />
&quot;What!?&quot;</dialog>
-
-<dialog name="tin_2_8">Jessie
&quot;Ugh!
    I&apos;m not sure...&quot;</dialog>
-
-<dialog name="tin_2_9"><include name="char_barret" />
&quot;C&apos;mon, this ain&apos;t no joke!&quot;</dialog>
-
-<dialog name="tin_2_10">Biggs
&quot;Hurry!&quot;</dialog>
-
-<dialog name="tin_2_11">Wedge
&quot;They&apos;re locking the door, sir!&quot;</dialog>
-
-<dialog name="tin_2_12">Biggs
&quot;We&apos;ll execute it just as we planned it.&quot;</dialog>
-
-<dialog name="tin_2_13">Wedge
&quot;I&apos;m goin&apos; first, sir!
    Let&apos;s switch to Plan 2!&quot;</dialog>
-
-<dialog name="tin_2_14"><include name="char_barret" />
&quot;What do you want me to do?&quot;</dialog>
-
-<dialog name="tin_2_15">Jessie
&quot;Just run!&quot;<next_page />&quot;Changing to Plan 2!&quot;</dialog>
-
-<dialog name="tin_2_16"><include name="char_barret" />
&quot;Damn!!
    I guess there&apos;s no other way...&quot;<next_page />&quot;We gonna kick some ass!&quot;</dialog>
-
-<dialog name="tin_2_17"><include name="char_barret" />
&quot;What!?
    That&apos;s it!?&quot;</dialog>
-
-<dialog name="tin_2_18"><character id="2" />
&quot;That didn&apos;t do anything!&quot;</dialog>
-
-<dialog name="tin_2_19"><include name="char_barret" />
&quot;We&apos;ll jump from here!!
    Follow me, you &apos;spensive leech!!&quot;</dialog>
-
-<dialog name="tin_2_20"><character id="2" />
&quot;Phew---!
    Be strong!&quot;</dialog>
-
-<dialog name="tin_2_21"> 
 
               </dialog>
-
-<dialog name="tin_2_22">Unidentified passengers located in Car #2
Preparing for Lock Down</dialog>
-
-<dialog name="tin_2_23">Car #2: Locked Down
Car being sent to the station</dialog>
-
-<dialog name="tin_2_24">&quot;Hey...
    You guys are too rowdy.&quot;</dialog>
-
-<dialog name="tin_2_25">&quot;Well, just calm down.&quot;</dialog>
-
-<dialog name="tin_2_26"><character id="2" />
&quot;Yes, it&apos;s really something.
    It&apos;s always like this.&quot;</dialog>
-
-<dialog name="tin_2_27"><include name="char_barret" />
&quot;Hey, yo!
    Jus&apos; keep the hell outta my face!&quot;</dialog>
-
-<dialog name="tin_2_28">&quot;Hyu---n!!
    Hyu---n!!&quot;</dialog>
-
-<dialog name="tin_2_29">&quot;Does this mean
    that we&apos;re in a major bind?&quot;</dialog>
-
-<dialog name="tin_2_30">&quot;Gosh!!
    You&apos;re adults,
    but you&apos;re acting like kids.&quot;<next_page />&quot;Please behave while you&apos;re in the train.&quot;</dialog>
-
-<dialog name="tin_2_31">&quot;Huh?&quot;<next_page />&quot;The hell?&quot;<next_page />&quot;Do you want this?&quot;
          Yeah...
          My mistake</dialog>
-
-<dialog name="tin_2_32">&quot;Wow!
    I won&apos;t even charge you...&quot;<next_page />&quot;What?
    Don&apos;t get used to it though.&quot;</dialog>
-
-<dialog name="tin_2_33">&quot;Wha-t?
    Let me know when you need me.&quot;</dialog>
-
-<dialog name="tin_2_34">Received &quot;Hi-Potion&quot;!</dialog>
-
-<dialog name="tin_2_35">&quot;Wha-t?
    You sure are greedy.&quot;</dialog>
-
-<dialog name="tin_1_0">Last Train from Midgar</dialog>
-
-<dialog name="tin_1_1">Inside Train</dialog>
-
-<dialog name="tin_1_2"><include name="char_barret" />
&quot;Look...you can see the surface now.
    This city don&apos;t have no day or night.&quot;<next_page />&quot;If that plate weren&apos;t there...
    we could see the sky.&quot;</dialog>
-
-<dialog name="tin_1_3"><include name="char_cloud" />
&quot;A floating city...
    Pretty unsettling scenery.&quot;</dialog>
-
-<dialog name="tin_1_4"><include name="char_barret" />
&quot;Huh?&quot;<next_page />&quot;Never expect ta hear that outta
    someone like you.&quot;<next_page />&quot;...You jus&apos; full of surprises.&quot;</dialog>
-
-<dialog name="tin_1_5"><include name="char_barret" />
&quot;The upper world...a city on a plate...&quot;<next_page />&quot;It&apos;s &apos;cuz of that &amp;^#$# &apos;pizza&apos;
    that people underneath are sufferin&apos;!&quot;</dialog>
-
-<dialog name="tin_1_6"><include name="char_barret" />
&quot;All the pollution from Mako energy above 
    falls down on the world below.&quot;</dialog>
-
-<dialog name="tin_1_7"><include name="char_barret" />
&quot;And the city below is full of polluted air.&quot;</dialog>
-
-<dialog name="tin_1_8"><include name="char_barret" />
&quot;On top&apos;a that,
    the Reactor keeps drainin&apos; up
    all the energy.&quot;</dialog>
-
-<dialog name="tin_1_9"><include name="char_cloud" />
&quot;Then why doesn&apos;t everyone
    move onto the Plate?&quot;</dialog>
-
-<dialog name="tin_1_10"><include name="char_barret" />
&quot;Dunno.
    Probably &apos;cuz they ain&apos;t got no money.
    Or, maybe...&quot;</dialog>
-
-<dialog name="tin_1_11">&quot;&apos;Cuz they love their land, 
    no matter how polluted it gets.&quot;</dialog>
-
-<dialog name="tin_1_12"><include name="char_cloud" />
&quot;I know...
    no one lives in the slums
    because they want to.&quot;<next_page />&quot;It&apos;s like this train.
    It can&apos;t run anywhere except
    where its rails take it.&quot;</dialog>
-
-<dialog name="tin_1_13"><include name="char_barret" />
&quot;Stop actin&apos; like a damn kid.
    Siddown an&apos; shu&apos;up!&quot;</dialog>
-
-<dialog name="tin_1_14">Jessie
&quot;Hey, <include name="char_cloud" />.
    You want to look at this with me?&quot;<next_page />&quot;It&apos;s a map of the Midgar Rail System.
    Let&apos;s look at it together.
    I&apos;ll explain it to you.&quot;</dialog>
-
-<dialog name="tin_1_15">    &quot;To the Route Map Screen&quot;</dialog>
-
-<dialog name="tin_1_16">Jessie
&quot;I like this kinda stuff. 
    Bombs and monitors...you know,
    flashy stuff.&quot;</dialog>
-
-<dialog name="tin_1_17">Jessie
&quot;I know!&quot;<next_page />&quot;Next time,
    I&apos;ll make one just for you.&quot;
          Thanks anyway
          Looking forward to it</dialog>
-
-<dialog name="tin_1_18">Jessie
&quot;Oh yeah, you might regret it.
    I&apos;m the type who takes things personal.&quot;</dialog>
-
-<dialog name="tin_1_19">Jessie
&quot;Okay, then I&apos;ll put a little extra effort in
    and make it with a BANG.&quot;</dialog>
-
-<dialog name="tin_1_20">Jessie
&quot;We&apos;re almost there.
    After talking with you,
    I&apos;m ready to try!&quot;<next_page />&quot;I think you&apos;ve lit my fuse!&quot;</dialog>
-
-<dialog name="tin_1_21">Jessie
&quot;Speak of the devil...&quot;<next_page />&quot;That light means that
    we&apos;re in the ID Security Check area.&quot;</dialog>
-
-<dialog name="tin_1_22">&quot;...whisper...whisper...
    (When the lights go off,
    you never know what kind of
    creeps&apos;ll come out.)&quot;</dialog>
-
-<dialog name="tin_1_23">&quot;...We&apos;re almost back now.
    What a relief.&quot;</dialog>
-
-<dialog name="tin_1_24">Biggs
&quot;This train hasn&apos;t switched
    to security mode yet.&quot;<next_page />&quot;I&apos;m sure that will change by tomorrow.&quot;</dialog>
-
-<dialog name="tin_1_25">Biggs
&quot;...YAWN...that sure took its toll on me.
    I&apos;m gonna sleep till we get to the station.&quot;</dialog>
-
-<dialog name="tin_1_26">Biggs
&quot;...snore...heebeebeeheebee...snore...
    (Don&apos;t act so damn big,
    <include name="char_barret" />...snooze...)&quot;</dialog>
-
-<dialog name="tin_1_27">Wedge
&quot;Someday AVALANCHE&apos;s gonna be famous
    ...and me, too!&quot;</dialog>
-
-<dialog name="tin_1_28">Wedge
&quot;<include name="char_cloud" />!!&quot;<next_page />&quot;Don&apos;t ya think I got a bright
    future ahead of me?&quot;
          What do you have in mind?
          Don&apos;t hold your breath</dialog>
-
-<dialog name="tin_1_29">Wedge
&quot;All my life, I felt like nothin&apos; but a sidekick.&quot;<next_page />&quot;But, after joinin&apos; AVALANCHE and
    tryin&apos; to save the Planet, 
    I feel like I can do lots of things.&quot;</dialog>
-
-<dialog name="tin_1_30">Wedge
&quot;Oh man,
    that&apos;s pretty harsh. <include name="char_cloud" />.
    You really think I won&apos;t?&quot;</dialog>
-
-<dialog name="tin_1_31">Wedge
&quot;I&apos;m seein&apos; stars.
    This sucks. I hate the dark.&quot;</dialog>
-
-<dialog name="tin_1_32">Last train out of Sector 8 Station.
Last stop is Sector 7, Train Graveyard.
Expected time of arrival is 12:23AM,
Midgar Standard Time...</dialog>
-
-<dialog name="tin_1_33">&quot;Huh?
    This is my house,
    so make yourselves at home.&quot;</dialog>
-
-<dialog name="tin_1_34">&quot;Hey!!
    What&apos;s going on here?&quot;</dialog>
-
-<dialog name="tin_1_35">&quot;Oops, uh, 
    n, nothing...&quot;</dialog>
-
-<dialog name="tin_1_36">&quot;Please don&apos;t make any trouble.&quot;</dialog>
-
-<dialog name="tin_1_37">&quot;...mumble...grumble...
    (...Reactor&apos;s blown to bits...
    ...Bad things one after another...
    ...What a day!)&quot;</dialog>
-
-<dialog name="tin_1_38">&quot;Please!!
    Don&apos;t bother the other passengers.&quot;</dialog>
-
-<dialog name="tin_1_39">&quot;This is why I hate the last train.
    Hoo-boy...&quot;</dialog>
-
-<dialog name="tin_1_40"></dialog>
-
-<dialog name="tin_1_41"></dialog>
-
-<dialog name="tin_1_42"></dialog>
-
-<dialog name="tin_1_43"></dialog>
-
-<dialog name="tin_1_44"></dialog>
-
-<dialog name="tin_1_45">&quot;You see the headlines in the Shinra Times?&quot;<next_page />&quot;The terrorists that bombed
    the No. 1 Reactor are based
    somewhere in the slums.&quot;<next_page />&quot;...Blowing up a Reactor...
    they sure put some thought into this one.&quot;<next_page />&quot;They must have a real calculating leader.
    I wonder what they&apos;ll do next?&quot;</dialog>
-
-<dialog name="tin_1_46"><include name="char_barret" />
&quot;YO!&quot;</dialog>
-
-<dialog name="tin_1_47">&quot;This ain&apos;t no private car!!
    So split up!!&quot;</dialog>
-
-<dialog name="tin_1_48">&quot;...Hoodlums again.
    God, don&apos;t I just have all the luck?&quot;</dialog>
-
-<dialog name="tin_1_49"><include name="char_barret" />
&quot;You say sumthin&apos; ?&quot;</dialog>
-
-<dialog name="tin_1_50"><include name="char_barret" />
&quot;I said, &apos;you say sumthin&apos;!?&quot;</dialog>
-
-<dialog name="tin_1_51"><include name="char_barret" />
&quot;Now look at that!!
    It got empty alluva sudden.&quot;<next_page />&quot;What&apos;s goin&apos; on?&quot;</dialog>
-
-<dialog name="tin_1_52">&quot;DAMN!!&quot;</dialog>
-
-<dialog name="tin_1_53">&quot;It..it&apos;s empty because of...
    g, guys like you...&quot;</dialog>
-
-<dialog name="tin_1_54">&quot;YYY...YIPES!!&quot;</dialog>
-
-<dialog name="tin_1_55">&quot;You...you&apos;ve seen the news, right?
    AVALANCHE says there&apos;ll be more bombings.&quot;<next_page />&quot;Only devoted employees like me 
    would go to Midgar on a day like today.&quot;</dialog>
-
-<dialog name="tin_1_56"><include name="char_barret" />
&quot;You work for Shinra?&quot;</dialog>
-
-<dialog name="tin_1_57">Shinra Manager
&quot;I won&apos;t give in to violence...
    and I&apos;m not giving you my seat either!&quot;</dialog>
-
-<dialog name="tin_1_58"><character id="2" />
&quot;<include name="char_barret" />!!&quot;</dialog>
-
-<dialog name="tin_1_59"><include name="char_barret" />
&quot;&amp;$#%!!
    You lucky ^$#^$.!&quot;</dialog>
-
-<dialog name="tin_1_60"><include name="char_cloud" />
&quot;So, what are we gonna do now?&quot;</dialog>
-
-<dialog name="tin_1_61"><include name="char_barret" />
&quot;@#$%! The hell you so calm?
    You&apos;re bustin&apos; up my rhythm!&quot;</dialog>
-
-<dialog name="tin_1_62"><include name="char_barret" />
&quot;Huh?  Wait a minute!&quot;<next_page />&quot;Did we make a terrorist threat?&quot;</dialog>
-
-<dialog name="tin_1_63"><character id="2" />
&quot;What are you talking about?
    Right about now, AVALANCHE is famous.&quot;</dialog>
-
-<dialog name="tin_1_64"><include name="char_barret" />
&quot;Heh heh...
    Famous...&quot;</dialog>
-
-<dialog name="tin_1_65"><character id="2" />
&quot;Looks like they just finished
    connecting the cars. 
    We&apos;re finally leaving.&quot;</dialog>
-
-<dialog name="tin_1_66"><include name="char_cloud" />
&quot;So what&apos;s our next target?&quot;</dialog>
-
-<dialog name="tin_1_67"><include name="char_barret" />
&quot;Hah! Listen to
    Mr. Serious-about-his-work!&quot;</dialog>
-
-<dialog name="tin_1_68"><include name="char_barret" />
&quot;Alright...I&apos;ll tell ya!&quot;<next_page />&quot;Jessie&apos;s probably already told you,
    but there&apos;s a security check point
    at the top plate.&quot;<next_page />&quot;It&apos;s an ID scan system
    checkin&apos; all the trains.&quot;</dialog>
-
-<dialog name="tin_1_69"><character id="2" />
&quot;Which Shinra is very proud of.&quot;</dialog>
-
-<dialog name="tin_1_70"><include name="char_barret" />
&quot;We can&apos;t use our fake ID&apos;s
    anymore...&quot;</dialog>
-
-<dialog name="tin_1_71">Good Morning, and welcome to Midgar lines.
Arrival time at Sector 4 Station is 11:45.</dialog>
-
-<dialog name="tin_1_72"><character id="2" />
&quot;That means we&apos;ve got only three 
    more minutes to the ID Check point.&quot;</dialog>
-
-<dialog name="tin_1_73"><include name="char_barret" />
&quot;Alright, in three minutes,
    we&apos;re jumpin&apos; off this train.&quot;<next_page />&quot;Got it!?&quot;</dialog>
-
-<dialog name="tin_1_74"><include name="char_cloud" />
&quot;What do we do until then?&quot;</dialog>
-
-<dialog name="tin_1_75"><include name="char_barret" />
&quot;The hell do I care whatcha do?
    Just siddown an&apos; shu&apos;up.&quot;</dialog>
-
-<dialog name="tin_1_76"><include name="char_cloud" />
&quot;Sorry, but I have a thing against 
    sitting down in trains.&quot;</dialog>
-
-<dialog name="tin_1_77"><include name="char_barret" />
&quot;@#$%! Do whatever you want!&quot;</dialog>
-
-<dialog name="tin_1_78"><include name="char_cloud" />
&quot;What do we do after we jump?&quot;</dialog>
-
-<dialog name="tin_1_79"><include name="char_barret" />
&quot;Yo, <include name="char_cloud" />!&quot;</dialog>
-
-<dialog name="tin_1_80"><include name="char_barret" />
&quot;Yo, Mr. Know-it-all, big time SOLDIER!
    You oughta know the area &apos;round
    the No. 5 Reactor, right!&quot;<next_page />&quot;So let&apos;s hear YOUR explanation!&quot;</dialog>
-
-<dialog name="tin_1_81"><character id="2" />
&quot;I&apos;ll help, too.&quot;</dialog>
-
-<dialog name="tin_1_82"><include name="char_barret" />
&quot;@#$%!
    I don&apos;t know even why you came!&quot;</dialog>
-
-<dialog name="tin_1_83"><character id="2" />
&quot;Oh, <include name="char_barret" />!
    Are you mad because
    I&apos;m not paying enough attention to you?&quot;</dialog>
-
-<dialog name="tin_1_84"><include name="char_barret" />
&quot;@#$%!!&quot;</dialog>
-
-<dialog name="tin_1_85"><character id="2" />
&quot;<include name="char_cloud" />, come over here!
    Let&apos;s look at the Railway Map Monitor.&quot;</dialog>
-
-<dialog name="tin_1_86"><character id="2" />
&quot;Hmm, it looks like
    you&apos;ve seen this already...&quot;<next_page />&quot;It&apos;s all right. Come a little closer.&quot;</dialog>
-
-<dialog name="tin_1_87"><character id="2" />
&quot;That&apos;s odd.
    The ID Check Point was supposed
    to be further down.&quot;</dialog>
-
-<dialog name="tin_1_88">Type A Security Alert!!<next_page />Unidentified passengers confirmed...
A search of all cars will be conducted!</dialog>
-
-<dialog name="tin_1_89">Repeat!!
Type A Security Alert!!<next_page />Unidentified passengers confirmed...
A search of all cars will be conducted!</dialog>
-
-<dialog name="tin_1_90"><character id="2" />
&quot;What&apos;s happening?&quot;</dialog>
-
-<dialog name="tin_1_91"><include name="char_barret" />
&quot;What&apos;s goin&apos; on?!&quot;</dialog>
-
-<dialog name="tin_1_92">Jessie
&quot;We&apos;re in trouble.&quot;<next_page />&quot;I&apos;ll explain later.
    Hurry! Get to the next car!&quot;</dialog>
-
-<dialog name="tin_1_93"><include name="char_barret" />
&quot;@#$%!
    Someone blew it...&quot;</dialog>
-
-<dialog name="tin_1_94"><include name="char_barret" />
&quot;Let&apos;s go!
    Keep it up!&quot;</dialog>
-
-<dialog name="tin_1_95"><include name="char_barret" />
&quot;C&apos;mon!! Hurry your slow ass up! 
    That&apos;s it, huh?&quot;</dialog>
-
-<dialog name="tin_1_96"><character id="2" />
&quot;Oh well...&quot;</dialog>
-
-<dialog name="tin_1_97"><include name="char_barret" />
&quot;We&apos;re gonna jump outta here!!
    Follow me!!&quot;</dialog>
-
-<dialog name="tin_1_98"><character id="2" />
&quot;We got a lot of battles ahead of us.
    This&apos;s going to be tough.&quot;</dialog>
-
-<dialog name="tin_1_99">&quot;Hmmm?
    You&apos;re the only ones that&apos;ll talk to me 
    or come to my house.&quot;<next_page />&quot;I&apos;m impressed.&quot;</dialog>
-
-<dialog name="tin_1_100">&quot;Hm? 
    You&apos;d talk to me even now?&quot;<next_page />&quot;I&apos;m really impressed.
    Here&apos;s a little
    something as a reward.&quot;</dialog>
-
-<dialog name="tin_1_101">Received &quot;Phoenix Down&quot;!</dialog>
-
-<dialog name="tin_1_102">&quot;If I die in the gutter, 
    use that to revive me, okay?&quot;</dialog>
-
-<dialog name="tin_1_103">Shinra Manager
&quot;Waaaaah!!&quot;<next_page />&quot;Don&apos;t...don&apos;t worry about me.
    (oh man, oh man, oh man...!!
    I&apos;m gonna brag to everyone
    at work about this...)&quot;</dialog>
-
-<dialog name="tin_1_104">              </dialog>
-
-<dialog name="tin_1_105">Unidentified passengers located in Car #1
Preparing for Lock Down</dialog>
-
-<dialog name="tin_1_106">          Car #1: Locked Down
          Car being sent to the station</dialog>
-
-<dialog name="tin_1_107">  &quot;This is the end of the Test Play.</dialog>
-
-</texts>

+ 0 - 5
data/data/texts/english/dialogs_receiving.xml

@@ -1,5 +0,0 @@
-<texts>
-    <!-- Receiving Items -->
-    <dialog name="receive_potion" width="138" height="25">Received “<include name="item_potion" />”!</dialog>
-    <dialog name="receive_phoenix_down" width="138" height="25">Received “<include name="item_phoenix_down" />”!</dialog>
-</texts>

+ 0 - 16
data/data/texts/english/names.xml

@@ -1,16 +0,0 @@
-<texts>
-    <!-- Items -->
-    <text name="item_potion">Potion</text>
-    <text name="item_phoenix_down">Phoenix Down</text>
-
-    <!-- Characters -->
-    <text name="char_cloud">Cloud</text>
-    <text name="char_barret">Barret</text>
-
-    <!-- Locations -->
-    <text name="md1stin">Platform</text>
-    <text name="md1_1">Sector 1 Station</text>
-    <text name="md1_2">Sector 1</text>
-    <text name="nrthmk">No.1 Reactor</text>
-    <text name="nmkin_1">No.1 Reactor</text>
-</texts>

+ 0 - 61
data/data/texts/japanese/dialogs_mission1.xml

@@ -1,61 +0,0 @@
-<texts>
-    <!-- md1stin -->
-    <dialog name="md1stin_00" width="112" height="41">「行くぞ、新入り!
- オレに続け!」</dialog>
-
-    <!-- md1_1 -->
-    <dialog name="md1_1_00" width="277" height="73">ビッグス
-「さすが、ソルジャー!
- でもよ、反神羅(しんら)グループ【アバランチ】に
- ソルジャーが参加するなんてスゲエよな!」</dialog>
-
-    <dialog name="md1_1_01" width="158" height="73">ジェシー
-「その話って本当だったの?
- ソルジャーって言ったら
- 私たちの敵でしょ?」</dialog>
-
-    <dialog name="md1_1_02" width="216" height="57">ジェシー
-「どうして、そのソルジャーが
- 私たちアバランチに協力するわけ?」</dialog>
-
-    <dialog name="md1_1_03" width="221" height="57">ビッグス
-「早とちりするな、ジェシー。
- 元、ソルジャーなんだってさ」<next_page />「今はもう神羅(しんら)をやめちまって
- 俺たちの仲間ってわけさ」</dialog>
-
-    <dialog name="md1_1_04" width="189" height="57">ビッグス
-「まだ名前聞いてなかったよな。
- 教えてくれ」</dialog>
-
-    <dialog name="md1_1_05" width="154" height="41"><include name="char_cloud" />
-「……<include name="char_cloud" />だ」</dialog>
-
-    <dialog name="md1_1_06" width="196" height="41">ビッグス
-「<include name="char_cloud" />か、おれは……」</dialog>
-
-    <dialog name="md1_1_07" width="229" height="57"><include name="char_cloud" />
-「あんたたちの名前なんて興味ないね。
- どうせこの仕事が終わったらお別れだ」</dialog>
-
-    <dialog name="md1_1_08" width="164" height="57">「なにやってんだオマエたち!
- かたまって行動するなって
- 言ってんだろ!」</dialog>
-
-    <dialog name="md1_1_09" width="223" height="41">「ターゲットは壱番魔晄炉(まこうろ)。
- 魔晄炉前のブリッジに集合だぞ」</dialog>
-
-    <dialog name="md1_1_10" width="149" height="41">「元ソルジャー……。
- チッ、信用できねえな」</dialog>
-
-    <dialog name="md1_1_11" width="254" height="73"><include name="char_barret" />
-「【キャンセル】ボタン(初期状態では<image sprite="ButtonCross" />)を
- 押しながら【方向キー】を押せば速く走ることができる。
- 遅れずについてこい!」</dialog>
-
-    <dialog name="nrthmk_00" width="203" height="41">ウェッジ
-「俺は脱出口を確保しておくっす!」</dialog>
-
-    <dialog name="nrthmk_01" width="241" height="57">ウェッジ
-「しっかし、この大きな魔晄炉(まこうろ)を
- 爆破するなんて……みものっすね!」</dialog>
-</texts>

+ 0 - 4
data/data/texts/japanese/dialogs_receiving.xml

@@ -1,4 +0,0 @@
-<texts>
-    <!-- Receiving Items -->
-    <dialog name="receive_potion" width="164" height="25">『<include name="item_potion" />』を手にいれた!</dialog>
-</texts>

+ 0 - 14
data/data/texts/japanese/names.xml

@@ -1,14 +0,0 @@
-<texts>
-    <!-- Items -->
-    <text name="item_potion">ポーション</text>
-
-    <!-- Characters -->
-    <text name="char_cloud">クラウド</text>
-    <text name="char_barret">バレット</text>
-
-    <!-- Locations -->
-    <text name="loc_md1stin">1番街駅ホーム</text>
-    <text name="md1_1">1番街駅</text>
-    <text name="md1_2">1番街</text>
-    <text name="nrthmk">1番魔晄炉</text>
-</texts>

+ 0 - 50
data/data/texts/russian/dialogs_mission1.xml

@@ -1,50 +0,0 @@
-<texts>
-    <!-- Location Names (2000-4999) -->
-    <dialog name="2000" width="0" height="0">Платформа железнодорожной станции первого сектора.</dialog>
-    <dialog name="2001" width="0" height="0">Железнодорожная станция первого сектора.</dialog>
-
-
-
-    <!-- Location Dialogs (10000-99999)-->
-    <dialog name="10000" width="1" height="1">"За мной, салага!"</dialog>
-
-    <dialog name="10001" width="277" height="73">Биггс
-"О, а вот и тот Солдат!
- Как же круто что он состоит в нашей
- группе."</dialog>
-
-    <dialog name="10002" width="1" height="1">Джеси
-"Так те разговоры были правдой?
- Но разве Солдаты не наши враги?"</dialog>
-
-    <dialog name="10003" width="1" height="1">Джеси
-"Почему он помогает нам?"</dialog>
-
-    <dialog name="10004" width="1" height="1">Биггс
-"Не делай поспешных выводов, Джеси.
- Он БЫЛ Солдатом."<new_window />Теперь ушел от них
- и стал одним из нас."</dialog>
-
-    <dialog name="10005" width="1" height="1">Биггс
-"Кстати, я до сих пор не знаю как тебя зовут."</dialog>
-
-    <dialog name="10006" width="1" height="1"><character name="0" />
-"...<character name="0" />."</dialog>
-
-    <dialog name="10007" width="1" height="1">Биггс
-"<character name="0" />, хмм... а я..."</dialog>
-
-    <dialog name="10008" width="1" height="1"><character name="0" />
-"Ваши имена не имеют никакого значения.
- Все-равно, как только это задание закончится
- я вас больше не увижу."</dialog>
-
-    <dialog name="10009" width="1" height="1">"Что это вы тут делаете?
- Я, кажется, сказал не собираться всем вместе."</dialog>
-
-    <dialog name="10010" width="1" height="1">"Наша цель - первый мако-реактор.
- Встречаемся на мосту перед ним."</dialog>
-
-    <dialog name="10011" width="1" height="1">"Бывший Солдат...
- не доверяю я тебе."</dialog>
-</texts>

+ 0 - 6
data/data/texts/russian/item.xml

@@ -1,6 +0,0 @@
-<texts>
-    <text id="0">
-        <name>Potion</name>
-        <description></description>
-    </text>
-</texts>

+ 0 - 4
data/data/texts/russian/receiving.xml

@@ -1,4 +0,0 @@
-<texts>
-    <!-- Receiving Items (5000-9999) -->
-    <dialog id="5000">Вы получили "<item_name id="0">"!</dialog>
-</texts>