zeas2 / Kirikiroid2

Other
2.46k stars 212 forks source link

The House in Fata Morgana (Steam) - Save load doesn't work #12

Open Demos25 opened 6 years ago

Demos25 commented 6 years ago

As the title says. It's impossible to load any save in this game.

Demos25 commented 6 years ago

is there any way to avoid Steam.getLanguage ?

`// Initialize.tjs - システムの初期化 // Copyright (C)2001-2005, W.Dee and contributors 改変・配布は自由です

// システムバージョン var kagVersion = "3.26";

/ Debug.message へのショートカット /

var dm = Debug.message; // これで dm("message"); でコンソールに message を表示できる

/ デフォルトの「捕捉されない例外」ハンドラ /

System.exceptionHandler = function (e) { // どこにも捕捉されない例外がシステム側で捕捉された場合、この関数が // 呼ばれる。e は例外オブジェクト。 if(e instanceof "ConductorException") { // コンダクタの投げた例外の場合 Debug.logAsError(); // ログのファイルへの書き出し動作の開始など var event_disabled = System.eventDisabled; System.eventDisabled = true; // エラーの理由を表示させている間にイベントが発生すると // やっかいなのでいったんイベント発生を停止させる System.inform(e.message); System.eventDisabled = event_disabled; // イベントを発生するかどうかを元の状態に return true; // true を返すと本体側で例外の処理は行わなくなる } else { return false; // false を返すと通常の例外処理 } };

/ パスの設定 後に指定した物が、より優先されて使用される /

function useArchiveIfExists(name) { // name が存在していたらそのアーカイブを使う var arcname; if(Storages.isExistentStorage(arcname = System.exePath + name)) Storages.addAutoPath(arcname + ">"); }

Storages.addAutoPath(System.exePath + "video/"); // exePath 以下の video/ Storages.addAutoPath("video/"); // video フォルダ Storages.addAutoPath("others/"); // その他 Storages.addAutoPath("rule/"); // ルール画像フォルダ Storages.addAutoPath("sound/"); // 効果音フォルダ Storages.addAutoPath("bgm/"); // BGM フォルダ Storages.addAutoPath("fgimage/"); // 前景画像フォルダ Storages.addAutoPath("bgimage/"); // 背景画像フォルダ Storages.addAutoPath("scenario/"); // シナリオフォルダ Storages.addAutoPath("image/"); // そのほかの画像フォルダ Storages.addAutoPath("system/"); // システムフォルダ Storages.addAutoPath("fadech/"); Storages.addAutoPath("steam/");

// パッチアーカイブの検索と使用 // もしこれらの名前を持ったアーカイブが実行可能ファイルと // 同じ場所にあった場合、それを優先して使う useArchiveIfExists("video.xp3"); useArchiveIfExists("others.xp3"); useArchiveIfExists("rule.xp3"); useArchiveIfExists("sound.xp3"); useArchiveIfExists("bgm.xp3"); useArchiveIfExists("fgimage.xp3"); useArchiveIfExists("bgimage.xp3"); useArchiveIfExists("scenario.xp3"); useArchiveIfExists("image.xp3"); useArchiveIfExists("system.xp3"); useArchiveIfExists("fadech.xp3"); useArchiveIfExists("steam.xp3");

try { // Try to load the Steam plugin. Plugins.link("krkrsteam.dll"); } catch (err) { // If we fail, set the Steam object to void so we can continue on as normal. global.Steam = void; }

// Limit FPS to 60 because we need to be constantly updating for Steam. Plugins.link("fpslimit.dll"); System.fpslimit = 60;

{ var language = System.getArgument("-language"); if (language === void && Steam !== void) { language = Steam.getLanguage(); }

if (language == "japanese" || language == "j" || language == "jp") {
    language = "jp";
    System.setArgument("-datapath", "$(appdatapath)\\Novectacle\\ファタモルガーナの館");
} else if (language == "russian" || language == "ru") {
    language = "ru";
    // System.setArgument("-datapath", "$(appdatapath)\\MangaGamer\\The House in Fata Morgana (Russian)");
} else {
    language = "en";
    System.setArgument("-datapath", "$(appdatapath)\\MangaGamer\\The House in Fata Morgana");
}

//var common_arc   = System.exePath + "common.xp3";
var language_arc = System.exePath + "data_" + language + ".xp3";

//useArchiveIfExists(common_arc);
useArchiveIfExists(language_arc);

var path_list = [
    "bgimage/",
    "bgm/",
    "fadech/",
    "fgimage/",
    "image/",
    "others/",
    "rule/",
    "scenario/",
    "sound/",
    "steam/",
    "system/",
    "video/",
];

for (var i = 0; i < path_list.length; i++) {
    //if (Storages.isExistentStorage(common_arc)) {
    //  Storages.addAutoPath(common_arc + ">" + path_list[i]);
    //}
    if (Storages.isExistentStorage(language_arc)) {
        Storages.addAutoPath(language_arc + ">" + path_list[i]);
    }
    Storages.addAutoPath(System.exePath + "common/" + path_list[i]);
    Storages.addAutoPath(System.exePath + "data_" + language + "/" + path_list[i]);
}

useArchiveIfExists("patch.xp3");

// 追加のパッチ用アーカイブの検索
for(var i = 2; ; i++)
{
    // パッチ用アーカイブ patch2.xp3, patch3.xp3 ... がある場合はそちらを
    // 優先して読み込むように
    if(Storages.isExistentStorage(System.exePath + "patch" + i + ".xp3"))
        Storages.addAutoPath(System.exePath + "patch" + i + ".xp3>");
    else
        break;
}

// Language-specific patch files.
useArchiveIfExists("patch_" + language + ".xp3");
Storages.addAutoPath(System.exePath + "patch_" + language + "/");

for(var i = 2; ; i++)
{
    if(Storages.isExistentStorage(System.exePath + "patch_" + language + i + ".xp3")) {
        Storages.addAutoPath(System.exePath + "patch_" + language + i + ".xp3>");
    } else {
        break;
    }
}

}

delete useArchiveIfExists; // useArchiveIfExists は使い終わったので一応消しておく

Plugins.link("addFont.dll"); Plugins.link("fstat.dll");

System.setArgument("-fontcharset", "DEFAULT_CHARSET"); System.setArgument("-debugwin", "no");

var dirlist = Storages.dirlist(System.exePath + "fonts/"); for (var i = 0; i < dirlist.count; i++) { if (dirlist[i] == "./" || dirlist[i] == "../") { continue; } if (dirlist[i].indexOf(".ttf") == -1 && dirlist[i].indexOf(".otf") == -1) { continue; } var path = System.exePath + "fonts/" + dirlist[i]; var ret = System.addFont(path, true); }

/ システムバージョン / Debug.notice("OS : " + System.osName + " (" + System.platformName + ")"); Debug.notice("KAG : " + kagVersion); Debug.notice("Kirikiri : " + System.versionString);

/ ( デバッグ ) 時間計測 /

var parseStartTick = System.getTickCount();

/ スクリプト読み込みラッパー /

function KAGLoadScript(name) { var start = System.getTickCount(); Scripts.execStorage(name); dm(name + " を読み込みました(" + (System.getTickCount() - start) + "ms)"); }

var loaded_scripts = %[];

function KAGLoadScriptOnce(name) { // 指定したスクリプトを読み込むが、一回しか読み込まない if(global.loaded_scripts[name] === true) return; // 既に読み込んでいる global.KAGLoadScript(name); global.loaded_scripts[name] = true; }

/ Config.tjs 読み込み / if(Storages.isExistentStorage("Config.tjs")) { KAGLoadScript("Config.tjs"); } else if(Storages.isExistentStorage("Config.~new")) { System.inform("Config.tjs が見つかりません。\nsystem フォルダにある " "Config.~new ファイルを Config.tjs に改名してください。"); System.exit(); } else { throw new Exception("Couldn't find Config.tjs"); }

/ Config.tjs バージョンチェック /

if(typeof global.config_version == "undefined" || config_version != kagVersion) { KAGLoadScript("UpdateConfig.tjs"); }

/ 二重起動のチェック /

// 実行可能ファイルのパスをキーにしてロックを行う if(!System.createAppLock(System.exePath.replace(/[^A-Za-z]/g, '_'))) { // すでに起動している System.inform(System.title + " is already running."); System.exit(); }

/ オン・デマンド・ローディングを行うための定義 /

property askYesNo { getter() { KAGLoadScript("YesNoDialog.tjs"); return global.askYesNo; } } property CheckBoxLayer { getter() { KAGLoadScript("CheckBoxLayer.tjs"); return global.CheckBoxLayer; } } property ButtonLayer { getter() { KAGLoadScript("ButtonLayer.tjs"); return global.ButtonLayer; } } property EditLayer { getter() { KAGLoadScript("EditLayer.tjs"); return global.EditLayer; } } property KAGPlugin { getter() { KAGLoadScript("Plugin.tjs"); return global.KAGPlugin; } }

/ 各システム読み込み / dm("KAG System スクリプトを読み込んでいます...");

KAGLoadScript("Utils.tjs"); KAGLoadScript("KAGLayer.tjs"); KAGLoadScript("HistoryLayer.tjs"); KAGLoadScript("BGM.tjs"); KAGLoadScript("SE.tjs"); KAGLoadScript("Movie.tjs"); KAGLoadScript("Conductor.tjs"); KAGLoadScript("AnimationLayer.tjs"); KAGLoadScript("GraphicLayer.tjs"); KAGLoadScript("MessageLayer.tjs"); KAGLoadScript("Menus.tjs"); KAGLoadScript("DefaultMover.tjs"); KAGLoadScript("MainWindow.tjs"); if(Storages.isExistentStorage("Override.tjs")) KAGLoadScript("Override.tjs"); if(Storages.isExistentStorage(System.exePath + "Override2.tjs")) KAGLoadScript(System.exePath + "Override2.tjs");

/ ( デバッグ ) 時間計測 / dm("スクリプトの読み込みに " + (System.getTickCount() - parseStartTick) + "ms かかりました"); parseStartTick = System.getTickCount();

/ ( デバッグ ) VM コードのダンプ /

// Scripts.dump();

/ ( デバッグ ) 時間計測 /

parseStartTick = System.getTickCount();

/ KAG メインウィンドウの作成 グローバルメンバ kag が存在しなければ KAGWindow クラスの オブジェクトを作成して入れる /

global.kag = new KAGWindow() if typeof global.kag == "undefined";

/ グローバルから簡単にアクセスできるように、いくつかの 変数の別名を作成 /

var f = kag.flags; // ユーザ変数 (フラグ) var sf = kag.sflags; // システム変数 (システム) var tf = kag.tflags; // 一時変数 (一時フラグ)

property mp { getter { return kag.conductor.macroParams; } }

/ ( デバッグ ) 時間計測 / dm("KAGMainWindow のコンストラクタで " + (System.getTickCount() - parseStartTick) + "ms かかりました"); delete parseStartTick;

/ AfterInit.tjs が存在すれば実行 / if(Storages.isExistentStorage("AfterInit.tjs")) KAGLoadScript("AfterInit.tjs"); if(Storages.isExistentStorage(System.exePath + "AfterInit2.tjs")) KAGLoadScript(System.exePath + "AfterInit2.tjs");

/ コマンドラインパラメータとして -ovr が指定されていれば そのパラメータを TJS 式として実行 / { var ovr = System.getArgument('-ovr'); if(ovr !== void && ovr != 'yes') Scripts.eval(ovr); }

/ first.ks の実行 /

kag.process("first.ks");

`