diff --git a/assets/games/liminal/scenes/SceneInitial.xml b/assets/games/liminal/scenes/SceneInitial.xml
index b62395eb..9c9f579e 100644
--- a/assets/games/liminal/scenes/SceneInitial.xml
+++ b/assets/games/liminal/scenes/SceneInitial.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/assets/games/liminal/scenes/prologue/ScenePrologue1.xml b/assets/games/liminal/scenes/prologue/ScenePrologue1.xml
index 7878c6a2..9bdf9640 100644
--- a/assets/games/liminal/scenes/prologue/ScenePrologue1.xml
+++ b/assets/games/liminal/scenes/prologue/ScenePrologue1.xml
@@ -5,5 +5,73 @@
I wake.
+
+
+ I gasp. I close my eyes - I'm fine, I'm fine. I'm still here. Breathing.
+
+
+
+ That bucket was a dream. My death was a dream. I'm not dead.
+
+
+
+
+
+ (Am I?)
+ (...)
+ (Aren't I?)
+
+
+
+
+ Of course I'm not.
+
+
+
+ I exhale. My feet fall to the edges of my bed. Slowly, I raise myself to stand.
+
+
+
+ My fingers tremble by the edges of my leg: I curl my hand in. My nails catch on my skin.
+
+
+
+ They're sharp, pastel pink. Done for Prom Day today.
+
+
+
+ The dream didn't happen. How could it have? Prom Day hasn't happened yet.
+
+
+
+
+ I'm fine.
+ (Didn't it happen?)
+ (It felt so...)
+ (Real.)
+
+
+
+
+
\ No newline at end of file
diff --git a/src/dawnshared/util/string.hpp b/src/dawnshared/util/string.hpp
index c9260ea2..32b76023 100644
--- a/src/dawnshared/util/string.hpp
+++ b/src/dawnshared/util/string.hpp
@@ -147,4 +147,22 @@ static inline std::string stringReplaceAll(
startPos += replace.length();
}
return newString;
+}
+
+/**
+ * Joins a vector of strings into a single string, using a delimiter.
+ *
+ * @param strings Vector of strings to join.
+ * @param delim Delimiter to join the strings with.
+ */
+static inline std::string stringJoin(
+ const std::vector &strings,
+ const std::string &delim
+) {
+ std::string result;
+ for(size_t i = 0; i < strings.size(); i++) {
+ if(i > 0) result += delim;
+ result += strings[i];
+ }
+ return result;
}
\ No newline at end of file
diff --git a/src/dawntools/vnscenetool/events/VNTextEventParser.cpp b/src/dawntools/vnscenetool/events/VNTextEventParser.cpp
index 67e90e59..d92ef3ec 100644
--- a/src/dawntools/vnscenetool/events/VNTextEventParser.cpp
+++ b/src/dawntools/vnscenetool/events/VNTextEventParser.cpp
@@ -22,8 +22,19 @@ int32_t VNTextParser::onParse(
struct VNText *out,
std::string *error
) {
+ std::string innerXml = node->innerXml;
+
+ // Split by newlines, then trim each line.
+ std::vector lines = stringSplit(innerXml, "\n");
+ std::vector finalLines;
+ for(auto it = lines.begin(); it != lines.end(); ++it) {
+ auto newLine = stringTrim(*it);
+ if(newLine.length() > 0) finalLines.push_back(newLine);
+ }
+ std::string finalXml = stringJoin(finalLines, "\n");
+
out->language = values["lang"];
- out->text = stringParser(node->innerXml, error);
+ out->text = stringParser(finalXml, error);
return error->length() == 0 ? 0 : -1;
}