//============================================================================= // Yanfly Engine Plugins - Core Engine // YEP_CoreEngine.js //============================================================================= var Imported = Imported || {}; Imported.YEP_CoreEngine = true; var Yanfly = Yanfly || {}; Yanfly.Core = Yanfly.Core || {}; //============================================================================= /*: * @plugindesc v1.02 Needed for the majority of Yanfly Engine Scripts. Also * contains bug fixes found inherently in RPG Maker. * @author Yanfly Engine Plugins * * @param ---Screen--- * @default * * @param Screen Width * @desc Adjusts the width of the screen. * Default: 816 * @default 816 * * @param Screen Height * @desc Adjusts the height of the screen. * Default: 624 * @default 624 * * @param Scale Battlebacks * @desc Do you wish to scale battlebacks to resolution? * NO - false YES - true * @default true * * @param Scale Title * @desc Do you wish to scale the title screen to resolution? * NO - false YES - true * @default true * * @param Open Console * @desc For testing and debug purposes, this opens up the console. * Don't Open - false Open - true * @default false * * @param Reposition Battlers * @desc Allow the plugin to reposition battlers to resolution? * NO - false YES - true * @default true * * @param ---Gold--- * @desc * * @param Gold Max * @desc The maximum amount of gold the player can have. * Default: 99999999 * @default 99999999 * * @param Gold Font Size * @desc The font size used to display gold. * Default: 28 * @default 20 * * @param Gold Icon * @desc This will be the icon used to represent gold in the gold * window. If left at 0, no icon will be displayed. * @default 313 * * @param Gold Overlap * @desc This will be what's displayed when the gold number * exceeds the allocated area's content size. * @default A lotta * * @param ---Items--- * @desc * * @param Default Max * @desc This is the maximum number of items a player can hold. * Default: 99 * @default 99 * * @param Quantity Text Size * @desc This is the text's font size used for the item quantity. * Default: 28 * @default 20 * * @param ---Stats--- * @default * * @param Max Level * @desc Adjusts the maximum level limit for actors. * Default: 99 * @default 99 * * @param Actor MaxHP * @desc Adjusts the maximum HP limit for actors. * Default: 9999 * @default 9999 * * @param Actor MaxMP * @desc Adjusts the maximum MP limit for actors. * Default: 9999 * @default 9999 * * @param Actor Parameter * @desc Adjusts the maximum parameter limit for actors. * Default: 999 * @default 999 * * @param Enemy MaxHP * @desc Adjusts the maximum HP limit for enemies. * Default: 999999 * @default 999999 * * @param Enemy MaxMP * @desc Adjusts the maximum MP limit for enemies. * Default: 9999 * @default 9999 * * @param Enemy Parameter * @desc Adjusts the maximum parameter limit for enemies. * Default: 999 * @default 999 * * @param ---Battle--- * @desc * * @param Animation Rate * @desc Adjusts the rate of battle animations. Lower for faster. * Default: 4 * @default 4 * * @param Flash Target * @desc If an enemy is targeted, it flashes or it can whiten. * OFF - false ON - true * @default false * * @param ---Font--- * @desc * * @param Chinese Font * @desc Default font(s) used for a Chinese RPG. * Default: SimHei, Heiti TC, sans-serif * @default SimHei, Heiti TC, sans-serif * * @param Korean Font * @desc Default font(s) used for a Korean RPG. * Default: Dotum, AppleGothic, sans-serif * @default Dotum, AppleGothic, sans-serif * * @param Default Font * @desc Default font(s) used for everything else. * Default: GameFont * @default GameFont, Verdana, Arial, Courier New * * @param Font Size * @desc Default font size used for windows. * Default: 28 * @default 28 * * @param Text Align * @desc How to align the text for command windows. * left center right * @default left * * @param ---Windows--- * @default * * @param Digit Grouping * @desc Groups together digits with a comma. * false - OFF true - ON * @default true * * @param Line Height * @desc Adjusts universal line height used in Windows. * Default: 36 * @default 36 * * @param Icon Width * @desc Adjusts the width of your icons. * Default: 32 * @default 32 * * @param Icon Height * @desc Adjusts the height of your icons. * Default: 32 * @default 32 * * @param Face Width * @desc Adjusts the width of actors' faces. * Default: 144 * @default 144 * * @param Face Height * @desc Adjusts the height of actors' faces. * Default: 144 * @default 144 * * @param Window Padding * @desc Adjusts the padding for all standard windows. * Default: 18 * @default 18 * * @param Text Padding * @desc Adjusts the padding for text inside of windows. * Default: 6 * @default 6 * * @param Window Opacity * @desc Adjusts the background opacity for windows. * Default: 192 * @default 192 * * @param Gauge Outline * @desc Enable outlines for gauges. * false - OFF true - ON * @default true * * @param Gauge Height * @desc Sets the height for gauges. * Default: 6 * @default 18 * * @param Menu TP Bar * @desc Draws a TP bar in the menu status for actors. * false - OFF true - ON * @default true * * @param ---Window Colors--- * @default * * @param Color: Normal * @desc Changes the text color for Windows. * Default: 0 * @default 0 * * @param Color: System * @desc Changes the text color for Windows. * Default: 16 * @default 16 * * @param Color: Crisis * @desc Changes the text color for Windows. * Default: 17 * @default 17 * * @param Color: Death * @desc Changes the text color for Windows. * Default: 18 * @default 18 * * @param Color: Gauge Back * @desc Changes the text color for Windows. * Default: 19 * @default 19 * * @param Color: HP Gauge 1 * @desc Changes the text color for Windows. * Default: 20 * @default 20 * * @param Color: HP Gauge 2 * @desc Changes the text color for Windows. * Default: 21 * @default 21 * * @param Color: MP Gauge 1 * @desc Changes the text color for Windows. * Default: 22 * @default 22 * * @param Color: MP Gauge 2 * @desc Changes the text color for Windows. * Default: 23 * @default 23 * * @param Color: MP Cost * @desc Changes the text color for Windows. * Default: 23 * @default 23 * * @param Color: Power Up * @desc Changes the text color for Windows. * Default: 24 * @default 24 * * @param Color: Power Down * @desc Changes the text color for Windows. * Default: 25 * @default 25 * * @param Color: TP Gauge 1 * @desc Changes the text color for Windows. * Default: 28 * @default 28 * * @param Color: TP Gauge 2 * @desc Changes the text color for Windows. * Default: 29 * @default 29 * * @param Color: TP Cost Color * @desc Changes the text color for Windows. * Default: 29 * @default 29 * * @help * ============================================================================ * Introduction and Instructions * ============================================================================ * * Yanfly Engine Plugins - Core Engine is made for RPG Maker MV. This plugin * functions primarily to fix bugs and to allow the user more control over RPG * Maker MV's various features, such as the screen resolution, font, window * colors, and more. * * Just place this on top of all the other Yanfly Engine Plugins. * Adjust any parameters as you see fit. * * ============================================================================ * Bug Fixes * ============================================================================ * * This plugin fixes a few bugs found present within RPG Maker MV. Of them are * the following: * * Animation Overlay * When a skill/item that targets multiple enemies at once using a fullscreen * animation, it will overlay multiple times causing the image to look * distorted by a series of overlayed effects. The plugin fixes this issue by * having only one animation played over the group instead of every one. * * Event Updating * By default, a moving event at Frequency 5 stops briefly for a frame * instead of continuously moving. The plugin fixes this issue to match the * previous iterations of RPG Maker XP, RPG Maker VX, and RPG Maker VX Ace * where the event will move nonstop. * * Event Movement Speed * The movement speed of events are slightly slower than what they should be * due a small error in the source code. The plugin fixes this issue and they * move at the properly speed. * * Event Movement Queue * If an event were to move through an event command, changing a condition * that would set the event to change to a different page would cause that * event's move route to halt in its tracks. The plugin fixes this issue and * the event's move route will finish. * * Event Colliding * Events cannot move over other events with a Below Player setting. This * makes it difficult for certain types of puzzles or events to exist. This * plugin fixes this issue by making the collision check only apply to events * of "Same as Characters" priority. Any event that's above or below the * characters will no longer collide with other events. * * Screen Tearing * When moving slowly, the tiles on the screen tear. While it's not * noticeable on all systems, slower computers will definitely show it. The * plugin will fix this issue and synch the tiles to keep up to pace with * the screen's camera movement properly. * * Sprite Distortion * Because of JavaScript's strange mathematical behavior, sometimes values * with decimal places cause spritesheets to end up looking distorted. The * plugin will get rid of the decimal places and have sprite sheets take out * frames properly by using integer values only. * * ============================================================================ * Gold * ============================================================================ * * You can use the plugin commands to add or remove gold more than the * editor's 9,999,999 limit. You can also place notetags into items, weapons, * and armors to over the 999,999 cost limit. * * Plugin Command: * GainGold 1234567890 # Party gains 1234567890 gold. * LoseGold 9876543210 # Party loses 9876543210 gold. * * Item, Weapon, Armor Notetags * * Changes the price of the item to x. This notetag allows you to bypass the * editor's 999,999 gold cost limit. * * Enemy Notetag * * Changes the gold drop value of enemies to x. This notetag allows you to * bypass the editor's 9,999,999 gold drop limit. * * ============================================================================ * Items * ============================================================================ * * Change the parameters to reflect the maximum number of items a player can * hold per item. If you wish to make individual items have different max * values, use the following notetag: * * Item, Weapon, Armor Notetag: * * This changes the maximum amount of the item to x. * * ============================================================================ * Stats * ============================================================================ * * Even with the parameter limits raised, the editor is still confined to RPG * Maker MV's default limits. To break past them, use the following notetags * to allow further control over the individual aspects for the parameters. * * Actor Notetag * * Changes the actor's initial level to x. This allows you to bypass the * editor's level 99 limit. * * * Changes the actor's max level to x. This allows you to bypass the editor's * level 99 limit. * * Class Skill Learn Notetag * * When placed inside a class's "Skills to Learn" notetag, this will cause * the class to learn the skill at level x. * * Weapon and Armor Notetags * * * Allows the piece of weapon or armor to gain or lose x amount of stat. * Replace "stat" with "hp", "mp", "atk", "def", "mat", "mdf", "agi", or * "luk" to alter that specific stat. This allows the piece of equipment * to go past the editor's default limitation so long as the maximum value * allows for it. * * Enemy Notetags * * This changes the enemy's stat to x amount. Replace "stat" with "hp", * "mp", "atk", "def", "mat", "mdf", "agi", or "luk" to alter that * specific stat. This allows the piece of equipment to go past the * editor's default limitation. * * * This changes the enemy's exp given out to x amount. This allows the * enemy give out more exp than the editor's default 9,999,999 limit. * * ============================================================================ * Changelog * ============================================================================ * * Version 1.02: * - Fixed a bug that made screen fading on mobile devices work incorrectly. * - Added 'Scale Battlebacks' and 'Scale Title' parameters. * * Version 1.01: * - Fixed a bug that where if button sprites had different anchors, they would * not be properly clickable. *Fixed by Zalerinian* * * Version 1.00: * - Finished plugin! */ /*:ja * @plugindesc Yanfly Engine Scriptsの大元となる機能です。 * RPGツクールMVのバグを修正したり、様々なカスタムを行います。 * @author Yanfly Engine Plugins * * @param ---スクリーン--- * @default * * @param Screen Width * @desc スクリーンの横幅を調整します * Default: 816 * @default 816 * * @param Screen Height * @desc スクリーンの縦幅を調整します * Default: 624 * @default 624 * * @param Scale Battlebacks * @desc 戦闘背景のサイズを解像度に合わせるかどうか設定できます * NO - false YES - true * @default true * * @param Scale Title * @desc タイトルスクリーンのサイズを解像度に合わせるかどうか設定できます * NO - false YES - true * @default true * * @param Open Console * @desc テスト/デバッグ用に、コンソール画面を開きます * 開かない - false 開く - true * @default false * * @param Reposition Battlers * @desc 解像度に合わせてバトラーの位置を変更させるかどうか設定できます * NO - false YES - true * @default true * * @param ---ゴールド--- * @desc * * @param Gold Max * @desc プレイヤーが持てるゴールドの最大値を設定します * Default: 99999999 * @default 99999999 * * @param Gold Font Size * @desc ゴールドを表示する際のフォントサイズを指定します * Default: 28 * @default 20 * * @param Gold Icon * @desc ゴールドを意味するアイコンを指定します * 0に設定するとアイコンは何も表示されません * @default 313 * * @param Gold Overlap * @desc ゴールドが割り当てられた範囲のサイズを超えた際に表示されます * @default a lotta * * @param ---アイテム--- * @desc * * @param Default Max * @desc プレイヤーが所持できるアイテム数の上限を設定します * Default: 99 * @default 99 * * @param Quantity Text Size * @desc アイテム数を表示する際のフォントサイズを指定します * Default: 28 * @default 20 * * @param ---ステータス--- * @default * * @param Max Level * @desc アクターのレベルの上限値を設定します * Default: 99 * @default 99 * * @param Actor MaxHP * @desc アクターのHPの上限値を設定します * Default: 9999 * @default 9999 * * @param Actor MaxMP * @desc アクターのMPの上限値を設定します * Default: 9999 * @default 9999 * * @param Actor Parameter * @desc アクターのパラメータの上限値を設定します * Default: 999 * @default 999 * * @param Enemy MaxHP * @desc 敵のHPの上限値を設定します * Default: 999999 * @default 999999 * * @param Enemy MaxMP * @desc 敵のMPの上限値を設定します * Default: 9999 * @default 9999 * * @param Enemy Parameter * @desc 敵のパラメータの上限値を設定します * Default: 999 * @default 999 * * @param ---バトル--- * @desc * * @param Animation Rate * @desc 戦闘アニメーションのレートを調整します * Default: 4 * @default 4 * * @param Flash Target * @desc 敵をターゲットに選んだ際、光らせるもしくは白く表示させます * OFF - false ON - true * @default false * * @param ---フォント--- * @desc * * @param Chinese Font * @desc 中国語のRPGに使われるデフォルトフォントを設定します * Default: SimHei, Heiti TC, sans-serif * @default SimHei, Heiti TC, sans-serif * * @param Korean Font * @desc 韓国語のRPGに使われるデフォルトフォントを設定します * Default: Dotum, AppleGothic, sans-serif * @default Dotum, AppleGothic, sans-serif * * @param Default Font * @desc それ以外のRPGに使われるデフォルトフォントを設定します * Default: GameFont * @default GameFont, Verdana, Arial, Courier New * * @param Font Size * @desc ウィンドウに使われるデフォルトフォントのサイズを指定します * Default: 28 * @default 28 * * @param Text Align * @desc コマンドウィンドウ内でのテキスト配置方法を指定します * left(左) center(中央) right(右) * @default left * * @param ---ウィンドウ--- * @default * * @param Digit Grouping * @desc 数字の桁区切りを行います * false - OFF true - ON * @default true * * @param Line Height * @desc ウィンドウ内で使われている行の高さを調整します * Default: 36 * @default 36 * * @param Icon Width * @desc アイコンの幅を調整します * Default: 32 * @default 32 * * @param Icon Height * @desc アイコンの高さを調整します * Default: 32 * @default 32 * * @param Face Width * @desc アクターの顔グラフィックの幅を調整します * Default: 144 * @default 144 * * @param Face Height * @desc アクターの顔グラフィックの高さを調整します * Default: 144 * @default 144 * * @param Window Padding * @desc 全てのスタンダードウィンドウのパディングを調整します * Default: 18 * @default 18 * * @param Text Padding * @desc ウィンドウ内のテキストにパディングを適用します * Default: 6 * @default 6 * * @param Window Opacity * @desc 背景の不透明度を調整します * Default: 192 * @default 192 * * @param Gauge Outline * @desc ゲージにアウトラインを付けます * false - OFF true - ON * @default true * * @param Gauge Height * @desc ゲージの高さを調整します * Default: 6 * @default 18 * * @param Menu TP Bar * @desc アクターのメニューステータスにTPバーを表示します * false - OFF true - ON * @default true * * @param ---ウィンドウカラー--- * @default * * @param Color: Normal * @desc テキストカラーを変更します * Default: 0 * @default 0 * * @param Color: System * @desc テキストカラーを変更します * Default: 16 * @default 16 * * @param Color: Crisis * @desc テキストカラーを変更します * Default: 17 * @default 17 * * @param Color: Death * @desc テキストカラーを変更します * Default: 18 * @default 18 * * @param Color: Gauge Back * @desc テキストカラーを変更します * Default: 19 * @default 19 * * @param Color: HP Gauge 1 * @desc テキストカラーを変更します * Default: 20 * @default 20 * * @param Color: HP Gauge 2 * @desc テキストカラーを変更します * Default: 21 * @default 21 * * @param Color: MP Gauge 1 * @desc テキストカラーを変更します * Default: 22 * @default 22 * * @param Color: MP Gauge 2 * @desc テキストカラーを変更します * Default: 23 * @default 23 * * @param Color: MP Cost * @desc テキストカラーを変更します * Default: 23 * @default 23 * * @param Color: Power Up * @desc テキストカラーを変更します * Default: 24 * @default 24 * * @param Color: Power Down * @desc テキストカラーを変更します * Default: 25 * @default 25 * * @param Color: TP Gauge 1 * @desc テキストカラーを変更します * Default: 28 * @default 28 * * @param Color: TP Gauge 2 * @desc テキストカラーを変更します * Default: 29 * @default 29 * * @param Color: TP Cost Color * @desc テキストカラーを変更します * Default: 29 * @default 29 * * @help * ============================================================================ * Introduction and Instructions * ============================================================================ * * このプラグインはRPGツクールMV用のプラグインです。 * このプラグインはバグを修正したり、 * 画面の解像度・フォント・ウィンドウ色などの設定を可能にします。 * * このプラグインは、他の全てのYanfly Engine Pluginsの * 一番上に置くようにしてください。 * * ============================================================================ * Bug Fixes * ============================================================================ * * このプラグインは、昨今発見されているRPGツクールMVのバグを修正します。 * 詳細は下記を参照してください。 * * * ・アニメーションオーバーレイ * 一度に複数の敵を対象としたスキル・アイテムで * フルスクリーンアニメーションが発動した場合、 * 複数回のオーバーレイが起こり、画像にゆがみが生じてしまいます。 * このプラグインでは、アニメーションを1つのみ再生させることにより、 * 上記の問題を解決します。 * * ・イベントアップデート * デフォルトでは、フリーケンシー5でイベントを実行すると、 * フレーム単位での停止が発生してしまいます。 * このプラグインは、RPG Maker XP, RPG Maker VX, RPG Maker VX Aceでの * 過去の修正を活かして、停止なくイベントを動かすことができます。 * * ・イベント動作スピード * ソースコードのエラーにより、イベントの動作に遅延が生じていましたが、 * このプラグインにより修正を行うことができます。 * * ・イベント動作キュー * イベントがコマンドにより動作する場合、 * 別ページに移動するイベントの状態変更を行なうと、 * イベント動作が途中で停止することがありました。 * このプラグインでは上記の問題に修正を行い、イベントを完了させることができます。 * * ・イベント衝突 * Below Playerの設定では、イベント同士を重ねて動作させることができず、 * 特定のパズルやイベントの作成が困難であることが課題でした。 * このプラグインでは、「キャラクターと同列」の優先度を持つイベントに対してのみ * コリジョンチェックを行うことで、上記の問題を解決します。 * キャラクターの上位もしくは下位に配置されるイベントは、 * 他のイベントと衝突することはありません。 * * ・スクリーンティアリング * 動作の遅いコンピュータでは、タイルが分裂して表示されてしまいました。 * このプラグインは、スクリーンカメラの動きとタイルのペースを同期させて、 * この問題を解決します。 * * ・スプライトディストーション * JavaSctiptの計算により、少数値が用いられる際、 * スプライトシートに歪みが生じてしまうことがたびたびあります。 * このプラグインは少数を取り除き、整数のみを用いることで、 * スプライトシートが正しくフレームを取り出せるようにします。 * * ============================================================================ * Gold * ============================================================================ * * このプラグインコマンドを使用することで、9,999,999のリミットを無視して * ゴールドを追加もしくは減らすことができます。 * ノートタグを挿入することで、アイテム、武器、アーマーについても * 999,999のコストリミットを解除させることができます。 * * プラグインコマンド: * GainGold 1234567890 # パーティは 1234567890 G 手に入れます * LoseGold 9876543210 # パーティは 9876543210 G を失います * * アイテム、武器、アーマーのノートタグ * * アイテムの値段を x に変更します。 * このノートタグは999,999の制限を無視して使うことができます。 * * 敵のノートタグ * * 敵の落とすゴールドの値を x に変更します。 * このノートタグは999,999の制限を無視して使うことができます。 * * ============================================================================ * Items * ============================================================================ * * プレイヤーが所持できるアイテム最大数を設定するには、 * パラメータの変更を行ないます。 * アイテムごとに異なる最大値を振り分けるには、以下のノートタグを使用してください。 * * アイテム、武器、防具のノートタグ * * アイテムの最大数を x に変更します。 * * ============================================================================ * Stats * ============================================================================ * * パラメータの制限値を上げたとしても、 * RPGツクールMVのデフォルト制限値に引っかかってしまいます。 * 以下のノートタグを用いて、より高度なパラメーター設定を行うことができます。 * * アクターのノートタグ * * アクターの初期レベルを x に変更します。 * このノートタグは99レベルの制限を無視して使うことができます。 * * * アクターの最大レベルを x に変更します。 * このノートタグは99レベルの制限を無視して使うことができます。 * * クラススキル習得のノートタグ * * クラスの"Skills to Learn"ノートタグに挿入することで、 * x レベルでスキルを習得させることができます。 * * 武器と防具のノートタグ * * * 武器や防具に、プラス/マイナス x のステータスを付与します。 * "stat"の部分を"hp", "mp", "atk", "def", "mat", "mdf", "agi", "luk" * に変更することで、その他のステータスにも変更を加えることができます。 * このノートタグはデフォルトの制限を無視して使うことができます。 * * エネミーのノートタグ * * 敵のステータスを x の値だけ変更します。 * "stat"の部分を"hp", "mp", "atk", "def", "mat", "mdf", "agi", "luk" * に変更することで、その他のステータスにも変更を加えることができます。 * このノートタグはデフォルトの制限を無視して使うことができます。 * * * 敵からもらえる経験値を x の値だけ変更します。 * このノートタグはデフォルトの999,999の制限を無視して使うことができます。 * * ============================================================================ * Changelog * ============================================================================ * * Version 1.02: * - Fixed a bug that made screen fading on mobile devices work incorrectly. * - Added 'Scale Battlebacks' and 'Scale Title' parameters. * * Version 1.01: * - Fixed a bug that where if button sprites had different anchors, they would * not be properly clickable. *Fixed by Zalerinian* * * Version 1.00: * - Finished plugin! */ //============================================================================= //============================================================================= // Parameter Variables //============================================================================= Yanfly.Parameters = PluginManager.parameters('YEP_CoreEngine'); Yanfly.Param = Yanfly.Param || {}; Yanfly.Icon = Yanfly.Icon || {}; Yanfly.Param.ScaleBattleback = String(Yanfly.Parameters['Scale Battlebacks']); Yanfly.Param.ScaleTitle = String(Yanfly.Parameters['Scale Title']); Yanfly.Param.OpenConsole = String(Yanfly.Parameters['Open Console']); Yanfly.Param.DigitGroup = String(Yanfly.Parameters['Digit Grouping']); Yanfly.Param.MaxItem = Number(Yanfly.Parameters['Default Max']); Yanfly.Param.MaxLevel = Number(Yanfly.Parameters['Max Level']); Yanfly.Param.AnimationRate = Number(Yanfly.Parameters['Animation Rate']); Yanfly.Param.FlashTarget = String(Yanfly.Parameters['Flash Target']); Yanfly.Param.ReposBattlers = String(Yanfly.Parameters['Reposition Battlers']); Yanfly.Param.EnemyMaxHp = Number(Yanfly.Parameters['Enemy MaxHP']); Yanfly.Param.EnemyMaxMp = Number(Yanfly.Parameters['Enemy MaxMP']); Yanfly.Param.EnemyParam = Number(Yanfly.Parameters['Enemy Parameter']); Yanfly.Param.ActorMaxHp = Number(Yanfly.Parameters['Actor MaxHP']); Yanfly.Param.ActorMaxMp = Number(Yanfly.Parameters['Actor MaxMP']); Yanfly.Param.ActorParam = Number(Yanfly.Parameters['Actor Parameter']); Yanfly.Param.MaxGold = String(Yanfly.Parameters['Gold Max']); Yanfly.Param.ChineseFont = String(Yanfly.Parameters['Chinese Font']); Yanfly.Param.KoreanFont = String(Yanfly.Parameters['Korean Font']); Yanfly.Param.DefaultFont = String(Yanfly.Parameters['Default Font']); Yanfly.Param.FontSize = Number(Yanfly.Parameters['Font Size']); Yanfly.Param.TextAlign = String(Yanfly.Parameters['Text Align']); Yanfly.Param.LineHeight = Number(Yanfly.Parameters['Line Height']); Yanfly.Param.GaugeOutline = String(Yanfly.Parameters['Gauge Outline']); Yanfly.Param.GaugeHeight = Number(Yanfly.Parameters['Gauge Height']); Yanfly.Param.WindowPadding = Number(Yanfly.Parameters['Window Padding']); Yanfly.Param.TextPadding = Number(Yanfly.Parameters['Text Padding']); Yanfly.Param.WindowOpacity = Number(Yanfly.Parameters['Window Opacity']); Yanfly.Param.MenuTpGauge = String(Yanfly.Parameters['Menu TP Bar']); Yanfly.Param.ColorNormal = Number(Yanfly.Parameters['Color: Normal']); Yanfly.Param.ColorSystem = Number(Yanfly.Parameters['Color: System']); Yanfly.Param.ColorCrisis = Number(Yanfly.Parameters['Color: Crisis']); Yanfly.Param.ColorDeath = Number(Yanfly.Parameters['Color: Death']); Yanfly.Param.ColorGaugeBack = Number(Yanfly.Parameters['Color: Gauge Back']); Yanfly.Param.ColorHpGauge1 = Number(Yanfly.Parameters['Color: HP Gauge 1']); Yanfly.Param.ColorHpGauge2 = Number(Yanfly.Parameters['Color: HP Gauge 2']); Yanfly.Param.ColorMpGauge1 = Number(Yanfly.Parameters['Color: MP Gauge 1']); Yanfly.Param.ColorMpGauge2 = Number(Yanfly.Parameters['Color: MP Gauge 2']); Yanfly.Param.ColorMpCost = Number(Yanfly.Parameters['Color: MP Cost']); Yanfly.Param.ColorPowerUp = Number(Yanfly.Parameters['Color: Power Up']); Yanfly.Param.ColorPowerDown = Number(Yanfly.Parameters['Color: Power Down']); Yanfly.Param.ColorTpGauge1 = Number(Yanfly.Parameters['Color: TP Gauge 1']); Yanfly.Param.ColorTpGauge2 = Number(Yanfly.Parameters['Color: TP Gauge 2']); Yanfly.Param.ColorTpCost = Number(Yanfly.Parameters['Color: TP Cost Color']); Yanfly.Param.GoldFontSize = String(Yanfly.Parameters['Gold Font Size']); Yanfly.Icon.Gold = Number(Yanfly.Parameters['Gold Icon']); Yanfly.Param.GoldOverlap = String(Yanfly.Parameters['Gold Overlap']); Yanfly.Param.ItemQuantitySize = Number(Yanfly.Parameters['Quantity Text Size']); //============================================================================= // Bitmap //============================================================================= Yanfly.Core.Bitmap_initialize = Bitmap.prototype.initialize; Bitmap.prototype.initialize = function(width, height) { Yanfly.Core.Bitmap_initialize.call(this, width, height); this.fontFace = Yanfly.Param.DefaultFont; }; //============================================================================= // Sprite //============================================================================= Yanfly.Core.Sprite_updateTransform = Sprite.prototype.updateTransform; Sprite.prototype.updateTransform = function() { Yanfly.Core.Sprite_updateTransform.call(this); this.worldTransform.tx = Math.floor(this.worldTransform.tx); this.worldTransform.ty = Math.floor(this.worldTransform.ty); }; //============================================================================= // ScreenSprite //============================================================================= Yanfly.Core.ScreenSprite_initialize = ScreenSprite.prototype.initialize; ScreenSprite.prototype.initialize = function() { Yanfly.Core.ScreenSprite_initialize.call(this); this.scale.x = Graphics.boxWidth * 10; this.scale.y = Graphics.boxHeight * 10; this.anchor.x = 0.5; this.anchor.y = 0.5; this.x = 0; this.y = 0; }; //============================================================================= // DataManager //============================================================================= Yanfly.Core.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; DataManager.isDatabaseLoaded = function() { if (!Yanfly.Core.DataManager_isDatabaseLoaded.call(this)) return false; this.processCORENotetags1($dataItems); this.processCORENotetags1($dataWeapons); this.processCORENotetags1($dataArmors); this.processCORENotetags2($dataEnemies); this.processCORENotetags3($dataActors); this.processCORENotetags4($dataClasses); return true; }; DataManager.processCORENotetags1 = function(group) { for (var n = 1; n < group.length; n++) { var obj = group[n]; var notedata = obj.note.split(/[\r\n]+/); obj.maxItem = Yanfly.Param.MaxItem; for (var i = 0; i < notedata.length; i++) { var line = notedata[i]; if (line.match(/<(?:PRICE):[ ](\d+)>/i)) { obj.price = parseInt(RegExp.$1); } else if (line.match(/<(?:MAX ITEM):[ ](\d+)>/i)) { obj.maxItem = Math.max(1, parseInt(RegExp.$1)); } else if (line.match(/<(.*):[ ]([\+\-]\d+)>/i)) { var stat = String(RegExp.$1).toUpperCase(); var value = parseInt(RegExp.$2); switch (stat) { case 'HP': case 'MAXHP': case 'MAX HP': obj.params[0] = value; break; case 'MP': case 'MAXMP': case 'MAX MP': case 'SP': case 'MAXSP': case 'MAX SP': obj.params[1] = value; break; case 'ATK': case 'STR': obj.params[2] = value; break; case 'DEF': obj.params[3] = value; break; case 'MAT': case 'INT' || 'SPI': obj.params[4] = value; break; case 'MDF': case 'RES': obj.params[5] = value; break; case 'AGI': case 'SPD': obj.params[6] = value; break; case 'LUK': obj.params[7] = value; break; case 'EXP': case 'XP': obj.exp = value; break; } } } } }; DataManager.processCORENotetags2 = function(group) { for (var n = 1; n < group.length; n++) { var obj = group[n]; var notedata = obj.note.split(/[\r\n]+/); for (var i = 0; i < notedata.length; i++) { var line = notedata[i]; if (line.match(/<(?:GOLD):[ ](\d+)>/i)) { obj.gold = parseInt(RegExp.$1); } else if (line.match(/<(.*):[ ](\d+)>/i)) { var stat = String(RegExp.$1).toUpperCase(); var value = parseInt(RegExp.$2); switch (stat) { case 'HP': case 'MAXHP': case 'MAX HP': obj.params[0] = value; break; case 'MP': case 'MAXMP': case 'MAX MP': case 'SP': case 'MAXSP': case 'MAX SP': obj.params[1] = value; break; case 'ATK': case 'STR': obj.params[2] = value; break; case 'DEF': obj.params[3] = value; break; case 'MAT': case 'INT': case 'SPI': obj.params[4] = value; break; case 'MDF': case 'RES': obj.params[5] = value; break; case 'AGI': case 'SPD': obj.params[6] = value; break; case 'LUK': obj.params[7] = value; break; } } } } }; DataManager.processCORENotetags3 = function(group) { for (var n = 1; n < group.length; n++) { var obj = group[n]; var notedata = obj.note.split(/[\r\n]+/); obj.maxLevel = Yanfly.Param.MaxLevel; for (var i = 0; i < notedata.length; i++) { var line = notedata[i]; if (line.match(/<(?:MAX LEVEL):[ ](\d+)>/i)) { obj.maxLevel = parseInt(RegExp.$1); if (obj.maxLevel < 1) obj.maxLevel = 1; } else if (line.match(/<(?:INITIAL LEVEL):[ ](\d+)>/i)) { obj.initialLevel = parseInt(RegExp.$1); if (obj.initialLevel < 1) obj.initialLevel = 1; } } } }; DataManager.processCORENotetags4 = function(group) { for (var n = 1; n < group.length; n++) { var obj = group[n]; var notedata = obj.note.split(/[\r\n]+/); obj.learnings.forEach(function(learning) { if (learning.note.match(/<(?:LEARN LEVEL):[ ](\d+)>/i)) { learning.level = parseInt(RegExp.$1); if (learning.level < 1) obj.maxLevel = 1; } }, this); } }; //============================================================================= // Scene_Manager //============================================================================= SceneManager._screenWidth = Number(Yanfly.Parameters['Screen Width'] || 816); SceneManager._screenHeight = Number(Yanfly.Parameters['Screen Height'] || 624); SceneManager._boxWidth = Number(Yanfly.Parameters['Screen Width'] || 816); SceneManager._boxHeight = Number(Yanfly.Parameters['Screen Height'] || 624); Yanfly.Core.SceneManager_run = SceneManager.run; SceneManager.run = function(sceneClass) { Yanfly.Core.SceneManager_run.call(this, sceneClass); if (Utils.isMobileDevice()) return; if (Utils.isMobileSafari()) return; if (Utils.isAndroidChrome()) return; var resizeWidth = Graphics.boxWidth - window.innerWidth; var resizeHeight = Graphics.boxHeight - window.innerHeight; if (eval(Yanfly.Param.OpenConsole)) this.openConsole(); if (!Imported.ScreenResolution) { window.moveBy(-1 * resizeWidth / 2, -1 * resizeHeight / 2); window.resizeBy(resizeWidth, resizeHeight); } }; SceneManager.openConsole = function() { if (Utils.isNwjs() && Utils.isOptionValid('test')) { var _debugWindow = require('nw.gui').Window.get().showDevTools(); _debugWindow.moveTo(0, 0); window.focus(); } }; //============================================================================= // BattleManager //============================================================================= Yanfly.Core.BattleManager_displayStartMessages = BattleManager.displayStartMessages; BattleManager.displayStartMessages = function() { Yanfly.Core.BattleManager_displayStartMessages.call(this); $gameTroop.members().forEach(function(enemy) { enemy.recoverAll(); }); }; //============================================================================= // Scene_Title //============================================================================= Yanfly.Core.Scene_Title_start = Scene_Title.prototype.start; Scene_Title.prototype.start = function() { Yanfly.Core.Scene_Title_start.call(this); if (eval(Yanfly.Param.ScaleTitle)) this.rescaleTitle(); }; Scene_Title.prototype.rescaleTitle = function() { this.rescaleTitleSprite(this._backSprite1); this.rescaleTitleSprite(this._backSprite2); }; Scene_Title.prototype.rescaleTitleSprite = function(sprite) { if (sprite.bitmap.width <= 0 || sprite.bitmap <= 0) return; var width = Graphics.boxWidth; var height = Graphics.boxHeight; var ratioX = width / sprite.bitmap.width; var ratioY = height / sprite.bitmap.height; if (ratioX > 1.0) sprite.scale.x = ratioX; if (ratioY > 1.0) sprite.scale.y = ratioY; this.centerSprite(sprite); }; //============================================================================= // Sprite_Animation //============================================================================= Sprite_Animation.prototype.setupRate = function() { this._rate = Yanfly.Param.AnimationRate; }; //============================================================================= // Sprite_Battler //============================================================================= if (!eval(Yanfly.Param.FlashTarget)) { Yanfly.Core.Sprite_Battler_updateSelectionEffect = Sprite_Battler.prototype.updateSelectionEffect; Sprite_Battler.prototype.updateSelectionEffect = function() { if (this._battler.isActor()) { Yanfly.Core.Sprite_Battler_updateSelectionEffect.call(this); } else { if (this._battler.isSelected()) this.startEffect('whiten'); } }; }; //============================================================================= // Sprite_Actor //============================================================================= if (eval(Yanfly.Param.ReposBattlers)) { Yanfly.Core.Sprite_Actor_setActorHome = Sprite_Actor.prototype.setActorHome; Sprite_Actor.prototype.setActorHome = function(index) { Yanfly.Core.Sprite_Actor_setActorHome.call(this, index); this._homeX += Graphics.boxWidth - 816; this._homeY += Graphics.boxHeight - 624; }; }; //============================================================================= // Sprite_Enemy //============================================================================= if (eval(Yanfly.Param.ReposBattlers)) { Yanfly.Core.Sprite_Enemy_setBattler = Sprite_Enemy.prototype.setBattler; Sprite_Enemy.prototype.setBattler = function(battler) { Yanfly.Core.Sprite_Enemy_setBattler.call(this, battler); this._homeY += Graphics.boxHeight - 624; if ($gameSystem.isSideView()) return; this._homeX += (Graphics.boxWidth - 816) / 2; }; }; //============================================================================= // Sprite_StateIcon //============================================================================= Sprite_StateIcon._iconWidth = Number(Yanfly.Parameters['Icon Width'] || 32);; Sprite_StateIcon._iconHeight = Number(Yanfly.Parameters['Icon Height'] || 32);; //============================================================================= // Sprite_Button //============================================================================= Sprite_Button.prototype.isButtonTouched = function() { var x = this.canvasToLocalX(TouchInput.x) + (this.anchor.x * this.width); var y = this.canvasToLocalY(TouchInput.y) + (this.anchor.y * this.height); return x >= 0 && y >= 0 && x < this.width && y < this.height; }; //============================================================================= // Spriteset_Battle //============================================================================= Yanfly.Core.Spriteset_Battle_locateBattleback = Spriteset_Battle.prototype.locateBattleback; Spriteset_Battle.prototype.locateBattleback = function() { Yanfly.Core.Spriteset_Battle_locateBattleback.call(this); if (eval(Yanfly.Param.ScaleBattleback)) this.rescaleBattlebacks(); }; Spriteset_Battle.prototype.rescaleBattlebacks = function() { this.rescaleBattlebackSprite(this._back1Sprite); this.rescaleBattlebackSprite(this._back2Sprite); }; Spriteset_Battle.prototype.rescaleBattlebackSprite = function(sprite) { if (sprite.bitmap.width <= 0 || sprite.bitmap <= 0) return; var width = this._battleField.width; var height = this._battleField.height; var toX = sprite.x; var toY = sprite.y; var ratioX = width / sprite.bitmap.width; var ratioY = height / sprite.bitmap.height; if (ratioX > 1.0) { sprite.scale.x = ratioX; sprite.origin.x = 0; toX = 0; } if (ratioY > 1.0) { sprite.scale.y = ratioY; sprite.origin.y = 0; toY = 0; } sprite.x = Math.min(0, toX); sprite.y = Math.min(0, toY); }; //============================================================================= // Game_BattlerBase //============================================================================= Game_BattlerBase.prototype.paramMax = function(paramId) { if (paramId === 0) { return Yanfly.Param.EnemyMaxHp; } else if (paramId === 1) { return Yanfly.Param.EnemyMaxMp; } else { return Yanfly.Param.EnemyParam; } }; //============================================================================= // Game_Actor //============================================================================= Yanfly.Core.Game_Actor_isMaxLevel = Game_Actor.prototype.isMaxLevel; Game_Actor.prototype.isMaxLevel = function() { if (this.maxLevel() == 0) return false; return Yanfly.Core.Game_Actor_isMaxLevel.call(this); }; Game_Actor.prototype.paramMax = function(paramId) { if (paramId === 0) { return Yanfly.Param.ActorMaxHp; } else if (paramId === 1) { return Yanfly.Param.ActorMaxMp; } else { return Yanfly.Param.ActorParam; } }; Yanfly.Core.Game_Actor_paramBase = Game_Actor.prototype.paramBase; Game_Actor.prototype.paramBase = function(paramId) { if (this.level > 99) { var i = this.currentClass().params[paramId][99]; var j = this.currentClass().params[paramId][98]; i += (i - j) * (this.level - 99); return i; } return Yanfly.Core.Game_Actor_paramBase.call(this, paramId); }; //============================================================================= // Game_Party //============================================================================= Game_Party.prototype.maxGold = function() { return eval(Yanfly.Param.MaxGold); }; Game_Party.prototype.maxItems = function(item) { if (!item) return 1; return item.maxItem; }; //============================================================================= // Game_Map //============================================================================= Game_Map.prototype.displayX = function() { return parseFloat(Math.floor(this._displayX * this.tileWidth())) / this.tileWidth(); }; Game_Map.prototype.displayY = function() { return parseFloat(Math.floor(this._displayY * this.tileHeight())) / this.tileHeight(); }; Game_Map.prototype.adjustX = function(x) { if (this.isLoopHorizontal() && x < this.displayX() - (this.width() - this.screenTileX()) / 2) { return x - this.displayX() + $dataMap.width; } else { return x - this.displayX(); } }; Game_Map.prototype.adjustY = function(y) { if (this.isLoopVertical() && y < this.displayY() - (this.height() - this.screenTileY()) / 2) { return y - this.displayY() + $dataMap.height; } else { return y - this.displayY(); } }; //============================================================================= // Game_CharacterBase //============================================================================= Game_CharacterBase.prototype.update = function() { if (this.isJumping()) { this.updateJump(); } else if (this.isMoving()) { this.updateMove(); } if (!this.isMoving()) { this.updateStop(); } this.updateAnimation(); }; Yanfly.Core.Game_CharacterBase_updateMove = Game_CharacterBase.prototype.updateMove; Game_CharacterBase.prototype.updateMove = function() { Yanfly.Core.Game_CharacterBase_updateMove.call(this); if (!this.isMoving()) this.updateStop(); }; //============================================================================= // Game_Character //============================================================================= Game_Character.prototype.queueMoveRoute = function(moveRoute) { this._originalMoveRoute = moveRoute; this._originalMoveRouteIndex = 0; }; Yanfly.Core.Game_Event_setMoveRoute = Game_Event.prototype.setMoveRoute; Game_Character.prototype.setMoveRoute = function(moveRoute) { if (!this._moveRouteForcing) { Yanfly.Core.Game_Event_setMoveRoute.call(this, moveRoute); } else { this.queueMoveRoute(moveRoute); } }; //============================================================================= // Game_Event //============================================================================= Game_Event.prototype.isCollidedWithEvents = function(x, y) { var events = $gameMap.eventsXyNt(x, y).filter(function(ev) { return ev.isNormalPriority(); }); if (events.length <= 0) return false; return this.isNormalPriority(); }; //============================================================================= // Game_Interpreter //============================================================================= Yanfly.Core.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { Yanfly.Core.Game_Interpreter_pluginCommand.call(this, command, args); if (command === 'GainGold') { $gameParty.gainGold(parseInt(args[0])); } if (command === 'LoseGold') { $gameParty.loseGold(parseInt(args[0])); } }; //============================================================================= // Window_Base //============================================================================= Window_Base._iconWidth = Number(Yanfly.Parameters['Icon Width'] || 32); Window_Base._iconHeight = Number(Yanfly.Parameters['Icon Height'] || 32); Window_Base._faceWidth = Number(Yanfly.Parameters['Face Width'] || 144); Window_Base._faceHeight = Number(Yanfly.Parameters['Face Height'] || 144); Window_Base.prototype.lineHeight = function() { return Yanfly.Param.LineHeight; }; Window_Base.prototype.textWidthEx = function(text) { return this.drawTextEx(text, 0, this.contents.height); }; Window_Base.prototype.standardFontFace = function() { if ($gameSystem.isChinese()) { return Yanfly.Param.ChineseFont; } else if ($gameSystem.isKorean()) { return Yanfly.Param.KoreanFont; } else { return Yanfly.Param.DefaultFont; } }; Window_Base.prototype.standardFontSize = function() { return Yanfly.Param.FontSize; }; Window_Base.prototype.standardPadding = function() { return Yanfly.Param.WindowPadding; }; Window_Base.prototype.textPadding = function() { return Yanfly.Param.TextPadding; }; Window_Base.prototype.standardBackOpacity = function() { return Yanfly.Param.WindowOpacity; }; Window_Base.prototype.normalColor = function() { return this.textColor(Yanfly.Param.ColorNormal); }; Window_Base.prototype.systemColor = function() { return this.textColor(Yanfly.Param.ColorSystem); }; Window_Base.prototype.crisisColor = function() { return this.textColor(Yanfly.Param.ColorCrisis); }; Window_Base.prototype.deathColor = function() { return this.textColor(Yanfly.Param.ColorDeath); }; Window_Base.prototype.gaugeBackColor = function() { return this.textColor(Yanfly.Param.ColorGaugeBack); }; Window_Base.prototype.hpGaugeColor1 = function() { return this.textColor(Yanfly.Param.ColorHpGauge1); }; Window_Base.prototype.hpGaugeColor2 = function() { return this.textColor(Yanfly.Param.ColorHpGauge2); }; Window_Base.prototype.mpGaugeColor1 = function() { return this.textColor(Yanfly.Param.ColorMpGauge1); }; Window_Base.prototype.mpGaugeColor2 = function() { return this.textColor(Yanfly.Param.ColorMpGauge2); }; Window_Base.prototype.mpCostColor = function() { return this.textColor(Yanfly.Param.ColorMpCost); }; Window_Base.prototype.powerUpColor = function() { return this.textColor(Yanfly.Param.ColorPowerUp); }; Window_Base.prototype.powerDownColor = function() { return this.textColor(Yanfly.Param.ColorPowerDown); }; Window_Base.prototype.tpGaugeColor1 = function() { return this.textColor(Yanfly.Param.ColorTpGauge1); }; Window_Base.prototype.tpGaugeColor2 = function() { return this.textColor(Yanfly.Param.ColorTpGauge2); }; Window_Base.prototype.tpCostColor = function() { return this.textColor(Yanfly.Param.ColorTpCost); }; Window_Base.prototype.drawGauge = function(dx, dy, dw, rate, color1, color2) { var color3 = this.gaugeBackColor(); var fillW = Math.floor(dw * rate).clamp(0, dw); var gaugeH = this.gaugeHeight(); var gaugeY = dy + this.lineHeight() - gaugeH - 2; if (eval(Yanfly.Param.GaugeOutline)) { color3.paintOpacity = this.translucentOpacity(); this.contents.fillRect(dx, gaugeY-1, dw+2, gaugeH+2, color3); dx += 1; } else { var fillW = Math.floor(dw * rate); var gaugeY = dy + this.lineHeight() - gaugeH - 2; this.contents.fillRect(dx, gaugeY, dw, gaugeH, color3); } this.contents.gradientFillRect(dx, gaugeY, fillW, gaugeH, color1, color2); }; Window_Base.prototype.gaugeHeight = function() { return Yanfly.Param.GaugeHeight; }; Window_Base.prototype.drawActorLevel = function(actor, x, y) { this.changeTextColor(this.systemColor()); var dw1 = this.textWidth(TextManager.levelA); this.drawText(TextManager.levelA, x, y, dw1); this.resetTextColor(); var level = Yanfly.Util.toGroup(actor.level); var dw2 = this.textWidth(Yanfly.Util.toGroup(actor.maxLevel())); this.drawText(level, x + dw1, y, dw2, 'right'); }; Window_Base.prototype.drawCurrentAndMax = function(current, max, x, y, width, color1, color2) { var labelWidth = this.textWidth('HP'); var valueWidth = this.textWidth(Yanfly.Util.toGroup(max)); var slashWidth = this.textWidth('/'); var x1 = x + width - valueWidth; var x2 = x1 - slashWidth; var x3 = x2 - valueWidth; if (x3 >= x + labelWidth) { this.changeTextColor(color1); this.drawText(Yanfly.Util.toGroup(current), x3, y, valueWidth, 'right'); this.changeTextColor(color2); this.drawText('/', x2, y, slashWidth, 'right'); this.drawText(Yanfly.Util.toGroup(max), x1, y, valueWidth, 'right'); } else { this.changeTextColor(color1); this.drawText(Yanfly.Util.toGroup(current), x1, y, valueWidth, 'right'); } }; Window_Base.prototype.drawActorTp = function(actor, x, y, width) { width = width || 96; var color1 = this.tpGaugeColor1(); var color2 = this.tpGaugeColor2(); this.drawGauge(x, y, width, actor.tpRate(), color1, color2); this.changeTextColor(this.systemColor()); this.drawText(TextManager.tpA, x, y, 44); this.changeTextColor(this.tpColor(actor)); this.drawText(Yanfly.Util.toGroup(actor.tp), x + width - 64, y, 64, 'right'); }; Window_Base.prototype.drawActorSimpleStatus = function(actor, x, y, width) { var lineHeight = this.lineHeight(); var xpad = Window_Base._faceWidth + (2 * Yanfly.Param.TextPadding); var x2 = x + xpad; var width2 = Math.max(200, width - xpad - this.textPadding()); this.drawActorName(actor, x, y); this.drawActorLevel(actor, x, y + lineHeight * 1); this.drawActorIcons(actor, x, y + lineHeight * 2); this.drawActorClass(actor, x2, y, width2); this.drawActorHp(actor, x2, y + lineHeight * 1, width2); this.drawActorMp(actor, x2, y + lineHeight * 2, width2); if (eval(Yanfly.Param.MenuTpGauge)) { this.drawActorTp(actor, x2, y + lineHeight * 3, width2); } }; Window_Base.prototype.drawCurrencyValue = function(value, unit, wx, wy, ww) { this.resetTextColor(); this.contents.fontSize = Yanfly.Param.GoldFontSize; if (this.usingGoldIcon(unit)) { 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 (this.usingGoldIcon(unit)) { this.drawIcon(Yanfly.Icon.Gold, wx + ww - Window_Base._iconWidth, wy + 2); } else { this.changeTextColor(this.systemColor()); this.drawText(unit, wx, wy, ww, 'right'); } this.resetFontSettings(); }; Window_Base.prototype.usingGoldIcon = function(unit) { if (unit !== TextManager.currencyUnit) return false; return Yanfly.Icon.Gold > 0; }; Window_Base.prototype.drawItemName = function(item, x, y, width) { width = width || 312; if (item) { var iconBoxWidth = this.lineHeight(); var padding = (iconBoxWidth - Window_Base._iconWidth) / 2; this.resetTextColor(); this.drawIcon(item.iconIndex, x + padding, y + padding); this.drawText(item.name, x + iconBoxWidth, y, width - iconBoxWidth); } }; //============================================================================= // Window_Command //============================================================================= Window_Command.prototype.itemTextAlign = function() { return Yanfly.Param.TextAlign; }; //============================================================================= // Window_MenuStatus //============================================================================= Window_MenuStatus.prototype.drawItemStatus = function(index) { var actor = $gameParty.members()[index]; var rect = this.itemRect(index); var xpad = Yanfly.Param.WindowPadding + Window_Base._faceWidth; var x = rect.x + xpad; if (!eval(Yanfly.Param.MenuTpGauge)) { var y = rect.y + rect.height / 2 - this.lineHeight() * 1.5; } else { var y = rect.y; } var width = rect.width - x - this.textPadding(); this.drawActorSimpleStatus(actor, x, y, width); }; //============================================================================= // Window_ItemList //============================================================================= Window_ItemList.prototype.numberWidth = function() { return this.textWidth('\u00d70,000'); }; Window_ItemList.prototype.drawItemNumber = function(item, x, y, width) { if (!this.needsNumber()) return; var numItems = Yanfly.Util.toGroup($gameParty.numItems(item)); this.contents.fontSize = Yanfly.Param.ItemQuantitySize; this.drawText('\u00d7' + numItems, x, y, width, 'right'); this.resetFontSettings(); }; //============================================================================= // Window_SkillStatus //============================================================================= Window_SkillStatus.prototype.refresh = function() { this.contents.clear(); if (this._actor) { var w = this.width - this.padding * 2; var h = this.height - this.padding * 2; if (!eval(Yanfly.Param.MenuTpGauge)) { var y = h / 2 - this.lineHeight() * 1.5; } else { var y = 0; } var xpad = Yanfly.Param.WindowPadding + Window_Base._faceWidth; var width = w - xpad - this.textPadding(); this.drawActorFace(this._actor, 0, 0, Window_Base._faceWidth, h); this.drawActorSimpleStatus(this._actor, xpad, y, width); } }; Window_SkillList.prototype.drawSkillCost = function(skill, x, y, width) { if (this._actor.skillTpCost(skill) > 0) { this.changeTextColor(this.tpCostColor()); var skillcost = Yanfly.Util.toGroup(this._actor.skillTpCost(skill)); this.drawText(skillcost, x, y, width, 'right'); } else if (this._actor.skillMpCost(skill) > 0) { this.changeTextColor(this.mpCostColor()); var skillcost = Yanfly.Util.toGroup(this._actor.skillMpCost(skill)); this.drawText(skillcost, x, y, width, 'right'); } }; //============================================================================= // Window_EquipStatus //============================================================================= Window_EquipStatus.prototype.drawCurrentParam = function(x, y, paramId) { this.resetTextColor(); var actorparam = Yanfly.Util.toGroup(this._actor.param(paramId)); this.drawText(actorparam, x, y, 48, 'right'); }; Window_EquipStatus.prototype.drawNewParam = function(x, y, paramId) { var newValue = this._tempActor.param(paramId); var diffvalue = newValue - this._actor.param(paramId); var actorparam = Yanfly.Util.toGroup(newValue); this.changeTextColor(this.paramchangeTextColor(diffvalue)); this.drawText(actorparam, x, y, 48, 'right'); }; //============================================================================= // Window_SkillType //============================================================================= Window_SkillType.prototype.makeCommandList = function() { if (this._actor) { var skillTypes = this._actor.addedSkillTypes(); skillTypes.sort(function(a, b){return a-b}); skillTypes.forEach(function(stypeId) { var name = $dataSystem.skillTypes[stypeId]; this.addCommand(name, 'skill', true, stypeId); }, this); } }; //============================================================================= // Window_ActorCommand //============================================================================= Window_ActorCommand.prototype.addSkillCommands = function() { var skillTypes = this._actor.addedSkillTypes(); skillTypes.sort(function(a, b){return a-b}); skillTypes.forEach(function(stypeId) { var name = $dataSystem.skillTypes[stypeId]; this.addCommand(name, 'skill', true, stypeId); }, this); }; //============================================================================= // Window_Status //============================================================================= Window_Status.prototype.drawParameters = function(x, y) { var lineHeight = this.lineHeight(); for (var i = 0; i < 6; i++) { var paramId = i + 2; var y2 = y + lineHeight * i; this.changeTextColor(this.systemColor()); this.drawText(TextManager.param(paramId), x, y2, 160); this.resetTextColor(); var actorParam = Yanfly.Util.toGroup(this._actor.param(paramId)); var dw = this.textWidth(Yanfly.Util.toGroup(this._actor.paramMax(i + 2))); this.drawText(actorParam, x + 160, y2, dw, 'right'); } }; Window_Status.prototype.drawExpInfo = function(x, y) { var lineHeight = this.lineHeight(); var expTotal = TextManager.expTotal.format(TextManager.exp); var expNext = TextManager.expNext.format(TextManager.level); var value1 = this._actor.currentExp(); var value2 = this._actor.nextRequiredExp(); if (this._actor.isMaxLevel()) { value1 = '-------'; value2 = '-------'; } else { value1 = Yanfly.Util.toGroup(value1); value2 = Yanfly.Util.toGroup(value2); } this.changeTextColor(this.systemColor()); this.drawText(expTotal, x, y + lineHeight * 0, 270); this.drawText(expNext, x, y + lineHeight * 2, 270); this.resetTextColor(); this.drawText(value1, x, y + lineHeight * 1, 270, 'right'); this.drawText(value2, x, y + lineHeight * 3, 270, 'right'); }; //============================================================================= // Window_ShopBuy //============================================================================= Window_ShopBuy.prototype.drawItem = function(index) { var item = this._data[index]; var rect = this.itemRect(index); rect.width -= this.textPadding(); this.changePaintOpacity(this.isEnabled(item)); this.drawItemName(item, rect.x, rect.y, rect.width); this.contents.fontSize = Yanfly.Param.GoldFontSize; var itemPrice = Yanfly.Util.toGroup(this.price(item)); this.drawText(itemPrice, rect.x, rect.y, rect.width, 'right'); this.changePaintOpacity(true); this.resetFontSettings(); }; //============================================================================= // Window_ShopNumber //============================================================================= Window_ShopNumber.prototype.drawNumber = function() { var x = this.cursorX(); var y = this.itemY(); var width = this.cursorWidth() - this.textPadding(); this.resetTextColor(); var itemNumber = Yanfly.Util.toGroup(this._number); this.drawText(itemNumber, x, y, width, 'right'); }; //============================================================================= // Window_BattleStatus //============================================================================= Window_BattleStatus.prototype.gaugeAreaWidth = function() { return this.width / 2 + this.standardPadding(); }; Window_BattleStatus.prototype.drawBasicArea = function(rect, actor) { var minIconArea = Window_Base._iconWidth * 2; var nameLength = this.textWidth('0') * 16 + 6; var iconWidth = Math.max(rect.width - nameLength, minIconArea); var nameWidth = rect.width - iconWidth; this.drawActorName(actor, rect.x + 0, rect.y, nameWidth); this.drawActorIcons(actor, rect.x + nameWidth, rect.y, iconWidth); }; Window_BattleStatus.prototype.drawGaugeAreaWithTp = function(rect, actor) { var totalArea = this.gaugeAreaWidth() - 30; var hpW = parseInt(totalArea * 108 / 300); var otW = parseInt(totalArea * 96 / 300); this.drawActorHp(actor, rect.x + 0, rect.y, hpW); this.drawActorMp(actor, rect.x + hpW + 15, rect.y, otW); this.drawActorTp(actor, rect.x + hpW + otW + 30, rect.y, otW); }; Window_BattleStatus.prototype.drawGaugeAreaWithoutTp = function(rect, actor) { var totalArea = this.gaugeAreaWidth() - 15; var hpW = parseInt(totalArea * 201 / 315); var otW = parseInt(totalArea * 114 / 315); this.drawActorHp(actor, rect.x + 0, rect.y, hpW); this.drawActorMp(actor, rect.x + hpW + 15, rect.y, otW); }; //============================================================================= // Window_BattleLog //============================================================================= Window_BattleLog.prototype.showNormalAnimation = function(targets, animationId, mirror) { var animation = $dataAnimations[animationId]; if (animation) { if (animation.position === 3) { targets.forEach(function(target) { target.startAnimation(animationId, mirror, 0); }); } else { var delay = this.animationBaseDelay(); var nextDelay = this.animationNextDelay(); targets.forEach(function(target) { target.startAnimation(animationId, mirror, delay); delay += nextDelay; }); } } }; //============================================================================= // New Function //============================================================================= Yanfly.Util = Yanfly.Util || {}; Yanfly.Util.toGroup = function(inVal) { if (typeof inVal !== 'string') { inVal = String(inVal); } if (!eval(Yanfly.Param.DigitGroup)) return inVal; return inVal.replace(/(^|[^\w.])(\d{4,})/g, function($0, $1, $2) { return $1 + $2.replace(/\d(?=(?:\d\d\d)+(?!\d))/g, "$&,"); }); }; //============================================================================= // End of File //=============================================================================