code:
/*:
 * @plugindesc A Plugin that allows you to manipulate the information presented on the Gold Window.
 * @author SumRndmDde
 *
 * @param Rows
 * @desc The number of rows in the gold window.
 * Input a number.
 * @default 1
 *
 * @param Columns
 * @desc The number of columns in the gold window.
 * Input a number.
 * @default 1
 *
 * @param X
 * @desc The x position of the Gold Window.
 * Input a number or JavaScript eval.
 * @default this._goldWindow.x
 *
 * @param Y
 * @desc The y position of the Gold Window.
 * Input a number or JavaScript eval.
 * @default this._commandWindow.height
 *
 * @param Width
 * @desc The width of the Gold Window.
 * Input a number or JavaScript eval.
 * @default 240 * this.infoCols()
 *
 * @param Height
 * @desc The height of the Gold Window.
 * Input a number or JavaScript eval.
 * @default this.fittingHeight(this.infoRows())
 *
 * @param Font Size
 * @desc The size of the text from the "text" code.
 * Input a number.
 * @default 28
 *
 * @param == Labels ==
 * @default
 *
 * @param Battle Label
 * @desc The label shown next to the battle count.
 * @default Battles
 *
 * @param Map Label
 * @desc The label shown next to the map.
 * @default (Map)
 *
 * @param D-Map Label
 * @desc The label shown next to the map display name.
 * @default (Map)
 *
 * @param BGM Label
 * @desc The label shown next to the bgm.
 * @default (BGM)
 *
 * @param No BGM Label
 * @desc The label shown when there is no bgm.
 * @default None
 *
 * @param Time Label
 * @desc The label shown for the time.
 * @default (Time)
 *
 * @param ON Label
 * @desc The label shown ON switches.
 * @default ON
 *
 * @param OFF Label
 * @desc The label shown OFF switches.
 * @default OFF
 *
 * @param == Information ==
 * @default
 *
 * @param Information 1
 * @desc The piece of information in slot 1 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default gold
 *
 * @param Information 2
 * @desc The piece of information in slot 2 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 3
 * @desc The piece of information in slot 3 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 4
 * @desc The piece of information in slot 4 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 5
 * @desc The piece of information in slot 5 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 6
 * @desc The piece of information in slot 6 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 7
 * @desc The piece of information in slot 7 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 8
 * @desc The piece of information in slot 8 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 9
 * @desc The piece of information in slot 9 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 10
 * @desc The piece of information in slot 10 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 11
 * @desc The piece of information in slot 11 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 12
 * @desc The piece of information in slot 12 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 13
 * @desc The piece of information in slot 13 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 14
 * @desc The piece of information in slot 14 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 15
 * @desc The piece of information in slot 15 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 16
 * @desc The piece of information in slot 16 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 17
 * @desc The piece of information in slot 17 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 18
 * @desc The piece of information in slot 18 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 19
 * @desc The piece of information in slot 19 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 20
 * @desc The piece of information in slot 20 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 21
 * @desc The piece of information in slot 21 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 22
 * @desc The piece of information in slot 22 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 23
 * @desc The piece of information in slot 23 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 24
 * @desc The piece of information in slot 24 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 25
 * @desc The piece of information in slot 25 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 26
 * @desc The piece of information in slot 26 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 27
 * @desc The piece of information in slot 27 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 28
 * @desc The piece of information in slot 28 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 29
 * @desc The piece of information in slot 29 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 30
 * @desc The piece of information in slot 30 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 31
 * @desc The piece of information in slot 31 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 32
 * @desc The piece of information in slot 32 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 33
 * @desc The piece of information in slot 33 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 34
 * @desc The piece of information in slot 34 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 35
 * @desc The piece of information in slot 35 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 36
 * @desc The piece of information in slot 36 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 37
 * @desc The piece of information in slot 37 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 38
 * @desc The piece of information in slot 38 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 39
 * @desc The piece of information in slot 39 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 40
 * @desc The piece of information in slot 40 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 41
 * @desc The piece of information in slot 41 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 42
 * @desc The piece of information in slot 42 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 43
 * @desc The piece of information in slot 43 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 44
 * @desc The piece of information in slot 44 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 45
 * @desc The piece of information in slot 45 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 46
 * @desc The piece of information in slot 46 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 47
 * @desc The piece of information in slot 47 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 48
 * @desc The piece of information in slot 48 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 49
 * @desc The piece of information in slot 49 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @param Information 50
 * @desc The piece of information in slot 50 of the Gold Window.
 * Visit the Help section of the Plugin for list of commands.
 * @default
 *
 * @help
 *
 * Gold Window Customizer
 * Version 1.06
 * SumRndmDde
 *
 *
 * A Plugin that allows you to manipulate the information presented on the
 * Gold Window using a wide variety of information codes.
 *
 *
 * ==========================================================================
 *  Information Commands
 * ==========================================================================
 *
 * In order to customize the information presented, one must manipulate the
 * "Information #" Parameters to list out all the info that is desired.
 *
 * Here is a list of all the available codes for information:
 *
 *  Gold             -	 Shows the party's gold.
 *  Item: x          -   Shows the amount of Item ID x the party has.
 *  Weapon: x        -   Shows the amount of Weapon ID x the party has.
 *  Armor: x         -   Shows the amount of Armor ID x the party has.
 *  Variable: x      -   Shows the value of Variable ID x.
 *  Switch: x        -   Shows the value of Switch ID x.
 *  Battles          -   Shows the amount of battles fought.
 *  Map              -   Shows the name of the map.
 *  Map-display      -   Shows the display name of the map.
 *  BGM              -   Shows the bgm that is currently playing.
 *  Game-Time        -   Displays the current game time.
 *  Text: x          -   Displays the text x and aligns it to the left.
 *  Text-right: x    -   Displays the text x and aligns it to the right.
 *  Text-center: x   -   Displays the text x and aligns it to the center.
 *  Text-ex: x       -   Displays the text x and allows use of text codes.
 *  Eval: x          -   Displays the JavaScript String eval.
 *
 *  Gauge: rate, text, color1, color2
 *                   -   Displays a gauge based off of a JavaScript eval rate.
 *
 *  (You can also do Gauge-left and Gauge-right to align the text to
 *   the left or right.)
 *
 *
 * ==========================================================================
 *  End of Help File
 * ==========================================================================
 *
 * Welcome to the bottom of the Help file.
 *
 *
 * Thanks for reading!
 * If you have questions, or if you enjoyed this Plugin, please check
 * out my YouTube channel!
 *
 * https://www.youtube.com/c/SumRndmDde
 *
 *
 * Until next time,
 *   ~ SumRndmDde
 *
 */
/*:ja
 * @plugindesc 所持金ウィンドウに表示される情報を追加変更できます。
 * @author SumRndmDde
 *
 * @param Rows
 * @text 行数
 * @desc 所持金のウィンドウ内の行数
 * @default 5
 *
 * @param Columns
 * @text 列数
 * @desc 所持金ウィンドウの列数
 * @default 1
 *
 * @param X
 * @text X位置
 * @desc 所持金ウィンドウのX位置
 * 数値とJavaScript式が使えます
 * @default this._goldWindow.x
 *
 * @param Y
 * @text Y位置
 * @desc 所持金ウィンドウのY位置
 * 数値とJavaScript式が使えます
 * @default this._commandWindow.height
 *
 * @param Width
 * @text ウィンドウ幅
 * @desc 所持金ウィンドウの幅
 * 数値とJavaScript式が使えます
 * @default 240 * this.infoCols()
 *
 * @param Height
 * @text ウィンドウ高
 * @desc 所持金ウィンドウの高さ
 * 数値とJavaScript式が使えます
 * @default this.fittingHeight(this.infoRows())
 *
 * @param Font Size
 * @text 文字サイズ
 * @desc 文字のサイズ
 * @default 28
 *
 * @param == Labels ==
 * @text -- ラベル --
 * @default
 *
 * @param Battle Label
 * @text 戦闘回数ラベル
 * @desc 戦闘回数のラベル
 * @default (戦闘数)
 *
 * @param Map Label
 * @text マップラベル
 * @desc マップ表示のラベル
 * @default (マップ)
 *
 * @param D-Map Label
 * @text マップ表示名ラベル
 * @desc マップ表示名のラベル
 * @default (マップ)
 *
 * @param BGM Label
 * @text BGMラベル
 * @desc BGMのラベル
 * @default (BGM)
 *
 * @param Time Label
 * @text Time Label
 * @desc プレイ時間のラベル
 * @default (プレイ時間)
 *
 * @param ON Label
 * @text ON Label
 * @desc スイッチがON時の表示
 * @default オン
 *
 * @param OFF Label
 * @text OFF Label
 * @desc スイッチがOFF時の表示
 * @default オフ
 *
 * @param == Information ==
 * @text -- 情報 --
 * @default
 *
 * @param Information 1
 * @text 情報1
 * @desc 所持金ウィンドウのスロット1に表示されている情報
 * コマンドの一覧はヘルプを参照
 * @default Gold
 *
 * @param Information 2
 * @text 情報2
 * @desc 所持金ウィンドウのスロット2に表示されている情報
 * コマンドの一覧はヘルプを参照
 * @default Battles
 *
 * @param Information 3
 * @text 情報3
 * @desc 所持金ウィンドウのスロット3にある情報
 * コマンドの一覧はヘルプを参照
 * @default Map-display
 *
 * @param Information 4
 * @text 情報4
 * @desc Gold Windowのスロット4にある情報
 * コマンドの一覧はヘルプを参照
 * @default BGM
 *
 * @param Information 5
 * @text 情報5
 * @desc 所持金ウィンドウのスロット5にある情報
 * コマンドの一覧はヘルプを参照
 * @default Game-Time
 *
 * @param Information 6
 * @text 情報6
 * @desc 所持金ウィンドウのスロット6にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 7
 * @text 情報7
 * @desc 所持金ウィンドウのスロット7にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 8
 * @text 情報8
 * @desc 所持金ウィンドウのスロット8にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 9
 * @text 情報9
 * @desc 所持金ウィンドウのスロット9にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 10
 * @text 情報10
 * @desc 所持金ウィンドウのスロット10にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 11
 * @text 情報11
 * @desc 所持金ウィンドウのスロット11にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 12
 * @text 情報12
 * @desc 所持金ウィンドウのスロット12にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 13
 * @text 情報13
 * @desc 所持金ウィンドウのスロット13にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 14
 * @text 情報14
 * @desc 所持金ウィンドウのスロット14にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 15
 * @text 情報15
 * @desc 所持金ウィンドウのスロット15にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 16
 * @text 情報16
 * @desc 所持金ウィンドウのスロット16にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 17
 * @text 情報17
 * @desc 所持金ウィンドウのスロット17にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 18
 * @text 情報18
 * @desc 所持金ウィンドウのスロット18にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 19
 * @text 情報19
 * @desc 所持金ウィンドウのスロット19にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 20
 * @text 情報20
 * @desc 所持金ウィンドウのスロット20にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 21
 * @text 情報21
 * @desc 所持金ウィンドウのスロット21にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 22
 * @text 情報22
 * @desc 所持金ウィンドウのスロット22にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 23
 * @text 情報23
 * @desc 所持金ウィンドウのスロット23にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 24
 * @text 情報24
 * @desc 所持金ウィンドウのスロット24にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 25
 * @text 情報25
 * @desc 所持金ウィンドウのスロット25にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 26
 * @text 情報26
 * @desc 所持金ウィンドウのスロット26にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 27
 * @text 情報27
 * @desc 所持金ウィンドウのスロット27にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 28
 * @text 情報28
 * @desc 所持金ウィンドウのスロット28にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 29
 * @text 情報29
 * @desc 所持金ウィンドウのスロット29にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 30
 * @text 情報30
 * @desc 所持金ウィンドウのスロット30にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 31
 * @text 情報31
 * @desc 所持金ウィンドウのスロット31にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 32
 * @text 情報32
 * @desc 所持金ウィンドウのスロット32にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 33
 * @text 情報33
 * @desc 所持金ウィンドウのスロット33にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 34
 * @text 情報34
 * @desc 所持金ウィンドウのスロット34にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 35
 * @text 情報35
 * @desc 所持金ウィンドウのスロット35にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 36
 * @text 情報36
 * @desc 所持金ウィンドウのスロット36にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 37
 * @text 情報37
 * @desc 所持金ウィンドウのスロット37にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 38
 * @text 情報38
 * @desc 所持金ウィンドウのスロット38にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 39
 * @text 情報39
 * @desc 所持金ウィンドウのスロット39にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 40
 * @text 情報40
 * @desc 所持金ウィンドウのスロット40にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 41
 * @text 情報41
 * @desc 所持金ウィンドウのスロット41にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 42
 * @text 情報42
 * @desc 所持金ウィンドウのスロット42にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 43
 * @text 情報43
 * @desc 所持金ウィンドウのスロット43にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 44
 * @text 情報44
 * @desc 所持金ウィンドウのスロット44にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 45
 * @text 情報45
 * @desc 所持金ウィンドウのスロット45にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 46
 * @text 情報46
 * @desc 所持金ウィンドウのスロット46にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 47
 * @text 情報47
 * @desc 所持金ウィンドウのスロット47にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 48
 * @text 情報48
 * @desc 所持金ウィンドウのスロット48にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 49
 * @text 情報49
 * @desc 所持金ウィンドウのスロット49にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @param Information 50
 * @text 情報50
 * @desc 所持金ウィンドウのスロット50にある情報
 * コマンドの一覧はヘルプを参照
 * @default
 *
 * @help
 * 翻訳:ムノクラ
 * https://fungamemake.com/
 * https://twitter.com/munokura/
 *
 * 元プラグイン: http://sumrndm.site/gold-window-customizer/
 *
 *
 * Gold Window Customizer
 * Version 1.06
 * SumRndmDde
 *
 *
 * 所持金ウィンドウに表示される情報を様々な情報コードを使って
 * 設定できるようにするプラグインです。
 *
 *
 * ==========================================================================
 *  情報コマンド
 * ==========================================================================
 *
 * 表示される情報をカスタマイズするためには、
 * 'Information #'パラメータを操作して、
 * 必要な情報を全てリストアップする必要があります。
 *
 * 情報を得るために使用可能なコードの一覧です。
 *
 *  Gold           - パーティの所持金が表示されます。
 *  Item: x        - パーティが持っているアイテムIDxの量が表示されます。
 *  Weapon: x      - パーティが持っている武器IDxの量が表示されます。
 *  Armor: x       - パーティが持っている防具IDxの量が表示されます。
 *  Variable: x    - 変数IDxの値が表示されます。
 *  Switch: x      - スイッチIDxの値が表示されます。
 *  Battles        - 戦闘回数が表示されます。
 *  Map            - マップ名が表示されます。
 *  Map-display    - マップの表示名が表示されます。
 *  BGM            - 現在プレイ中のBGMが表示されます。
 *  Game-Time      - 現在のプレイ時間を表示します。
 *  Text: x        - テキストxを表示し、左に揃えます。
 *  Text-right: x  - テキストxを表示し、右に揃えます。
 *  Text-center: x - テキストxを表示し、中央に揃えます。
 *  Text-ex: x     - テキストxを表示し、制御文字の使用を許可します。
 *  Eval: x        - JavaScript の文字列 eval を表示します。
 *  Gauge: rate, text, color1, color2
 *                 - JavaScriptのevalレートに基づいたゲージを表示します。
 *  (左ゲージ、右ゲージで文字を左右に揃えることもできます)
 *
 *
 * ==========================================================================
 *  ヘルプファイルの終わり
 * ==========================================================================
 *
 * ヘルプファイルの終わりへようこそ。
 *
 * 読んでくれてありがとう!
 * 質問があったり、このプラグインを楽しめたら、
 * 私のYouTubeチャンネルを登録してください!!
 *
 * https://www.youtube.com/c/SumRndmDde
 *
 *
 * 次の機会まで
 *   ~ SumRndmDde
 *
 */

var SRD = SRD || {};
SRD.GoldWindowCustomizer = SRD.GoldWindowCustomizer || {};

var Imported = Imported || {};
Imported["SumRndmDde Gold Window Customizer"] = 1.06;

(function (_) {

	var params = PluginManager.parameters('SRD_GoldWindowCustomizer');

	_.width = String(params['Width']);
	_.height = String(params['Height']);
	_.x = String(params['X']);
	_.y = String(params['Y']);
	_.rows = parseInt(params['Rows']);
	_.columns = parseInt(params['Columns']);
	_.size = parseInt(params['Font Size']);

	_.battleLabel = String(params['Battle Label']);
	_.mapLabel = String(params['Map Label']);
	_.dmapLabel = String(params['D-Map Label']);
	_.bgmLabel = String(params['BGM Label']);
	_.nobgmLabel = String(params['No BGM Label']);
	_.timeLabel = String(params['Time Label'] || "(Time)");
	_.onLabel = String(params['ON Label'] || "ON");
	_.offLabel = String(params['OFF Label'] || "OFF");

	_.info = [];
	for (var i = 0; i < 50; i++) {
		var temp = String(params['Information ' + (i + 1)]);
		if (temp.trim().length > 0) _.info[i] = temp;
	}

	//-----------------------------------------------------------------------------
	// Scene_Menu
	//-----------------------------------------------------------------------------

	var _Scene_Menu_create = Scene_Menu.prototype.create;
	Scene_Menu.prototype.create = function () {
		_Scene_Menu_create.call(this);
		this._windowLayer.removeChild(this._goldWindow);
		this._goldWindow = new Window_Gold_Customized(0, 0);
		this.addWindow(this._goldWindow);
		this._goldWindow.x = eval(_.x);
		this._goldWindow.y = eval(_.y);
	};

	//-----------------------------------------------------------------------------
	// Window_Base
	//-----------------------------------------------------------------------------

	//An edit of Yanfly's Core Engine's drawCurrencyValue function to help compatibility.
	if (Imported.YEP_CoreEngine) {
		var _Window_Base_drawCurrencyValue = Window_Base.prototype.drawCurrencyValue;
		Window_Base.prototype.drawCurrencyValue = function (value, unit, wx, wy, ww, item) {
			if (!item || this.usingGoldIcon(unit)) {
				_Window_Base_drawCurrencyValue.call(this, value, unit, wx, wy, ww);
			} else if (item === 'override') {
				this.resetTextColor();
				this.contents.fontSize = Yanfly.Param.GoldFontSize;
				if (item.iconIndex && item.iconIndex > 0) {
					var cx = Window_Base._iconWidth;
				} else {
					var cx = this.textWidth(unit);
				}
				var text = value;
				this.drawText(text, wx, wy, ww - cx - 4, 'right');
				if (item.iconIndex && item.iconIndex > 0) {
					this.drawIcon(item.iconIndex, wx + ww - Window_Base._iconWidth, wy + 2);
				} else {
					this.changeTextColor(this.systemColor());
					this.drawText(unit, wx, wy, ww, 'right');
				}
				this.resetFontSettings();
			} else {
				this.resetTextColor();
				this.contents.fontSize = Yanfly.Param.GoldFontSize;
				if (item.iconIndex && item.iconIndex > 0) {
					var cx = Window_Base._iconWidth;
				} else {
					var cx = this.textWidth(unit);
				}
				var text = Yanfly.Util.toGroup(value);
				if (this.textWidth(text) > ww - cx) {
					text = Yanfly.Param.GoldOverlap;
				}
				this.drawText(text, wx, wy, ww - cx - 4, 'right');
				if (item.iconIndex && item.iconIndex > 0) {
					this.drawIcon(item.iconIndex, wx + ww - Window_Base._iconWidth, wy + 2);
				} else {
					this.changeTextColor(this.systemColor());
					this.drawText(unit, wx, wy, ww, 'right');
				}
				this.resetFontSettings();
			}
		};
	}

	//-----------------------------------------------------------------------------
	// Window_Message
	//-----------------------------------------------------------------------------

	var _Window_Message_createSubWindows = Window_Message.prototype.createSubWindows;
	Window_Message.prototype.createSubWindows = function () {
		_Window_Message_createSubWindows.call(this);
		this._goldWindow = new Window_Gold_Customized(0, 0);
		this._goldWindow.x = Graphics.boxWidth - this._goldWindow.width;
		this._goldWindow.openness = 0;
	};

	//-----------------------------------------------------------------------------
	// Window_Gold_Customized
	//-----------------------------------------------------------------------------

	function Window_Gold_Customized() {
		this.initialize.apply(this, arguments);
	}

	Window_Gold_Customized.prototype = Object.create(Window_Gold.prototype);
	Window_Gold_Customized.prototype.constructor = Window_Gold_Customized;

	Window_Gold_Customized.prototype.initialize = function () {
		Window_Gold.prototype.initialize.call(this);
		this._systemTimeRefresh = "";
	}

	Window_Gold_Customized.prototype.windowWidth = function () {
		return eval(_.width);
	};

	Window_Gold_Customized.prototype.windowHeight = function () {
		return eval(_.height);
	};

	Window_Gold_Customized.prototype.infoRows = function () {
		return _.rows;
	};

	Window_Gold_Customized.prototype.infoCols = function () {
		return _.columns;
	};

	Window_Gold_Customized.prototype.update = function () {
		Window_Gold.prototype.update.call(this);
		if (this._systemTimeisRefreshing && this._systemTimeRefresh !== $gameSystem.playtimeText()) {
			this.refresh();
			this._systemTimeRefresh = $gameSystem.playtimeText();
		}
	};

	Window_Gold_Customized.prototype.refresh = function () {
		var x = this.textPadding();
		var y = 0;
		var width = this.contents.width - this.textPadding() * 2;
		var lh = this.lineHeight();
		this.contents.clear();
		for (var i = 0; i < _.info.length; i++) {
			if (!_.info[i]) continue;
			if (_.info[i].trim().toLowerCase() === 'gold') {
				this.drawCurrencyValue(this.value(), this.currencyUnit(), x, y + (i * lh), width);
			} else if (_.info[i].match(/item([s]?):\s*(\d+)/i)) {
				var item = $dataItems[parseInt(RegExp.$2)];
				this.drawCurrencyValue($gameParty.numItems(item), item.name + RegExp.$1, x, y + (i * lh), width, item);
			} else if (_.info[i].match(/weapon([s]?):\s*(\d+)/i)) {
				var item = $dataWeapons[parseInt(RegExp.$2)];
				this.drawCurrencyValue($gameParty.numItems(item), item.name + RegExp.$1, x, y + (i * lh), width, item);
			} else if (_.info[i].match(/(?:armor|armour)([s]?):\s*(\d+)/i)) {
				var item = $dataArmors[parseInt(RegExp.$2)];
				this.drawCurrencyValue($gameParty.numItems(item), item.name + RegExp.$1, x, y + (i * lh), width, item);
			} else if (_.info[i].match(/variable:\s*(\d+)/i)) {
				var id = parseInt(RegExp.$1);
				this.drawCurrencyValue($gameVariables.value(id), $dataSystem.variables[id], x, y + (i * lh), width, 'override');
			} else if (_.info[i].match(/switch:\s*(\d+)/i)) {
				var id = parseInt(RegExp.$1);
				var str = ($gameSwitches.value(id)) ? _.onLabel : _.offLabel;
				this.drawCurrencyValue(str, $dataSystem.switches[id], x, y + (i * lh), width, 'override');
			} else if (_.info[i].match(/battles/i)) {
				this.drawCurrencyValue($gameSystem.battleCount(), _.battleLabel, x, y + (i * lh), width, 'override');
			} else if (_.info[i].match(/map-display/i)) {
				this.drawCurrencyValue($gameMap.displayName(), " " + _.dmapLabel, x, y + (i * lh), width, 'override');
			} else if (_.info[i].match(/map/i)) {
				this.drawCurrencyValue($dataMapInfos[$gameMap.mapId()].name, " " + _.mapLabel, x, y + (i * lh), width, 'override');
			} else if (_.info[i].match(/bgm/i)) {
				this.drawCurrencyValue((AudioManager._currentBgm) ? AudioManager._currentBgm.name : _.nobgmLabel, " " + _.bgmLabel, x, y + (i * lh), width, 'override');
			} else if (_.info[i].match(/gauge:\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*,\s*(.*)/i)) {
				var code = String(RegExp.$1);
				var name = String(RegExp.$2);
				var col1 = String(RegExp.$3);
				var col2 = String(RegExp.$4);
				this.drawGauge(x, y + (i * lh), width, eval(code), col1, col2);
				this.resetTextColor();
				this.contents.fontSize = _.size;
				this.drawText(name, x, y + (i * lh), width, 'center');
			} else if (_.info[i].match(/gauge-left:\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*,\s*(.*)/i)) {
				var code = String(RegExp.$1);
				var name = String(RegExp.$2);
				var col1 = String(RegExp.$3);
				var col2 = String(RegExp.$4);
				this.drawGauge(x, y + (i * lh), width, eval(code), col1, col2);
				this.resetTextColor();
				this.contents.fontSize = _.size;
				this.drawText(name, x, y + (i * lh), width, 'left');
			} else if (_.info[i].match(/gauge-right:\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*,\s*(.*)/i)) {
				var code = String(RegExp.$1);
				var name = String(RegExp.$2);
				var col1 = String(RegExp.$3);
				var col2 = String(RegExp.$4);
				this.drawGauge(x, y + (i * lh), width, eval(code), col1, col2);
				this.resetTextColor();
				this.contents.fontSize = _.size;
				this.drawText(name, x, y + (i * lh), width, 'right');
			} else if (_.info[i].match(/text:(.*)/i)) {
				this.resetTextColor();
				this.contents.fontSize = _.size;
				this.drawText(RegExp.$1, x, y + (i * lh), width, 'left');
			} else if (_.info[i].match(/text-right:(.*)/i)) {
				this.resetTextColor();
				this.contents.fontSize = _.size;
				this.drawText(RegExp.$1, x, y + (i * lh), width, 'right');
			} else if (_.info[i].match(/text-center:(.*)/i)) {
				this.resetTextColor();
				this.contents.fontSize = _.size;
				this.drawText(RegExp.$1, x, y + (i * lh), width, 'center');
			} else if (_.info[i].match(/text-ex:(.*)/i)) {
				this.contents.fontSize = _.size;
				this.drawTextEx(RegExp.$1, x, y + (i * lh));
			} else if (_.info[i].match(/eval:(.*)/i)) {
				this.contents.fontSize = _.size;
				this.drawText(eval(RegExp.$1), x, y + (i * lh), width, 'left');
			} else if (_.info[i].match(/game-time/i)) {
				this.contents.fontSize = _.size;
				this.drawCurrencyValue($gameSystem.playtimeText(), " " + _.timeLabel, x, y + (i * lh), width, 'override');
				//this.drawText($gameSystem.playtimeText(), x, y + (i * lh), width, 'left');
				this._systemTimeisRefreshing = true;
			}
			this.resetFontSettings();
		}
	};

})(SRD.GoldWindowCustomizer);

repo_name: onms/sister

license: unknown


code:
var Saba;
(function (Saba) {
    Saba.applyMyMethods = function (myClass, presetClass, applyConstructor) {
        for (var p in myClass.prototype) {
            if (myClass.prototype.hasOwnProperty(p)) {
                if (p === 'constructor' && !applyConstructor) {
                    continue;
                }
                Object.defineProperty(presetClass.prototype, p, Object.getOwnPropertyDescriptor(myClass.prototype, p));
            }
        }
    };
})(Saba || (Saba = {}));

var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
//=============================================================================
// Saba_BackLog.js
//=============================================================================
/*:ja
 * @author Sabakan
 * @plugindesc バックログを表示するプラグインです。
 *
 *
 * @param backLogButton
 * @desc バックログを表示するボタンです
 * @default pageup
 *
 * @param marginLeft
 * @desc 本文の左のスペースです。変更した場合、改行位置がずれる場合があります。
 * @default 70
 *
 * @param marginRight
 * @desc 本文の右のスペースです。変更した場合、改行位置がずれる場合があります。
 * @default 30
 *
 * @param nameLeft
 * @desc 名前の左のスペースです。
 * @default 20
 *
 * @param fontSize
 * @desc フォントサイズです。変更した場合、改行位置がずれる場合があります。
 * @default 24
 *
 * @param scrollSpeed
 * @desc カーソルキーでスクロールするときの速度です
 * @default 5
 *
 * @param windowHeight
 * @desc ウィンドウの高さです。大きいほど多く表示できます。
 * @default 2000
 *
 * @param maxLogCount
 * @desc ログを保存しておく最大数です
 * @default 50
 *
 * @param bottmMargin
 * @desc バックログウィンドウの下の空き空間です
 * @default 50
 *
 * @param logMargin
 * @desc ログとログの間の隙間です
 * @default 44
 *
 * @param windowSkin
 * @desc バックログ表示に使うウィンドウです
 * @default WindowBacklog
 * @require 1
 * @dir img/system/
 * @type file
 *
 * @param backOpacity
 * @desc 背景の透明度です
 * @default 230
 *
 *
 * @help
 * Ver 2016-03-30 20:06:42
 *
 * テキストのバックログを表示するプラグインです。
 * 立ち絵スクリプトとの併用を想定しています。
 * 併用しない場合、独自に
 * $gameBackLog.addLog(name, message);
 * を呼ぶ必要があります。
 *
 */
var Saba;
(function (Saba) {
    var BackLog;
    (function (BackLog) {
        var parameters = PluginManager.parameters('Saba_BackLog');
        var backLogButton = parameters['backLogButton'];
        var scrollSpeed = parseInt(parameters['scrollSpeed']);
        var bottmMargin = parseInt(parameters['bottmMargin']);
        var windowHeight = parseInt(parameters['windowHeight']);
        var maxLogCount = parseInt(parameters['maxLogCount']);
        var fontSize = parseInt(parameters['fontSize']);
        var logMargin = parseInt(parameters['logMargin']);
        var marginLeft = parseInt(parameters['marginLeft']);
        var marginRight = parseInt(parameters['marginRight']);
        var nameLeft = parseInt(parameters['nameLeft']);
        var windowSkin = parameters['windowSkin'];
        var backOpacity = parseInt(parameters['backOpacity']);
        var Game_BackLog = (function () {
            function Game_BackLog() {
                this.logList = [];
            }
            Game_BackLog.prototype.addLog = function (name, message) {
                this.logList.push(new Game_TalkLog(name, message));
                if (this.logList.length >= maxLogCount) {
                    this.logList.shift();
                }
            };
            return Game_BackLog;
        }());
        var Game_TalkLog = (function () {
            function Game_TalkLog(name, message) {
                this.name = name;
                this.message = Window_Base.prototype.convertEscapeCharacters(message);
            }
            return Game_TalkLog;
        }());
        /**
         * バックログを表示するウィンドウクラスです。
         */
        var Window_BackLog = (function (_super) {
            __extends(Window_BackLog, _super);
            function Window_BackLog() {
                _super.call(this, 0, 0, Graphics.width, windowHeight);
                this._margin = 0;
                this._windowFrameSprite.visible = false;
                this.backOpacity = backOpacity;
                this.opacity = 255;
                this.contentsOpacity = 255;
                this._refreshBack();
                this.drawLogs();
            }
            Window_BackLog.prototype.loadWindowskin = function () {
                this.windowskin = ImageManager.loadSystem(windowSkin);
            };
            Window_BackLog.prototype.drawLogs = function () {
                var y = 0;
                for (var _i = 0, _a = BackLog.$gameBackLog.logList; _i < _a.length; _i++) {
                    var log = _a[_i];
                    y += this.drawLog(log, y);
                    y += this.logMargin();
                }
                if (y > windowHeight) {
                    this._maxHeight = windowHeight;
                    // 一回目の描画ではみだしていたら、はみ出す部分をけずって歳描画
                    var diff = y - windowHeight + bottmMargin;
                    while (true) {
                        if (BackLog.$gameBackLog.logList.length === 0) {
                            break;
                        }
                        var log = BackLog.$gameBackLog.logList.shift();
                        if (diff < log.y) {
                            break;
                        }
                    }
                    this.contents.clear();
                    y = 0;
                    for (var _b = 0, _c = BackLog.$gameBackLog.logList; _b < _c.length; _b++) {
                        var log = _c[_b];
                        y += this.drawLog(log, y);
                        y += this.logMargin();
                    }
                    this._maxHeight = y + bottmMargin;
                    if (this._maxHeight > windowHeight) {
                        this._maxHeight = windowHeight;
                    }
                    // 一番下までスクロールさせる
                    this.y = Graphics.height - this._maxHeight;
                }
                else {
                    this._maxHeight = y + bottmMargin;
                    if (this._maxHeight > windowHeight) {
                        this._maxHeight = windowHeight;
                    }
                    if (this._maxHeight < Graphics.height) {
                        this._maxHeight = Graphics.height;
                    }
                    this.y = Graphics.height - this._maxHeight;
                }
            };
            /**
             * ログをひとつ描画します
             * @param  {Game_TalkLog} log 描画するログ
             * @param  {number}       y   描画する y 座標
             * @return {number}           描画した高さ
             */
            Window_BackLog.prototype.drawLog = function (log, y) {
                this._lineCount = 1;
                var message = log.message;
                var height = 0;
                if (log.name) {
                    this.drawTextEx(log.name, nameLeft, y);
                    console.log(message.charAt(message.length - 1));
                    if (message.charAt(message.length - 1) === '。') {
                        message = message.substring(0, message.length - 1);
                    }
                    message = message + '」';
                    y += this.standardFontSize() + 8;
                    height = this.standardFontSize() + 8;
                    this.drawTextEx('「', marginLeft - this.standardFontSize(), y);
                }
                this.drawTextEx(message, marginLeft, y);
                height += this._lineCount * (this.standardFontSize() + 8);
                log.y = y + height;
                return height;
            };
            Window_BackLog.prototype.processNewLine = function (textState) {
                this._lineCount++;
                _super.prototype.processNewLine.call(this, textState);
            };
            Window_BackLog.prototype.logMargin = function () {
                return logMargin;
            };
            Window_BackLog.prototype.textAreaWidth = function () {
                return this.contentsWidth() - marginRight;
            };
            Window_BackLog.prototype.update = function () {
                _super.prototype.update.call(this);
                if (Input.isPressed('down')) {
                    this.y -= scrollSpeed;
                    if (this.y < Graphics.height - this._maxHeight) {
                        this.y = Graphics.height - this._maxHeight;
                    }
                }
                else if (Input.isPressed('up')) {
                    this.y += scrollSpeed;
                    if (this.y > 0) {
                        this.y = 0;
                    }
                }
            };
            Window_BackLog.prototype.standardFontSize = function () {
                return fontSize;
            };
            Window_BackLog.prototype.backPaintOpacity = function () {
                return 128;
            };
            return Window_BackLog;
        }(Window_Base));
        var _Scene_Map_update = Scene_Map.prototype.update;
        Scene_Map.prototype.update = function () {
            if (this._windowBackLog) {
                this._windowBackLog.update();
                if (Input.isTriggered(backLogButton) || Input.isTriggered('cancel')) {
                    this.removeChild(this._windowBackLog);
                    this._windowBackLog = null;
                    SoundManager.playCancel();
                }
                return;
            }
            _Scene_Map_update.call(this);
            if (Input.isTriggered(backLogButton)) {
                this._windowBackLog = new Window_BackLog();
                SoundManager.playOk();
                this.addChild(this._windowBackLog);
            }
        };
        var Scene_Boot_loadSystemImages = Scene_Boot.prototype.loadSystemImages;
        Scene_Boot.prototype.loadSystemImages = function () {
            Scene_Boot_loadSystemImages.call(this);
            if (windowSkin.length > 0) {
                ImageManager.loadSystem(windowSkin);
            }
        };
        BackLog.$gameBackLog = new Game_BackLog();
    })(BackLog = Saba.BackLog || (Saba.BackLog = {}));
})(Saba || (Saba = {}));


code:
//=============================================================================
// ScrollForceCenter.js
// ----------------------------------------------------------------------------
// (C) 2016 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.1.2 2021/08/24 遠景を設定してスクロールしたときに画面端に近づくと遠景が高速でスクロールしてしまう問題を修正
// 1.1.1 2020/11/26 イベントテストでエラーになる問題を修正
// 1.1.0 2019/04/28 中心座標を指定したぶんだけずらせる機能を追加
// 1.0.0 2016/09/15 初版
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc ScrollForceCenterPlugin
 * @author triacontane
 *
 * @param adjustX
 * @desc 指定した分だけ中心がずれて表示されます。
 * @default 0
 * @type number
 * @min -500
 * @max 500
 *
 * @param adjustY
 * @desc 指定した分だけ中心がずれて表示されます。
 * @default 0
 * @type number
 * @min -500
 * @max 500
 *
 * @help マップ画面でマップサイズにかかわらずプレイヤーが常に画面中央に
 * 配置されるようになります。
 * マップの外側が画面内に入る場合、真っ黒の状態で表示されます。
 *
 * プラグインコマンド詳細
 *  イベントコマンド「プラグインコマンド」から実行。
 *  （パラメータの間は半角スペースで区切る）
 *
 * SFC禁止予約         # 強制中央スクロールが禁止され通常スクロールになります。
 * SFC_DISABLE_RESERVE # 同上
 * SFC許可予約         # 再度、強制中央スクロールが許可されます。
 * SFC_ENABLE_RESERVE  # 同上
 *
 * 上記の設定はすぐには反映されず、次回場所移動後から有効になります。
 *
 * またマップ設定のメモ欄に以下の通り記述すると、マップ単位で強制中央スクロールの
 * 禁止/許可を制御できます。この設定はプラグインコマンドより優先されます。
 * <SFC禁止>     # 対象マップで強制中央スクロールが禁止されます。
 * <SFC_Disable> # 同上
 * <SFC許可>     # 対象マップで強制中央スクロールが許可されます。
 * <SFC_Enable>  # 同上
 *
 * This plugin is released under the MIT License.
 */
/*:ja
 * @plugindesc 強制中央スクロールプラグイン
 * @author トリアコンタン
 *
 * @param adjustX
 * @text X補正
 * @desc 指定した分だけ中心がずれて表示されます。
 * @default 0
 * @type number
 * @min -500
 * @max 500
 *
 * @param adjustY
 * @text Y補正
 * @desc 指定した分だけ中心がずれて表示されます。
 * @default 0
 * @type number
 * @min -500
 * @max 500
 *
 * @help マップ画面でマップサイズにかかわらずプレイヤーが常に画面中央に
 * 配置されるようになります。
 * マップの外側が画面内に入る場合、真っ黒の状態で表示されます。
 *
 * プラグインコマンド詳細
 *  イベントコマンド「プラグインコマンド」から実行。
 *  （パラメータの間は半角スペースで区切る）
 *
 * SFC禁止予約         # 強制中央スクロールが禁止され通常スクロールになります。
 * SFC_DISABLE_RESERVE # 同上
 * SFC許可予約         # 再度、強制中央スクロールが許可されます。
 * SFC_ENABLE_RESERVE  # 同上
 *
 * 上記の設定はすぐには反映されず、次回場所移動後から有効になります。
 *
 * またマップ設定のメモ欄に以下の通り記述すると、マップ単位で強制中央スクロールの
 * 禁止/許可を制御できます。この設定はプラグインコマンドより優先されます。
 * <SFC禁止>     # 対象マップで強制中央スクロールが禁止されます。
 * <SFC_Disable> # 同上
 * <SFC許可>     # 対象マップで強制中央スクロールが許可されます。
 * <SFC_Enable>  # 同上
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

(function() {
    'use strict';
    var metaTagPrefix = 'SFC';

    var getCommandName = function(command) {
        return (command || '').toUpperCase();
    };

    var getMetaValue = function(object, name) {
        var metaTagName = metaTagPrefix + (name ? name : '');
        return object.meta.hasOwnProperty(metaTagName) ? object.meta[metaTagName] : undefined;
    };

    var getMetaValues = function(object, names) {
        if (!Array.isArray(names)) return getMetaValue(object, names);
        for (var i = 0, n = names.length; i < n; i++) {
            var value = getMetaValue(object, names[i]);
            if (value !== undefined) return value;
        }
        return undefined;
    };

    /**
     * Create plugin parameter. param[paramName] ex. param.commandPrefix
     * @param pluginName plugin name(EncounterSwitchConditions)
     * @returns {Object} Created parameter
     */
    var createPluginParameter = function(pluginName) {
        var paramReplacer = function(key, value) {
            if (value === 'null') {
                return value;
            }
            if (value[0] === '"' && value[value.length - 1] === '"') {
                return value;
            }
            try {
                return JSON.parse(value);
            } catch (e) {
                return value;
            }
        };
        var parameter     = JSON.parse(JSON.stringify(PluginManager.parameters(pluginName), paramReplacer));
        PluginManager.setParameters(pluginName, parameter);
        return parameter;
    };
    var param = createPluginParameter('ScrollForceCenter');

    //=============================================================================
    // Game_Interpreter
    //  プラグインコマンドを追加定義します。
    //=============================================================================
    var _Game_Interpreter_pluginCommand      = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.apply(this, arguments);
        if (!command.match(new RegExp('^' + metaTagPrefix))) return;
        this.pluginCommandScrollForceCenter(command.replace(metaTagPrefix, ''), args);
    };

    Game_Interpreter.prototype.pluginCommandScrollForceCenter = function(command) {
        switch (getCommandName(command)) {
            case '禁止予約' :
            case '_DISABLE_RESERVE':
                $gameMap.setDisableForceCenterReserve(true);
                break;
            case '許可予約' :
            case '_ENABLE_RESERVE':
                $gameMap.setDisableForceCenterReserve(false);
                break;

        }
    };

    var _Game_Player_updateScroll      = Game_Player.prototype.updateScroll;
    Game_Player.prototype.updateScroll = function(lastScrolledX, lastScrolledY) {
        _Game_Player_updateScroll.apply(this, arguments);
        if ($gameMap.isForceCenter()) {
            var x1 = lastScrolledX;
            var y1 = lastScrolledY;
            var x2 = this.scrolledX();
            var y2 = this.scrolledY();
            if (y2 > y1 && y2 <= this.centerY()) {
                $gameMap.scrollDown(y2 - y1);
            }
            if (x2 < x1 && x2 >= this.centerX()) {
                $gameMap.scrollLeft(x1 - x2);
            }
            if (x2 > x1 && x2 <= this.centerX()) {
                $gameMap.scrollRight(x2 - x1);
            }
            if (y2 < y1 && y2 >= this.centerY()) {
                $gameMap.scrollUp(y1 - y2);
            }
        }
    };

    var _Game_Map_initialize = Game_Map.prototype.initialize;
    Game_Map.prototype.initialize = function() {
        _Game_Map_initialize.apply(this, arguments);
        this._disableForceCenter        = false;
        this._disableForceCenterReserve = false;
    };

    var _Game_Map_setup = Game_Map.prototype.setup;
    Game_Map.prototype.setup = function(mapId) {
        if (mapId > 0) {
            this.refreshDisableForceCenter();
        }
        _Game_Map_setup.apply(this, arguments);
    };

    Game_Map.prototype.isForceCenter = function() {
        return !this._disableForceCenter;
    };

    Game_Map.prototype.setDisableForceCenterReserve = function(value) {
        this._disableForceCenterReserve = !!value;
    };

    Game_Map.prototype.refreshDisableForceCenter = function() {
        var disableForceCenter;
        if (getMetaValues($dataMap, ['禁止', '_Disable'])) {
            disableForceCenter = true;
        } else if (getMetaValues($dataMap, ['許可', '_Enable'])) {
            disableForceCenter = false;
        } else {
            disableForceCenter = this._disableForceCenterReserve;
        }
        this._disableForceCenter = disableForceCenter;
    };

    var _Game_Map_setDisplayPos = Game_Map.prototype.setDisplayPos;
    Game_Map.prototype.setDisplayPos = function(x, y) {
        _Game_Map_setDisplayPos.apply(this, arguments);
        if (this.isForceCenterHorizontal()) {
            this._displayX = x + (param.adjustX || 0);
            this._parallaxX = this._displayX;
        }
        if (this.isForceCenterVertical()) {
            this._displayY = y + (param.adjustY || 0);
            this._parallaxY = this._displayY;
        }
    };

    Game_Map.prototype.isForceCenterVertical = function() {
        return !this.isLoopVertical() && this.isForceCenter();
    };

    Game_Map.prototype.isForceCenterHorizontal = function() {
        return !this.isLoopHorizontal() && this.isForceCenter();
    };

    var _Game_Map_scrollDown = Game_Map.prototype.scrollDown;
    Game_Map.prototype.scrollDown = function(distance) {
        var forceCenterDisplayY = this._displayY + distance;
        var lastY = this._displayY;
        var lastPy = this._parallaxY;
        _Game_Map_scrollDown.apply(this, arguments);
        if (this.isForceCenterVertical()) {
            this._displayY = forceCenterDisplayY;
            this._parallaxY = lastPy + this._displayY - lastY;
            this._foregroundY = this._parallaxY;
        }
    };

    var _Game_Map_scrollLeft      = Game_Map.prototype.scrollLeft;
    Game_Map.prototype.scrollLeft = function(distance) {
        var forceCenterDisplayX = this._displayX - distance;
        var lastX = this._displayX;
        var lastPx = this._parallaxX;
        _Game_Map_scrollLeft.apply(this, arguments);
        if (this.isForceCenterHorizontal()) {
            this._displayX = forceCenterDisplayX;
            this._parallaxX = lastPx + this._displayX - lastX;
            this._foregroundX = this._parallaxX;
        }
    };

    var _Game_Map_scrollRight      = Game_Map.prototype.scrollRight;
    Game_Map.prototype.scrollRight = function(distance) {
        var forceCenterDisplayX = this._displayX + distance;
        var lastX = this._displayX;
        var lastPx = this._parallaxX;
        _Game_Map_scrollRight.apply(this, arguments);
        if (this.isForceCenterHorizontal()) {
            this._displayX = forceCenterDisplayX;
            this._parallaxX = lastPx + this._displayX - lastX;
            this._foregroundX = this._parallaxX;
        }
    };

    var _Game_Map_scrollUp = Game_Map.prototype.scrollUp;
    Game_Map.prototype.scrollUp = function(distance) {
        var forceCenterDisplayY = this._displayY - distance;
        var lastY = this._displayY;
        var lastPy = this._parallaxY;
        _Game_Map_scrollUp.apply(this, arguments);
        if (this.isForceCenterVertical()) {
            this._displayY = forceCenterDisplayY;
            this._parallaxY = lastPy + this._displayY - lastY;
            this._foregroundY = this._parallaxY;
        }
    };
})();


code:
//=============================================================================
// ShakeOnDamage.js
// ----------------------------------------------------------------------------
// (C)2017 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.2.0 2019/05/02 敵キャラのダメージ時にもシェイクさせる機能、弱点攻撃時にシェイクさせる機能を追加
// 1.1.1 2018/03/04 YEP_BattleEngineCore.jsとの競合を解消
// 1.1.0 2017/08/19 パラメータに計算式を使用できる機能を追加
// 1.0.0 2017/08/13 初版
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc ShakeOnDamagePlugin
 * @author triacontane
 *
 * @param ShakePower
 * @desc 通常ダメージを受けたときのシェイク強さです。
 * @default 5
 * @type number
 * @min 1
 * @max 9
 *
 * @param CriticalShakePower
 * @desc クリティカルダメージを受けたときのシェイク強さです。
 * @default 9
 * @type number
 * @min 1
 * @max 9
 *
 * @param EffectiveShakePower
 * @desc 弱点ダメージを受けたときのシェイク強さです。
 * @default 9
 * @type number
 * @min 1
 * @max 9
 *
 * @param ShakeSpeed
 * @desc シェイク速さです。
 * @default 9
 * @type number
 * @min 1
 * @max 9
 *
 * @param ShakeDuration
 * @desc シェイク時間(フレーム)です。
 * @default 30
 * @type number
 *
 * @param ApplyActor
 * @desc アクターのダメージ時にシェイクします。
 * @default true
 * @type boolean
 *
 * @param ApplyEnemy
 * @desc 敵キャラのダメージ時にシェイクします。
 * @default false
 * @type boolean
 *
 * @help ShakeOnDamage.js
 *
 * 戦闘でアクターがダメージを受けたときに画面を振動させます。
 * クリティカル時と通常時とで強さを変えることができます。
 *
 * 各パラメータには計算式を適用できます。さらにローカル変数として
 * 以下が使用可能です。
 * a : ダメージを受けた対象のアクターです。
 * r : ダメージを受けた対象のアクターの残りHP率(0-100)です。
 *
 * 計算式を入力する場合はパラメータ設定ダイアログで「テキスト」タブを
 * 選択してから入力してください。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * This plugin is released under the MIT License.
 */
/*:ja
 * @plugindesc ダメージ時の振動プラグイン
 * @author トリアコンタン
 *
 * @param シェイク強さ
 * @desc 通常ダメージを受けたときのシェイク強さです。
 * @default 5
 * @type number
 * @min 1
 * @max 9
 *
 * @param クリティカルシェイク強さ
 * @desc クリティカルダメージを受けたときのシェイク強さです。
 * @default 9
 * @type number
 * @min 1
 * @max 9
 *
 * @param 弱点シェイク強さ
 * @desc 弱点ダメージを受けたときのシェイク強さです。
 * @default 9
 * @type number
 * @min 1
 * @max 9
 *
 * @param シェイク速さ
 * @desc シェイク速さです。
 * @default 9
 * @type number
 * @min 1
 * @max 9
 *
 * @param シェイク時間
 * @desc シェイク時間(フレーム)です。
 * @default 30
 * @type number
 *
 * @param アクターに適用
 * @desc アクターのダメージ時にシェイクします。
 * @default true
 * @type boolean
 *
 * @param 敵キャラに適用
 * @desc 敵キャラのダメージ時にシェイクします。
 * @default false
 * @type boolean
 *
 * @help ShakeOnDamage.js
 *
 * 戦闘でアクターがダメージを受けたときに画面を振動させます。
 * クリティカル時と通常時とで強さを変えることができます。
 *
 * 各パラメータには計算式を適用できます。
 * さらにローカル変数として以下が使用可能です。
 * a : ダメージを受けた対象のアクターです。
 * r : ダメージを受けた対象のアクターの残りHP率(0-100)です。
 *
 * 計算式を入力する場合はパラメータ設定ダイアログで「テキスト」タブを
 * 選択してから入力してください。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

(function() {
    'use strict';
    var pluginName = 'ShakeOnDamage';

    //=============================================================================
    // ローカル関数
    //  プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
    //=============================================================================
    var getParamString = function(paramNames) {
        if (!Array.isArray(paramNames)) paramNames = [paramNames];
        for (var i = 0; i < paramNames.length; i++) {
            var name = PluginManager.parameters(pluginName)[paramNames[i]];
            if (name) return name;
        }
        return '';
    };

    var getParamBoolean = function(paramNames) {
        var value = getParamString(paramNames).toUpperCase();
        return value === 'TRUE';
    };

    var convertEscapeCharacters = function(text) {
        if (isNotAString(text)) text = '';
        var windowLayer = SceneManager._scene._windowLayer;
        return windowLayer ? windowLayer.children[0].convertEscapeCharacters(text) : text;
    };

    var isNotAString = function(args) {
        return String(args) !== args;
    };

    //=============================================================================
    // パラメータの取得と整形
    //=============================================================================
    var param                 = {};
    param.shakePower          = getParamString(['ShakePower', 'シェイク強さ']);
    param.criticalShakePower  = getParamString(['CriticalShakePower', 'クリティカルシェイク強さ']);
    param.effectiveShakePower = getParamString(['EffectiveShakePower', '弱点シェイク強さ']);
    param.shakeSpeed          = getParamString(['ShakeSpeed', 'シェイク速さ']);
    param.shakeDuration       = getParamString(['ShakeDuration', 'シェイク時間']);
    param.applyActor          = getParamBoolean(['ApplyActor', 'アクターに適用']);
    param.applyEnemy          = getParamBoolean(['ApplyEnemy', '敵キャラに適用']);

    //=============================================================================
    // Game_Battler
    //  クリティカル判定を記憶します。
    //=============================================================================
    Game_Battler.prototype.setCriticalForShake = function(value) {
        this._criticalForShake = value;
    };

    Game_Battler.prototype.isCriticalForShake = function() {
        return this._criticalForShake;
    };

    Game_Battler.prototype.setEffectiveForShake = function(value) {
        this._effectiveForShake = value;
    };

    Game_Battler.prototype.isEffectiveForShake = function() {
        return this._effectiveForShake;
    };

    var _Game_Battler_performDamage      = Game_Battler.prototype.performDamage;
    Game_Battler.prototype.performDamage = function() {
        _Game_Battler_performDamage.apply(this, arguments);
        if (this.isShakeOnDamage()) {
            this.shakeOnDamage();
        }
    };

    Game_Battler.prototype.shakeOnDamage = function() {
        var power    = this.getDamageShakePower();
        var speed    = this.convertShakeParameter(param.shakeSpeed);
        var duration = this.convertShakeParameter(param.shakeDuration);
        $gameScreen.startShake(power, speed, duration);
        this.setCriticalForShake(false);
    };

    Game_Battler.prototype.getDamageShakePower = function() {
        var power = param.shakePower;
        if (param.criticalShakePower && this.isCriticalForShake()) {
            power = param.criticalShakePower;
        } else if (param.effectiveShakePower && this.isEffectiveForShake()) {
            power = param.effectiveShakePower;
        }
        return this.convertShakeParameter(power);
    };

    Game_Battler.prototype.convertShakeParameter = function(param) {
        var convertParam = convertEscapeCharacters(param);
        // use in eval
        var a            = this;
        var r            = a.hpRate() * 100;
        return isNaN(Number(convertParam)) ? eval(convertParam) : parseInt(convertParam);
    };

    Game_Battler.prototype.isShakeOnDamage = function() {
        return false;
    };

    Game_Actor.prototype.isShakeOnDamage = function() {
        return param.applyActor;
    };

    Game_Enemy.prototype.isShakeOnDamage = function() {
        return param.applyEnemy;
    };

    //=============================================================================
    // Game_Action
    //  クリティカル判定を記憶します。
    //=============================================================================
    var _Game_Action_makeDamageValue      = Game_Action.prototype.makeDamageValue;
    Game_Action.prototype.makeDamageValue = function(target, critical) {
        target.setCriticalForShake(critical);
        return _Game_Action_makeDamageValue.apply(this, arguments);
    };

    var _Game_Action_calcElementRate = Game_Action.prototype.calcElementRate;
    Game_Action.prototype.calcElementRate = function(target) {
        var result = _Game_Action_calcElementRate.apply(this, arguments);
        target.setEffectiveForShake(result > 1.0);
        return result;
    };
})();


code:
//==================================================
// ShowPortrait.js
//==================================================

/*:
 * @plugindesc 変数、能力値、装備に依存して変化する立ち絵を表示します。
 * @auther 優輝
 *
 * @param portraitLayers
 * @desc 立ち絵を何枚の画像で構成するか指定します(初期値:5)
 * @default 5
 *
 * @param firstLayerNum
 * @desc 立ち絵の最下層となるピクチャの番号を1～100で指定します(初期値:96)
 * @default 96
 *
 * @param xCoordinate
 * @desc 中央を原点とした立ち絵のX座標を指定します(初期値:408)
 * @default 408
 *
 * @param yCoordinate
 * @desc 中央を原点とした立ち絵のY座標を指定します(初期値:312)
 * @default 312
 *
 * @param xExpansionRate
 * @desc 立ち絵の横拡大率を指定します(初期値:100)
 * @default 100
 *
 * @param yExpansionRate
 * @desc 立ち絵の縦拡大率を指定します(初期値:100)
 * @default 100
 *
 * @param showBattlePortrait
 * @desc 1にした場合、戦闘開始時に自動で立ち絵が表示されるようになります(無効:-1)
 * @default -1
 *
 * @param battleXCoordinate
 * @desc 中央を原点とした戦闘中の立ち絵のX座標を指定します(初期値:マップ立ち絵と同じ)
 *
 * @param battleYCoordinate
 * @desc 中央を原点とした戦闘中の立ち絵のY座標を指定します(初期値:マップ立ち絵と同じ)
 *
 * @param battleXExpansionRate
 * @desc 戦闘中の立ち絵の横拡大率を指定します(初期値:マップ立ち絵と同じ)
 *
 * @param battleYExpansionRate
 * @desc 戦闘中の立ち絵の縦拡大率を指定します(初期値:マップ立ち絵と同じ)
 *
 * @param --------------------
 * @desc 使用しません
 *
 * @param filename1
 * @desc 1層目(最下層)の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename2
 * @desc 2層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename3
 * @desc 3層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename4
 * @desc 4層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename5
 * @desc 5層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename6
 * @desc 6層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename7
 * @desc 7層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename8
 * @desc 8層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename9
 * @desc 9層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename10
 * @desc 10層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename11
 * @desc 11層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename12
 * @desc 12層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename13
 * @desc 13層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename14
 * @desc 14層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename15
 * @desc 15層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename16
 * @desc 16層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename17
 * @desc 17層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename18
 * @desc 18層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename19
 * @desc 19層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename20
 * @desc 20層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename21
 * @desc 21層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename22
 * @desc 22層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename23
 * @desc 23層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename24
 * @desc 24層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename25
 * @desc 25層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename26
 * @desc 26層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename27
 * @desc 27層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename28
 * @desc 28層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename29
 * @desc 29層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename30
 * @desc 30層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename31
 * @desc 31層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename32
 * @desc 32層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename33
 * @desc 33層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename34
 * @desc 34層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename35
 * @desc 35層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename36
 * @desc 36層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename37
 * @desc 37層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename38
 * @desc 38層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename39
 * @desc 39層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename40
 * @desc 40層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename41
 * @desc 41層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename42
 * @desc 42層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename43
 * @desc 43層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename44
 * @desc 44層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename45
 * @desc 45層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename46
 * @desc 46層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename47
 * @desc 47層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename48
 * @desc 48層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename49
 * @desc 49層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename50
 * @desc 50層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename51
 * @desc 51層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename52
 * @desc 52層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename53
 * @desc 53層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename54
 * @desc 54層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename55
 * @desc 55層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename56
 * @desc 56層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename57
 * @desc 57層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename58
 * @desc 58層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename59
 * @desc 59層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename60
 * @desc 60層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename61
 * @desc 61層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename62
 * @desc 62層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename63
 * @desc 63層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename64
 * @desc 64層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename65
 * @desc 65層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename66
 * @desc 66層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename67
 * @desc 67層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename68
 * @desc 68層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename69
 * @desc 69層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename70
 * @desc 70層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename71
 * @desc 71層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename72
 * @desc 72層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename73
 * @desc 73層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename74
 * @desc 74層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename75
 * @desc 75層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename76
 * @desc 76層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename77
 * @desc 77層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename78
 * @desc 78層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename79
 * @desc 79層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename80
 * @desc 80層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename81
 * @desc 81層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename82
 * @desc 82層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename83
 * @desc 83層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename84
 * @desc 84層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename85
 * @desc 85層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename86
 * @desc 86層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename87
 * @desc 87層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename88
 * @desc 88層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename89
 * @desc 89層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename90
 * @desc 90層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename91
 * @desc 91層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename92
 * @desc 92層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename93
 * @desc 93層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename94
 * @desc 94層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename95
 * @desc 95層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename96
 * @desc 96層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename97
 * @desc 97層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename98
 * @desc 98層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename99
 * @desc 99層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @param filename100
 * @desc 100層目の画像ファイルの命名規則を指定します(書式はヘルプ記載)
 *
 * @help
 * マップイベントに利用可能な立ち絵を表示します。
 * 変数、能力値、装備等が変化した場合には、対応する画像へと自動的に変更します。
 *
 * 利用方法：
 * プラグインコマンド「ShowPortrait」で立ち絵が表示されます。
 * 消去する際はプラグインコマンド「ErasePortrait」を実行してください。
 *
 * ファイルの命名規則：
 * 命名規則に利用できるものは、
 * ・変数の値(VARX)(X：変数番号)
 * 及び、
 * パーティの先頭アクターの
 * ・アクターID(AID)
 * ・レベル(LEV)
 * ・HP、MP、TPの現在値(CHP、CMP、CTP)
 * ・HP、MP、TPの現在値の、最大値に対する割合(RHP、RMP、RTP)
 * ・最大HP(MHP)、最大MP(MMP)、ATK、DEF、MAT、MDF、AGI、LUC
 * ・装備ID(EQUX)(X：装備タイプ)
 * の18種です。
 *
 * 対応するプラグインパラメータに「(パーツ名)_(命名規則1)_(命名規則2)_(命名規則3)_etc...」と入力してください。
 * (例：Body_HP_VAR1_EQU4)
 *
 * プラグインコマンド「ShowPortrait」実行時、(命名規則X)の値に対応するファイル名の画像が読み込まれます。
 * (上記の例の場合、
 *   HPが50%、変数1の値が2、装備タイプ4(デフォルトで身体)に服(ID3)を装備していた場合、
 * 「Body_50_2_3.png」を最下層に表示します)
 *
 * 注意：このプラグインは対応する画像ファイルが存在しない場合をサポートしていません。
 *       「条件によって一部のパーツを表示しない」必要がある場合は、次の1.または2.の手段を取ってください。
 *       1.「透明背景のみ」の何も表示されない画像ファイルを作成する
 *       2.読み込みエラーを無視するプラグインを導入する(推奨)
 *
 * 注意：パーティにアクターが1人もいない場合、変数以外の(命名規則X)の値は0になります。
 *
 * オプション：
 * ・戦闘時自動立ち絵表示
 *     "showBattlePortrait"を1にした場合、戦闘開始時、自動で立ち絵が表示されるようになります。
 *     この設定は、プラグインコマンド「EnableBattlePortrait」／「DisableBattlePortrait」によって切り替える事も可能です。
 *     戦闘中に実行した場合、プラグインコマンド「ShowPortrait」／「ErasePortrait」と同様に立ち絵を表示／消去します。
 *
 * ・段階切り替え表示
 *     filenameに「(命名規則X)=(段階1),(段階2),(段階3),etc...」と記述する事で、その値以上で最も近い(段階X)の画像を表示します。
 *     全ての(段階X)より大きい値の場合、「Over」が(命名規則X)に対応します。
 *     「Body_LVS=10_VAR2=0,50_EQU2」等、命名規則それぞれに段階を設定可能です。
 *     (例1：「Body_HP=0,50」と指定した場合、HPが0%以下の時「Body_0.png」、50%以下の時「Body_50.png」、それより大きい時「Body_Over.png」を読み込みます)
 *
 * このプラグインはRPGツクールMV作品に限り、商用・非商用、全年齢・アダルト等の制限なく利用可能です。
 * 再配布に制限は設けませんが、改変を行う場合、改変箇所を明示してください。
 * クレジット表示は義務ではありませんが、していただけると幸いです。
 *
 * このプラグインの利用及びそれに関連して生じたあらゆる損害等について、一切の責任を負わないものとします。
 */

(function() {
    'use strict';
    var parameters = PluginManager.parameters('ShowPortrait');
    var portraitLayers = Number(parameters['portraitLayers'])||5;
    var firstLayerNum = Number(parameters['firstLayerNum'])||96;
    if ((portraitLayers + firstLayerNum) > 101) {
        portraitLayers = 101 - firstLayerNum;
    }
    var xCoordinate = Number(parameters['xCoordinate'])||408;
    var yCoordinate = Number(parameters['yCoordinate'])||312;
    var xExpansionRate = Number(parameters['xExpansionRate'])||100;
    var yExpansionRate = Number(parameters['yExpansionRate'])||100;
    var showBattlePortrait = Number(parameters['showBattlePortrait'])||-1;
    var battleXCoordinate = Number(parameters['battleXCoordinate'])||xCoordinate;
    var battleYCoordinate = Number(parameters['battleYCoordinate'])||yCoordinate;
    var battleXExpansionRate = Number(parameters['battleXExpansionRate'])||xExpansionRate;
    var battleYExpansionRate = Number(parameters['battleYExpansionRate'])||yExpansionRate;

    var portraitNamingRule = [];
    var portraitFileName = [];
    for (var i=0;i<portraitLayers;i++) {
        portraitNamingRule[i] = parameters['filename'+ (i + 1)].split('_');
    }

    var showPortraitFlag = false;
    var showBattlePortraitFlag = false;

    var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        if (command.toUpperCase() == "SHOWPORTRAIT"){
            if (SceneManager._scene.constructor === Scene_Map) {
                showPortraitFlag = true;
                GSShowPortrait.call(this, xCoordinate, yCoordinate, xExpansionRate, yExpansionRate);
            }
            else if (SceneManager._scene.constructor === Scene_Battle) {
                showBattlePortraitFlag = true;
                GSShowPortrait.call(this, battleXCoordinate, battleYCoordinate, battleXExpansionRate, battleYExpansionRate);
            }
        }
        else if (command.toUpperCase() == "ERASEPORTRAIT"){
            if (SceneManager._scene.constructor === Scene_Map) {
                //showPortraitFlag = false;
            }
            else if (SceneManager._scene.constructor === Scene_Battle) {
                showBattlePortraitFlag = false;
            }
            GSErasePortrait.call(this);
        }
        else if (command.toUpperCase() == "ENABLEBATTLEPORTRAIT"){
            showBattlePortrait = 1;
            if (SceneManager._scene.constructor === Scene_Battle) {
                showBattlePortraitFlag = true;
                GSShowPortrait.call(this, battleXCoordinate, battleYCoordinate, battleXExpansionRate, battleYExpansionRate);
            }
        }
        else if (command.toUpperCase() == "DISABLEBATTLEPORTRAIT"){
            showBattlePortrait = -1;
            if (SceneManager._scene.constructor === Scene_Battle) {
                showBattlePortraitFlag = false;
                GSErasePortrait.call(this);
            }
        }
    };

    var _Scene_Title_start = Scene_Title.prototype.start;
    Scene_Title.prototype.start = function() {
        _Scene_Title_start.call(this);
        showPortraitFlag = false;
        showBattlePortrait = Number(parameters['showBattlePortrait'])||-1;
    };

    var _Game_Variables_setValue = Game_Variables.prototype.setValue;
    Game_Variables.prototype.setValue = function(variableId, value) {
        _Game_Variables_setValue.call(this, variableId, value);
        GSShowPortraitWithScene.call(this);
    };

    var _Game_Actor_levelUp = Game_Actor.prototype.levelUp;
    Game_Actor.prototype.levelUp = function() {
        _Game_Actor_levelUp.call(this);
        GSShowPortraitWithScene.call(this);
    };

    var _Game_Actor_levelDown = Game_Actor.prototype.levelDown;
    Game_Actor.prototype.levelDown = function() {
        _Game_Actor_levelDown.call(this);
        GSShowPortraitWithScene.call(this);
    };

    var _Game_BattlerBase_addParam = Game_BattlerBase.prototype.addParam;
    Game_BattlerBase.prototype.addParam = function(paramId, value) {
        _Game_BattlerBase_addParam.call(this, paramId, value);
        GSShowPortraitWithScene.call(this);
    };

    var _Game_Actor_changeEquip = Game_Actor.prototype.changeEquip;
    Game_Actor.prototype.changeEquip = function(slotId, item) {
        _Game_Actor_changeEquip.call(this, slotId, item);
        GSShowPortraitWithScene.call(this);
    };

    var _Game_Actor_forceChangeEquip = Game_Actor.prototype.forceChangeEquip;
    Game_Actor.prototype.forceChangeEquip = function(slotId, item) {
        _Game_Actor_forceChangeEquip.call(this, slotId, item);
        GSShowPortraitWithScene.call(this);
    };

    var _Scene_Map_start = Scene_Map.prototype.start;
    Scene_Map.prototype.start = function() {
        _Scene_Map_start.call(this);
        GSShowPortraitWithScene.call(this);
    };

    var actorTmp = [0,0,0,0];
    var _Scene_Map_update = Scene_Map.prototype.update;
    Scene_Map.prototype.update = function() {
        _Scene_Map_update.call(this);
        if ($gameParty.members()[0] !== undefined) {
            if (actorTmp[0] !== $gameParty.members()[0].actorId() || actorTmp[1] !== $gameParty.members()[0].hp || actorTmp[2] !== $gameParty.members()[0].mp || actorTmp[3] !== $gameParty.members()[0].tp) {
                actorTmp[0] = $gameParty.members()[0].actorId();
                actorTmp[1] = $gameParty.members()[0].hp;
                actorTmp[2] = $gameParty.members()[0].mp;
                actorTmp[3] = $gameParty.members()[0].tp;
                GSShowPortraitWithScene.call(this);
            }
        }
    };

    //var _Scene_Map_terminate = Scene_Map.prototype.terminate;
   // Scene_Map.prototype.terminate = function() {
	//GSErasePortrait.call(this);
   //     _Scene_Map_terminate.call(this);
   // };

    var _Scene_Battle_start = Scene_Battle.prototype.start;
    Scene_Battle.prototype.start = function() {
        _Scene_Battle_start.call(this);
        showBattlePortraitFlag = (showBattlePortrait === 1) ? true : false;
        GSShowPortraitWithScene.call(this);
    };

    var _Scene_Battle_update = Scene_Battle.prototype.update;
    Scene_Battle.prototype.update = function() {
        _Scene_Battle_update.call(this);
        if ($gameParty.members()[0] !== undefined) {
            if (actorTmp[0] !== $gameParty.members()[0].actorId() || actorTmp[1] !== $gameParty.members()[0].hp || actorTmp[2] !== $gameParty.members()[0].mp || actorTmp[3] !== $gameParty.members()[0].tp) {
                actorTmp[0] = $gameParty.members()[0].actorId();
                actorTmp[1] = $gameParty.members()[0].hp;
                actorTmp[2] = $gameParty.members()[0].mp;
                actorTmp[3] = $gameParty.members()[0].tp;
                GSShowPortraitWithScene.call(this);
            }
        }
    };

    var _Scene_Battle_terminate = Scene_Battle.prototype.terminate;
    Scene_Battle.prototype.terminate = function() {
	GSErasePortrait.call(this);
        _Scene_Battle_terminate.call(this);
    };

    var GSRenewFileName = function() {
        for (var i=0;i<portraitLayers;i++) {
            portraitFileName[i] = portraitNamingRule[i][0];
            var namingRuleMax = portraitNamingRule[i].length;
            for (var j=1;j<namingRuleMax;j++) {
                var target = portraitNamingRule[i][j];
                var stage = [];
                var index = target.indexOf('=');
                if (index != -1) {
                    stage = target.slice(index + 1).split(',');
                    target = target.substring(0, index);
                }
                var tarNum = Number(target.slice(3))||0;
                target = target.substr(0,3).toUpperCase();
                var curVal = '';
                switch (target) {
                    case 'VAR':
                        if (tarNum>0) {
                            curVal = $gameVariables.value(tarNum);
                        }
                        break;
                    case 'AID':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].actorId();
                        break;
                    case 'LEV':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].level;
                        break;
                    case 'CHP':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].hp;
                        break;
                    case 'CMP':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].mp;
                        break;
                    case 'CTP':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].tp;
                        break;
                    case 'RHP':
                        curVal = $gameParty.members()[0] === undefined ? 0 : Math.ceil($gameParty.members()[0].hpRate() * 100);
                        break;
                    case 'RMP':
                        curVal = $gameParty.members()[0] === undefined ? 0 : Math.ceil($gameParty.members()[0].mpRate() * 100);
                        break;
                    case 'RTP':
                        curVal = $gameParty.members()[0] === undefined ? 0 : Math.ceil($gameParty.members()[0].tpRate() * 100);
                        break;
                    case 'MHP':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].mhp;
                        break;
                    case 'MMP':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].mmp;
                        break;
                    case 'ATK':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].atk;
                        break;
                    case 'DEF':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].def;
                        break;
                    case 'MAT':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].mat;
                        break;
                    case 'MDF':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].mdf;
                        break;
                    case 'AGI':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].agi;
                        break;
                    case 'LUC':
                        curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0].luk;
                        break;
                    case 'EQU':
                        if (tarNum>0) {
                            curVal = $gameParty.members()[0] === undefined ? 0 : $gameParty.members()[0]._equips[tarNum-1]._itemId;
                        }
                        break;
                }
                if (curVal !== '') {
                    if (index != -1) {
                        var stageMax = stage.length;
                        var k;
                        for (k=0;k<stageMax;k++) {
                            var curStage = parseInt(stage[k],10);
                            if (!isNaN(curStage) && curVal <= curStage) {
                                break;
                            }
                        }
                        if (k<stageMax) {
                            portraitFileName[i] += '_' + curStage;
                        }
                        else {
                            portraitFileName[i] += '_Over';
                        }
                    }
                    else {
                        portraitFileName[i] += '_' + curVal;
                    }
                }
            }
        }
    };

    var GSShowPortraitWithScene = function() {
        if ((SceneManager._scene.constructor === Scene_Map) && showPortraitFlag) {
            GSShowPortrait.call(this, xCoordinate, yCoordinate, xExpansionRate, yExpansionRate);
        }
        else if ((SceneManager._scene.constructor === Scene_Battle) && showBattlePortraitFlag) {
            GSShowPortrait.call(this, battleXCoordinate, battleYCoordinate, battleXExpansionRate, battleYExpansionRate);
        }
    };

    var GSShowPortrait = function(xCo, yCo, xEx, yEx) {
        GSRenewFileName.call(this);
        for (var i=0;i<portraitLayers;i++) {
            $gameScreen.showPicture(i + firstLayerNum, portraitFileName[i], 1, xCo, yCo, xEx, yEx, 255, 0);
        }
    };

    var GSErasePortrait = function() {
        for (var i=0;i<portraitLayers;i++) {
            $gameScreen.erasePicture(i + firstLayerNum);
        }
    };
})();


code:
//=============================================================================
// SimpleMsgSideView.js
//=============================================================================

/*:
 * @plugindesc at sideview battle, only display item/skill names.
 * @author Sasuke KANNAZUKI
 *
 * @param displayAttack
 * @desc Whether to display normal attack. 1:yes 0:no
 * @default 0
 *
 * @param position
 * @desc Skill name display position. 0:left, 1:center
 * @default 1
 *
 * @help This plugin does not provide plugin commands.
 *
 * By not displaying the log and only displaying the skill name,
 * the speed of battle will increase slightly.
 */

/*:ja
 * @plugindesc サイドビューバトルで技/アイテムの名前のみ表示します。
 * @author 神無月サスケ
 *
 * @param displayAttack
 * @desc 通常攻撃も表示するか (1:する 0:しない)
 * @default 0
 *
 * @param position
 * @desc 技名を表示する位置 (0:左寄せ, 1:中央)
 * @default 1
 *
 * @help このプラグインには、プラグインコマンドはありません。
 *
 * ログを表示せず、技名のみを表示することで、戦闘のテンポが若干高速になります。
 */

(function() {

  var parameters = PluginManager.parameters('SimpleMsgSideView');
  var displayAttack = Number(parameters['displayAttack']) != 0;
  var position = Number(parameters['position'] || 1);

  var _Window_BattleLog_addText = Window_BattleLog.prototype.addText;
  Window_BattleLog.prototype.addText = function(text) {
   if($gameSystem.isSideView()){
     this.refresh();
     this.wait();
     return;  // not display battle log
   }
   _Window_BattleLog_addText.call(this, text);
  };

  // for sideview battle only
  Window_BattleLog.prototype.addItemNameText = function(itemName) {
    this._lines.push(itemName);
    this.refresh();
    this.wait();
  };

  var _Window_BattleLog_displayAction =
   Window_BattleLog.prototype.displayAction;
  Window_BattleLog.prototype.displayAction = function(subject, item) {
    if($gameSystem.isSideView()){
      if(displayAttack ||
       !(DataManager.isSkill(item) && item.id == subject.attackSkillId())) {
　　    this.push('addItemNameText', item.name);  // display item/skill name
      } else {
        this.push('wait');
      }
      return;
    }
    _Window_BattleLog_displayAction.call(this, subject, item);
  };

  // to put skill/item name at center
  var _Window_BattleLog_drawLineText = Window_BattleLog.prototype.drawLineText;
  Window_BattleLog.prototype.drawLineText = function(index) {
    if($gameSystem.isSideView() && position == 1){
      var rect = this.itemRectForText(index);
      this.contents.clearRect(rect.x, rect.y, rect.width, rect.height);
      this.drawText(this._lines[index], rect.x, rect.y,
       rect.width, 'center');
      return;
    }
    _Window_BattleLog_drawLineText.call(this, index);
  };

})();


code:
//=============================================================================
// SimpleVoice.js
// ----------------------------------------------------------------------------
// (C)2017 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.3.0 2021/06/27 ボイス演奏の予約ができるコマンドを追加
// 1.2.0 2021/03/04 演奏ファイルをサブフォルダから指定できる機能を追加
// 1.1.3 2020/04/15 1.1.2の修正で同時再生したボイスの停止が動作しない問題を修正
// 1.1.2 2020/04/08 異なるチャンネルで短い間隔で複数のボイスを再生した場合に、先に再生したボイスが演奏されない問題を修正
// 1.1.1 2019/01/22 イベント高速化で再生したとき、SV_STOP_VOICEが効かなくなる場合がある問題を修正
// 1.1.0 2017/07/16 ボイスのチャンネル指定機能を追加。同一チャンネルのボイスが同時再生されないようになります。
// 1.0.1 2017/06/26 英語表記のプラグインコマンドの指定方法を変更
// 1.0.0 2017/06/25 初版
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc SimpleVoicePlugin
 * @author triacontane
 *
 * @param FolderName
 * @type string
 * @desc ボイスファイルが格納されているフォルダ名です。
 * @default voice
 *
 * @param OptionName
 * @type string
 * @desc オプション画面に表示されるボイス音量の設定項目名称です。
 * @default ボイス 音量
 *
 * @param OptionValue
 * @type number
 * @desc ボイス音量の初期値です。
 * @default 100
 *
 * @help ボイス演奏を簡易サポートします。
 * 通常の効果音とは格納フォルダを分けられるほか、オプション画面で
 * 別途音量指定が可能になります。
 *
 * 演奏及びループ演奏はプラグインコマンドから行います。
 *
 * プラグインコマンド詳細
 *  イベントコマンド「プラグインコマンド」から実行。
 *  （パラメータの間は半角スペースで区切る）
 *
 * SV_ボイスの演奏 aaa 90 100 0 2 # 指定したボイスを演奏します。
 * SV_PLAY_VOICE aaa 90 100 0 2   # 同上
 * ※具体的な引数は以下の通りです。
 * 0 : ファイル名(拡張子不要)
 * 1 : 音量(省略した場合は90)
 * 2 : ピッチ(省略した場合は100)
 * 3 : 位相(省略した場合は0)
 * 4 : チャンネル番号
 *
 * チャンネル番号(数値)を指定すると、停止するときに指定したチャンネルと一致する
 * すべてのボイスを一度に停止することができます。
 * これにより同一のチャンネルのボイスが重なって演奏されないようになります。
 *
 * SV_ボイスのループ演奏 aaa 90 100 0 # 指定したボイスをループ演奏します。
 * SV_PLAY_LOOP_VOICE aaa 90 100 0    # 同上
 *
 * SV_ボイスの停止 aaa # ボイスaaaの演奏を停止します。
 * SV_STOP_VOICE aaa   # 同上
 * SV_ボイスの停止 1   # チャンネル[1]で再生した全てのボイスの演奏を停止します。
 * SV_STOP_VOICE 1     # 同上
 * ※引数を省略した場合は全てのボイスを停止します。
 *
 * This plugin is released under the MIT License.
 */
/*:ja
 * @plugindesc 簡易ボイスプラグイン
 * @author トリアコンタン
 *
 * @param フォルダ名
 * @type string
 * @desc ボイスファイルが格納されているフォルダ名です。
 * @default voice
 *
 * @param オプション名称
 * @type string
 * @desc オプション画面に表示されるボイス音量の設定項目名称です。
 * @default ボイス 音量
 *
 * @param オプション初期値
 * @type number
 * @desc ボイス音量の初期値です。
 * @default 100
 *
 * @help ボイス演奏を簡易サポートします。
 * 通常の効果音とは格納フォルダを分けられるほか、オプション画面で
 * 別途音量指定が可能になります。
 *
 * 演奏及びループ演奏はプラグインコマンドから行います。
 *
 * プラグインコマンド詳細
 *  イベントコマンド「プラグインコマンド」から実行。
 *  （パラメータの間は半角スペースで区切る）
 *
 * SV_ボイスの演奏 aaa 90 100 0 2 # 指定したボイスを演奏します。
 * SV_PLAY_VOICE aaa 90 100 0 2   # 同上
 * ※具体的な引数は以下の通りです。
 * 0 : ファイル名(拡張子不要)
 * 1 : 音量(省略した場合は90)
 * 2 : ピッチ(省略した場合は100)
 * 3 : 位相(省略した場合は0)
 * 4 : チャンネル番号
 * ※ファイル名にパスを指定するとサブフォルダの効果音を演奏できます。
 * 例：SV_PLAY_VOICE sub/aaa 90 100 0 2
 *
 * チャンネル番号(数値)を指定すると、停止するときに指定したチャンネルと一致する
 * すべてのボイスを一度に停止することができます。
 * これにより同一のチャンネルのボイスが重なって演奏されないようになります。
 *
 * SV_ボイスのループ演奏 aaa 90 100 0 # 指定したボイスをループ演奏します。
 * SV_PLAY_LOOP_VOICE aaa 90 100 0    # 同上
 *
 * SV_ボイスの停止 aaa # ボイスaaaの演奏を停止します。
 * SV_STOP_VOICE aaa   # 同上
 * SV_ボイスの停止 1   # チャンネル[1]で再生した全てのボイスの演奏を停止します。
 * SV_STOP_VOICE 1     # 同上
 * ※引数を省略した場合は全てのボイスを停止します。
 *
 * SV_ボイスの演奏の予約 aaa 90 100 0 2 # 指定したボイス演奏を予約します。
 * SV_RESERVE_VOICE aaa 90 100 0 2   # 同上
 * SV_ボイスのループ演奏の予約 aaa 90 100 0 2 # 指定したループボイス演奏を予約します。
 * SV_RESERVE_LOOP_VOICE aaa 90 100 0 2   # 同上
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

(function() {
    'use strict';
    var pluginName    = 'SimpleVoice';
    var metaTagPrefix = 'SV_';

    //=============================================================================
    // ローカル関数
    //  プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
    //=============================================================================
    var getParamString = function(paramNames) {
        if (!Array.isArray(paramNames)) paramNames = [paramNames];
        for (var i = 0; i < paramNames.length; i++) {
            var name = PluginManager.parameters(pluginName)[paramNames[i]];
            if (name) return name;
        }
        return '';
    };

    var getParamNumber = function(paramNames, min, max) {
        var value = getParamString(paramNames);
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        return (parseInt(value) || 0).clamp(min, max);
    };

    var getArgNumber = function(arg, min, max) {
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        return (parseInt(arg) || 0).clamp(min, max);
    };

    var convertEscapeCharacters = function(text) {
        if (isNotAString(text)) text = '';
        var windowLayer = SceneManager._scene._windowLayer;
        return windowLayer ? windowLayer.children[0].convertEscapeCharacters(text) : text;
    };

    var isNotAString = function(args) {
        return String(args) !== args;
    };

    var convertAllArguments = function(args) {
        for (var i = 0; i < args.length; i++) {
            args[i] = convertEscapeCharacters(args[i]);
        }
        return args;
    };

    var setPluginCommand = function(commandName, methodName) {
        pluginCommandMap.set(metaTagPrefix + commandName, methodName);
    };

    //=============================================================================
    // パラメータの取得と整形
    //=============================================================================
    var param         = {};
    param.folderName  = getParamString(['FolderName', 'フォルダ名']);
    param.optionName  = getParamString(['OptionName', 'オプション名称']);
    param.optionValue = getParamNumber(['OptionValue', 'オプション初期値']);

    var pluginCommandMap = new Map();
    setPluginCommand('ボイスの演奏', 'execPlayVoice');
    setPluginCommand('PLAY_VOICE', 'execPlayVoice');
    setPluginCommand('ボイスのループ演奏', 'execPlayLoopVoice');
    setPluginCommand('PLAY_LOOP_VOICE', 'execPlayLoopVoice');
    setPluginCommand('ボイスの停止', 'execStopVoice');
    setPluginCommand('STOP_VOICE', 'execStopVoice');
    setPluginCommand('ボイスの演奏の予約', 'execReserveVoice');
    setPluginCommand('RESERVE_VOICE', 'execReserveVoice');
    setPluginCommand('ボイスのループ演奏の予約', 'execReserveLoopVoice');
    setPluginCommand('RESERVE_LOOP_VOICE', 'execReserveLoopVoice');

    //=============================================================================
    // Game_Interpreter
    //  プラグインコマンドを追加定義します。
    //=============================================================================
    var _Game_Interpreter_pluginCommand      = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.apply(this, arguments);
        var pluginCommandMethod = pluginCommandMap.get(command.toUpperCase());
        if (pluginCommandMethod) {
            this[pluginCommandMethod](convertAllArguments(args));
        }
    };

    Game_Interpreter.prototype.execPlayVoice = function(args, loop) {
        var voice    = {};
        voice.name   = args.length >= 1 ? args[0] : '';
        voice.volume = args.length >= 2 ? getArgNumber(args[1], 0, 100) : 90;
        voice.pitch  = args.length >= 3 ? getArgNumber(args[2], 50, 150) : 100;
        voice.pan    = args.length >= 4 ? getArgNumber(args[3], -100, 100) : 0;
        var channel  = args.length >= 5 ? getArgNumber(args[4], 1) : undefined;
        AudioManager.playVoice(voice, loop || false, channel);
    };

    Game_Interpreter.prototype.execPlayLoopVoice = function(args) {
        this.execPlayVoice(args, true);
    };

    Game_Interpreter.prototype.execReserveVoice = function(args, loop) {
        var channel = args.length >= 5 ? getArgNumber(args[4], 1) : undefined;
        if (AudioManager.isExistVoiceChannel(channel)) {
            setTimeout(this.execReserveVoice.bind(this, args, loop), 16);
            return;
        }
        this.execPlayVoice(args, loop);
    };

    Game_Interpreter.prototype.execReserveLoopVoice = function(args) {
        this.execReserveVoice(args, true);
    };

    Game_Interpreter.prototype.execStopVoice = function(args) {
        var channel = Number(args[0]);
        if (isNaN(channel)) {
            AudioManager.stopVoice(args[0], null);
        } else {
            AudioManager.stopVoice(null, channel);
        }
    };

    //=============================================================================
    // ConfigManager
    //  ボイスボリュームの設定機能を追加します。
    //=============================================================================
    Object.defineProperty(ConfigManager, 'voiceVolume', {
        get: function() {
            return AudioManager._voiceVolume;
        },
        set: function(value) {
            AudioManager.voiceVolume = value;
        }
    });

    var _ConfigManager_makeData = ConfigManager.makeData;
    ConfigManager.makeData      = function() {
        var config         = _ConfigManager_makeData.apply(this, arguments);
        config.voiceVolume = this.voiceVolume;
        return config;
    };

    var _ConfigManager_applyData = ConfigManager.applyData;
    ConfigManager.applyData      = function(config) {
        _ConfigManager_applyData.apply(this, arguments);
        var symbol       = 'voiceVolume';
        this.voiceVolume = config.hasOwnProperty(symbol) ? this.readVolume(config, symbol) : param.optionValue;
    };

    //=============================================================================
    // Window_Options
    //  ボイスボリュームの設定項目を追加します。
    //=============================================================================
    var _Window_Options_addVolumeOptions      = Window_Options.prototype.addVolumeOptions;
    Window_Options.prototype.addVolumeOptions = function() {
        _Window_Options_addVolumeOptions.apply(this, arguments);
        this.addCommand(param.optionName, 'voiceVolume');
    };

    //=============================================================================
    // AudioManager
    //  ボイスの演奏機能を追加定義します。
    //=============================================================================
    Object.defineProperty(AudioManager, 'voiceVolume', {
        get: function() {
            return this._voiceVolume;
        },
        set: function(value) {
            this._voiceVolume = value;
        }
    });

    AudioManager.updateVoiceParameters = function(buffer, voice) {
        this.updateBufferParameters(buffer, this._voiceVolume, voice);
    };

    AudioManager._voiceBuffers = [];
    AudioManager._voiceVolume  = 100;
    AudioManager.playVoice     = function(voice, loop, channel) {
        if (voice.name) {
            this.stopVoice(voice.name, channel);
            var realPath = this.getRealVoicePath(param.folderName, voice.name);
            var realName = this.getRealVoiceName(voice.name);
            var buffer = this.createBuffer(realPath, realName);
            this.updateVoiceParameters(buffer, voice);
            buffer.play(loop);
            buffer.name = voice.name;
            buffer.channel = channel;
            this._voiceBuffers.push(buffer);
        }
    };

    AudioManager.getRealVoicePath = function(path1, path2) {
        if (path2.includes('/')) {
            return path1 + '/' + path2.replace(/(.*)\/.*/, function() {
                return arguments[1];
            });
        } else {
            return path1;
        }
    };

    AudioManager.getRealVoiceName = function(path) {
        if (path.includes('/')) {
            return path.replace(/.*\/(.*)/, function() {
                return arguments[1];
            });
        } else {
            return path;
        }
    };

    AudioManager.stopVoice = function(name, channel) {
        this._voiceBuffers.forEach(function(buffer) {
            if (!name && !channel || buffer.name === name || buffer.channel === channel) {
                buffer.stop();
            }
        });
        this.filterPlayingVoice();
    };

    AudioManager.filterPlayingVoice = function() {
        this._voiceBuffers = this._voiceBuffers.filter(function(buffer) {
            var playing = buffer.isPlaying() || !buffer.isReady();
            if (!playing) {
                buffer.stop();
            }
            return playing;
        });
    };

    AudioManager.isExistVoiceChannel = function(channel) {
        this.filterPlayingVoice();
        return this._voiceBuffers.some(function(buffer) {
            if (buffer._sourceNode && buffer._sourceNode.loop) {
                return false;
            }
            return buffer.channel === channel || channel === undefined;
        });
    };

    var _AudioManager_stopAll = AudioManager.stopAll;
    AudioManager.stopAll = function() {
        _AudioManager_stopAll.apply(this, arguments);
        this.stopVoice();
    };

    //=============================================================================
    // Scene_Base
    //  フェードアウト時にSEの演奏も停止します。
    //=============================================================================
    var _Scene_Base_fadeOutAll = Scene_Base.prototype.fadeOutAll;
    Scene_Base.prototype.fadeOutAll = function() {
        _Scene_Base_fadeOutAll.apply(this, arguments);
        AudioManager.stopVoice();
    };
})();