From c6973e9c0fd4b015b00a512deb02e16e9ca621a1 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Tue, 29 Jul 2025 19:37:39 +0800 Subject: [PATCH] fix --- src/scripts/cat_system/archive/int.rs | 3 +++ src/scripts/cat_system/cstl.rs | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/scripts/cat_system/archive/int.rs b/src/scripts/cat_system/archive/int.rs index c881cdc..dc9d257 100644 --- a/src/scripts/cat_system/archive/int.rs +++ b/src/scripts/cat_system/archive/int.rs @@ -115,6 +115,9 @@ fn detect_script_type(buf: &[u8], buf_len: usize, _filename: &str) -> Option<&'s if buf_len >= 8 && buf.starts_with(b"CatScene") { return Some(&ScriptType::CatSystem); } + if buf_len >= 4 && buf.starts_with(b"CSTL") { + return Some(&ScriptType::CatSystemCstl); + } None } diff --git a/src/scripts/cat_system/cstl.rs b/src/scripts/cat_system/cstl.rs index fdeeaf9..c6ebeb4 100644 --- a/src/scripts/cat_system/cstl.rs +++ b/src/scripts/cat_system/cstl.rs @@ -176,7 +176,13 @@ impl Script for CstlScript { if self.langs.is_empty() || self.data.is_empty() { return Err(anyhow::anyhow!("CSTL script has no languages or data")); } - Ok(self.data[self.lang_index.unwrap_or(0)].clone()) + Ok(self.data[self.lang_index.unwrap_or(0)] + .iter() + .map(|m| Message { + name: m.name.clone(), + message: m.message.replace("\\n", "\n"), + }) + .collect()) } fn import_messages<'a>( @@ -215,7 +221,7 @@ impl Script for CstlScript { mes = mes.replace(k, v); } } - m.message = mes; + m.message = mes.replace("\n", "\\n"); } file.write_all(b"CSTL")?; file.write_u32(0)?; // unk