slave-thistle/www/js/plugins/LL_StandingPictureMV.js
2025-05-26 09:44:24 -05:00

1530 lines
54 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// 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成分です。 (-255255)
* @default 0
* @type number
* @min -255
* @max 255
*
* @arg toneG
* @text 緑
* @desc 色調のG成分です。 (-255255)
* @default 0
* @type number
* @min -255
* @max 255
*
* @arg toneB
* @text 青
* @desc 色調のB成分です。 (-255255)
* @default 0
* @type number
* @min -255
* @max 255
*
* @arg toneC
* @text グレー
* @desc グレースケールの強さです。 (0255)
* @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]でフォーカスを当てた時の暗さ(-2550)です。
* 暗くなりすぎる場合に調整してください。(初期値: -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 立ち絵の不透明度(0255)です。
* @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;
};
})();