1530 lines
54 KiB
JavaScript
1530 lines
54 KiB
JavaScript
//=============================================================================
|
||
// RPGツクールMV - LL_StandingPictureMV.js v2.6.3
|
||
//-----------------------------------------------------------------------------
|
||
// ルルの教会 (Lulu's Church)
|
||
// https://nine-yusha.com/
|
||
//
|
||
// URL below for license details.
|
||
// https://nine-yusha.com/plugin/
|
||
//=============================================================================
|
||
|
||
/*:
|
||
* @target MV
|
||
* @plugindesc メッセージウィンドウ表示時に立ち絵を表示します。
|
||
* @author ルルの教会
|
||
* @url https://nine-yusha.com/plugin-spicture/
|
||
*
|
||
* @help LL_StandingPictureMV.js
|
||
*
|
||
* メッセージ内に専用の制御文字を入力することで、
|
||
* 立ち絵を表示できます。
|
||
*
|
||
* ・\FH[ON]を入力するとウィンドウ消去後も立ち絵が残り続けます。
|
||
* \FH[OFF]を入力すると解除されウィンドウ消去と同時に立ち絵が消えます。
|
||
* ウィンドウ表示時以外のタイミングで立ち絵を表示・消去したい場合は、
|
||
* プラグインコマンド「制御文字の実行」を使用してください。
|
||
* ・立ち絵IDには半角英数字とアンダースコア(_)が使用できます。
|
||
* ・立ち絵IDは変数で指定することも可能です。 【例】\F[\V[1]]
|
||
* ・立ち絵は一度に4人まで表示することが可能です。
|
||
*
|
||
* 専用制御文字:
|
||
* \F[立ち絵ID] 立ち絵1を表示します。 【例】\F[reid]
|
||
* \FF[立ち絵ID] 立ち絵2を表示します。
|
||
* \FFF[立ち絵ID] 立ち絵3を表示します。
|
||
* \FFFF[立ち絵ID] 立ち絵4を表示します。
|
||
* \M[モーション名] 立ち絵1のモーションを再生します。 【例】\M[yes]
|
||
* \MM[モーション名] 立ち絵2のモーションを再生します。
|
||
* \MMM[モーション名] 立ち絵3のモーションを再生します。
|
||
* \MMMM[モーション名] 立ち絵4のモーションを再生します。
|
||
* \AA[F] 立ち絵1にフォーカスを当てます。 (立ち絵1以外を暗く)
|
||
* \AA[FF] 立ち絵2にフォーカスを当てます。 (立ち絵2以外を暗く)
|
||
* \AA[FFF] 立ち絵3にフォーカスを当てます。 (立ち絵3以外を暗く)
|
||
* \AA[FFFF] 立ち絵4にフォーカスを当てます。 (立ち絵4以外を暗く)
|
||
* \AA[N] 立ち絵を全て暗くします。
|
||
* \AA[R] 立ち絵のフォーカスをリセットします。
|
||
* \FH[ON] ホールドモードをONにします (立ち絵が残り続ける)
|
||
* \FH[OFF] ホールドモードをOFFにします
|
||
*
|
||
* 立ち絵モーション一覧:
|
||
* yes(頷く)、yesyes(二回頷く)、no(横に揺れる)、noslow(ゆっくり横に揺れる)
|
||
* jump(跳ねる)、jumpjump(二回跳ねる)、jumploop(跳ね続ける)
|
||
* shake(ガクガク)、shakeloop(ガクガクし続ける)
|
||
* runleft(画面左へ走り去る)、runright(画面右へ走り去る)
|
||
* noslowloop(横に揺れ続ける)、huwahuwa(ふわふわ)
|
||
*
|
||
* プラグインコマンド(制御文字の実行):
|
||
* LL_StandingPictureMV processChar 制御文字
|
||
* LL_StandingPictureMV processChar \F[s]\M[yes]\FH[ON] # 立ち絵sを表示
|
||
* LL_StandingPictureMV processChar \FH[OFF] # 立ち絵を消去
|
||
*
|
||
* プラグインコマンド:
|
||
* LL_StandingPictureMV setEnabled true # 立ち絵を表示に設定 (初期値)
|
||
* LL_StandingPictureMV setEnabled false # 立ち絵を非表示に設定
|
||
* LL_StandingPictureMV setTone 68,-34,-34,0 # 立ち絵の色調を夕暮れに変更
|
||
* LL_StandingPictureMV setTone -68,-68,68,0 # 立ち絵の色調を夜に変更
|
||
* LL_StandingPictureMV setTone 0,0,0,255 # 立ち絵の色調を白黒に変更
|
||
* LL_StandingPictureMV setTone 0,0,0,0 # 立ち絵の色調を通常に戻す
|
||
*
|
||
* 利用規約:
|
||
* ・著作権表記は必要ございません。
|
||
* ・利用するにあたり報告の必要は特にございません。
|
||
* ・商用・非商用問いません。
|
||
* ・R18作品にも使用制限はありません。
|
||
* ・ゲームに合わせて自由に改変していただいて問題ございません。
|
||
* ・プラグイン素材としての再配布(改変後含む)は禁止させていただきます。
|
||
*
|
||
* 作者: ルルの教会
|
||
* 作成日: 2022/7/8
|
||
*
|
||
* @command processChar
|
||
* @text 制御文字の実行
|
||
* @desc ウィンドウ表示時以外のタイミングで立ち絵を操作します。
|
||
*
|
||
* @arg text
|
||
* @text 制御文字
|
||
* @desc [例]立ち絵の表示→\F[s] \FH[ON]、立ち絵の消去→\FH[OFF]
|
||
* 文章表示時と同じように制御文字を入力してください。
|
||
* @type multiline_string
|
||
*
|
||
* @command setEnabled
|
||
* @text 立ち絵表示ON・OFF
|
||
* @desc 立ち絵の表示・非表示を一括制御します。
|
||
*
|
||
* @arg enabled
|
||
* @text 立ち絵表示
|
||
* @desc OFFにすると立ち絵が一切表示されなくなります。
|
||
* @default true
|
||
* @type boolean
|
||
*
|
||
* @command setTone
|
||
* @text 色調変更
|
||
* @desc 立ち絵の色調を変更します。
|
||
*
|
||
* @arg toneR
|
||
* @text 赤
|
||
* @desc 色調のR成分です。 (-255~255)
|
||
* @default 0
|
||
* @type number
|
||
* @min -255
|
||
* @max 255
|
||
*
|
||
* @arg toneG
|
||
* @text 緑
|
||
* @desc 色調のG成分です。 (-255~255)
|
||
* @default 0
|
||
* @type number
|
||
* @min -255
|
||
* @max 255
|
||
*
|
||
* @arg toneB
|
||
* @text 青
|
||
* @desc 色調のB成分です。 (-255~255)
|
||
* @default 0
|
||
* @type number
|
||
* @min -255
|
||
* @max 255
|
||
*
|
||
* @arg toneC
|
||
* @text グレー
|
||
* @desc グレースケールの強さです。 (0~255)
|
||
* @default 0
|
||
* @type number
|
||
* @min 0
|
||
* @max 255
|
||
*
|
||
* @param sPictures
|
||
* @text 立ち絵リスト
|
||
* @desc メッセージウィンドウに表示する立ち絵を定義します。
|
||
* @default []
|
||
* @type struct<sPictures>[]
|
||
*
|
||
* @param picture1Settings
|
||
* @text 立ち絵1(\F)の設定
|
||
* @desc ※この項目は使用しません
|
||
*
|
||
* @param transition
|
||
* @text 切替効果
|
||
* @desc 出現・消去時の切替効果を指定します。
|
||
* @type select
|
||
* @default 1
|
||
* @option なし
|
||
* @value 0
|
||
* @option フェード
|
||
* @value 1
|
||
* @option フロート左
|
||
* @value 2
|
||
* @option フロート右
|
||
* @value 3
|
||
* @option フロート下
|
||
* @value 4
|
||
* @option フロート上
|
||
* @value 5
|
||
* @parent picture1Settings
|
||
*
|
||
* @param foreFront
|
||
* @text ウィンドウの前面に表示
|
||
* @desc ONにするとメッセージウィンドウよりも前面に表示されます。
|
||
* @type boolean
|
||
* @default false
|
||
* @parent picture1Settings
|
||
*
|
||
* @param picture2Settings
|
||
* @text 立ち絵2(\FF)の設定
|
||
* @desc ※この項目は使用しません
|
||
*
|
||
* @param transition2
|
||
* @text 切替効果
|
||
* @desc 出現・消去時の切替効果を指定します。
|
||
* @type select
|
||
* @default 1
|
||
* @option なし
|
||
* @value 0
|
||
* @option フェード
|
||
* @value 1
|
||
* @option フロート左
|
||
* @value 2
|
||
* @option フロート右
|
||
* @value 3
|
||
* @option フロート下
|
||
* @value 4
|
||
* @option フロート上
|
||
* @value 5
|
||
* @parent picture2Settings
|
||
*
|
||
* @param foreFront2
|
||
* @text ウィンドウの前面に表示
|
||
* @desc ONにするとメッセージウィンドウよりも前面に表示されます。
|
||
* @type boolean
|
||
* @default false
|
||
* @parent picture2Settings
|
||
*
|
||
* @param picture3Settings
|
||
* @text 立ち絵3(\FFF)の設定
|
||
* @desc ※この項目は使用しません
|
||
*
|
||
* @param transition3
|
||
* @text 切替効果
|
||
* @desc 出現・消去時の切替効果を指定します。
|
||
* @type select
|
||
* @default 1
|
||
* @option なし
|
||
* @value 0
|
||
* @option フェード
|
||
* @value 1
|
||
* @option フロート左
|
||
* @value 2
|
||
* @option フロート右
|
||
* @value 3
|
||
* @option フロート下
|
||
* @value 4
|
||
* @option フロート上
|
||
* @value 5
|
||
* @parent picture3Settings
|
||
*
|
||
* @param foreFront3
|
||
* @text ウィンドウの前面に表示
|
||
* @desc ONにするとメッセージウィンドウよりも前面に表示されます。
|
||
* @type boolean
|
||
* @default false
|
||
* @parent picture3Settings
|
||
*
|
||
* @param picture4Settings
|
||
* @text 立ち絵4(\FFFF)の設定
|
||
* @desc ※この項目は使用しません
|
||
*
|
||
* @param transition4
|
||
* @text 切替効果
|
||
* @desc 出現・消去時の切替効果を指定します。
|
||
* @type select
|
||
* @default 1
|
||
* @option なし
|
||
* @value 0
|
||
* @option フェード
|
||
* @value 1
|
||
* @option フロート左
|
||
* @value 2
|
||
* @option フロート右
|
||
* @value 3
|
||
* @option フロート下
|
||
* @value 4
|
||
* @option フロート上
|
||
* @value 5
|
||
* @parent picture4Settings
|
||
*
|
||
* @param foreFront4
|
||
* @text ウィンドウの前面に表示
|
||
* @desc ONにするとメッセージウィンドウよりも前面に表示されます。
|
||
* @type boolean
|
||
* @default false
|
||
* @parent picture4Settings
|
||
*
|
||
* @param focusToneAdjust
|
||
* @text フォーカス時の暗さ
|
||
* @desc AA[s]でフォーカスを当てた時の暗さ(-255~0)です。
|
||
* 暗くなりすぎる場合に調整してください。(初期値: -96)
|
||
* @default -96
|
||
* @min -255
|
||
* @max 0
|
||
* @type number
|
||
*
|
||
* @param catheBootPicture
|
||
* @text 立ち絵画像の事前読み込み
|
||
* @desc アツマールなどブラウザプレイ時の読み込み待ちを解消します。
|
||
* 画像数や回線速度により起動が遅くなる場合があります。
|
||
* @default true
|
||
* @type boolean
|
||
*/
|
||
|
||
/*~struct~sPictures:
|
||
*
|
||
* @param id
|
||
* @text 立ち絵ID
|
||
* @desc 立ち絵IDです。立ち絵を制御文字で呼び出す際に使用します。
|
||
* 半角英数字(_)で入力してください。
|
||
* @type string
|
||
*
|
||
* @param imageName
|
||
* @text 画像ファイル名
|
||
* @desc 立ち絵として表示する画像ファイルを選択してください。
|
||
* @dir img/pictures
|
||
* @type file
|
||
* @require 1
|
||
*
|
||
* @param origin
|
||
* @text 原点
|
||
* @desc 立ち絵の原点です。
|
||
* @default 0
|
||
* @type select
|
||
* @option 左上
|
||
* @value 0
|
||
* @option 中央
|
||
* @value 1
|
||
*
|
||
* @param x
|
||
* @text X座標 (立ち絵1)
|
||
* @desc 立ち絵1(F)で呼び出された時の表示位置(X)です。
|
||
* @default 464
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param y
|
||
* @text Y座標 (立ち絵1)
|
||
* @desc 立ち絵1(F)で呼び出された時の表示位置(Y)です。
|
||
* @default 96
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param x2
|
||
* @text X座標 (立ち絵2)
|
||
* @desc 立ち絵2(FF)で呼び出された時の表示位置(X)です。
|
||
* @default 20
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param y2
|
||
* @text Y座標 (立ち絵2)
|
||
* @desc 立ち絵2(FF)で呼び出された時の表示位置(Y)です。
|
||
* @default 96
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param x3
|
||
* @text X座標 (立ち絵3)
|
||
* @desc 立ち絵3(FFF)で呼び出された時の表示位置(X)です。
|
||
* @default 364
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param y3
|
||
* @text Y座標 (立ち絵3)
|
||
* @desc 立ち絵3(FFF)で呼び出された時の表示位置(Y)です。
|
||
* @default 96
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param x4
|
||
* @text X座標 (立ち絵4)
|
||
* @desc 立ち絵4(FFFF)で呼び出された時の表示位置(X)です。
|
||
* @default 120
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param y4
|
||
* @text Y座標 (立ち絵4)
|
||
* @desc 立ち絵4(FFFF)で呼び出された時の表示位置(Y)です。
|
||
* @default 96
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param reverse
|
||
* @text 立ち絵2, 4の左右反転
|
||
* @desc 立ち絵2(FF)、立ち絵4(FFFF)で呼び出された時に
|
||
* 立ち絵を左右反転させるかの設定です。
|
||
* @default 1
|
||
* @type select
|
||
* @option 左右反転しない
|
||
* @value 1
|
||
* @option 左右反転する
|
||
* @value -1
|
||
*
|
||
* @param scaleX
|
||
* @text X拡大率
|
||
* @desc 立ち絵の拡大率(X)です。
|
||
* @default 100
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param scaleY
|
||
* @text Y拡大率
|
||
* @desc 立ち絵の拡大率(Y)です。
|
||
* @default 100
|
||
* @min -2000
|
||
* @max 2000
|
||
* @type number
|
||
*
|
||
* @param opacity
|
||
* @text 不透明度
|
||
* @desc 立ち絵の不透明度(0~255)です。
|
||
* @default 255
|
||
* @type number
|
||
* @min 0
|
||
* @max 255
|
||
*
|
||
* @param blendMode
|
||
* @text 合成方法
|
||
* @desc 立ち絵の合成方法です。
|
||
* @default 0
|
||
* @type select
|
||
* @option 通常
|
||
* @value 0
|
||
* @option 加算
|
||
* @value 1
|
||
* @option 除算
|
||
* @value 2
|
||
* @option スクリーン
|
||
* @value 3
|
||
*/
|
||
|
||
(function() {
|
||
"use strict";
|
||
var pluginName = "LL_StandingPictureMV";
|
||
|
||
var parameters = PluginManager.parameters(pluginName);
|
||
// 切替効果
|
||
var transitions = [
|
||
null,
|
||
Number(parameters["transition"] || 1),
|
||
Number(parameters["transition2"] || 1),
|
||
Number(parameters["transition3"] || 1),
|
||
Number(parameters["transition4"] || 1)
|
||
];
|
||
// ウィンドウ前面表示
|
||
var foreFronts = [
|
||
null,
|
||
eval(parameters["foreFront"] || "false"),
|
||
eval(parameters["foreFront2"] || "false"),
|
||
eval(parameters["foreFront3"] || "false"),
|
||
eval(parameters["foreFront4"] || "false")
|
||
];
|
||
|
||
var focusToneAdjust = Number(parameters["focusToneAdjust"] || -96);
|
||
var catheBootPicture = eval(parameters["catheBootPicture"] || "true");
|
||
var sPictures = JSON.parse(parameters["sPictures"] || "null");
|
||
var sPictureLists = [];
|
||
if (sPictures) {
|
||
sPictures.forEach(function(elm) {
|
||
sPictureLists.push(JSON.parse(elm));
|
||
});
|
||
}
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// PluginCommand (for MV)
|
||
//
|
||
|
||
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
|
||
Game_Interpreter.prototype.pluginCommand = function(command, args) {
|
||
_Game_Interpreter_pluginCommand.call(this, command, args);
|
||
if (command === pluginName) {
|
||
switch (args[0]) {
|
||
case 'processChar':
|
||
var text = args[1];
|
||
exStandingPictureParseChar(text);
|
||
|
||
// 立ち絵表示状態を継続
|
||
if ($gameSystem._LL_StandingPicture_picture1.showSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture1.refSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture1.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture1.motionSPicture];
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture2.showSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture2.refSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture2.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture2.motionSPicture];
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture3.showSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture3.refSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture3.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture3.motionSPicture];
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture4.showSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture4.refSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture4.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture4.motionSPicture];
|
||
}
|
||
if (!$gameSystem._LL_StandingPicture_holdSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture1.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture2.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture3.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture4.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture1.motionSPicture = "";
|
||
$gameSystem._LL_StandingPicture_picture2.motionSPicture = "";
|
||
$gameSystem._LL_StandingPicture_picture3.motionSPicture = "";
|
||
$gameSystem._LL_StandingPicture_picture4.motionSPicture = "";
|
||
}
|
||
break;
|
||
case 'setEnabled':
|
||
var enabled = eval(args[1] || "true");
|
||
$gameSystem._StandingPictureDisabled = !enabled;
|
||
break;
|
||
case 'setTone':
|
||
var setTone = args[1].split(',');
|
||
var pictureTone = [Number(setTone[0]), Number(setTone[1]), Number(setTone[2]), Number(setTone[3])];
|
||
$gameSystem._StandingPictureTone = pictureTone;
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
|
||
// アニメーションフレーム数定義
|
||
var animationFrame = {
|
||
"yes": 24,
|
||
"yesyes": 48,
|
||
"no": 24,
|
||
"noslow": 48,
|
||
"jump": 24,
|
||
"jumpjump": 48,
|
||
"jumploop": 48,
|
||
"shake": 1,
|
||
"shakeloop": 1,
|
||
"runleft": 1,
|
||
"runright": 1,
|
||
"noslowloop": 96,
|
||
"breathing": 96,
|
||
"breathing2": 96,
|
||
"huwahuwa": 192,
|
||
"none": 0
|
||
};
|
||
|
||
// フォーカス状態リセット用
|
||
let focusReset = false;
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Game_System
|
||
//
|
||
// 立ち絵制御用の独自配列を追加定義します。
|
||
|
||
var _Game_System_initialize = Game_System.prototype.initialize;
|
||
Game_System.prototype.initialize = function() {
|
||
_Game_System_initialize.apply(this, arguments);
|
||
|
||
this.iniLLStandingPictures();
|
||
this._LL_StandingPicture_battleCache = null;
|
||
};
|
||
|
||
Game_System.prototype.iniLLStandingPictures = function() {
|
||
// 立ち絵1 (F)
|
||
this._LL_StandingPicture_picture1 = {
|
||
animationCount: 0,
|
||
spriteSPicture: null,
|
||
showSPicture: false,
|
||
refSPicture: false,
|
||
motionSPicture: ""
|
||
};
|
||
// 立ち絵2 (FF)
|
||
this._LL_StandingPicture_picture2 = {
|
||
animationCount: 0,
|
||
spriteSPicture: null,
|
||
showSPicture: false,
|
||
refSPicture: false,
|
||
motionSPicture: ""
|
||
};
|
||
// 立ち絵3 (FFF)
|
||
this._LL_StandingPicture_picture3 = {
|
||
animationCount: 0,
|
||
spriteSPicture: null,
|
||
showSPicture: false,
|
||
refSPicture: false,
|
||
motionSPicture: ""
|
||
};
|
||
// 立ち絵4 (FFFF)
|
||
this._LL_StandingPicture_picture4 = {
|
||
animationCount: 0,
|
||
spriteSPicture: null,
|
||
showSPicture: false,
|
||
refSPicture: false,
|
||
motionSPicture: ""
|
||
};
|
||
// フォーカス設定
|
||
this._LL_StandingPicture_focusSPicture = {
|
||
0: false,
|
||
1: false,
|
||
2: false,
|
||
3: false,
|
||
4: false
|
||
};
|
||
// ホールド設定
|
||
this._LL_StandingPicture_holdSPicture = false;
|
||
}
|
||
|
||
Game_System.prototype.inBattleMakeCacheLLStandingPictures = function() {
|
||
if (!this._LL_StandingPicture_battleCache) {
|
||
this._LL_StandingPicture_battleCache = {
|
||
picture1: this._LL_StandingPicture_picture1,
|
||
picture2: this._LL_StandingPicture_picture2,
|
||
picture3: this._LL_StandingPicture_picture3,
|
||
picture4: this._LL_StandingPicture_picture4,
|
||
focusSPicture: this._LL_StandingPicture_focusSPicture,
|
||
holdSPicture: this._LL_StandingPicture_holdSPicture
|
||
};
|
||
}
|
||
this.iniLLStandingPictures();
|
||
}
|
||
|
||
Game_System.prototype.refreshCacheLLStandingPictures = function() {
|
||
if (this._LL_StandingPicture_battleCache) {
|
||
this._LL_StandingPicture_picture1 = this._LL_StandingPicture_battleCache.picture1;
|
||
this._LL_StandingPicture_picture2 = this._LL_StandingPicture_battleCache.picture2;
|
||
this._LL_StandingPicture_picture3 = this._LL_StandingPicture_battleCache.picture3;
|
||
this._LL_StandingPicture_picture4 = this._LL_StandingPicture_battleCache.picture4;
|
||
this._LL_StandingPicture_focusSPicture = this._LL_StandingPicture_battleCache.focusSPicture;
|
||
this._LL_StandingPicture_holdSPicture = this._LL_StandingPicture_battleCache.holdSPicture;
|
||
}
|
||
this._LL_StandingPicture_battleCache = null;
|
||
}
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// ExStandingPictureParseChar
|
||
//
|
||
// 立ち絵制御文字を解読する関数です。
|
||
|
||
var exStandingPictureParseChar = function(text) {
|
||
text = text.replace(/\\V\[(\d+)\]/gi, function() {
|
||
return $gameVariables.value(parseInt(arguments[1]));
|
||
}.bind(this));
|
||
|
||
// 専用制御文字を取得 (\F[s])
|
||
var sPictureNumber = null;
|
||
var processEscapeNumber = text.match(/\\F\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureNumber = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\FF[s])
|
||
var sPictureNumber2 = null;
|
||
processEscapeNumber = text.match(/\\FF\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureNumber2 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\FFF[s])
|
||
var sPictureNumber3 = null;
|
||
processEscapeNumber = text.match(/\\FFF\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureNumber3 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\FFFF[s])
|
||
var sPictureNumber4 = null;
|
||
processEscapeNumber = text.match(/\\FFFF\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureNumber4 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\M[s])
|
||
var sPictureMotion = null;
|
||
processEscapeNumber = text.match(/\\M\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureMotion = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\MM[s])
|
||
var sPictureMotion2 = null;
|
||
processEscapeNumber = text.match(/\\MM\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureMotion2 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\MMM[s])
|
||
var sPictureMotion3 = null;
|
||
processEscapeNumber = text.match(/\\MMM\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureMotion3 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\MMMM[s])
|
||
var sPictureMotion4 = null;
|
||
processEscapeNumber = text.match(/\\MMMM\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureMotion4 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\M1[s])
|
||
processEscapeNumber = text.match(/\\M1\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureMotion = processEscapeNumber[1];
|
||
sPictureMotion3 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\M2[s])
|
||
processEscapeNumber = text.match(/\\M2\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureMotion2 = processEscapeNumber[1];
|
||
sPictureMotion4 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\AA[s])
|
||
var focusSPicture = false;
|
||
processEscapeNumber = text.match(/\\AA\[(F|1)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
focusSPicture = true;
|
||
}
|
||
}
|
||
var focusSPicture2 = false;
|
||
processEscapeNumber = text.match(/\\AA\[(FF|2)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
focusSPicture2 = true;
|
||
}
|
||
}
|
||
var focusSPicture3 = false;
|
||
processEscapeNumber = text.match(/\\AA\[(FFF|3)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
focusSPicture3 = true;
|
||
}
|
||
}
|
||
var focusSPicture4 = false;
|
||
processEscapeNumber = text.match(/\\AA\[(FFFF|4)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
focusSPicture4 = true;
|
||
}
|
||
}
|
||
var focusSPictureAllout = false;
|
||
processEscapeNumber = text.match(/\\AA\[(N|0)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
focusSPictureAllout = true;
|
||
}
|
||
}
|
||
processEscapeNumber = text.match(/\\F1\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureNumber = $gameVariables.value(55);
|
||
sPictureNumber3 = processEscapeNumber[1];
|
||
focusSPicture = true;
|
||
focusSPicture3 = true;
|
||
}
|
||
}
|
||
processEscapeNumber = text.match(/\\F2\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureNumber = $gameVariables.value(55);
|
||
sPictureNumber3 = processEscapeNumber[1];
|
||
focusSPicture2 = true;
|
||
}
|
||
}
|
||
if (sPictureNumber == '01_i_henshin') {
|
||
sPictureNumber3 += '_h';
|
||
}
|
||
if (sPictureNumber == '01_i_seihuku2') {
|
||
sPictureNumber3 += '_d';
|
||
}
|
||
processEscapeNumber = text.match(/\\FF1\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureNumber2 = $gameVariables.value(59);
|
||
sPictureNumber4 = processEscapeNumber[1];
|
||
}
|
||
}
|
||
processEscapeNumber = text.match(/\\FF2\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureNumber2 = $gameVariables.value(59);
|
||
sPictureNumber4 = processEscapeNumber[1];
|
||
focusSPicture2 = true;
|
||
focusSPicture4 = true;
|
||
}
|
||
}
|
||
if (sPictureNumber2) {
|
||
if (sPictureNumber2 == '01_i_henshin') {
|
||
sPictureNumber4 += '_h';
|
||
} else if (sPictureNumber2.startsWith("01_i_")) {
|
||
if (sPictureNumber2 == '01_i_seihuku2') {
|
||
sPictureNumber4 += '_d';
|
||
}
|
||
sPictureNumber2 += '_R';
|
||
sPictureNumber4 += '_R';
|
||
} else if (sPictureNumber2.startsWith("02_i_")) {
|
||
sPictureNumber2 += '_R';
|
||
}
|
||
}
|
||
$gameSystem._LL_StandingPicture_focusSPicture = {
|
||
0: focusSPictureAllout,
|
||
1: focusSPicture,
|
||
2: focusSPicture2,
|
||
3: focusSPicture3,
|
||
4: focusSPicture4
|
||
};
|
||
// フォーカス状態リセット (\AA[R])
|
||
processEscapeNumber = text.match(/\\AA\[(R|0)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
focusReset = true;
|
||
}
|
||
}
|
||
// 専用制御文字を取得 (\FH[s])
|
||
var sPictureHold = null;
|
||
processEscapeNumber = text.match(/\\FH\[(\w+)\]/);
|
||
if (processEscapeNumber) {
|
||
if (processEscapeNumber[1]) {
|
||
sPictureHold = processEscapeNumber[1];
|
||
}
|
||
}
|
||
// 立ち絵1を更新
|
||
if (sPictureNumber) {
|
||
var sPicture = sPictureLists.filter(function(item, index) {
|
||
if (String(item.id) == sPictureNumber) return true;
|
||
});
|
||
$gameSystem._LL_StandingPicture_picture1.spriteSPicture = sPicture[0];
|
||
if (sPicture[0]) {
|
||
$gameSystem._LL_StandingPicture_picture1.showSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture1.refSPicture = true;
|
||
} else {
|
||
$gameSystem._LL_StandingPicture_picture1.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture1.refSPicture = false;
|
||
}
|
||
// 再生モーション定義
|
||
$gameSystem._LL_StandingPicture_picture1.motionSPicture = sPictureMotion ? sPictureMotion : "none";
|
||
$gameSystem._LL_StandingPicture_picture1.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture1.motionSPicture];
|
||
} else {
|
||
if (!$gameSystem._LL_StandingPicture_holdSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture1.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture1.motionSPicture = "";
|
||
} else if (sPictureMotion) {
|
||
// 再生モーション更新
|
||
$gameSystem._LL_StandingPicture_picture1.motionSPicture = sPictureMotion;
|
||
$gameSystem._LL_StandingPicture_picture1.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture1.motionSPicture];
|
||
}
|
||
}
|
||
// 立ち絵2を更新
|
||
if (sPictureNumber2) {
|
||
var sPicture2 = sPictureLists.filter(function(item, index) {
|
||
if (String(item.id) == sPictureNumber2) return true;
|
||
});
|
||
$gameSystem._LL_StandingPicture_picture2.spriteSPicture = sPicture2[0];
|
||
if (sPicture2[0]) {
|
||
$gameSystem._LL_StandingPicture_picture2.showSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture2.refSPicture = true;
|
||
} else {
|
||
$gameSystem._LL_StandingPicture_picture2.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture2.refSPicture = false;
|
||
}
|
||
// 再生モーション定義
|
||
$gameSystem._LL_StandingPicture_picture2.motionSPicture = sPictureMotion2 ? sPictureMotion2 : "none";
|
||
$gameSystem._LL_StandingPicture_picture2.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture2.motionSPicture];
|
||
} else {
|
||
if (!$gameSystem._LL_StandingPicture_holdSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture2.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture2.motionSPicture = "";
|
||
} else if (sPictureMotion2) {
|
||
// 再生モーション更新
|
||
$gameSystem._LL_StandingPicture_picture2.motionSPicture = sPictureMotion2;
|
||
$gameSystem._LL_StandingPicture_picture2.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture2.motionSPicture];
|
||
}
|
||
}
|
||
// 立ち絵3を更新
|
||
if (sPictureNumber3) {
|
||
var sPicture3 = sPictureLists.filter(function(item, index) {
|
||
if (String(item.id) == sPictureNumber3) return true;
|
||
});
|
||
$gameSystem._LL_StandingPicture_picture3.spriteSPicture = sPicture3[0];
|
||
if (sPicture3[0]) {
|
||
$gameSystem._LL_StandingPicture_picture3.showSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture3.refSPicture = true;
|
||
} else {
|
||
$gameSystem._LL_StandingPicture_picture3.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture3.refSPicture = false;
|
||
}
|
||
// 再生モーション定義
|
||
$gameSystem._LL_StandingPicture_picture3.motionSPicture = sPictureMotion3 ? sPictureMotion3 : "none";
|
||
$gameSystem._LL_StandingPicture_picture3.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture3.motionSPicture];
|
||
} else {
|
||
if (!$gameSystem._LL_StandingPicture_holdSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture3.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture3.motionSPicture = "";
|
||
} else if (sPictureMotion3) {
|
||
// 再生モーション更新
|
||
$gameSystem._LL_StandingPicture_picture3.motionSPicture = sPictureMotion3;
|
||
$gameSystem._LL_StandingPicture_picture3.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture3.motionSPicture];
|
||
}
|
||
}
|
||
// 立ち絵4を更新
|
||
if (sPictureNumber4) {
|
||
var sPicture4 = sPictureLists.filter(function(item, index) {
|
||
if (String(item.id) == sPictureNumber4) return true;
|
||
});
|
||
$gameSystem._LL_StandingPicture_picture4.spriteSPicture = sPicture4[0];
|
||
if (sPicture4[0]) {
|
||
$gameSystem._LL_StandingPicture_picture4.showSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture4.refSPicture = true;
|
||
} else {
|
||
$gameSystem._LL_StandingPicture_picture4.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture4.refSPicture = false;
|
||
}
|
||
// 再生モーション定義
|
||
$gameSystem._LL_StandingPicture_picture4.motionSPicture = sPictureMotion4 ? sPictureMotion4 : "none";
|
||
$gameSystem._LL_StandingPicture_picture4.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture4.motionSPicture];
|
||
} else {
|
||
if (!$gameSystem._LL_StandingPicture_holdSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture4.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture4.motionSPicture = "";
|
||
} else if (sPictureMotion4) {
|
||
// 再生モーション更新
|
||
$gameSystem._LL_StandingPicture_picture4.motionSPicture = sPictureMotion4;
|
||
$gameSystem._LL_StandingPicture_picture4.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture4.motionSPicture];
|
||
}
|
||
}
|
||
|
||
// ホールドモードを切替
|
||
if (sPictureHold === "ON") {
|
||
$gameSystem._LL_StandingPicture_holdSPicture = true;
|
||
} else if (sPictureHold === "OFF") {
|
||
$gameSystem._LL_StandingPicture_holdSPicture = false;
|
||
}
|
||
}
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// ExStandingPicture
|
||
//
|
||
// 立ち絵を表示する独自のクラスを追加定義します。
|
||
|
||
class ExStandingPicture {
|
||
|
||
static create (elm) {
|
||
// 立ち絵1
|
||
elm._spSprite = new Sprite_LL_SPicture();
|
||
elm.addChildAt(elm._spSprite, elm.children.indexOf(foreFronts[1] ? elm._windowLayer : elm._spriteset) + 1);
|
||
// 立ち絵2
|
||
elm._spSprite2 = new Sprite_LL_SPicture();
|
||
elm.addChildAt(elm._spSprite2, elm.children.indexOf(foreFronts[2] ? elm._windowLayer : elm._spriteset) + 1);
|
||
// 立ち絵3
|
||
elm._spSprite3 = new Sprite_LL_SPicture();
|
||
elm.addChildAt(elm._spSprite3, elm.children.indexOf(foreFronts[3] ? elm._windowLayer : elm._spriteset) + 1);
|
||
// 立ち絵4
|
||
elm._spSprite4 = new Sprite_LL_SPicture();
|
||
elm.addChildAt(elm._spSprite4, elm.children.indexOf(foreFronts[4] ? elm._windowLayer : elm._spriteset) + 1);
|
||
|
||
// ※下記は念のためMVでは無効 (v2.5.1)
|
||
|
||
// 立ち絵画像を事前読み込み
|
||
// if (catheBootPicture) {
|
||
// sPictureLists.forEach(function(elm) {
|
||
// ImageManager.loadPicture(elm.imageName);
|
||
// });
|
||
// }
|
||
|
||
// 旧Ver.のセーブデータ読み込み対策
|
||
if (typeof $gameSystem._LL_StandingPicture_picture1 === "undefined") {
|
||
$gameSystem.iniLLStandingPictures();
|
||
}
|
||
|
||
// 戦闘時判定
|
||
if (SceneManager._scene.constructor === Scene_Battle) {
|
||
// 表示中の立ち絵を消去
|
||
$gameSystem.inBattleMakeCacheLLStandingPictures();
|
||
} else {
|
||
$gameSystem.refreshCacheLLStandingPictures();
|
||
}
|
||
|
||
// 立ち絵表示状態を継続
|
||
if ($gameSystem._LL_StandingPicture_picture1.showSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture1.refSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture1.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture1.motionSPicture];
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture2.showSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture2.refSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture2.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture2.motionSPicture];
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture3.showSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture3.refSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture3.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture3.motionSPicture];
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture4.showSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture4.refSPicture = true;
|
||
$gameSystem._LL_StandingPicture_picture4.animationCount = animationFrame[$gameSystem._LL_StandingPicture_picture4.motionSPicture];
|
||
}
|
||
}
|
||
|
||
static update (elm) {
|
||
// 立ち絵を非表示に設定している場合、処理を中断
|
||
if ($gameSystem._StandingPictureDisabled) {
|
||
elm._spSprite.opacity = 0;
|
||
elm._spSprite2.opacity = 0;
|
||
elm._spSprite3.opacity = 0;
|
||
elm._spSprite4.opacity = 0;
|
||
return;
|
||
}
|
||
|
||
// 立ち絵1ピクチャ作成
|
||
if ($gameSystem._LL_StandingPicture_picture1.spriteSPicture && $gameSystem._LL_StandingPicture_picture1.refSPicture) {
|
||
this.refresh(elm._spSprite, $gameSystem._LL_StandingPicture_picture1.spriteSPicture, 1);
|
||
$gameSystem._LL_StandingPicture_picture1.refSPicture = false;
|
||
}
|
||
// 立ち絵2ピクチャ作成
|
||
if ($gameSystem._LL_StandingPicture_picture2.spriteSPicture && $gameSystem._LL_StandingPicture_picture2.refSPicture) {
|
||
this.refresh(elm._spSprite2, $gameSystem._LL_StandingPicture_picture2.spriteSPicture, 2);
|
||
$gameSystem._LL_StandingPicture_picture2.refSPicture = false;
|
||
}
|
||
// 立ち絵3ピクチャ作成
|
||
if ($gameSystem._LL_StandingPicture_picture3.spriteSPicture && $gameSystem._LL_StandingPicture_picture3.refSPicture) {
|
||
this.refresh(elm._spSprite3, $gameSystem._LL_StandingPicture_picture3.spriteSPicture, 3);
|
||
$gameSystem._LL_StandingPicture_picture3.refSPicture = false;
|
||
}
|
||
// 立ち絵4ピクチャ作成
|
||
if ($gameSystem._LL_StandingPicture_picture4.spriteSPicture && $gameSystem._LL_StandingPicture_picture4.refSPicture) {
|
||
this.refresh(elm._spSprite4, $gameSystem._LL_StandingPicture_picture4.spriteSPicture, 4);
|
||
$gameSystem._LL_StandingPicture_picture4.refSPicture = false;
|
||
}
|
||
|
||
// フォーカス状態リセット
|
||
if (focusReset) {
|
||
elm._spSprite.setBlendColor([0, 0, 0, 0]);
|
||
elm._spSprite2.setBlendColor([0, 0, 0, 0]);
|
||
elm._spSprite3.setBlendColor([0, 0, 0, 0]);
|
||
elm._spSprite4.setBlendColor([0, 0, 0, 0]);
|
||
focusReset = false;
|
||
}
|
||
|
||
// フォーカス処理
|
||
if (
|
||
$gameSystem._LL_StandingPicture_focusSPicture[0] !== false ||
|
||
$gameSystem._LL_StandingPicture_focusSPicture[1] !== false ||
|
||
$gameSystem._LL_StandingPicture_focusSPicture[2] !== false ||
|
||
$gameSystem._LL_StandingPicture_focusSPicture[3] !== false ||
|
||
$gameSystem._LL_StandingPicture_focusSPicture[4] !== false
|
||
) {
|
||
// フォーカス状態を一度リフレッシュ
|
||
elm._spSprite.setBlendColor([0, 0, 0, 0]);
|
||
elm._spSprite2.setBlendColor([0, 0, 0, 0]);
|
||
elm._spSprite3.setBlendColor([0, 0, 0, 0]);
|
||
elm._spSprite4.setBlendColor([0, 0, 0, 0]);
|
||
|
||
if ($gameSystem._LL_StandingPicture_focusSPicture[1] === false || $gameSystem._LL_StandingPicture_focusSPicture[0] === true) {
|
||
elm._spSprite.setBlendColor([0, 0, 0, (focusToneAdjust * -1)]);
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_focusSPicture[2] === false || $gameSystem._LL_StandingPicture_focusSPicture[0] === true) {
|
||
elm._spSprite2.setBlendColor([0, 0, 0, (focusToneAdjust * -1)]);
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_focusSPicture[3] === false || $gameSystem._LL_StandingPicture_focusSPicture[0] === true) {
|
||
elm._spSprite3.setBlendColor([0, 0, 0, (focusToneAdjust * -1)]);
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_focusSPicture[4] === false || $gameSystem._LL_StandingPicture_focusSPicture[0] === true) {
|
||
elm._spSprite4.setBlendColor([0, 0, 0, (focusToneAdjust * -1)]);
|
||
}
|
||
}
|
||
|
||
// フェード処理
|
||
if ($gameSystem._LL_StandingPicture_picture1.showSPicture) {
|
||
this.fadeIn(elm._spSprite, $gameSystem._LL_StandingPicture_picture1.spriteSPicture, 1);
|
||
} else {
|
||
this.fadeOut(elm._spSprite, $gameSystem._LL_StandingPicture_picture1.spriteSPicture, 1);
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture2.showSPicture) {
|
||
this.fadeIn(elm._spSprite2, $gameSystem._LL_StandingPicture_picture2.spriteSPicture, 2);
|
||
} else {
|
||
this.fadeOut(elm._spSprite2, $gameSystem._LL_StandingPicture_picture2.spriteSPicture, 2);
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture3.showSPicture) {
|
||
this.fadeIn(elm._spSprite3, $gameSystem._LL_StandingPicture_picture3.spriteSPicture, 3);
|
||
} else {
|
||
this.fadeOut(elm._spSprite3, $gameSystem._LL_StandingPicture_picture3.spriteSPicture, 3);
|
||
}
|
||
if ($gameSystem._LL_StandingPicture_picture4.showSPicture) {
|
||
this.fadeIn(elm._spSprite4, $gameSystem._LL_StandingPicture_picture4.spriteSPicture, 4);
|
||
} else {
|
||
this.fadeOut(elm._spSprite4, $gameSystem._LL_StandingPicture_picture4.spriteSPicture, 4);
|
||
}
|
||
|
||
// 立ち絵モーション再生
|
||
if (!elm._spSprite.opening && !elm._spSprite.closing && $gameSystem._LL_StandingPicture_picture1.animationCount > 0) {
|
||
$gameSystem._LL_StandingPicture_picture1.animationCount = this.animation(elm._spSprite, $gameSystem._LL_StandingPicture_picture1.motionSPicture, $gameSystem._LL_StandingPicture_picture1.animationCount);
|
||
}
|
||
if (!elm._spSprite2.opening && !elm._spSprite2.closing && $gameSystem._LL_StandingPicture_picture2.animationCount > 0) {
|
||
$gameSystem._LL_StandingPicture_picture2.animationCount = this.animation(elm._spSprite2, $gameSystem._LL_StandingPicture_picture2.motionSPicture, $gameSystem._LL_StandingPicture_picture2.animationCount);
|
||
}
|
||
if (!elm._spSprite3.opening && !elm._spSprite3.closing && $gameSystem._LL_StandingPicture_picture3.animationCount > 0) {
|
||
$gameSystem._LL_StandingPicture_picture3.animationCount = this.animation(elm._spSprite3, $gameSystem._LL_StandingPicture_picture3.motionSPicture, $gameSystem._LL_StandingPicture_picture3.animationCount);
|
||
}
|
||
if (!elm._spSprite4.opening && !elm._spSprite4.closing && $gameSystem._LL_StandingPicture_picture4.animationCount > 0) {
|
||
$gameSystem._LL_StandingPicture_picture4.animationCount = this.animation(elm._spSprite4, $gameSystem._LL_StandingPicture_picture4.motionSPicture, $gameSystem._LL_StandingPicture_picture4.animationCount);
|
||
}
|
||
}
|
||
|
||
static refresh (sSprite, sPicture, sNumber) {
|
||
sSprite.setPicture(sPicture);
|
||
sSprite.showing = false;
|
||
var calcScaleX = Number(sPicture.scaleX);
|
||
var calcScaleY = Number(sPicture.scaleY);
|
||
// 左右反転させる場合 (立ち絵2, 4)
|
||
if (sNumber == 2 || sNumber == 4) calcScaleX *= Number(sPicture.reverse);
|
||
// 画像が読み込まれたあとに実行
|
||
sSprite.bitmap.addLoadListener(function() {
|
||
if (Number(sPicture.origin) == 0) {
|
||
// 左上原点
|
||
if (sNumber == 1) {
|
||
sSprite.x = Number(sPicture.x);
|
||
sSprite.y = Number(sPicture.y);
|
||
sSprite.originX = Number(sPicture.x);
|
||
sSprite.originY = Number(sPicture.y);
|
||
}
|
||
if (sNumber == 2) {
|
||
sSprite.x = Number(sPicture.x2);
|
||
sSprite.y = Number(sPicture.y2);
|
||
sSprite.originX = Number(sPicture.x2);
|
||
sSprite.originY = Number(sPicture.y2);
|
||
}
|
||
if (sNumber == 3) {
|
||
sSprite.x = Number(sPicture.x3);
|
||
sSprite.y = Number(sPicture.y3);
|
||
sSprite.originX = Number(sPicture.x3);
|
||
sSprite.originY = Number(sPicture.y3);
|
||
}
|
||
if (sNumber == 4) {
|
||
sSprite.x = Number(sPicture.x4);
|
||
sSprite.y = Number(sPicture.y4);
|
||
sSprite.originX = Number(sPicture.x4);
|
||
sSprite.originY = Number(sPicture.y4);
|
||
}
|
||
} else {
|
||
// 中央原点
|
||
if (sNumber == 1) {
|
||
sSprite.x = Number(sPicture.x) - (sSprite.width * calcScaleX / 100) / 2;
|
||
sSprite.y = Number(sPicture.y) - (sSprite.height * calcScaleY / 100) / 2;
|
||
sSprite.originX = Number(sPicture.x) - (sSprite.width * calcScaleX / 100) / 2;
|
||
sSprite.originY = Number(sPicture.y) - (sSprite.height * calcScaleY / 100) / 2;
|
||
}
|
||
if (sNumber == 2) {
|
||
sSprite.x = Number(sPicture.x2) - (sSprite.width * calcScaleX / 100) / 2;
|
||
sSprite.y = Number(sPicture.y2) - (sSprite.height * calcScaleY / 100) / 2;
|
||
sSprite.originX = Number(sPicture.x2) - (sSprite.width * calcScaleX / 100) / 2;
|
||
sSprite.originY = Number(sPicture.y2) - (sSprite.height * calcScaleY / 100) / 2;
|
||
}
|
||
if (sNumber == 3) {
|
||
sSprite.x = Number(sPicture.x3) - (sSprite.width * calcScaleX / 100) / 2;
|
||
sSprite.y = Number(sPicture.y3) - (sSprite.height * calcScaleY / 100) / 2;
|
||
sSprite.originX = Number(sPicture.x3) - (sSprite.width * calcScaleX / 100) / 2;
|
||
sSprite.originY = Number(sPicture.y3) - (sSprite.height * calcScaleY / 100) / 2;
|
||
}
|
||
if (sNumber == 4) {
|
||
sSprite.x = Number(sPicture.x4) - (sSprite.width * calcScaleX / 100) / 2;
|
||
sSprite.y = Number(sPicture.y4) - (sSprite.height * calcScaleY / 100) / 2;
|
||
sSprite.originX = Number(sPicture.x4) - (sSprite.width * calcScaleX / 100) / 2;
|
||
sSprite.originY = Number(sPicture.y4) - (sSprite.height * calcScaleY / 100) / 2;
|
||
}
|
||
}
|
||
// 切替効果
|
||
if (sSprite.opacity == 0) {
|
||
if (transitions[sNumber] == 0) sSprite.opacity = Number(sPicture.opacity);
|
||
if (transitions[sNumber] == 2) sSprite.x -= 30;
|
||
if (transitions[sNumber] == 3) sSprite.x += 30;
|
||
if (transitions[sNumber] == 4) sSprite.y += 30;
|
||
if (transitions[sNumber] == 5) sSprite.y -= 30;
|
||
}
|
||
sSprite.setBlendMode(Number(sPicture.blendMode));
|
||
sSprite.setColorTone($gameSystem._StandingPictureTone ? $gameSystem._StandingPictureTone : [0, 0, 0, 0]);
|
||
sSprite.setBlendColor([0, 0, 0, 0]);
|
||
sSprite.scale.x = calcScaleX / 100;
|
||
sSprite.scale.y = calcScaleY / 100;
|
||
sSprite.showing = true;
|
||
}.bind(this));
|
||
}
|
||
|
||
static fadeIn (sSprite, sPicture, sNumber) {
|
||
if (!sSprite.showing) return;
|
||
if (sSprite.opacity >= Number(sPicture.opacity)) {
|
||
sSprite.opening = false;
|
||
sSprite.opacity = Number(sPicture.opacity);
|
||
return;
|
||
}
|
||
sSprite.opening = true;
|
||
sSprite.closing = false;
|
||
// 切替効果
|
||
if (sSprite.originX > sSprite.x) sSprite.x += 2;
|
||
if (sSprite.originX < sSprite.x) sSprite.x -= 2;
|
||
if (sSprite.originY < sSprite.y) sSprite.y -= 2;
|
||
if (sSprite.originY > sSprite.y) sSprite.y += 2;
|
||
sSprite.opacity += Number(sPicture.opacity) / 15;
|
||
}
|
||
|
||
static fadeOut (sSprite, sPicture, sNumber) {
|
||
if (sSprite.opacity == 0) {
|
||
sSprite.closing = false;
|
||
return;
|
||
}
|
||
sSprite.closing = true;
|
||
if (!sPicture) {
|
||
sSprite.opacity = 0;
|
||
return;
|
||
}
|
||
sSprite.opacity -= Number(sPicture.opacity) / 15;
|
||
// 切替効果
|
||
if (transitions[sNumber] == 0) sSprite.opacity = 0;
|
||
if (transitions[sNumber] == 2 && sSprite.originX - 30 < sSprite.x) sSprite.x -= 2;
|
||
if (transitions[sNumber] == 3 && sSprite.originX + 30 > sSprite.x) sSprite.x += 2;
|
||
if (transitions[sNumber] == 4 && sSprite.originY + 30 > sSprite.y) sSprite.y += 2;
|
||
if (transitions[sNumber] == 5 && sSprite.originY - 30 < sSprite.y) sSprite.y -= 2;
|
||
}
|
||
|
||
static animation (sSprite, sMotion, animationCount) {
|
||
if (!sSprite.showing) return animationCount;
|
||
if (sMotion == "yes") {
|
||
if (animationCount > 12) {
|
||
sSprite.y += 2;
|
||
} else {
|
||
sSprite.y -= 2;
|
||
}
|
||
animationCount -= 1;
|
||
}
|
||
if (sMotion == "yesyes") {
|
||
if (animationCount > 36) {
|
||
sSprite.y += 2;
|
||
} else if (animationCount > 24) {
|
||
sSprite.y -= 2;
|
||
} else if (animationCount > 12) {
|
||
sSprite.y += 2;
|
||
} else {
|
||
sSprite.y -= 2;
|
||
}
|
||
animationCount -= 1;
|
||
}
|
||
if (sMotion == "no") {
|
||
if (animationCount > 18) {
|
||
sSprite.x += 2;
|
||
} else if (animationCount > 6) {
|
||
sSprite.x -= 2;
|
||
} else {
|
||
sSprite.x += 2;
|
||
}
|
||
animationCount -= 1;
|
||
}
|
||
if (sMotion == "noslow") {
|
||
if (animationCount > 36) {
|
||
sSprite.x += 1;
|
||
} else if (animationCount > 12) {
|
||
sSprite.x -= 1;
|
||
} else {
|
||
sSprite.x += 1;
|
||
}
|
||
animationCount -= 1;
|
||
}
|
||
if (sMotion == "jump") {
|
||
if (animationCount > 12) {
|
||
sSprite.y -= 2;
|
||
} else {
|
||
sSprite.y += 2;
|
||
}
|
||
animationCount -= 1;
|
||
}
|
||
if (sMotion == "jumpjump") {
|
||
if (animationCount > 36) {
|
||
sSprite.y -= 2;
|
||
} else if (animationCount > 24) {
|
||
sSprite.y += 2;
|
||
} else if (animationCount > 12) {
|
||
sSprite.y -= 2;
|
||
} else {
|
||
sSprite.y += 2;
|
||
}
|
||
animationCount -= 1;
|
||
}
|
||
if (sMotion == "jumploop") {
|
||
if (animationCount > 36) {
|
||
sSprite.y -= 2;
|
||
} else if (animationCount > 24) {
|
||
sSprite.y += 2;
|
||
}
|
||
animationCount -= 1;
|
||
if (animationCount == 0) animationCount = 48;
|
||
}
|
||
if (sMotion == "shake") {
|
||
if (animationCount <= 2) {
|
||
sSprite.x -= 2;
|
||
animationCount += 1;
|
||
} else if (animationCount <= 4) {
|
||
sSprite.y -= 2;
|
||
animationCount += 1;
|
||
} else if (animationCount <= 6) {
|
||
sSprite.x += 4;
|
||
sSprite.y += 4;
|
||
animationCount += 1;
|
||
} else if (animationCount <= 8) {
|
||
sSprite.y -= 2;
|
||
animationCount += 1;
|
||
} else if (animationCount == 9) {
|
||
sSprite.x -= 2;
|
||
animationCount += 1;
|
||
} else if (animationCount == 10) {
|
||
sSprite.x -= 2;
|
||
animationCount = 0;
|
||
}
|
||
}
|
||
if (sMotion == "shakeloop") {
|
||
if (animationCount <= 2) {
|
||
sSprite.x -= 1;
|
||
animationCount += 1;
|
||
} else if (animationCount <= 4) {
|
||
sSprite.y -= 1;
|
||
animationCount += 1;
|
||
} else if (animationCount <= 6) {
|
||
sSprite.x += 2;
|
||
sSprite.y += 2;
|
||
animationCount += 1;
|
||
} else if (animationCount <= 8) {
|
||
sSprite.y -= 1;
|
||
animationCount += 1;
|
||
} else if (animationCount <= 10) {
|
||
sSprite.x -= 1;
|
||
animationCount += 1;
|
||
}
|
||
if (animationCount > 10) animationCount = 1;
|
||
}
|
||
if (sMotion == "runleft") {
|
||
sSprite.x -= 16;
|
||
if (sSprite.x < -2000) animationCount = 0;
|
||
}
|
||
if (sMotion == "runright") {
|
||
sSprite.x += 16;
|
||
if (sSprite.x > 2000) animationCount = 0;
|
||
}
|
||
if (sMotion == "noslowloop") {
|
||
if (animationCount > 72) {
|
||
sSprite.x += 0.25;
|
||
} else if (animationCount > 24) {
|
||
sSprite.x -= 0.25;
|
||
} else {
|
||
sSprite.x += 0.25;
|
||
}
|
||
animationCount -= 1;
|
||
if (animationCount == 0) animationCount = animationFrame["noslowloop"];
|
||
}
|
||
if (sMotion == "breathing") {
|
||
if (animationCount > 72) {
|
||
sSprite.y += 0.5;
|
||
} else if (animationCount > 48) {
|
||
sSprite.y -= 0.5;
|
||
} else {
|
||
}
|
||
animationCount -= 1;
|
||
if (animationCount == 0) animationCount = animationFrame["breathing"];
|
||
}
|
||
if (sMotion == "breathing2") {
|
||
if (animationCount > 48) {
|
||
// sSprite.anchor.y = 1;
|
||
sSprite.y -= sSprite.height * 0.0003;
|
||
sSprite.scale.y += 0.0003;
|
||
} else {
|
||
// sSprite.anchor.y = 1;
|
||
sSprite.y += sSprite.height * 0.0003;
|
||
sSprite.scale.y -= 0.0003;
|
||
}
|
||
animationCount -= 1;
|
||
if (animationCount == 0) animationCount = animationFrame["breathing2"];
|
||
}
|
||
if (sMotion == "huwahuwa") {
|
||
if (animationCount > 144) {
|
||
sSprite.y += 0.25;
|
||
} else if (animationCount > 48) {
|
||
sSprite.y -= 0.25;
|
||
} else {
|
||
sSprite.y += 0.25;
|
||
}
|
||
animationCount -= 1;
|
||
if (animationCount == 0) animationCount = animationFrame["huwahuwa"];
|
||
}
|
||
return animationCount;
|
||
}
|
||
}
|
||
|
||
var _Scene_Map_update = Scene_Map.prototype.update;
|
||
Scene_Map.prototype.update = function() {
|
||
_Scene_Map_update.apply(this, arguments);
|
||
ExStandingPicture.update(this);
|
||
};
|
||
|
||
var _Scene_Map_createDisplayObjects = Scene_Map.prototype.createDisplayObjects;
|
||
Scene_Map.prototype.createDisplayObjects = function() {
|
||
_Scene_Map_createDisplayObjects.apply(this, arguments);
|
||
ExStandingPicture.create(this);
|
||
};
|
||
|
||
var _Scene_Battle_update = Scene_Battle.prototype.update;
|
||
Scene_Battle.prototype.update = function() {
|
||
_Scene_Battle_update.apply(this, arguments);
|
||
ExStandingPicture.update(this);
|
||
};
|
||
|
||
var _Scene_Battle_createDisplayObjects = Scene_Battle.prototype.createDisplayObjects;
|
||
Scene_Battle.prototype.createDisplayObjects = function() {
|
||
_Scene_Battle_createDisplayObjects.apply(this, arguments);
|
||
ExStandingPicture.create(this);
|
||
};
|
||
|
||
var _Window_Message_updateClose = Window_Message.prototype.updateClose;
|
||
Window_Message.prototype.updateClose = function() {
|
||
// ピクチャ消去判定
|
||
if (this._closing && this.openness == 255) {
|
||
if (!$gameSystem._LL_StandingPicture_holdSPicture) {
|
||
$gameSystem._LL_StandingPicture_picture1.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture2.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture3.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture4.showSPicture = false;
|
||
$gameSystem._LL_StandingPicture_picture1.motionSPicture = "";
|
||
$gameSystem._LL_StandingPicture_picture2.motionSPicture = "";
|
||
$gameSystem._LL_StandingPicture_picture3.motionSPicture = "";
|
||
$gameSystem._LL_StandingPicture_picture4.motionSPicture = "";
|
||
}
|
||
}
|
||
_Window_Message_updateClose.apply(this, arguments);
|
||
};
|
||
|
||
var _Window_Message_startMessage = Window_Message.prototype.startMessage;
|
||
Window_Message.prototype.startMessage = function() {
|
||
var messageAllText = $gameMessage.allText();
|
||
exStandingPictureParseChar(messageAllText);
|
||
|
||
_Window_Message_startMessage.apply(this, arguments);
|
||
};
|
||
|
||
var _Window_Base_convertEscapeCharacters = Window_Base.prototype.convertEscapeCharacters;
|
||
Window_Base.prototype.convertEscapeCharacters = function(text) {
|
||
// 立ち絵呼び出し用の制御文字(\V[n]内包)を追加
|
||
text = text.replace(/\\F\[\\V\[(\d+)\]\]/gi, "");
|
||
text = text.replace(/\\FF\[\\V\[(\d+)\]\]/gi, "");
|
||
text = text.replace(/\\FFF\[\\V\[(\d+)\]\]/gi, "");
|
||
text = text.replace(/\\FFFF\[\\V\[(\d+)\]\]/gi, "");
|
||
text = text.replace(/\\F1\[\\V\[(\d+)\]\]/gi, "");
|
||
text = text.replace(/\\F2\[\\V\[(\d+)\]\]/gi, "");
|
||
text = text.replace(/\\FF1\[\\V\[(\d+)\]\]/gi, "");
|
||
text = text.replace(/\\FF2\[\\V\[(\d+)\]\]/gi, "");
|
||
|
||
// 立ち絵呼び出し用の制御文字を追加
|
||
text = text.replace(/\\F\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\FF\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\FFF\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\FFFF\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\F1\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\F2\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\FF1\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\FF2\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\M\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\MM\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\MMM\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\MMMM\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\M1\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\M2\[(\w+)\]/gi, "");
|
||
text = text.replace(/\\AA\[(\w*)\]/gi, "");
|
||
text = text.replace(/\\FH\[(\w+)\]/gi, "");
|
||
|
||
//先頭の改行を削除
|
||
text = text.replace(/>\r?\n/, ">");
|
||
|
||
return _Window_Base_convertEscapeCharacters.call(this, text);
|
||
};
|
||
|
||
var _Scene_Boot_loadSystemImages = Scene_Boot.loadSystemImages;
|
||
Scene_Boot.loadSystemImages = function() {
|
||
_Scene_Boot_loadSystemImages.call(this);
|
||
|
||
if (!catheBootPicture) return;
|
||
|
||
// 立ち絵画像を事前読み込み
|
||
sPictureLists.forEach(function(elm) {
|
||
ImageManager.loadPicture(elm.imageName);
|
||
});
|
||
};
|
||
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Sprite_LL_SPicture
|
||
//
|
||
// 立ち絵を表示するための独自のスプライトを追加定義します。
|
||
|
||
function Sprite_LL_SPicture() {
|
||
this.initialize.apply(this, arguments);
|
||
}
|
||
|
||
Sprite_LL_SPicture.prototype = Object.create(Sprite.prototype);
|
||
Sprite_LL_SPicture.prototype.constructor = Sprite_LL_SPicture;
|
||
|
||
Sprite_LL_SPicture.prototype.initialize = function() {
|
||
Sprite.prototype.initialize.call(this);
|
||
|
||
this.bitmap = null;
|
||
this.opacity = 0;
|
||
this.opening = false;
|
||
this.closing = false;
|
||
this.originX = 0;
|
||
this.originY = 0;
|
||
this.showing = false;
|
||
|
||
this.setOverlayBitmap();
|
||
this.initMembers();
|
||
};
|
||
|
||
Sprite_LL_SPicture.prototype.setOverlayBitmap = function() {
|
||
//
|
||
};
|
||
|
||
Sprite_LL_SPicture.prototype.initMembers = function() {
|
||
//
|
||
};
|
||
|
||
Sprite_LL_SPicture.prototype.update = function() {
|
||
Sprite.prototype.update.call(this);
|
||
};
|
||
|
||
Sprite_LL_SPicture.prototype.setPicture = function(sPicture) {
|
||
// ベース画像
|
||
this.bitmap = null;
|
||
this.bitmap = ImageManager.loadPicture(sPicture.imageName);
|
||
};
|
||
|
||
Sprite_LL_SPicture.prototype.setBlendColor = function(color) {
|
||
Sprite.prototype.setBlendColor.call(this, color);
|
||
};
|
||
|
||
Sprite_LL_SPicture.prototype.setColorTone = function(tone) {
|
||
Sprite.prototype.setColorTone.call(this, tone);
|
||
};
|
||
|
||
Sprite_LL_SPicture.prototype.setBlendMode = function(mode) {
|
||
this.blendMode = mode;
|
||
};
|
||
})();
|