//============================================================================= // Nore_Tes.js //============================================================================= // This software is released under the MIT License. // http://opensource.org/licenses/mit-license.php //============================================================================= /*:ja * @target MZ * @author ル * @plugindesc テキストファイルでツクールのイベントを記述するプラグインです。 * 「睡工房」さんの TES の不完全移植版です。 * @base Nore_TesValidator * @url https://ci-en.dlsite.com/creator/276 * * * @param scenarioFolder * @desc シナリオファイルがある場所を設定します * @type string * @default /../scenario/ * * @param conversionKey * @desc 変換を行うキーです。テストプレイ中のみ有効です * @type select * @option F4 キー * @value 115 * @option F6 キー * @value 117 * @option F7 キー * @value 118 * @option F9 キー * @value 120 * @option F10 キー * @value 121 * @option F11 キー * @value 122 * @default 118 * * @param customFadeInOut * @desc フェードイン、フェードアウトの拡張を行います。 * 他のプラグインと競合する場合は OFF に設定してください。 * @type boolean * @default true * * @param actor1 * @desc IDが1のアクターの会話を指定するコマンドを設定できます * @type string * @default リード * * @param actor2 * @desc IDが2のアクターの会話を指定するコマンドを設定できます * @type string * @default プリシア * * @param actor3 * @desc IDが3のアクターの会話を指定するコマンドを設定できます * @type string * @default ゲイル * * @param actor4 * @desc IDが4のアクターの会話を指定するコマンドを設定できます * @type string * @default ミシェル * * @param actor5 * @desc IDが5のアクターの会話を指定するコマンドを設定できます * @type string * @default アルベール * * @param actor6 * @desc IDが6のアクターの会話を指定するコマンドを設定できます * @type string * @default ケイシー * * @param actor7 * @desc IDが7のアクターの会話を指定するコマンドを設定できます * @type string * @default エリオット * * @param actor8 * @desc IDが8のアクターの会話を指定するコマンドを設定できます * @type string * @default ローザ * * @param actor9 * @desc IDが9のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor10 * @desc IDが10のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor11 * @desc IDが11のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor12 * @desc IDが12のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor13 * @desc IDが13のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor14 * @desc IDが14のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor15 * @desc IDが15のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor16 * @desc IDが16のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor17 * @desc IDが17のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor18 * @desc IDが18のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor19 * @desc IDが19のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor20 * @desc IDが20のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor21 * @desc IDが21のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor22 * @desc IDが22のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor23 * @desc IDが23のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor24 * @desc IDが24のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor25 * @desc IDが25のアクターの会話を指定するコマンドを設定できます * @type string * @default * * * @param actor26 * @desc IDが26のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor27 * @desc IDが27のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor28 * @desc IDが28のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor29 * @desc IDが29のアクターの会話を指定するコマンドを設定できます * @type string * @default * * * @param actor30 * @desc IDが30のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor31 * @desc IDが31のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor32 * @desc IDが32のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor33 * @desc IDが33のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor34 * @desc IDが34のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor35 * @desc IDが35のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor36 * @desc IDが36のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor37 * @desc IDが37のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor38 * @desc IDが38のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor39 * @desc IDが39のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor40 * @desc IDが40のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor41 * @desc IDが41のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor42 * @desc IDが42のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor43 * @desc IDが43のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor44 * @desc IDが44のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor45 * @desc IDが45のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor46 * @desc IDが46のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor47 * @desc IDが47のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor48 * @desc IDが48のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor49 * @desc IDが49のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor50 * @desc IDが50のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor51 * @desc IDが51のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor52 * @desc IDが52のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor53 * @desc IDが53のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor54 * @desc IDが54のアクターの会話を指定するコマンドを設定できます * @type string * @default * * @param actor55 * @desc IDが55のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor56 * @desc IDが56のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor57 * @desc IDが57のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor58 * @desc IDが58のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor59 * @desc IDが59のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor60 * @desc IDが60のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor61 * @desc IDが61のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor62 * @desc IDが62のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor63 * @desc IDが63のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor64 * @desc IDが64のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor65 * @desc IDが65のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor66 * @desc IDが66のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor67 * @desc IDが67のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor68 * @desc IDが68のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor69 * @desc IDが69のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor70 * @desc IDが70のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor71 * @desc IDが71のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor72 * @desc IDが72のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor73 * @desc IDが73のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor74 * @desc IDが74のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor75 * @desc IDが75のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor76 * @desc IDが76のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor77 * @desc IDが77のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor78 * @desc IDが78のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor79 * @desc IDが79のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor80 * @desc IDが80のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor81 * @desc IDが81のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor82 * @desc IDが82のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor83 * @desc IDが83のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor84 * @desc IDが84のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor85 * @desc IDが85のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor86 * @desc IDが86のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor87 * @desc IDが87のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor88 * @desc IDが88のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor89 * @desc IDが89のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor90 * @desc IDが90のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor91 * @desc IDが91のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor92 * @desc IDが92のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor93 * @desc IDが93のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor94 * @desc IDが94のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor95 * @desc IDが95のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor96 * @desc IDが96のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor97 * @desc IDが97のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor98 * @desc IDが98のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor99 * @desc IDが99のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor100 * @desc IDが100のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor101 * @desc IDが101のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor102 * @desc IDが102のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor103 * @desc IDが103のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor104 * @desc IDが104のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor105 * @desc IDが105のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor106 * @desc IDが106のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor107 * @desc IDが107のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor108 * @desc IDが108のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor109 * @desc IDが109のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor110 * @desc IDが110のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor111 * @desc IDが111のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor112 * @desc IDが112のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor113 * @desc IDが113のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor114 * @desc IDが114のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor115 * @desc IDが115のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor116 * @desc IDが116のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor117 * @desc IDが117のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor118 * @desc IDが118のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor119 * @desc IDが119のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor120 * @desc IDが120のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor133 * @desc IDが133のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor134 * @desc IDが134のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor135 * @desc IDが135のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor136 * @desc IDが136のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor137 * @desc IDが137のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor138 * @desc IDが138のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor139 * @desc IDが139のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor140 * @desc IDが140のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor141 * @desc IDが141のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor142 * @desc IDが142のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor143 * @desc IDが143のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor144 * @desc IDが144のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor145 * @desc IDが145のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor146 * @desc IDが146のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor147 * @desc IDが147のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor148 * @desc IDが148のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor149 * @desc IDが149のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor150 * @desc IDが150のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor151 * @desc IDが151のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor152 * @desc IDが152のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor153 * @desc IDが153のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor154 * @desc IDが154のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor155 * @desc IDが155のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor156 * @desc IDが156のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor157 * @desc IDが157のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor158 * @desc IDが158のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor159 * @desc IDが159のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor160 * @desc IDが160のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor161 * @desc IDが161のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor162 * @desc IDが162のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor163 * @desc IDが163のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor164 * @desc IDが164のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor165 * @desc IDが165のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor166 * @desc IDが166のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor167 * @desc IDが167のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor168 * @desc IDが168のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor169 * @desc IDが169のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor170 * @desc IDが170のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor171 * @desc IDが171のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor172 * @desc IDが172のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor173 * @desc IDが173のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor174 * @desc IDが174のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor175 * @desc IDが175のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor176 * @desc IDが176のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor177 * @desc IDが177のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor178 * @desc IDが178のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor179 * @desc IDが179のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor180 * @desc IDが180のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor181 * @desc IDが181のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor182 * @desc IDが182のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor183 * @desc IDが183のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor184 * @desc IDが184のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor185 * @desc IDが185のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor186 * @desc IDが186のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor187 * @desc IDが187のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor188 * @desc IDが188のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor189 * @desc IDが189のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor190 * @desc IDが190のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor191 * @desc IDが191のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor192 * @desc IDが192のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor193 * @desc IDが193のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor194 * @desc IDが194のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor195 * @desc IDが195のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor196 * @desc IDが196のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor197 * @desc IDが197のアクターの会話を指定するコマンドを設定できます * @type string * * @param actor198 * @desc IDが198のアクターの会話を指定するコマンドを設定できます * @type string * * @command Run * @text 実行 * @des イベントファイルの実行。 * @arg id * @text ファイル名 * @desc 実行するイベントファイルのファイル名 * @arg note * * @command Run自動2回目以降 * @text 実行(2回目以降が付与) * @des イベントファイルの実行。 * @arg id * @text ファイル名 * @desc 実行するイベントファイルのファイル名 * * @help * Ver 0.1.0 * * 睡工房さんのTES と互換があるようにしています。 * http://hime.be/rgss3/tes.html * リファレンスも、↑をご覧ください。 * ただし、未実装箇所が多くあります。 * * ■使い方 * プロジェクトフォルダと同じディレクトリに * scenario フォルダを作成します。 * その中に.txt ファイルを作成し、イベントを書いていきます。 * * (テキストファイルの改行コードは何でも大丈夫ですが、 *  文字コードは UTF-8 でお願いします。) * * その後、ツクールの開発環境からゲームを起動し、 * F7キーを押すことで変換が完了します。 * //************************************************************************** // MZ拡張 //************************************************************************** * plugin * >プラグインのイベントコマンドです *  ■パラメータ * name: string * →プラグイン名 * command: string * →コマンド名 * args: string(JSON形式)空白が入るとエラーになります。空の場合は {} を指定 * →引数 * * //************************************************************************** // 独自コマンド //************************************************************************** *  n1 n2 n3 ... n99 *  >アクターによる会話を表示します。n の後の数字はアクターIDです。 *   ■パラメータ *    name: string *     →表示する名前 * actor: string * →顔画像ファイル名 * index: number * →顔画像ファイルインデックス * *  turn_left *  turn_right *  turn_up *  turn_down *  >キャラクターが向きを変えます。 *   @route_h event=-1 skip=true wait=true *   @route type=turn_XXX *   と同じです。 *   ■パラメータ *    event: number *     →イベントID。デフォルトは-1 *    skil: boolean *     →デフォルトはtrue *    wait: boolean *     →デフォルトはtrue * *  move_left *  move_right *  move_up *  move_down *  >キャラクターが移動します。 *   @route_h event=-1 skip=true wait=true *   @route type=left or right or up or down *   と同じです。 *   ■パラメータ *    event: number *     →イベントID。デフォルトは-1 *    skil: boolean *     →デフォルトはtrue *    wait: boolean *     →デフォルトはtrue //************************************************************************** // 独自拡張 //************************************************************************** * fadeout * →time を指定できるようにしました * * fadein * →time を指定できるようにしました * * イベント実装状況(○→実装済み) //************************************************************************** // メッセージ系 //************************************************************************** *○ message_h (name=>表示する名前) *○ choice_h *○ choice_if *○ choice_cancel *○ choice_end *○ input_num *○ choice_item (type=>1: アイテム, 2:大事なもの, 3:隠しアイテムA, 4:隠しアイテムB) *○ scroll_h //************************************************************************** // ゲーム進行系 //************************************************************************** *○ sw *○ var *  var_random *  var_item *  var_weapon *  var_armor *  var_actor *  var_enemy *  var_character *  var_party *  var_other *  var_script *○ self_sw *○ timer //************************************************************************** // フロー制御系 //************************************************************************** *○ if_sw *○ if_var *○ if_self_sw *○ if_timer *○ if_enemy *○ if_character *○ if_vehicle *○ if_money *○ if_item *○ if_weapon *○ if_armor *○ if_button *○ if_script *○ else *○ loop *○ loop_end *○ loop_break *○ event_break *○ return *○ common *○ label *○ label_jump *  comment *  comment2 //************************************************************************** // パーティ系 //************************************************************************** *○ money *○ item *○ weapon *○ armor *  member //************************************************************************** // アクター系 //************************************************************************** *  hp *  mp *  state *○ all_recovery *○ exp *○ level *  capability *  skill *  equip *○ name *○ class *○ nickname //************************************************************************** // 移動系 //************************************************************************** *○ map_move *○ vehicle_pos *○ event_pos *○ scroll_map *○ route_h *○ route *○ vehicle //************************************************************************** // キャラクター系 //************************************************************************** *○ transparent *○ followers *○ gather *○ anime *○ balloon *○ erace //************************************************************************** // 画面効果系 //************************************************************************** *○ fadeout *○ fadein *○ tone *○ flash *○ shake //************************************************************************** // 時間調整系 //************************************************************************** *○ wait //************************************************************************** // ピクチャと天候系 //************************************************************************** *○ picture *○ picture_move *○ picture_rotation *○ picture_tone *○ picture_erace *○ weather //************************************************************************** // 音楽と効果音系 //************************************************************************** *○ bgm *○ fadeout_bgm *○ save_bgm *○ resume_bgm *○ bgs *○ fadeout_bgs *○ me *○ se //************************************************************************** // シーン制御系 //************************************************************************** *  battle *  battle_win *  battle_escape *  battle_loss *  battle_end *  shop *  input_name *○ menu_open *○ save_open *○ gameover *○ title_return //************************************************************************** // システム設定系 //************************************************************************** *  battle_bgm *  battle_end_me *○ save_disable *○ menu_disable *○ encount_disable *○ formation_disable *  window_color *  actor_graphic *  vehicle_graphic //************************************************************************** // ムービー系 //************************************************************************** *○ movie //************************************************************************** // マップ系 //************************************************************************** *  map_name_disable *  tileset *  battle_background *  parallax *  pos_info //************************************************************************** // バトル系 //************************************************************************** *  enemy_hp *  enemy_mp *  enemy_state *  enemy_all_recovery *  enemy_appear *  enemy_trans *  battle_anime *  force *  battle_abort //************************************************************************** // 上級系 //************************************************************************** *  script *△ plugin //************************************************************************** // その他 //************************************************************************** *○ end * * ・利用規約 * 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等) * についても制限はありません。 * このプラグインはもうあなたのものです。 */ var Nore; (function (Nore) { var Tes; (function (Tes) { var parameters = PluginManager.parameters("Nore_Tes"); var CONVERSION_KEY = parseInt(parameters["conversionKey"]); var COSTOM_FADE_IN_OUT = parameters["customFadeInOut"].toLowerCase() === "true"; var AUTO_WARD_WRAP = parameters["autoWordWrap"] === "true"; var ACTOR_NAME_MAP = []; for (var i = 1; i <= 198; i++) { ACTOR_NAME_MAP[i] = parameters["actor" + i] || ""; } var fs; var path; if (Utils.isNwjs()) { fs = require("fs"); path = require("path"); } var pathParam = parameters["scenarioFolder"]; var SCENARIO_FOLDER_NAME = "scenario"; Tes.SCENARIO_FILE_NAME = "Scenario.json"; Tes.SCENARIO_FILE_NAME_EN = "Scenario_en.json"; Tes.SCENARIO_SRC_PATH = (function () { var p = window.location.pathname.replace(/(\/www|)\/[^\/]*$/, pathParam); if (p.match(/^\/([A-Z]\:)/)) { p = p.slice(1); } var result = decodeURIComponent(p); if (result[0] == "/") { return "." + result; } return result; })(); Tes.SCENARIO_SRC_PATH_EN = (function () { var p = window.location.pathname.replace( /(\/www|)\/[^\/]*$/, "/../scenario_en/" ); if (p.match(/^\/([A-Z]\:)/)) { p = p.slice(1); } var result = decodeURIComponent(p); if (result[0] == "/") { return "." + result; } return result; })(); Tes.DATA_PATH = (function () { var p = window.location.pathname.replace( /(\/www|)\/[^\/]*$/, "/" + SCENARIO_FOLDER_NAME + "/" ); if (p.match(/^\/([A-Z]\:)/)) { p = p.slice(1); } var result = decodeURIComponent(p); if (result[0] == "/") { return "." + result; } return result; })(); DataManager.loadScenarioFile = function (name, src) { var _this = this; var xhr = new XMLHttpRequest(); var url = SCENARIO_FOLDER_NAME + "/" + src; window[name] = null; xhr.open("GET", url); xhr.overrideMimeType("application/json"); xhr.onload = function () { return _this.onXhrLoad(xhr, name, src, url); }; xhr.onerror = function () { return _this.onXhrError(name, src, url); }; xhr.send(); }; Tes.loadScenarioFile = true; var _DataManager_loadDatabase = DataManager.loadDatabase; DataManager.loadDatabase = function () { if (Tes.loadScenarioFile) { this.loadScenarioFile("$dataScenario", Tes.SCENARIO_FILE_NAME); //this.loadScenarioFile('$dataScenario_en', SCENARIO_FILE_NAME_EN); } _DataManager_loadDatabase.call(this); }; var pluginName = "Nore_Tes"; PluginManager.registerCommand(pluginName, "Run", function (args) { $gameTemp.timeSpeedUp = false; var id = args.id + ""; var normalized = id.normalize("NFC"); switch (ConfigManager.language) { case "en": var list_1 = $dataScenario["en_" + normalized]; if (list_1) { console.log( "english Scenario \u30B3\u30DE\u30F3\u30C9\u5B9F\u884C: ".concat( id ) ); this.setupChild(list_1, this._eventId); return; } /*const list2 = $dataScenario_en[normalized]; if (list2) { console.log(`Scenario en コマンド実行: ${id}`); this.setupChild(list2, this._eventId); return; } break;*/ } var list = $dataScenario[normalized]; if (!list) { throw new Error("id:" + id + " のデータが見つかりません"); } console.log("Scenario \u30B3\u30DE\u30F3\u30C9\u5B9F\u884C: ".concat(id)); $gameTemp.clearDestination(); this.setupChild(list, this._eventId); }); PluginManager.registerCommand( pluginName, "Run自動2回目以降", function (args) { var postfix = $gameSwitches.value(1000) ? "_2回目以降" : ""; var id = args.id + postfix; var normalized = id.normalize("NFC"); switch (ConfigManager.language) { case "en": var list_2 = $dataScenario["en_" + normalized]; if (list_2) { console.log( "english Scenario \u30B3\u30DE\u30F3\u30C9\u5B9F\u884C: ".concat( id ) ); this.setupChild(list_2, this._eventId); return; } break; } var list = $dataScenario[normalized]; if (!list) { throw new Error("id:" + id + " のデータが見つかりません"); } console.log( "Scenario \u30B3\u30DE\u30F3\u30C9\u5B9F\u884C: ".concat(id) ); this.setupChild(list, this._eventId); } ); var _SceneManager_onKeyDown = SceneManager.onKeyDown; SceneManager.onKeyDown = function (event) { _SceneManager_onKeyDown.call(this, event); if (!$gameTemp || !$gameTemp.isPlaytest()) { return; } if (!event.ctrlKey && !event.altKey) { if (event.keyCode == CONVERSION_KEY) { var converter = new Scenario_Converter(); converter.convertAll(); SoundManager.playSave(); } } }; var _DataManager_checkError = DataManager.checkError; DataManager.checkError = function () { if (this._errors.length > 0) { for (var i = 0; i < this._errors.length; i++) { var error = this._errors[i]; if (error.url.indexOf(Tes.SCENARIO_FILE_NAME) >= 0) { console.error("Failed to load: " + error.url); this._errors.splice(i, 1); break; } } } _DataManager_checkError.call(this); }; /** * イベントテキストをMZで使えるJSON形式に変換するクラスです */ var Scenario_Converter = /** @class */ (function () { function Scenario_Converter(isJp) { if (isJp === void 0) { isJp = true; } this._isJp = isJp; } /** * 全てのイベントを変換します。 */ Scenario_Converter.prototype.convertAll = function () { var self = this; this._replaceMap = {}; var scenario = {}; var srcPath; if (this._isJp) { srcPath = Tes.SCENARIO_SRC_PATH; } else { srcPath = Tes.SCENARIO_SRC_PATH_EN; p("英語変換"); } fs.readdir(srcPath, function (err, files) { if (err) { console.error(err.message); return; } if (!files) { return; } try { self.convertReplace(files); self.convertFiles(srcPath, files, scenario); //console.log(scenario); if (!fs.existsSync(Tes.DATA_PATH)) { fs.mkdirSync(Tes.DATA_PATH); } if (self._isJp) { fs.writeFileSync( Tes.DATA_PATH + "Scenario.json", JSON.stringify(scenario) ); DataManager.loadScenarioFile( "$dataScenario", Tes.SCENARIO_FILE_NAME ); //DataManager.loadScenarioFile('$dataScenario_en', SCENARIO_FILE_NAME_EN); console.log("Nore_TES の変換が終わりました"); } else { fs.writeFileSync( Tes.DATA_PATH + "Scenario_en.json", JSON.stringify(scenario) ); } } catch (e) { console.error(e); } }); }; Scenario_Converter.prototype.convertFiles = function ( basePath, files, scenario ) { if (!files) { return; } for (var _i = 0, files_1 = files; _i < files_1.length; _i++) { var file = files_1[_i]; var filePath = path.resolve(basePath, file); var stat = fs.statSync(filePath); if (stat.isDirectory()) { var files2 = fs.readdirSync(filePath); this.convertFiles(filePath + "/", files2, scenario); continue; } var name_1 = this.parseValidFileName(file); if (!name_1) { continue; } var text = fs.readFileSync(basePath + file, "utf8"); scenario[name_1.normalize("NFC")] = this.convert(file, text); } }; /** * 指定のファイルがイベントファイルかどうかを返します */ Scenario_Converter.prototype.parseValidFileName = function (file) { if (file.indexOf("replace.txt") === 0) { return; } var index = file.indexOf(".txt"); if (index === -1) { index = file.indexOf(".sce"); } if (index === -1) { return null; } var name = file.substr(0, index); return name; }; /** * replace ファイルを変換します */ Scenario_Converter.prototype.convertReplace = function (files) { for (var _i = 0, files_2 = files; _i < files_2.length; _i++) { var file = files_2[_i]; var index = file.indexOf("replace.txt"); if (index === -1) { continue; } var name_2 = file.substr(0, index); var text = fs.readFileSync(Tes.SCENARIO_SRC_PATH + file, "utf8"); this.parseReplace(text); return; } }; Scenario_Converter.prototype.parseReplace = function (text) { var lines = text.split(/\r\n|\r|\n/); for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) { var line = lines_1[_i]; if (line.indexOf("//") === 0) { continue; } var chars = line.split(/\s/); if (chars.length < 2) { continue; } this._replaceMap[chars[0]] = chars[chars.length - 1]; } //console.log(this._replaceMap) }; Scenario_Converter.prototype.connectMultiLines = function (lines) { var result = []; for (var i = 0; i < lines.length; i++) { var line = lines[i]; while ( line[line.length - 1] == "," && !isNaN(line[line.length - 2]) ) { i++; if (lines[i]) { line = line + this.removeWS(lines[i].replace(/^\uFEFF/, "")); } else { break; } } result.push(line); } return result; }; Scenario_Converter.prototype.convert = function (file, text) { this.initFile(); var list = []; var srcLines = text.split(/\r\n|\r|\n/); srcLines = this.connectMultiLines(srcLines); var blocks = []; var lastHeader = "@normal_messages"; var lines = []; for (var i = 0; i < srcLines.length; i++) { var line = srcLines[i]; line = line.replace(/^\uFEFF/, ""); line = this.removeWS(line); if (line.indexOf("//") === 0) { continue; } if (line.indexOf("#") === 0) { continue; } lines.push(line); } for (var i = 0; i < lines.length; i++) { var line = lines[i]; if (line.length === 0) { continue; } var block = new Block(i + 1); blocks.push(block); if (line.indexOf("@") === 0) { block.header = line; lastHeader = line; if ( line.indexOf("@choice_if") >= 0 || line.indexOf("@choice_h") >= 0 ) { continue; } var offset = 1; if (i + offset === lines.length) { break; } lines[i + offset] = this.removeWS(lines[i + offset]); while ( i + offset < lines.length && (lines[i + offset].indexOf("@") !== 0 || lines[i + offset].indexOf("@route") !== -1) && lines[i + offset].length > 0 ) { block.pushMsg(this.removeWS(lines[i + offset])); offset++; if (i + offset < lines.length) { lines[i + offset] = this.removeWS(lines[i + offset]); } } i += offset - 1; } else { block.header = lastHeader; //'@normal_messages'; var offset = 0; while ( i + offset < lines.length && lines[i + offset].indexOf("@") !== 0 && lines[i + offset].length > 0 ) { block.pushMsg(this.removeWS(lines[i + offset])); offset++; } if (offset >= 1) { i += offset - 1; } } } var context = new Context(file, 0, "start", list, null, null); for (var _i = 0, blocks_1 = blocks; _i < blocks_1.length; _i++) { var block = blocks_1[_i]; this.convertCommand(file, list, block); } context.insertTop({ code: 355, indent: this.indent, parameters: [ "$gameTemp.ninshinTotal='".concat(this._ninshinTotal, "'"), ], }); this.convertCommand_null(list); return list; }; Scenario_Converter.prototype.initFile = function () { this._defaultMobNameMap = {}; this._defaultMobFaceMap = {}; this.indent = 0; }; /** * ホワイトスペースを削除します。 */ Scenario_Converter.prototype.removeWS = function (line) { var ret = line.replace(/^[\x20|\t]+/g, ""); if (ret === "_") { return " "; } else { return ret; } }; Scenario_Converter.prototype.alphabetUserList = function () { return [ "浮浪者", "見物人", "男", "女", "市民", "会社員", "男子学生", "女子学生", "黒人", "下級ヒーロー", "中級ヒーロー", "ヒーロー", "怪人", "男優", "雑魚マフィア", "ニュースキャスター", "黒人外人", "雑魚怪人組織員", "ヒーロー協会幹部老人", "チンピラ", "ヒーロー協会幹部", ]; }; /** * コマンドを変換します。 */ Scenario_Converter.prototype.convertCommand = function ( file, list, block ) { var headerList = block.header.split(/\s/g); var command = headerList[0].substr(1); var header = this.parseHeader(headerList, false); var context = new Context( file, block.lineNumber, command, list, header, block.data ); var n = /n(\d+)/.exec(command); var m = /m(\d+)/.exec(command); var mob = /mob(\d+)/.exec(command); var userList = this.alphabetUserList(); var userInfo = null; for (var _i = 0, userList_1 = userList; _i < userList_1.length; _i++) { var user = userList_1[_i]; var regexp = new RegExp(user + "([A-Z])", "g"); var u = regexp.exec(command); if (u) { command = user; context.type = u[1]; userInfo = user; } } try { if (!userInfo) { this.validate(context); } if (n) { this["convertCommand_n"](parseInt(n[1]), context); } else if (m) { this["convertCommand_m"](parseInt(m[1]), context); } else if (mob) { this["convertCommand_mob"](parseInt(mob[1]), context); } else if (command == "") { this["convertCommand_normal_messages"](context); } else { if ( command === "n" || command === "a" || command === "m" || command === "mob" ) { context.error("のコマンドが存在しません"); } else if (!this["convertCommand_" + command]) { var actorIndex = ACTOR_NAME_MAP.indexOf(command); if (actorIndex > 0) { this["convertCommand_n"](actorIndex, context); } else { context.error(command + "のコマンドが存在しません"); } } else { this["convertCommand_" + command](context); } } } catch (e) { console.error(command + "のコマンドでエラーが発生しました"); console.error(file); console.log(e); console.log(e.stack); throw e; } }; Scenario_Converter.prototype.convertCommand_mob = function ( mobId, context ) { var name = context.headerStr("name"); this._defaultMobNameMap[mobId] = name; var face = context.headerStr("actor"); var index = context.headerInt("index", 0); if (face) { this._defaultMobFaceMap[mobId] = [face, index]; } }; Scenario_Converter.prototype.convertCommand_m = function ( mobId, context ) { var name = this._defaultMobNameMap[mobId] || ""; if (context.header["name"]) { name = context.headerStr("name"); } var actor = ""; var index = 0; var faceList = this._defaultMobFaceMap[mobId]; if (faceList) { actor = faceList[0]; index = faceList[1]; } if (context.header["face"]) { actor = context.headerStr("face"); } if (context.header["index"]) { index = context.headerInt("index"); } context.push({ code: 101, indent: this.indent, parameters: [actor, index, 0, 2, name], }); for (var _i = 0, _a = context.data; _i < _a.length; _i++) { var msg = _a[_i]; context.push({ code: 401, indent: this.indent, parameters: [this.replaceMessage(msg)], }); } }; Scenario_Converter.prototype.convertCommand_normal_messages = function ( context ) { this.convertCommand_n(0, context); }; /** * コマンドのパラメータが正しいかどうかを検証します。 * @param {Context} context [description] */ Scenario_Converter.prototype.validate = function (context) { var validaor = Tes.validates[context.command]; if (!validaor) { var actorIndex = ACTOR_NAME_MAP.indexOf(context.command); if (actorIndex > 0) { validaor = Tes.validates["n" + actorIndex]; } else { console.error( context.command + "のコマンドの Validator が存在しません" ); return; } } for (var paramName in validaor) { if (!validaor.hasOwnProperty(paramName)) { continue; } var vv = validaor[paramName]; if (!vv) { console.error( "" .concat(context.command, " ") .concat( paramName, " \u306EValidator \u304C\u5B58\u5728\u3057\u307E\u305B\u3093" ) ); continue; } if (Array.isArray(vv)) { var validatorList = vv; for ( var _i = 0, validatorList_1 = validatorList; _i < validatorList_1.length; _i++ ) { var v = validatorList_1[_i]; if (!v) { console.error( "" .concat(context.command, " ") .concat( paramName, " \u306EValidator \u304C\u5B58\u5728\u3057\u307E\u305B\u3093" ) ); continue; } v.validate(context, paramName, context.header[paramName]); } } else { vv.validate(context, paramName, context.header[paramName]); } } }; /** * ヘッダをパースします。 */ Scenario_Converter.prototype.parseHeader = function ( headerList, isActor ) { var result = {}; for (var i = 1; i < headerList.length; i++) { var text = headerList[i]; switch (text) { case "笑": result["index"] = 1; break; case "明": result["index"] = 2; break; case "困": result["index"] = 3; break; case "呆": result["index"] = 4; break; case "考": result["index"] = 5; break; case "驚": result["index"] = 6; break; case "怒": result["index"] = 7; break; case "悲": result["index"] = 8; break; case "恥": result["index"] = 9; break; case "叫": result["index"] = 10; break; case "閉": result["index"] = 11; break; case "苦": result["index"] = 12; break; case "giza": result["giza"] = 12; break; } var index = text.indexOf("="); var key = text.substr(0, index); var value = text.substr(index + 1); result[key] = value; } return new Header(result); }; Scenario_Converter.prototype.convertCommand_null = function (list) { list.push({ code: 0, indent: 0, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_move_down = function ( context ) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 1, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_move_left = function ( context ) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 2, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_move_right = function ( context ) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 3, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_move_up = function (context) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 4, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_turn_down = function ( context ) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 16, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_turn_left = function ( context ) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 17, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_turn_right = function ( context ) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 18, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_turn_up = function (context) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 19, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_step_anime_on = function ( context ) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 33, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_step_anime_off = function ( context ) { var event = context.headerInt("event", -1); var skip = context.headerBool("skip", true); var wait = context.headerBool("wait", true); var list = []; list.push({ code: 34, indent: null, parameters: parameters }); list.push({ code: 0 }); var routes = { repeat: false, skippable: skip, wait: wait, list: list }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_n = function ( actorId, context ) { var face = null; if (context.header["actor"]) { face = context.header["actor"]; } var index = null; if (context.header["index"]) { index = context.headerInt("index"); } var name = null; if (context.header["name"]) { name = context.header["name"]; } if (context.type) { var actor = $gameActors.actor(actorId); var actorName = actor.name(); name = actorName + context.type; } this.convertCommand_messages(context, actorId, face, index, name); }; Scenario_Converter.prototype.convertCommand_messages = function ( context, faceActorId, argFaceFile, argFaceIndex, argName ) { if (faceActorId === void 0) { faceActorId = 0; } if (argFaceFile === void 0) { argFaceFile = null; } if (argFaceIndex === void 0) { argFaceIndex = null; } if (argName === void 0) { argName = null; } var faceName = ""; var faceIndex = 0; var actorName = ""; if (faceActorId > 0) { var actor = $gameActors.actor(faceActorId); if (!actor) { console.error( "IDが" + faceActorId + "のアクターが登録されていません" ); } actorName = actor.name(); faceName = actor.faceName(); faceIndex = actor.faceIndex(); if (argFaceIndex != null) { faceIndex = argFaceIndex; } } if (argFaceFile != null) { faceName = argFaceFile; } if (argFaceIndex) { faceIndex = argFaceIndex; } if (argName) { actorName = argName; } var back = context.headerInt("back", 0); var pos = this.convertPosMz(context.headerInt("pos", 0)); context.push({ code: 101, indent: this.indent, parameters: [faceName, faceIndex, back, pos, actorName], }); for (var _i = 0, _a = context.data; _i < _a.length; _i++) { var msg = _a[_i]; context.push({ code: 401, indent: this.indent, parameters: [this.replaceMessage(msg)], }); } }; Scenario_Converter.prototype.convertPosMz = function (pos) { switch (pos) { case 0: return 2; break; case 1: return 1; break; case 2: return 0; break; } return 2; }; Scenario_Converter.prototype.convertCommand_message_h = function ( context ) { var actor = context.header["actor"] || ""; var index = context.headerInt("index", 0); var back = context.headerInt("back", 0); var pos = this.convertPosMz(context.headerInt("pos", 0)); var name = context.headerStr("name"); context.push({ code: 101, indent: this.indent, parameters: [actor, index, back, pos, name], }); for (var _i = 0, _a = context.data; _i < _a.length; _i++) { var msg = _a[_i]; context.push({ code: 401, indent: this.indent, parameters: [msg] }); } }; Scenario_Converter.prototype.replaceMessage = function (text) { for (var key in this._replaceMap) { if (!this._replaceMap.hasOwnProperty(key)) { continue; } var value = this._replaceMap[key]; var regExp = new RegExp(key, "g"); text = text.replace(regExp, value); } return text; }; Scenario_Converter.prototype.convertCommand_choice_h = function ( context ) { var labels = []; if (context.header["label1"]) { labels.push(context.header["label1"]); } if (context.header["label2"]) { labels.push(context.header["label2"]); } if (context.header["label3"]) { labels.push(context.header["label3"]); } if (context.header["label4"]) { labels.push(context.header["label4"]); } if (context.header["label5"]) { labels.push(context.header["label5"]); } if (context.header["label6"]) { labels.push(context.header["label6"]); } var cancelType = context.headerInt("cancel", 0) - 1; // -2 var defaultType = context.headerInt("default", 0) - 1; var positionType = context.headerInt("position", 2); var background = context.headerInt("background", 0); context.push({ code: 102, indent: this.indent, parameters: [ labels, cancelType, defaultType, positionType, background, ], }); }; Scenario_Converter.prototype.convertCommand_choice_if = function ( context ) { var index = context.headerInt("index") - 1; this.indent++; context.push({ code: 402, indent: this.indent - 1, parameters: [index], }); }; Scenario_Converter.prototype.convertCommand_choice_cancel = function ( context ) { this.indent++; context.push({ code: 403, indent: this.indent - 1, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_choice_end = function ( context ) { this.indent--; context.push({ code: 0, indent: this.indent, parameters: [] }); }; /** * ○ 数値入力 */ Scenario_Converter.prototype.convertCommand_input_num = function ( context ) { var variable = context.headerInt("var"); var num = context.headerInt("num"); context.push({ code: 103, indent: this.indent, parameters: [variable, num], }); }; /** * ○ アイテム選択の処理 */ Scenario_Converter.prototype.convertCommand_choice_item = function ( context ) { var variable = context.headerInt("var"); var type = context.headerInt("type", 2); context.push({ code: 104, indent: this.indent, parameters: [variable, type], }); }; /** * ○ 文章スクロール表示(ヘッダー部) */ Scenario_Converter.prototype.convertCommand_scroll_h = function ( context ) { var noskip = context.headerBool("noskip", false); var speed = context.headerInt("speed"); context.push({ code: 105, indent: this.indent, parameters: [speed, noskip], }); for (var _i = 0, _a = context.data; _i < _a.length; _i++) { var msg = _a[_i]; context.push({ code: 405, indent: this.indent, parameters: [msg] }); } }; /** * ○ 条件分岐(スイッチ) */ Scenario_Converter.prototype.convertCommand_if_sw = function (context) { this.indent++; var ifnum = 0; var id = context.headerInt("id"); var flag = context.headerStr("flag", "on") === "on" ? 0 : 1; context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, id, flag], }); }; /** * ○ 条件分岐(変数) */ Scenario_Converter.prototype.convertCommand_if_var = function (context) { this.indent++; var ifnum = 1; var id = context.headerInt("id"); var value = context.headerStr("value"); var reg = /(var\.)/; var type = reg.exec(value) ? 1 : 0; //0:数値 1:変数 var op = ["=", ">=", "<=", ">", "<", "><"].indexOf(context.headerStr("op")) || 0; if (type === 1 && parseInt(value) <= 0) { throw new Error("変数指定時に「0」以下が使われました。"); } var valueNum = /(\d+)/.exec(value); context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, id, type, parseInt(valueNum[0]), op], }); }; /** * ○ 条件分岐(セルフスイッチ) */ Scenario_Converter.prototype.convertCommand_if_self_sw = function ( context ) { this.indent++; var ifnum = 2; var id = context.headerStr("id"); var flag = context.headerStr("flag", "on") === "on" ? 0 : 1; context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, id, flag], }); }; /** * ○ 条件分岐(タイマー) */ Scenario_Converter.prototype.convertCommand_if_timer = function ( context ) { this.indent++; var ifnum = 3; var time = context.headerInt("time"); var op = [">=", "<=", "<"].indexOf(context.headerStr("op")) || 0; context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, time, op], }); }; /** * ○ 条件分岐(アクター) */ Scenario_Converter.prototype.convertCommand_if_actor = function ( context ) { this.indent++; var ifnum = 4; var id = context.headerInt("id"); var type = 0; var value = 0; switch (context.headerStr("type")) { case "party": type = 0; value = 0; break; case "name": type = 1; value = context.headerInt("value"); break; case "class": type = 2; new Tes.NotEmptyValidator().validate( context, "value", context.header["value"] ); new Tes.NumericValidator(1).validate( context, "value", context.header["value"] ); value = context.headerInt("value"); break; case "skill": type = 3; new Tes.NotEmptyValidator().validate( context, "value", context.header["value"] ); new Tes.NumericValidator(1).validate( context, "value", context.header["value"] ); value = context.headerInt("value"); break; case "weapon": type = 4; new Tes.NotEmptyValidator().validate( context, "value", context.header["value"] ); new Tes.NumericValidator(1).validate( context, "value", context.header["value"] ); value = context.headerInt("value"); break; case "armor": type = 5; new Tes.NotEmptyValidator().validate( context, "value", context.header["value"] ); new Tes.NumericValidator(1).validate( context, "value", context.header["value"] ); value = context.headerInt("value"); break; case "state": type = 6; new Tes.NotEmptyValidator().validate( context, "value", context.header["value"] ); new Tes.NumericValidator(1).validate( context, "value", context.header["value"] ); value = context.headerInt("value"); break; default: type = 0; value = 0; break; } context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, id, type, value], }); }; /** * ○ 条件分岐(敵キャラ) */ Scenario_Converter.prototype.convertCommand_if_enemy = function ( context ) { this.indent++; var ifnum = 5; var type = 0; var value = 0; var enemy = context.headerInt("enemy"); switch (context.headerStr("type")) { case "visible": type = 0; value = 0; break; case "state": type = 1; new Tes.NotEmptyValidator().validate( context, "value", context.header["value"] ); new Tes.NumericValidator(1).validate( context, "value", context.header["value"] ); value = context.headerInt("value"); break; default: type = 0; value = 0; break; } context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, enemy, type, value], }); }; /** * ○ 条件分岐(キャラクター) */ Scenario_Converter.prototype.convertCommand_if_character = function ( context ) { this.indent++; var ifnum = 6; var id = context.headerInt("id"); var direction = 0; switch (context.headerStr("direction")) { case "2": case "down": direction = 2; break; case "4": case "left": direction = 4; break; case "6": case "right": direction = 6; break; case "8": case "up": direction = 8; break; } context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, id, direction], }); }; /** * ○ 条件分岐(乗り物) */ Scenario_Converter.prototype.convertCommand_if_vehicle = function ( context ) { this.indent++; var ifnum = 13; var vehicle = context.headerInt("vehicle"); context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, vehicle], }); }; /** * ○ 条件分岐(お金) */ Scenario_Converter.prototype.convertCommand_if_money = function ( context ) { this.indent++; var ifnum = 7; var money = context.headerInt("money"); var op = ["ge", "le", "lt"].indexOf(context.header["op"]) || 0; context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, money, op], }); }; /** * ○ 条件分岐(アイテム) */ Scenario_Converter.prototype.convertCommand_if_item = function (context) { this.indent++; var ifnum = 8; var id = context.headerInt("id"); context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, id], }); }; /** * ○ 条件分岐(武器) */ Scenario_Converter.prototype.convertCommand_if_weapon = function ( context ) { this.indent++; var ifnum = 9; var id = context.headerInt("id"); var equip = context.headerStr("equip", "false") == "true" ? true : false; context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, id, equip], }); }; /** * ○ 条件分岐(防具) */ Scenario_Converter.prototype.convertCommand_if_armor = function ( context ) { this.indent++; var ifnum = 10; var id = context.headerInt("id"); var equip = context.headerStr("equip", "false") == "true" ? true : false; context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, id, equip], }); }; /** * ○ 条件分岐(ボタン) */ Scenario_Converter.prototype.convertCommand_if_button = function ( context ) { this.indent++; var ifnum = 11; var button = 0; switch (context.headerStr("button")) { case "2": case "down": button = 2; break; case "4": case "left": button = 4; break; case "6": case "right": button = 6; break; case "8": case "up": button = 8; break; case "11": case "A": button = 11; break; case "12": case "B": button = 12; break; case "13": case "C": button = 13; break; case "14": case "X": button = 14; break; case "15": case "Y": button = 15; break; case "16": case "Z": button = 16; break; case "17": case "L": button = 17; break; case "18": case "R": button = 18; break; } context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, button], }); }; /** * ○ 条件分岐(スクリプト) */ Scenario_Converter.prototype.convertCommand_if_script = function ( context ) { this.indent++; var ifnum = 12; var script = context.headerStr("script"); script = script.replace(//g, "="); script = script.replace(//g, " "); context.push({ code: 111, indent: this.indent - 1, parameters: [ifnum, script], }); }; /** * ○ 条件分岐(それ以外) */ Scenario_Converter.prototype.convertCommand_else = function (context) { this.indent++; context.push({ code: 411, indent: this.indent - 1, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_end_else = function ( context ) { this.indent--; context.push({ code: 0, indent: this.indent + 1, parameters: [] }); this.indent++; context.push({ code: 411, indent: this.indent - 1, parameters: [] }); }; /** * ○ ループ */ Scenario_Converter.prototype.convertCommand_loop = function (context) { this.indent++; context.push({ code: 112, indent: this.indent - 1, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_loop_end = function ( context ) { this.indent--; context.push({ code: 413, indent: this.indent, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_loop_break = function ( context ) { context.push({ code: 113, indent: this.indent, parameters: [] }); }; /** * ○ イベントの中断 */ Scenario_Converter.prototype.convertCommand_event_break = function ( context ) { context.push({ code: 115, indent: this.indent, parameters: [] }); }; /** * ○ イベントの中断(returnタグにて) */ Scenario_Converter.prototype.convertCommand_return = function (context) { context.push({ code: 115, indent: this.indent, parameters: [] }); }; /** * ○ コモンイベント */ Scenario_Converter.prototype.convertCommand_common = function (context) { var id = context.headerInt("id"); context.push({ code: 117, indent: this.indent, parameters: [id] }); }; /** * ○ ラベル */ Scenario_Converter.prototype.convertCommand_label = function (context) { var value = context.headerStr("value"); context.push({ code: 118, indent: this.indent, parameters: [value] }); }; /** * ○ ラベルジャンプ */ Scenario_Converter.prototype.convertCommand_label_jump = function ( context ) { var value = context.headerStr("value"); context.push({ code: 119, indent: this.indent, parameters: [value] }); }; /** * ○ 注釈 */ Scenario_Converter.prototype.convertCommand_comment = function (context) { var value = context.headerStr("value"); context.push({ code: 108, indent: this.indent, parameters: [value] }); }; /** * ○ 注釈(2行目以降) */ Scenario_Converter.prototype.convertCommand_comment2 = function ( context ) { var value = context.headerStr("value"); context.push({ code: 408, indent: this.indent, parameters: [value] }); }; Scenario_Converter.prototype.convertVarValue = function (type, value) { if (type === 1) { var reg3 = /var\.([0-9]*)/; return parseInt(reg3.exec(value)[1]); } else { return Math.abs(parseInt(value)); } }; /** * ○ 所持金の増減 */ Scenario_Converter.prototype.convertCommand_money = function (context) { var value = context.headerStr("value"); var reg = /(var\.)/; var type = reg.exec(value) ? 1 : 0; // 0:数値 1:変数 var regOp = /(^-)/; var operate = regOp.exec(value) ? 1 : 0; // 0:加算 1:減算 var money = this.convertVarValue(type, value); context.push({ code: 125, indent: this.indent, parameters: [operate, type, money], }); }; /** * ○ アイテムの増減 */ Scenario_Converter.prototype.convertCommand_item = function (context) { var id = context.headerInt("id"); var value = context.headerStr("value"); var reg = /(var\.)/; var type = reg.exec(value) ? 1 : 0; // 0:数値 1:変数 var regOp = /(^-)/; var operate = regOp.exec(value) ? 1 : 0; // 0:加算 1:減算 var num = this.convertVarValue(type, value); context.push({ code: 126, indent: this.indent, parameters: [id, operate, type, num], }); }; /** * ○ 武器の増減 */ Scenario_Converter.prototype.convertCommand_weapon = function (context) { var id = context.headerInt("id"); var value = context.headerStr("value"); var equip = context.headerBool("equip", false); var reg = /(var\.)/; var type = reg.exec(value) ? 1 : 0; // 0:数値 1:変数 var regOp = /(^-)/; var operate = regOp.exec(value) ? 1 : 0; // 0:加算 1:減算 var num = this.convertVarValue(type, value); context.push({ code: 127, indent: this.indent, parameters: [id, operate, type, num, equip], }); }; /** * ○ 防具の増減 */ Scenario_Converter.prototype.convertCommand_armor = function (context) { var id = context.headerInt("id"); var value = context.headerStr("value"); var equip = context.headerBool("equip", false); var reg = /(var\.)/; var type = reg.exec(value) ? 1 : 0; // 0:数値 1:変数 var regOp = /(^-)/; var operate = regOp.exec(value) ? 1 : 0; // 0:加算 1:減算 var num = this.convertVarValue(type, value); context.push({ code: 128, indent: this.indent, parameters: [id, operate, type, num, equip], }); }; Scenario_Converter.prototype.convertCommand_sw = function (context) { var id = context.headerInt("id"); var end = context.headerInt("end", id); var flag = context.headerStr("flag") === "on" ? 0 : 1; context.push({ code: 121, indent: this.indent, parameters: [id, end, flag], }); }; Scenario_Converter.prototype.convertCommand_var = function (context) { var id = context.headerInt("id"); var end = context.headerInt("end", id); var op = ["=", "+", "-", "*", "/", "%"].indexOf(context.headerStr("op")) || 0; var value = context.headerInt("value"); context.push({ code: 122, indent: this.indent, parameters: [id, end, op, 0, value], }); }; Scenario_Converter.prototype.convertCommand_self_sw = function (context) { var id = context.headerStr("id"); var flag = context.headerStr("flag") === "on" ? 0 : 1; context.push({ code: 123, indent: this.indent, parameters: [id, flag], }); }; Scenario_Converter.prototype.convertCommand_timer = function (context) { var flag = context.headerStr("flag") === "on" ? 0 : 1; var time = context.headerInt("time"); context.push({ code: 124, indent: this.indent, parameters: [flag, time], }); }; Scenario_Converter.prototype.convertCommand_save_disable = function ( context ) { var flag = context.headerBool("flag", true) ? 0 : 1; context.push({ code: 134, indent: this.indent, parameters: [flag] }); }; Scenario_Converter.prototype.convertCommand_menu_disable = function ( context ) { var flag = context.headerBool("flag", true) ? 0 : 1; context.push({ code: 135, indent: this.indent, parameters: [flag] }); }; Scenario_Converter.prototype.convertCommand_encount_disable = function ( context ) { var flag = context.headerBool("flag", true) ? 0 : 1; context.push({ code: 136, indent: this.indent, parameters: [flag] }); }; Scenario_Converter.prototype.convertCommand_formation_disable = function ( context ) { var flag = context.headerBool("flag", true) ? 0 : 1; context.push({ code: 137, indent: this.indent, parameters: [flag] }); }; Scenario_Converter.prototype.convertCommand_map_move = function ( context ) { var direction; switch (context.headerStr("direction")) { case "2": case "down": direction = 2; break; case "4": case "left": direction = 4; break; case "6": case "right": direction = 6; break; case "8": case "up": direction = 8; } var fade; switch (context.headerStr("fade")) { case "1": case "white": fade = 1; break; case "2": case "none": fade = 2; break; default: fade = 0; } var type = context.headerStr("type", "const") === "const" ? 0 : 1; var map = context.headerInt("map"); var x = context.headerInt("x"); var y = context.headerInt("y"); context.push({ code: 201, indent: this.indent, parameters: [type, map, x, y, direction, fade], }); }; Scenario_Converter.prototype.convertCommand_vehicle_pos = function ( context ) { var vehicle = context.headerInt("vehicle"); var type = context.headerStr("type", "const") === "const" ? 0 : 1; var map = context.headerInt("map"); var x = context.headerInt("x"); var y = context.headerInt("y"); context.push({ code: 202, indent: this.indent, parameters: [vehicle, type, map, x, y], }); }; Scenario_Converter.prototype.convertCommand_event_pos = function ( context ) { var id = context.headerInt("id"); var type; if (context.headerStr("type") === "var") { type = 1; } else if (context.headerStr("type") === "var") { type = 2; } else { type = 0; } var x = context.headerInt("x"); var y = context.headerInt("y"); var direction; switch (context.headerStr("direction")) { case "2": case "down": direction = 2; break; case "4": case "left": direction = 4; break; case "6": case "right": direction = 6; break; case "8": case "up": direction = 8; break; default: direction = 0; break; } context.push({ code: 203, indent: this.indent, parameters: [id, type, x, y, direction], }); }; Scenario_Converter.prototype.convertCommand_scroll_map = function ( context ) { var direction; switch (context.headerStr("direction")) { case "2": case "down": direction = 2; break; case "4": case "left": direction = 4; break; case "6": case "right": direction = 6; break; case "8": case "up": direction = 8; break; } var num = context.headerInt("num"); var speed = context.headerInt("speed", 4); context.push({ code: 204, indent: this.indent, parameters: [direction, num, speed], }); }; Scenario_Converter.prototype.convertCommand_route_h = function (context) { var event = context.headerInt("event"); var repeat = context.headerBool("repeat", false); var skip = context.headerBool("skip", false); var wait = context.headerBool("wait", true); if (context.data.length === 0) { context.error("移動ルートが設定されていません。"); return; } var list = []; for (var _i = 0, _a = context.data; _i < _a.length; _i++) { var line = _a[_i]; list.push(this.convertCommand_route(context, line)); } list.push({ code: 0 }); var routes = { repeat: repeat, skippable: skip, wait: wait, list: list, }; context.push({ code: 205, indent: this.indent, parameters: [event, routes], }); }; Scenario_Converter.prototype.convertCommand_route = function ( context, line ) { var headerList = line.split(" "); var header = this.parseHeader(headerList); var type = header.headerStr("type"); var parameters = []; var code = parseInt(type); if (isNaN(code)) { switch (type) { case "down": code = 1; break; case "left": code = 2; break; case "right": code = 3; break; case "up": code = 4; break; case "dl": code = 5; break; case "dr": code = 6; break; case "ul": code = 7; break; case "ur": code = 8; break; case "random": code = 9; break; case "toward": code = 10; break; case "away": code = 11; break; case "foward": code = 12; break; case "backward": code = 13; break; case "jump": code = 14; new Tes.NumericValidator(-100, 100).validate( context, "x", header["x"] ); new Tes.NumericValidator(-100, 100).validate( context, "y", header["y"] ); parameters.push(header.headerInt("x", 0)); parameters.push(header.headerInt("y", 0)); break; case "wait": code = 15; new Tes.NumericValidator(1, 999).validate( context, "time", header["time"] ); parameters.push(header.headerInt("time", 60)); break; case "turn_down": code = 16; break; case "turn_left": code = 17; break; case "turn_right": code = 18; break; case "turn_up": code = 19; break; case "turn_90_r": code = 20; break; case "turn_90_l": code = 21; break; case "turn_180": code = 22; break; case "turn_90_rl": case "turn_90_lr": code = 23; break; case "turn_random": code = 24; break; case "turn_toward": code = 25; break; case "turn_away": code = 26; break; case "switch_on": case "sw_on": code = 27; new Tes.NotEmptyValidator().validate(context, "id", header["id"]); new Tes.NumericValidator(1).validate(context, "id", header["id"]); parameters["id"] = header.headerInt("id"); break; case "switch_off": case "sw_off": code = 28; new Tes.NotEmptyValidator().validate(context, "id", header["id"]); new Tes.NumericValidator(1).validate(context, "id", header["id"]); parameters.push(header.headerInt("id")); break; case "change_speed": code = 29; new Tes.NumericValidator(1, 6).validate( context, "speed", header["speed"] ); parameters.push(header.headerInt("speed", 3)); break; case "change_freq": code = 30; new Tes.NumericValidator(1, 5).validate( context, "freq", header["freq"] ); parameters.push(header.headerInt("freq", 3)); break; case "walk_anime_on": code = 31; break; case "walk_anime_off": code = 32; break; case "step_anime_on": code = 33; break; case "step_anime_off": code = 34; break; case "dir_fix_on": code = 35; break; case "dir_fix_off": code = 36; break; case "through_on": code = 37; break; case "through_off": code = 38; break; case "transparent_on": code = 39; break; case "transparent_off": code = 40; break; case "change_graphic": code = 41; new Tes.NotEmptyValidator().validate( context, "file", header["file"] ); new Tes.NotEmptyValidator().validate( context, "index", header["index"] ); new Tes.NumericValidator(0, 7).validate( context, "index", header["index"] ); parameters.push(header.headerStr("file")); parameters.push(header.headerInt("index")); break; case "change_opacity": code = 42; new Tes.NumericValidator(0, 255).validate( context, "opacity", header["opacity"] ); parameters.push(header.headerInt("opacity", 255)); break; case "change_blend": code = 43; new Tes.NumericValidator(0, 2).validate( context, "blend", header["blend"] ); parameters.push(header.headerInt("blend", 0)); break; case "play_se": code = 44; new Tes.NumericValidator(0, 100).validate( context, "volume", header["volume"] ); new Tes.NumericValidator(50, 150).validate( context, "pitch", header["pitch"] ); new Tes.NumericValidator(-100, 100).validate( context, "pan", header["pan"] ); var file = header.headerStr("file", ""); var volume = header.headerInt("volume", 100); var pitch = header.headerInt("pitch", 100); var pan = header.headerInt("pan", 0); var obj = {}; obj["name"] = file; obj["volume"] = volume; obj["pitch"] = pitch; obj["pan"] = pan; parameters.push(obj); break; case "script": code = 45; new Tes.NotEmptyValidator().validate( context, "script", header["script"] ); var script = header["script"]; script = script.replace(//g, "="); script = script.replace(//g, " "); parameters.push(script); break; default: context.error("存在しない移動コマンドです。" + type); break; } } return { code: code, indent: null, parameters: parameters }; }; Scenario_Converter.prototype.convertCommand_vehicle = function (context) { context.push({ code: 206, indent: this.indent, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_transparent = function ( context ) { var flag = context.headerBool("flag", true) ? 0 : 1; context.push({ code: 211, indent: this.indent, parameters: [flag] }); }; /** * ○ アニメーションの表示 */ Scenario_Converter.prototype.convertCommand_anime = function (context) { var target = context.headerInt("target"); var anime = context.headerInt("anime"); var wait = context.headerBool("wait", false); context.push({ code: 212, indent: this.indent, parameters: [target, anime, wait], }); }; /** * ○ フキダシアイコンの表示 */ Scenario_Converter.prototype.convertCommand_balloon = function (context) { var target = context.headerInt("target"); var balloon = context.headerInt("balloon"); var wait = context.headerBool("wait", false); context.push({ code: 213, indent: this.indent, parameters: [target, balloon, wait], }); }; /** * ○ イベントの一時消去 */ Scenario_Converter.prototype.convertCommand_erace = function (context) { context.push({ code: 214, indent: this.indent, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_followers = function ( context ) { var flag = context.headerBool("flag", true) ? 0 : 1; context.push({ code: 216, indent: this.indent, parameters: [flag] }); }; Scenario_Converter.prototype.convertCommand_gather = function (context) { context.push({ code: 217, indent: this.indent, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_fadeout = function (context) { var time = context.headerInt("time", -1); context.push({ code: 221, indent: this.indent, parameters: [time] }); }; Scenario_Converter.prototype.convertCommand_fadein = function (context) { var time = context.headerInt("time", -1); context.push({ code: 222, indent: this.indent, parameters: [time] }); }; Scenario_Converter.prototype.convertCommand_tone = function (context) { var tone = context.headerTone(); var time = context.headerInt("time", 60); var wait = context.headerBool("wait", true); context.push({ code: 223, indent: this.indent, parameters: [tone, time, wait], }); }; Scenario_Converter.prototype.convertCommand_flash = function (context) { var red = context.headerInt("red", 255); var green = context.headerInt("green", 255); var blue = context.headerInt("blue", 255); var strength = context.headerInt("strength", 170); var color = [red, green, blue, strength]; var time = context.headerInt("time", 60); var wait = context.headerBool("wait", true); context.push({ code: 224, indent: this.indent, parameters: [color, time, wait], }); }; Scenario_Converter.prototype.convertCommand_shake = function (context) { var strength = context.headerInt("strength", 5); var speed = context.headerInt("speed", 5); var time = context.headerInt("time", 60); var wait = context.headerBool("wait", true); context.push({ code: 225, indent: this.indent, parameters: [strength, speed, time, wait], }); }; Scenario_Converter.prototype.convertCommand_wait = function (context) { var time = context.headerInt("time", 60); context.push({ code: 230, indent: this.indent, parameters: [time] }); }; Scenario_Converter.prototype.convertCommand_picture = function (context) { var layer = context.headerInt("layer"); var file = context.header["file"]; var origin = context.header["origin"] === "center" ? 1 : 0; var type = context.header["type"] === "var" ? 1 : 0; var x = context.headerInt("x", 0); var y = context.headerInt("y", 0); var zoomX = context.headerInt("zoom_x", 100); var zoomy = context.headerInt("zoom_y", 100); var opacity = context.headerInt("transparent", 255); var blend = context.headerInt("blend", 0); context.push({ code: 231, indent: this.indent, parameters: [ layer, file, origin, type, x, y, zoomX, zoomy, opacity, blend, ], }); }; Scenario_Converter.prototype.convertCommand_picture_move = function ( context ) { var layer = context.headerInt("layer"); var origin = context.headerInt("origin", 0); var type = context.header["type"] === "var" ? 1 : 0; var x = context.headerInt("x", 0); var y = context.headerInt("y", 0); var zoomX = context.headerInt("zoom_x", 100); var zoomy = context.headerInt("zoom_y", 100); var opacity = context.headerInt("transparent", 255); var blend = context.headerInt("blend", 0); var time = context.headerInt("time", 0); var wait = context.headerBool("wait", true); context.push({ code: 232, indent: this.indent, parameters: [ layer, 0, origin, type, x, y, zoomX, zoomy, opacity, blend, time, wait, ], }); }; Scenario_Converter.prototype.convertCommand_picture_rotation = function ( context ) { var layer = context.headerInt("layer"); var speed = context.headerInt("speed", 5); context.push({ code: 233, indent: this.indent, parameters: [layer, speed], }); }; Scenario_Converter.prototype.convertCommand_picture_tone = function ( context ) { var layer = context.headerInt("layer"); var tone = context.headerTone(); var time = context.headerInt("time", 60); var wait = context.headerBool("wait", true); context.push({ code: 234, indent: this.indent, parameters: [layer, tone, time, wait], }); }; Scenario_Converter.prototype.convertCommand_picture_erace = function ( context ) { var layer = context.headerInt("layer"); context.push({ code: 235, indent: this.indent, parameters: [layer] }); }; Scenario_Converter.prototype.convertCommand_picture_weather = function ( context ) { var weather = context.headerStr("weather", "none"); var strength = context.headerInt("strength", 5); var time = context.headerInt("time", 60); var wait = context.headerBool("wait", true); context.push({ code: 236, indent: this.indent, parameters: [weather, strength, time, wait], }); }; /** * ○ BGMの演奏 */ Scenario_Converter.prototype.convertCommand_bgm = function (context) { var name = context.headerStr("file"); var volume = context.headerInt("volume", 100); var pitch = context.headerInt("pitch", 100); var pan = context.headerInt("pan", 0); var bgm = { name: name, volume: volume, pitch: pitch, pan: pan }; context.push({ code: 241, indent: this.indent, parameters: [bgm] }); }; /** * ○ BGMのフェードアウト */ Scenario_Converter.prototype.convertCommand_fadeout_bgm = function ( context ) { var time = context.headerInt("time", 10); context.push({ code: 242, indent: this.indent, parameters: [time] }); }; /** * ○ BGMの保存 */ Scenario_Converter.prototype.convertCommand_save_bgm = function ( context ) { context.push({ code: 243, indent: this.indent, parameters: [] }); }; /** * ○ BGMの再開 */ Scenario_Converter.prototype.convertCommand_resume_bgm = function ( context ) { context.push({ code: 244, indent: this.indent, parameters: [] }); }; /** * ○ BGSの演奏 */ Scenario_Converter.prototype.convertCommand_bgs = function (context) { var name = context.headerStr("file"); var volume = context.headerInt("volume", 100); var pitch = context.headerInt("pitch", 100); var pan = context.headerInt("pan", 0); var bgs = { name: name, volume: volume, pitch: pitch, pan: pan }; context.push({ code: 245, indent: this.indent, parameters: [bgs] }); }; /** * ○ BGSのフェードアウト */ Scenario_Converter.prototype.convertCommand_fadeout_bgs = function ( context ) { var time = context.headerInt("time", 10); context.push({ code: 246, indent: this.indent, parameters: [time] }); }; /** * ○ MEの演奏 */ Scenario_Converter.prototype.convertCommand_me = function (context) { var name = context.headerStr("file"); var volume = context.headerInt("volume", 100); var pitch = context.headerInt("pitch", 100); var pan = context.headerInt("pan", 0); var me = { name: name, volume: volume, pitch: pitch, pan: pan }; context.push({ code: 249, indent: this.indent, parameters: [me] }); }; /** * ○ SEの演奏 */ Scenario_Converter.prototype.convertCommand_se = function (context) { var name = context.headerStr("file"); var volume = context.headerInt("volume", 100); var pitch = context.headerInt("pitch", 100); var pan = context.headerInt("pan", 0); var se = { name: name, volume: volume, pitch: pitch, pan: pan }; context.push({ code: 250, indent: this.indent, parameters: [se] }); }; /** * ○ SEの停止 */ Scenario_Converter.prototype.convertCommand_stop_se = function (context) { context.push({ code: 251, indent: this.indent, parameters: [] }); }; /** * ○ メニュー画面を開く */ Scenario_Converter.prototype.convertCommand_menu_open = function ( context ) { context.push({ code: 351, indent: this.indent, parameters: [] }); }; /** * ○ セーブ画面を開く */ Scenario_Converter.prototype.convertCommand_save_open = function ( context ) { context.push({ code: 352, indent: this.indent, parameters: [] }); }; /** * ○ ゲームオーバー */ Scenario_Converter.prototype.convertCommand_gameover = function ( context ) { context.push({ code: 353, indent: this.indent, parameters: [] }); }; /** * ○ タイトル画面に戻す */ Scenario_Converter.prototype.convertCommand_title_return = function ( context ) { context.push({ code: 354, indent: this.indent, parameters: [] }); }; /** * ○ ムービーの再生 */ Scenario_Converter.prototype.convertCommand_movie = function (context) { var file = context.headerStr("file"); var playbackRate = parseFloat(context.headerStr("playback_rate")); if (isNaN(playbackRate)) { playbackRate = 1; } context.push({ code: 261, indent: this.indent, parameters: [file, playbackRate], }); }; /** * ○ タイルセットの変更 */ Scenario_Converter.prototype.convertCommand_tileset = function (context) { var id = context.headerStr("id"); context.push({ code: 282, indent: this.indent, parameters: [id] }); }; Scenario_Converter.prototype.convertCommand_all_recovery = function ( context ) { var params = context.headerVar("actor"); context.push({ code: 314, indent: this.indent, parameters: [params[0], params[1]], }); }; Scenario_Converter.prototype.convertCommand_exp = function (context) { var actor = context.headerVar("actor"); var value = context.headerOperateVar("value"); var message = context.headerBool("message", false); context.push({ code: 315, indent: this.indent, parameters: [ actor[0], actor[1], value[0], value[1], value[2], message, ], }); }; Scenario_Converter.prototype.convertCommand_level = function (context) { var actor = context.headerVar("actor"); var value = context.headerOperateVar("value"); var message = context.headerBool("message", false); context.push({ code: 316, indent: this.indent, parameters: [ actor[0], actor[1], value[0], value[1], value[2], message, ], }); }; Scenario_Converter.prototype.convertCommand_name = function (context) { var actor = context.headerInt("actor"); var value = context.headerStr("value"); context.push({ code: 320, indent: this.indent, parameters: [actor, value], }); }; Scenario_Converter.prototype.convertCommand_class = function (context) { var actor = context.headerInt("actor"); var value = context.headerInt("value"); var keep_exp = context.headerBool("keep_exp", false); context.push({ code: 321, indent: this.indent, parameters: [actor, value, keep_exp], }); }; Scenario_Converter.prototype.convertCommand_nickname = function ( context ) { var actor = context.headerInt("actor"); var value = context.headerInt("value"); context.push({ code: 323, indent: this.indent, parameters: [actor, value], }); }; Scenario_Converter.prototype.convertCommand_end = function (context) { this.indent--; context.push({ code: 0, indent: this.indent + 1, parameters: [] }); }; Scenario_Converter.prototype.convertCommand_plugin = function (context) { var name = context.headerStr("name"); var command = context.headerStr("command"); var argsText = context.headerStr("args"); var args = {}; try { args = JSON.parse(argsText); } catch (e) { console.error("plugin コマンドエラー。以下の args は不正です"); console.error(argsText); } var parameters = [name, command, "", args]; context.push({ code: 357, indent: this.indent, parameters: parameters, }); }; return Scenario_Converter; })(); Tes.Scenario_Converter = Scenario_Converter; var Block = /** @class */ (function () { function Block(lineNumber) { this.lineNumber = lineNumber; this.data = []; } Block.prototype.pushMsg = function (line) { if (AUTO_WARD_WRAP && line.indexOf("@") === -1) { if (this.data.length === 0) { this.data.push("" + line); } else { this.data.push("
" + line); } } else { this.data.push(line); } }; return Block; })(); Tes.Block = Block; var Context = /** @class */ (function () { function Context(file, lineNumber, command, list, _header, data) { this.file = file; this.lineNumber = lineNumber; this.command = command; this.list = list; this._header = _header; this.data = data; } Context.prototype.push = function (command) { this.list.push(command); }; Object.defineProperty(Context.prototype, "header", { get: function () { return this._header.header; }, enumerable: false, configurable: true, }); Context.prototype.headerInt = function (id, defaultValue) { if (defaultValue === void 0) { defaultValue = 0; } return this._header.headerInt(id, defaultValue); }; Context.prototype.headerStr = function (id, defaultValue) { if (defaultValue === void 0) { defaultValue = ""; } return this._header.headerStr(id, defaultValue); }; Context.prototype.headerBool = function (id, defaultValue) { if (defaultValue === void 0) { defaultValue = false; } return this._header.headerBool(id, defaultValue); }; Context.prototype.headerTone = function () { return this._header.headerTone(); }; Context.prototype.headerVar = function (id) { return this._header.headerVar(id); }; Context.prototype.headerOperateVar = function (id) { return this._header.headerOperateVar(id); }; Context.prototype.error = function (msg) { console.error( "file: " .concat(this.file, " line: ") .concat(this.lineNumber, " command: ") .concat(this.command, " ") .concat(msg) ); }; Context.prototype.insertTop = function (command) { this.list.splice(0, 0, command); }; return Context; })(); Tes.Context = Context; var Header = /** @class */ (function () { function Header(header) { this.header = header; } Header.prototype.headerInt = function (id, defaultValue) { if (defaultValue === void 0) { defaultValue = 0; } var value = this.header[id]; if (!value) { return defaultValue; } var valueInt = parseInt(value); if (isNaN(valueInt)) { return defaultValue; } return valueInt; }; Header.prototype.headerStr = function (id, defaultValue) { if (defaultValue === void 0) { defaultValue = ""; } var value = this.header[id]; if (!value) { return defaultValue; } return value; }; Header.prototype.headerBool = function (id, defaultValue) { if (defaultValue === void 0) { defaultValue = false; } var value = this.header[id]; if (value === "true") { return true; } if (value === "false") { return false; } return defaultValue; }; Header.prototype.headerTone = function () { var red = this.headerInt("red", 0); var green = this.headerInt("green", 0); var blue = this.headerInt("blue", 0); var gray = this.headerInt("gray", 0); var tone = [red, green, blue, gray]; return tone; }; Header.prototype.headerVar = function (id) { var value = this.header[id]; var reg = /^[+]{0,1}(var\.){0,1}(\d+)$/; var ret = reg.exec(value); var paramId = parseInt(ret[2]); if (ret[1] === undefined) { return [0, paramId]; } else { return [1, paramId]; } }; Header.prototype.headerOperateVar = function (id) { var value = this.header[id]; var reg = /^([-]{0,1})(var\.){0,1}(\d+)$/; var ret = reg.exec(value); var operation = ret[1] === "-" ? 1 : 0; var paramId = parseInt(ret[3]); if (ret[2] === undefined) { return [operation, 0, paramId]; } else { return [operation, 1, paramId]; } }; return Header; })(); if (COSTOM_FADE_IN_OUT === true) { // Fadeout Screen var _Game_Interpreter_command221 = Game_Interpreter.prototype.command221; Game_Interpreter.prototype.command221 = function (params) { if ($gameMessage.isBusy()) { return false; } var fadeSpeed = parseInt(params[0]); if (isNaN(fadeSpeed) || fadeSpeed < 0) { fadeSpeed = this.fadeSpeed(); } if ($gameVariables.value(21)) { fadeSpeed = $gameVariables.value(21); } if ($gameScreen._brightness == 0) { return true; } $gameScreen.startFadeOut(fadeSpeed); this.wait(fadeSpeed); return true; }; // Fadein Screen var _Game_Interpreter_command222 = Game_Interpreter.prototype.command222; Game_Interpreter.prototype.command222 = function (params) { if ($gameMessage.isBusy()) { return false; } var fadeSpeed = parseInt(params[0]); if (isNaN(fadeSpeed) || fadeSpeed < 0) { fadeSpeed = this.fadeSpeed(); } if ($gameVariables.value(21)) { fadeSpeed = $gameVariables.value(21); } if ($gameScreen._brightness == 255) { return true; } $gameScreen.startFadeIn(fadeSpeed); this.wait(fadeSpeed); return true; }; } })((Tes = Nore.Tes || (Nore.Tes = {}))); })(Nore || (Nore = {}));