pastime/js/plugins/MOG_PictureEffects.js
2026-03-15 16:45:22 -05:00

2821 lines
91 KiB
JavaScript

//=============================================================================
// MOG_PictureEffects.js
//=============================================================================
/*:
* @target MZ
* @plugindesc (v1.1) O plugin permite animar as imagens.
* @author Moghunter
* @url https://mogplugins.wordpress.com/
*
* @command set_breath_effect
* @desc Configura o efeito de respirar.
* @text Breath Effect
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Tipo de animação.
* @text Animation Mode
* @type select
* @default Vertical & Horizontal
* @option Vertical
* @value Vertical
* @option Horizontal
* @value Horizontal
* @option Vertical & Horizontal
* @value Vertical & Horizontal
* @option - Remove -
* @value - Remove -
*
* @arg power
* @desc Poder do efeito da respiração (50..500)
* @text Power %
* @default 100
* @type number
* @min 50
* @max 500
*
* @command set_float_effect
* @desc Configura o efeito de flutuar.
* @text Float Effect
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Tipo de animação.
* @text Animation Mode
* @type select
* @default Vertical
* @option Vertical
* @value Vertical
* @option Vertical Left
* @value Vertical Left
* @option Vertical Right
* @value Vertical Right
* @option - Remove -
* @value - Remove -
*
* @arg power
* @desc Poder do efeito da respiração (50..500)
* @text Speed %
* @default 100
* @type number
* @min 50
* @max 500
*
* @command set_swing_effect
* @desc Configura o efeito de sacudir.
* @text Swing Effect
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Tipo de animação.
* @text Direction
* @type select
* @default Left
* @option Left
* @value Left
* @option Right
* @value Right
* @option - Remove -
* @value - Remove -
*
* @arg power
* @desc Poder do efeito da rotação (10..800)
* @text Speed %
* @default 100
* @type number
* @min 10
* @max 800
*
* @command set_shake_effect
* @desc Configura o efeito de Tremer.
* @text Shake Effect
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Direção do efeito tremer
* @text Direction
* @type select
* @default Vertical
* @option Vertical
* @value Vertical
* @option Horizontal
* @value Horizontal
* @option Vertical & Horizontal
* @value Vertical & Horizontal
* @option - Remove -
* @value - Remove -
*
* @arg power
* @desc Poder do efeito de tremer (4..300)
* @text Power
* @default 6
* @type number
* @min 4
* @max 300
*
* @arg speed
* @desc Velocidade de tremer (1..7)
* @text Speed
* @default 6
* @type number
* @min 1
* @max 7
*
* @arg duration
* @desc Duração do efeito tremer. (20...9999999)
* @text Duration
* @default 60
* @type number
* @min 20
* @max 9999999
*
* @command set_flip_effect
* @desc Configura o efeito de girar.
* @text Flip Effect
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Direção do giro
* @text Direction
* @type select
* @default Vertical
* @option Vertical
* @value Vertical
* @option Horizontal
* @value Horizontal
* @option Vertical & Horizontal
* @value Vertical & Horizontal
* @option - Remove -
* @value - Remove -
*
* @arg loop
* @desc O efeito fica em loop.
* @text Loop
* @type boolean
* @default true
*
* @arg speed
* @desc Velocidade do efeito rolar. (50..1000)
* @text Speed (%)
* @default 100
* @type number
* @min 50
* @max 1000
*
* @arg twoFaces
* @desc Usa 2 lados da imagem.
* @text Two Sides (Sprite Sheet)
* @type boolean
* @default false
*
* @command set_fade_effect
* @desc Configura o efeito Fade.
* @text Fade Effect
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Definição do modo de animação.
* @text Mode
* @type select
* @default Smooth
* @option Smooth
* @value Smooth
* @option Blinking
* @value Blinking
* @option - Remove -
* @value - Remove -
*
* @arg speed
* @desc Definição da velocidade do fade (1..50)
* @text Speed
* @default 3
* @type number
* @min 1
* @max 50
*
* @arg interval
* @desc Interval do fade (10..1000)
* @text Interval
* @default 10
* @type number
* @min 10
* @max 1000
*
* @command setPicCollapse
* @desc Ativa animação de colapso.
* @text Collapse Effect
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Definição do modo de animação.
* @text Mode
* @type select
* @default Boss Collapse
* @option Boss Collapse
* @value Boss Collapse
* @option Vertical
* @value Vertical
* @option Horizontal
* @value Horizontal
* @option Vertical & Horizontal
* @value Vertical & Horizontal
* @option - Clear -
* @value - Clear -
*
* @arg blendMode
* @desc Definição do modo Blend.
* @text Blend Mode
* @type select
* @default Normal
* @option Normal
* @value Normal
* @option Additive
* @value Additive
* @option Multiply
* @value Multiply
*
* @arg speed
* @desc Definição da ID (30..300)
* @text Speed %
* @default 100
* @type number
* @min 30
* @max 300
*
* @command set_bind_effect
* @desc Posição da imagem baseado na posição do mapa.
* @text Bind Effect
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg enabled
* @desc Ativar o efeito
* @text Enabled
* @type boolean
* @default true
*
* @command set_quick_move
* @desc Movimento rápido para fazer cenas de conversas.
* @text Quick Move
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Definição da direção do movimento.
* @text Direction
* @type select
* @default Up
* @option Up
* @value Up
* @option Left
* @value Left
* @option Right
* @value Right
* @option Down
* @value Down
* @option - Clear -
* @value - Clear -
*
* @arg range
* @desc Distância do movimento. (1..600)
* @text Range
* @default 30
* @type number
* @min 1
* @max 600
*
* @arg speed
* @desc Velocidade do movimento. (1..100)
* @text Speed
* @default 2
* @type number
* @min 1
* @max 100
*
* @arg times
* @desc Numero de vezes do movimento. (1..9999999)
* @text Number of Times
* @default 1
* @type number
* @min 1
* @max 9999999
*
* @command set_quick_zoom
* @desc Zoom rápido para fazer cenas de conversas.
* @text Quick Zoom
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc Definição da animação do zoom.
* @text Animation
* @type select
* @default Zoom Out & In
* @option Zoom Out & In
* @value Zoom Out & In
* @option Zoom In
* @value Zoom In
* @option Zoom Out
* @value Zoom Out
* @option - Clear -
* @value - Clear -
*
* @arg speed
* @desc Velocidade do zoom. (50 - 500%)
* @text Speed %
* @default 100
* @type number
* @min 50
* @max 500
*
* @arg times
* @desc Numero de vezes da animação. (1..9999999)
* @text Number of Times
* @default 1
* @type number
* @min 1
* @max 9999999
*
* @command set_anime_effect
* @desc Animação por sprite sheet.
* @text Animated (Sprite sheet)
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg frames
* @desc Quantidade de frames. (1..100)
* @text Number of Frames
* @default 4
* @type number
* @min 1
* @max 100
*
* @arg speed
* @desc Definição da velocidade da animação. (1..7)
* @text Speed
* @default 4
* @type number
* @min 1
* @max 7
*
* @command set_camera_mode
* @desc Posição da imagem baseado na posição do mouse.
* @text Camera Mode
*
* @arg id
* @desc Definição da ID (1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg enabled
* @desc Ativar o efeito
* @text Enabled
* @type boolean
* @default true
*
* @arg range
* @desc Alcance da camera. (5..100)
* @text Range
* @default 30
* @type number
* @min 5
* @max 100
*
* @command set_char_mode
* @desc Ativa o modo personagem.
* @text Skit Mode (Sprite sheet)
*
* @arg id
* @desc Definição da ID (1.. 100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg blinkInterval
* @desc Intervalo de piscar (1..999)
* @text Blink Interval
* @default 160
* @type number
* @min 1
* @max 999
*
* @arg speaking
* @desc Ativar a animação de fala durante a menssagem de texto.
* @text Talking Animation
* @type boolean
* @default true
*
* @command set_ocean_effect
* @desc Ativa o modo personagem.
* @text Ocean Mode (All Pictures)
*
* @arg waveX
* @desc Ativar movimento na horizontal.
* @text Horizontal Move
* @type boolean
* @default false
*
* @arg waveSpeedX
* @desc Velocidade de movimento (30..300)
* @text Speed (100)
* @type number
* @default 100
* @min 30
* @max 300
*
* @arg waveY
* @desc Ativar movimento na vertical.
* @text Vertical Move
* @type boolean
* @default true
*
* @arg waveSpeedY
* @desc Velocidade de movimento (30..300)
* @text Speed (100)
* @type number
* @default 100
* @min 30
* @max 300
*
* @arg ignore
* @desc Desabilita o efeito wave nas imagens abaixo.
* EX 2,5,7,8,10,30
* @text Ignore (Pictures)
* @default 0
*
* @help
* =============================================================================
* ♦♦♦ MOG - Picture Effects ♦♦♦
* Author - Moghunter
* Version - 1.1
* Updated - 2021/04/30
* https://mogplugins.wordpress.com/
* =============================================================================
* O plugin permite animar as imagens.
*
* =============================================================================
* SKIT MODE (PICTURES)
* =============================================================================
* Será necessário ter uma apenas uma imagem contendo as três posições
* do personagem, nesta ordem.
*
* Parado/ Falando / Piscando
*
* =============================================================================
* HISTÓRICO
* =============================================================================
* (v1.1) - Adicionado Collapse Effects.
* - Adicionado Swing Effect.
* - Adicionado Ocean Mode.
* - Adicionado Camera Mode.
*/
/*:ja
* @target MZ
* @plugindesc (v1.1) ピクチャをアニメーション化できます。
* @author Moghunter
* @url https://raw.githubusercontent.com/harizumi/Moghunter-MZ-jp/main/MOG_PictureEffects.js
*
* @command set_breath_effect
* @desc 呼吸エフェクトを設定
* @text 呼吸エフェクト
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc アニメーションの種類
* @text アニメーションモード
* @type select
* @default Vertical & Horizontal
* @option 垂直
* @value Vertical
* @option 水平
* @value Horizontal
* @option 垂直および水平
* @value Vertical & Horizontal
* @option - 削除する -
* @value - Remove -
*
* @arg power
* @desc 呼吸エフェクト強度(50..500)
* @text 強度 %
* @default 100
* @type number
* @min 50
* @max 500
*
* @command set_float_effect
* @desc フロートエフェクトを設定
* @text フロートエフェクト
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc アニメーションの種類
* @text アニメーションモード
* @type select
* @default Vertical
* @option 垂直
* @value Vertical
* @option 垂直左
* @value Vertical Left
* @option 垂直右
* @value Vertical Right
* @option - 削除する -
* @value - Remove -
*
* @arg power
* @desc 呼吸エフェクト速度(50..500)
* @text 速度 %
* @default 100
* @type number
* @min 50
* @max 500
*
* @command set_swing_effect
* @desc スイングエフェクトを設定
* @text スイングエフェクト
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc アニメーションの方向
* @text 方向
* @type select
* @default Left
* @option 左
* @value Left
* @option 右
* @value Right
* @option - 削除する -
* @value - Remove -
*
* @arg power
* @desc 回転エフェクト速度(10.、800)
* @text 速度 %
* @default 100
* @type number
* @min 10
* @max 800
*
* @command set_shake_effect
* @desc 揺れエフェクトを設定
* @text 揺れエフェクト
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc 揺れエフェクトの方向
* @text 方向
* @type select
* @default Vertical
* @option 垂直
* @value Vertical
* @option 水平
* @value Horizontal
* @option 垂直および水平
* @value Vertical & Horizontal
* @option - 削除する -
* @value - Remove -
*
* @arg power
* @desc 揺れエフェクトの強度(4..300)
* @text 強度
* @default 6
* @type number
* @min 4
* @max 300
*
* @arg speed
* @desc 揺れ速度(1..7)
* @text 速度
* @default 6
* @type number
* @min 1
* @max 7
*
* @arg duration
* @desc 揺れエフェクトの持続時間 (20 ... 999999)
* @text 間隔
* @default 60
* @type number
* @min 20
* @max 9999999
*
* @command set_flip_effect
* @desc フリップエフェクトを設定
* @text フリップエフェクト
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc 回転方向
* @text 方向
* @type select
* @default Vertical
* @option 垂直
* @value Vertical
* @option 水平
* @value Horizontal
* @option 垂直および水平
* @value Vertical & Horizontal
* @option - 削除する -
* @value - Remove -
*
* @arg loop
* @desc エフェクトのループ有効化
* @text ループ
* @type boolean
* @default true
*
* @arg speed
* @desc ロールエフェクトの速度 (50..1000)
* @text 速度 (%)
* @default 100
* @type number
* @min 50
* @max 1000
*
* @arg twoFaces
* @desc 画像の両側を使用
* @text 両側(スプライトシート)
* @type boolean
* @default false
*
* @command set_fade_effect
* @desc フェードエフェクトを設定
* @text フェードエフェクト
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc アニメーションモードの設定
* @text モード
* @type select
* @default Smooth
* @option スムーズ
* @value Smooth
* @option まばたき
* @value Blinking
* @option - 削除する -
* @value - Remove -
*
* @arg speed
* @desc フェード速度設定(1..50)
* @text 速度
* @default 3
* @type number
* @min 1
* @max 50
*
* @arg interval
* @desc フェード間隔(10..1000)
* @text 間隔
* @default 10
* @type number
* @min 10
* @max 1000
*
* @command setPicCollapse
* @desc 崩壊アニメーションを有効化
* @text 崩壊エフェクト
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc アニメーションモードの設定
* @text モード
* @type select
* @default Boss Collapse
* @option ボス崩壊
* @value Boss Collapse
* @option 垂直
* @value Vertical
* @option 水平
* @value Horizontal
* @option 垂直および水平
* @value Vertical & Horizontal
* @option - クリア -
* @value - Clear -
*
* @arg blendMode
* @desc ブレンドモードの設定
* @text ブレンドモード
* @type select
* @default Normal
* @option 普通
* @value Normal
* @option 添加剤
* @value Additive
* @option かける
* @value Multiply
*
* @arg speed
* @desc IDの定義(30..300)
* @text スピード %
* @default 100
* @type number
* @min 30
* @max 300
*
* @command set_bind_effect
* @desc 地図の位置に基づく画像の位置
* @text バインドエフェクト
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg enabled
* @desc エフェクトを有効にする
* @text 有効
* @type boolean
* @default true
*
* @command set_quick_move
* @desc 会話シーンで速く動作
* @text クイックムーブ
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc 移動方向の指定
* @text 方向
* @type select
* @default Up
* @option 上
* @value Up
* @option 左
* @value Left
* @option 右
* @value Right
* @option 下
* @value Down
* @option - クリア -
* @value - Clear -
*
* @arg range
* @desc 移動距離 (1..600)
* @text 範囲
* @default 30
* @type number
* @min 1
* @max 600
*
* @arg speed
* @desc 動きの速度 (1..100)
* @text スピード
* @default 2
* @type number
* @min 1
* @max 100
*
* @arg times
* @desc 移動回数 (1..999999)
* @text 回数
* @default 1
* @type number
* @min 1
* @max 9999999
*
* @command set_quick_zoom
* @desc 会話シーンのクイックズーム
* @text クイックズーム
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg mode
* @desc ズームアニメーションの指定
* @text アニメーション
* @type select
* @default Zoom Out & In
* @option ズームアウト&イン
* @value Zoom Out & In
* @option ズームイン
* @value Zoom In
* @option ズームアウト
* @value Zoom Out
* @option - 消去 -
* @value - Clear -
*
* @arg speed
* @desc ズーム速度 (50-500%)
* @text スピード %
* @default 100
* @type number
* @min 50
* @max 500
*
* @arg times
* @desc アニメーションの回数 (1..999999)
* @text 何度か
* @default 1
* @type number
* @min 1
* @max 9999999
*
* @command set_anime_effect
* @desc スプライトシートによるアニメーション
* @text アニメーション(スプライトシート)
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg frames
* @desc フレーム数 (1..100)
* @text フレーム数
* @default 4
* @type number
* @min 1
* @max 100
*
* @arg speed
* @desc アニメーション速度の指定 (1..7)
* @text スピード
* @default 4
* @type number
* @min 1
* @max 7
*
* @command set_camera_mode
* @desc マウスの位置に基づく画像の位置
* @text カメラモード
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg enabled
* @desc エフェクトを有効にする
* @text 有効
* @type boolean
* @default true
*
* @arg range
* @desc カメラの範囲 (5..100)
* @text 範囲
* @default 30
* @type number
* @min 5
* @max 100
*
* @command set_char_mode
* @desc キャラクターモードを有効化
* @text 寸劇モード(スプライトシート)
*
* @arg id
* @desc IDの定義(1..100)
* @text ID
* @default 1
* @type number
* @min 1
* @max 100
*
* @arg blinkInterval
* @desc まばたき間隔(1..999)
* @text まばたき間隔
* @default 160
* @type number
* @min 1
* @max 999
*
* @arg speaking
* @desc テキストメッセージング中に会話アニメーションを有効化
* @text 会話アニメーション
* @type boolean
* @default true
*
* @command set_ocean_effect
* @desc キャラクターモードを有効化
* @text 海上モード(すべてのピクチャ)
*
* @arg waveX
* @desc 水平方向の動きを有効化
* @text 水平移動
* @type boolean
* @default false
*
* @arg waveSpeedX
* @desc 移動速度(30..300)
* @text 速度(100)
* @type number
* @default 100
* @min 30
* @max 300
*
* @arg waveY
* @desc 垂直方向の動きを有効化
* @text 垂直移動
* @type boolean
* @default true
*
* @arg waveSpeedY
* @desc 移動速度(30..300)
* @text 速度(100)
* @type number
* @default 100
* @min 30
* @max 300
*
* @arg ignore
* @desc 下の画像の波エフェクトを無効化
* 例 2,5,7,8,10,30
* @text 無視(ピクチャ)
* @default 0
*
* @help
* 翻訳:
* https://fungamemake.com/
*
* ============================================================================
* ♦♦♦ MOG - Picture Effects ♦♦♦
* Author - Moghunter
* Version - 1.1
* Updated - 2021/04/30
* https://mogplugins.wordpress.com/
* ============================================================================
* 画像をアニメーション化できます。
*
* ============================================================================
* 寸劇モード (ピクチャ)
* ============================================================================
* キャラクターの3つの状態を下記の順で並べて1つに結合した画像が必要になります。
*
* 静止 / 会話 / まばたき
*
* ===========================================================================
* 使用方法
* ===========================================================================
* プラグインコマンドを使用します。
*
* ============================================================================
* 更新履歴
* ============================================================================
* (v1.1) - 崩壊エフェクトを追加しました。
* - スイングエフェクトを追加しました。
* - 海上モードを追加しました。
* - カメラモードを追加しました。
*/
//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
(() => {
var Imported = Imported || {};
Imported.MOG_PictureEffects = true;
var Moghunter = Moghunter || {};
Moghunter.parameters = PluginManager.parameters('MOG_PictureEffects');
//=============================================================================
// ■■■ PluginManager ■■■
//=============================================================================
PluginManager.registerCommand('MOG_PictureEffects', "set_breath_effect", data => {
$gameScreen.setPicBreathEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_float_effect", data => {
$gameScreen.setPicFloatEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_shake_effect", data => {
$gameScreen.setPicShakeEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_flip_effect", data => {
$gameScreen.setPicFlipEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_fade_effect", data => {
$gameScreen.setPicFadeEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_swing_effect", data => {
$gameScreen.setPicSwingEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_anime_effect", data => {
$gameScreen.setPicAnimatedEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_bind_effect", data => {
$gameScreen.setPicBindEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_swing_effect", data => {
$gameScreen.setPicSwingEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "setPicCollapse", data => {
$gameScreen.setPicCollapseEffect(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_char_mode", data => {
$gameScreen.setPicCharMode(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_quick_move", data => {
$gameScreen.setPicQuickMove(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_quick_zoom", data => {
$gameScreen.setPicQuickZoom(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_camera_mode", data => {
$gameScreen.setPicCameraMode(data);
});
PluginManager.registerCommand('MOG_PictureEffects', "set_ocean_effect", data => {
$gameScreen.setPicWave(data);
});
//=============================================================================
// ■■■ Game Screen ■■■
//=============================================================================
//==============================
// * setBreathEffect
//==============================
Game_Screen.prototype.setPicBreathEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicBreathEffect(data) };
};
//==============================
// * setPicFloatEffect
//==============================
Game_Screen.prototype.setPicFloatEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicFloatEffect(data) };
};
//==============================
// * setPicFloatEffect
//==============================
Game_Screen.prototype.setPicShakeEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicShakeEffect(data) };
};
//==============================
// * setPicFlipEffect
//==============================
Game_Screen.prototype.setPicFlipEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicFlipEffect(data) };
};
//==============================
// * setPicFadeEffect
//==============================
Game_Screen.prototype.setPicFadeEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicFadeEffect(data) };
};
//==============================
// * setPicSwingEffect
//==============================
Game_Screen.prototype.setPicSwingEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicSwingEffect(data) };
};
//==============================
// * setPicAnimatedEffect
//==============================
Game_Screen.prototype.setPicAnimatedEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicAnimatedEffect(data) };
};
//==============================
// * setPicBindEffect
//==============================
Game_Screen.prototype.setPicBindEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicBindEffect(data) };
};
//==============================
// * setPicCollapseEffect
//==============================
Game_Screen.prototype.setPicCollapseEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicCollapseEffect(data) };
};
//==============================
// * setPicSwingEffect
//==============================
Game_Screen.prototype.setPicSwingEffect = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicSwingEffect(data) };
};
//==============================
// * setPicQuickMove
//==============================
Game_Screen.prototype.setPicQuickMove = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicQuickMove(data) };
};
//==============================
// * setPicQuickZoom
//==============================
Game_Screen.prototype.setPicQuickZoom = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicQuickZoom(data) };
};
//==============================
// * setPicCharMode
//==============================
Game_Screen.prototype.setPicCharMode = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicCharMode(data) };
};
//==============================
// * setPicCameraMode
//==============================
Game_Screen.prototype.setPicCameraMode = function (data) {
const picID = Number(data.id);
const realPictureId = this.realPictureId(picID);
if (this._pictures[realPictureId]) { this._pictures[realPictureId].setPicCameraMode(data) };
};
//==============================
// ♦ ALIAS ♦ Clear
//==============================
const _mog_pictureEffects_game_screen_clear = Game_Screen.prototype.clear;
Game_Screen.prototype.clear = function () {
_mog_pictureEffects_game_screen_clear.call(this);
this.clearPictureEffects();
};
//==============================
// * clearPictureEffects
//==============================
Game_Screen.prototype.clearPictureEffects = function () {
this._picEffect = {};
this._picEffect.wave = {};
this._picEffect.wave.ignore = [];
this._picEffect.wave.enable = [false, false];
this._picEffect.wave.w = [0, 0, 0, 0];
this._picEffect.wave.x = 0;
this._picEffect.wave.y = 0;
this._picEffect.wave.speed = [0.01, 0.005];
this._picEffect.wave.range = [0, 0];
this._picEffect.wave.phase = [0, 0];
this._picEffect.wave.rangeMax = [1, 0.5];
};
//==============================
// * setPicWave Effect
//==============================
Game_Screen.prototype.setPicWave = function (data) {
this.clearPictureEffects();
const enableX = String(data.waveX) == "true" ? true : false;
const enableY = String(data.waveY) == "true" ? true : false;
this._picEffect.wave.enable[0] = enableX;
this._picEffect.wave.speed[0] = 0.01 * Number(data.waveSpeedX) / 100;
this._picEffect.wave.rangeMax[0] = 0.5 * Number(data.waveSpeedX) / 100;
this._picEffect.wave.enable[1] = enableY;
this._picEffect.wave.speed[1] = 0.01 * Number(data.waveSpeedY) / 100;
this._picEffect.wave.rangeMax[1] = 0.5 * Number(data.waveSpeedY) / 100;
if (data.ignore && data.ignore.length > 0) {
this._picEffect.wave.ignore = data.ignore.split(',');
};
if (!enableX && !enableY) { this.clearPictureEffects(); return };
if (this._picEffect.wave.ignore && this._picEffect.wave.ignore.length > 0) { this.reloadPicIgnore() };
};
//==============================
// * reloadPicIgnore
//==============================
Game_Screen.prototype.reloadPicIgnore = function () {
for (var i = 0; i < this._picEffect.wave.ignore.length; i++) {
this.setPicIgnoreWave(Number(this._picEffect.wave.ignore[i]));
};
};
//==============================
// * setPicIgnoreWave
//==============================
Game_Screen.prototype.setPicIgnoreWave = function (picid) {
const realPictureId = this.realPictureId(picid);
if (this._pictures[realPictureId]) { this._pictures[realPictureId]._picEffect.ignoreWave = true };
};
//==============================
// ♦ ALIAS ♦ Show Picture
//==============================
const _mog_pictureEffects_game_screen_showPicture = Game_Screen.prototype.showPicture;
Game_Screen.prototype.showPicture = function (pictureId, name, origin, x, y, scaleX, scaleY, opacity, blendMode) {
_mog_pictureEffects_game_screen_showPicture.call(this, pictureId, name, origin, x, y, scaleX, scaleY, opacity, blendMode);
if (this._picEffect.wave.ignore && this._picEffect.wave.ignore.length > 0) { this.reloadPicIgnore() };
};
//==============================
// ♦ ALIAS ♦ Update
//==============================
const _mog_pictureEffects_game_screen_update = Game_Screen.prototype.update;
Game_Screen.prototype.update = function () {
_mog_pictureEffects_game_screen_update.call(this);
this.updatePictureEffects();
};
//==============================
// * updatePictureEffects
//==============================
Game_Screen.prototype.updatePictureEffects = function () {
for (var i = 0; i < 2; i++) {
if (i == 0 && this._picEffect.wave.enable[i]) { this._picEffect.wave.x = this.updatePicWave(i) };
if (i == 1 && this._picEffect.wave.enable[i]) { this._picEffect.wave.y = this.updatePicWave(i) };
};
};
//==============================
// * updatePicBreath
//==============================
Game_Screen.prototype.updatePicWave = function (i) {
if (this._picEffect.wave.phase[i] == 0) {
this._picEffect.wave.range[i] -= this._picEffect.wave.speed[i];
if (this._picEffect.wave.range[i] <= -this._picEffect.wave.rangeMax[i]) {
this._picEffect.wave.range[i] = -this._picEffect.wave.rangeMax[i];
this._picEffect.wave.phase[i] = 1;
};
} else {
this._picEffect.wave.range[i] += this._picEffect.wave.speed[i];
if (this._picEffect.wave.range[i] >= this._picEffect.wave.rangeMax[i]) {
this._picEffect.wave.range[i] = this._picEffect.wave.rangeMax[i];
this._picEffect.wave.phase[i] = 0;
};
};
this._picEffect.wave.w[i] -= this._picEffect.wave.range[i];
return this._picEffect.wave.w[i];
};
//=============================================================================
// ■■■ Game_Message ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Initialize
//==============================
const _mog_picEffect_game_message_clear = Game_Message.prototype.clear;
Game_Message.prototype.clear = function () {
_mog_picEffect_game_message_clear.call(this);
this._picMessageWait = 0;
};
//=============================================================================
// ■■■ Scene_Map ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Update
//==============================
const _mog_picEffects_scene_map_update = Scene_Map.prototype.update;
Scene_Map.prototype.update = function () {
_mog_picEffects_scene_map_update.call(this);
if (this._messageWindow) {
$gameMessage._picMessageWait = this._messageWindow._textState;
};
};
//=============================================================================
// ■■■ Scene_Battle ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Update
//==============================
const _mog_picEffects_scene_battle_update = Scene_Battle.prototype.update;
Scene_Battle.prototype.update = function () {
_mog_picEffects_scene_battle_update.call(this);
if (this._messageWindow) {
$gameMessage._picMessageWait = this._messageWindow._textState;
};
};
//=============================================================================
// ■■■ Game_Picture ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Initialize
//==============================
const _mog_picEffect_game_picture_initialize = Game_Picture.prototype.initialize;
Game_Picture.prototype.initialize = function () {
_mog_picEffect_game_picture_initialize.call(this);
this.initPictureEffects();
};
//==============================
// * initPictureEffects
//==============================
Game_Picture.prototype.initPictureEffects = function () {
this._picEffect = {};
this._picEffect.needRefresh = true;
this._picEffect.ignoreWave = false;
this.clearCameraMode();
this.clearBreathEffect();
this.clearFloatEffect();
this.clearShakeEffect();
this.clearFlipEffect();
this.clearSwingEffect();
this.clearFadeEffect();
this.clearBindEffect();
this.clearCollapseEffect();
this.clearQuickMove();
this.clearQuickZoom();
this.clearCharacterMode();
this.clearAnimatedEffect();
};
//==============================
// * clearCameraMode
//==============================
Game_Picture.prototype.clearCameraMode = function () {
this._picEffect.camera = {};
this._picEffect.camera.enabled = false;
this._picEffect.camera.range = 30;
this._picEffect.camera.x = 0;
this._picEffect.camera.y = 0;
};
//==============================
// * setPicCameraMode
//==============================
Game_Picture.prototype.setPicCameraMode = function (data) {
this._picEffect.camera.enabled = String(data.enabled) == "true" ? true : false;
this._picEffect.camera.range = Math.min(Math.max(Number(data.range), 5), 100);
this._picEffect.camera.x = 0;
this._picEffect.camera.y = 0;
};
//==============================
// * updatePicCamera
//==============================
Game_Picture.prototype.updatePicCamera = function () {
const nx = (TouchInput.x * (this._x + 20) / Graphics.width) * this._picEffect.camera.range / 100;
const ny = (TouchInput.y * (this._y + 20) / Graphics.height) * this._picEffect.camera.range / 100;;
this._picEffect.camera.x = -nx;
this._picEffect.camera.y = -ny;
};
//==============================
// * Pic Is Camera Mode
//==============================
Game_Picture.prototype.picIsCameraMode = function () {
return this._picEffect.camera.enabled;
};
//==============================
// * clearCollapseEffect
//==============================
Game_Picture.prototype.clearCollapseEffect = function () {
this._picEffect.collapse = {};
this._picEffect.collapse.x = -1;
this._picEffect.collapse.phase = 0;
this._picEffect.collapse.blendMode = 0;
this._picEffect.collapse.range = 0;
this._picEffect.collapse.rangeMax = 0;
this._picEffect.collapse.speed1 = 4;
this._picEffect.collapse.speed2 = 240;
this._picEffect.collapse.frameY = 0;
this._picEffect.collapse.scale = 0
this._picEffect.collapse.scaleX = 0;
this._picEffect.collapse.scaleY = 0;
this._picEffect.collapse.scaleSpeed = 0.01;
this._picEffect.collapse.opacity = 0;
this._picEffect.collapse.opacitySpeed = 5;
this._picEffect.collapse.shakeEnabled = false;
this._picEffect.collapse.shakeX = 0;
this._picEffect.collapse.shakeSpeed = 0;
};
//==============================
// * clearQuickMove
//==============================
Game_Picture.prototype.clearQuickMove = function () {
this._picEffect.quickMove = {};
this._picEffect.quickMove.mode = -1;
this._picEffect.quickMove.x = 0;
this._picEffect.quickMove.y = 0;
this._picEffect.quickMove.range = 0;
this._picEffect.quickMove.rangeMax = 0;
this._picEffect.quickMove.phase = 0;
this._picEffect.quickMove.speed = 0;
this._picEffect.quickMove.times = 1;
};
//==============================
// * clearQuickZoom
//==============================
Game_Picture.prototype.clearQuickZoom = function () {
this._picEffect.quickZoom = {};
this._picEffect.quickZoom.mode = -1;
this._picEffect.quickZoom.scaleX = 0;
this._picEffect.quickZoom.scaleY = 0;
this._picEffect.quickZoom.range = 0;
this._picEffect.quickZoom.rangeMax = 0;
this._picEffect.quickZoom.phase = 0;
this._picEffect.quickZoom.speed = 0;
this._picEffect.quickZoom.times = 1;
};
//==============================
// * clearCharacterMode
//==============================
Game_Picture.prototype.clearCharacterMode = function () {
this._picEffect.charMode = {};
this._picEffect.charMode.enabled = false;
};
//==============================
// * clearFloatEffect
//==============================
Game_Picture.prototype.clearFloatEffect = function () {
this._picEffect.floatEffect = {};
this._picEffect.floatEffect.mode = -1;
this._picEffect.floatEffect.phase = 0;
this._picEffect.floatEffect.rangeMax = 0.00100;
this._picEffect.floatEffect.range = 0;
this._picEffect.floatEffect.speed = 0;
this._picEffect.floatEffect.y_Real = 0;
this._picEffect.floatEffect.x = 0;
this._picEffect.floatEffect.y = 0;
};
//==============================
// * clearShakeEffect
//==============================
Game_Picture.prototype.clearShakeEffect = function () {
this._picEffect.shakeEffect = {};
this._picEffect.shakeEffect.mode = -1;
this._picEffect.shakeEffect.duration = 0;
this._picEffect.shakeEffect.range = 0;
this._picEffect.shakeEffect.rangeMax = 0;
this._picEffect.shakeEffect.speed1 = 0;
this._picEffect.shakeEffect.speed2 = 0;
this._picEffect.shakeEffect.interval = 0;
this._picEffect.shakeEffect.x = 0;
this._picEffect.shakeEffect.y = 0;
};
//==============================
// * clearFlipEffect
//==============================
Game_Picture.prototype.clearFlipEffect = function () {
this._picEffect.flipEffect = {};
this._picEffect.flipEffect.phase = 0;
this._picEffect.flipEffect.mode = -1;
this._picEffect.flipEffect.skip = false;
this._picEffect.flipEffect.loop = true;
this._picEffect.flipEffect.twoFaces = {};
this._picEffect.flipEffect.twoFaces.enabled = false;
this._picEffect.flipEffect.twoFaces.needRefresh = false;
this._picEffect.flipEffect.twoFaces.index = 0
this._picEffect.flipEffect.twoFaces.phase1 = 0
this._picEffect.flipEffect.twoFaces.phase2 = 0
this._picEffect.flipEffect.speed = 0;
this._picEffect.flipEffect.scale = 0;
this._picEffect.flipEffect.scaleX = 0;
this._picEffect.flipEffect.scaleY = 0;
};
//==============================
// * clearFadeEffect
//==============================
Game_Picture.prototype.clearFadeEffect = function () {
this._picEffect.fadeEffect = {};
this._picEffect.fadeEffect.phase = 0;
this._picEffect.fadeEffect.mode = -1;
this._picEffect.fadeEffect.inteval = 0;
this._picEffect.fadeEffect.intevalMax = 0;
this._picEffect.fadeEffect.rangeMax = 255;
this._picEffect.fadeEffect.repeatTimes = 0;
this._picEffect.fadeEffect.range = 0;
this._picEffect.fadeEffect.speed = 0;
this._picEffect.fadeEffect.opacity = 0;
};
//==============================
// * clearAnimatedEffect
//==============================
Game_Picture.prototype.clearAnimatedEffect = function () {
this._picEffect.animatedEffect = {};
this._picEffect.animatedEffect.enabled = false;
this._picEffect.animatedEffect.frameIndex = 0;
this._picEffect.animatedEffect.frameMax = 4;
this._picEffect.animatedEffect.speed = 0;
this._picEffect.animatedEffect.speedReal = 5;
this._picEffect.animatedEffect.interval = 60;
};
//==============================
// * clearBindEffect
//==============================
Game_Picture.prototype.clearBindEffect = function () {
this._picEffect.bindEffect = {};
this._picEffect.bindEffect.enabled = false;
this._picEffect.bindEffect.x_offset = 0;
this._picEffect.bindEffect.y_offset = 0;
};
//==============================
// * setPicBindEffect
//==============================
Game_Picture.prototype.setPicBindEffect = function (data) {
this._picEffect.needRefresh = true;
this._picEffect.bindEffect.enabled = String(data.enabled) == "true" ? true : false;
this._picEffect.bindEffect.x_offset = 0;
this._picEffect.bindEffect.y_offset = 0;
};
//==============================
// * clearBreathEffect
//==============================
Game_Picture.prototype.clearBreathEffect = function () {
this._picEffect.breathEffect = {};
this._picEffect.breathEffect.mode = -1;
this._picEffect.breathEffect.phase = 0;
this._picEffect.breathEffect.rangeMax = 0.00100;
this._picEffect.breathEffect.range = 0;
this._picEffect.breathEffect.speed = 0;
this._picEffect.breathEffect.scale = 0;
this._picEffect.breathEffect.scaleX = 0;
this._picEffect.breathEffect.scaleY = 0;
};
//==============================
// * clearSwingEffect
//==============================
Game_Picture.prototype.clearSwingEffect = function () {
this._picEffect.swingEffect = {};
this._picEffect.swingEffect.mode = -1;
this._picEffect.swingEffect.phase = 0;
this._picEffect.swingEffect.speedReal = 100;
this._picEffect.swingEffect.rangeMax = 0.02;
this._picEffect.swingEffect.range = 0.00;
this._picEffect.swingEffect.speed = 0.0005;
this._picEffect.swingEffect.rot = 0;
this._picEffect.swingEffect.rotation = 0;
};
//==============================
// * isPicSwing
//==============================
Game_Picture.prototype.isPicSwing = function () {
return this._picEffect.swingEffect.mode >= 0;
};
//==============================
// * pic Is Collapsing
//==============================
Game_Picture.prototype.picIsCollapsing = function () {
return this._picEffect.collapse.mode >= 0;
};
//==============================
// * pic Is Animated
//==============================
Game_Picture.prototype.picIsAnimated = function () {
return this._picEffect.animatedEffect.enabled && !this._picEffect.flipEffect.twoFaces.enabled;
};
//==============================
// * setPicCharMode
//==============================
Game_Picture.prototype.isPicSpeaking = function () {
if (!this._picEffect.charMode.speakingNow) { return false };
if ($gameMessage._picMessageWait) { return true };
return false;
};
//==============================
// * picIsQuickMove
//==============================
Game_Picture.prototype.picIsQuickMove = function () {
return this._picEffect.quickMove.mode >= 0 && !this.picIsCollapsing();
};
//==============================
// * is Pic Char Mode
//==============================
Game_Picture.prototype.isPicCharMode = function () {
return this._picEffect.charMode.enabled;
};
//==============================
// * pic Is Floating
//==============================
Game_Picture.prototype.picIsFloating = function () {
return this._picEffect.floatEffect.mode >= 0 && !this.picIsCollapsing();
};
//==============================
// * pic Is Breathing
//==============================
Game_Picture.prototype.picIsBreathing = function () {
return this._picEffect.breathEffect.mode >= 0 && !this.picIsCollapsing();
};
//==============================
// * picIsQuickZoom
//==============================
Game_Picture.prototype.picIsQuickZoom = function () {
return this._picEffect.quickZoom.mode >= 0 && !this.picIsCollapsing();
};
//==============================
// * pic Is Flip
//==============================
Game_Picture.prototype.picIsFlip = function () {
return this._picEffect.flipEffect.mode >= 0 && !this.picIsCollapsing();
};
//==============================
// * isPicTwoFaces
//==============================
Game_Picture.prototype.isPicTwoFaces = function () {
return this._picEffect.flipEffect.twoFaces.enabled;
};
//==============================
// * pic Is Shaking
//==============================
Game_Picture.prototype.picIsShaking = function () {
return this._picEffect.shakeEffect.duration > 0;
};
//==============================
// * pic Is Fading
//==============================
Game_Picture.prototype.picIsFading = function () {
return this._picEffect.fadeEffect.mode >= 0 && !this.picIsCollapsing();
};
//==============================
// * pic Is Bind
//==============================
Game_Picture.prototype.picIsBind = function () {
return this._picEffect.bindEffect.enabled;
};
//==============================
// * pic Effect X
//==============================
Game_Picture.prototype.picEffectX = function () {
return this._picEffect.shakeEffect.x + this._picEffect.floatEffect.x + this._picEffect.bindEffect.x_offset + this._picEffect.quickMove.x + this._picEffect.collapse.shakeX + $gameScreen._picEffect.wave.x + this._picEffect.camera.x;
};
//==============================
// * pic Effect Y
//==============================
Game_Picture.prototype.picEffectY = function () {
return this._picEffect.shakeEffect.y + this._picEffect.floatEffect.y + this._picEffect.bindEffect.y_offset + this._picEffect.quickMove.y + $gameScreen._picEffect.wave.y + this._picEffect.camera.y;
};
//==============================
// * pic Effect scale X
//==============================
Game_Picture.prototype.picEffectScaleX = function () {
return this._picEffect.breathEffect.scaleX + this._picEffect.flipEffect.scaleX + this._picEffect.quickZoom.scaleX + this._picEffect.collapse.scaleX;
};
//==============================
// * pic Effect scale Y
//==============================
Game_Picture.prototype.picEffectScaleY = function () {
return this._picEffect.breathEffect.scaleY + this._picEffect.flipEffect.scaleY + this._picEffect.quickZoom.scaleY + this._picEffect.collapse.scaleY;
};
//==============================
// * pic Effectopacity
//==============================
Game_Picture.prototype.picEffectOpacity = function () {
return this._picEffect.fadeEffect.opacity + this._picEffect.collapse.opacity;
};
//==============================
// * pic Effect Rotation
//==============================
Game_Picture.prototype.picEffectRotation = function () {
return this._picEffect.swingEffect.rotation;
};
//==============================
// * setPicSwingEffect
//==============================
Game_Picture.prototype.setPicSwingEffect = function (data) {
this._picEffect.needRefresh = true;
const mode = this.getSwinghMode(String(data.mode));
if (mode == -1) { this.clearSwingEffect(); return };
this._picEffect.swingEffect.mode = mode;
this._picEffect.swingEffect.phase = 0;
this._picEffect.swingEffect.speedReal = 100;
this._picEffect.swingEffect.rangeMax = 0.02 * Number(data.power) / 100;
this._picEffect.swingEffect.range = 0.00;
this._picEffect.swingEffect.speed = 0.0005 * Number(data.power) / 100;
this._picEffect.swingEffect.rot = 0;
this._picEffect.swingEffect.rotation = 0;
};
//==============================
// * get Swing Mode
//==============================
Game_Picture.prototype.getSwinghMode = function (mode) {
if (mode == "Left") {
return 0;
} else if (mode == "Right") {
return 1
};
return -1;
};
//==============================
// * updatePicSwing
//==============================
Game_Picture.prototype.updatePicSwing = function () {
if (this._picEffect.swingEffect.phase == 0) {
this._picEffect.swingEffect.range -= this._picEffect.swingEffect.speed;
if (this._picEffect.swingEffect.range <= -this._picEffect.swingEffect.rangeMax) {
this._picEffect.swingEffect.range = -this._picEffect.swingEffect.rangeMax;
this._picEffect.swingEffect.phase = 1;
};
} else {
this._picEffect.swingEffect.range += this._picEffect.swingEffect.speed;
if (this._picEffect.swingEffect.range >= this._picEffect.swingEffect.rangeMax) {
this._picEffect.swingEffect.range = this._picEffect.swingEffect.rangeMax;
this._picEffect.swingEffect.phase = 0;
};
};
this._picEffect.swingEffect.rot -= this._picEffect.swingEffect.range;
this._picEffect.swingEffect.rotation = this._picEffect.swingEffect.mode == 0 ? this._picEffect.swingEffect.rot : -this._picEffect.swingEffect.rot;
};
//==============================
// *setPicCollapseEffect
//==============================
Game_Picture.prototype.setPicCollapseEffect = function (data) {
this._picEffect.needRefresh = true;
const mode = this.picEffectgetMode(String(data.mode));
if (mode == -1) { this.clearCollapseEffect(); return }
this._picEffect.collapse.mode = mode;
this._picEffect.collapse.x = 0;
this._picEffect.collapse.phase = 0;
this._picEffect.collapse.blendMode = this.picEffectgetBlend(String(data.blendMode));
this._picEffect.collapse.range = 1;
this._picEffect.collapse.rangeMax = 0;
this._picEffect.collapse.speed1 = Math.min(Math.max(Number(data.speed), 30), 300);
this._picEffect.collapse.speed2 = 240;
this._picEffect.collapse.frameY = 0;
this._picEffect.collapse.scale = 0
this._picEffect.collapse.scaleX = 0;
this._picEffect.collapse.scaleY = 0;
this._picEffect.collapse.scaleSpeed = ((100 / 40) * 0.01) * this._picEffect.collapse.speed1 / 100;
if (this._picEffect.collapse.mode == 3) { this._picEffect.collapse.scaleSpeed *= 2 };
this._picEffect.collapse.opacity = 0;
this._picEffect.collapse.opacitySpeed = (255 / 60) * this._picEffect.collapse.speed1 / 100;
if (this._picEffect.collapse.mode == 0) { this._picEffect.collapse.opacitySpeed = 0 };
this._picEffect.collapse.shakeEnabled = this._picEffect.collapse.mode == 0 ? true : false;
this._picEffect.collapse.shakeX = 0;
this._picEffect.collapse.shakeSpeed = 0;
};
//==============================
// * picEffectgetMode
//==============================
Game_Picture.prototype.picEffectgetMode = function (mode) {
if (mode == "Boss Collapse") {
return 0;
} else if (mode == "Vertical") {
return 1;
} else if (mode == "Horizontal") {
return 2;
} else if (mode == "Vertical & Horizontal") {
return 3;
};
return -1;
};
//==============================
// * picEffectgetBlend
//==============================
Game_Picture.prototype.picEffectgetBlend = function (blend) {
if (blend == "Additive") {
return 1;
} else if (blend == "Multiply") { return 2 };
return 0;
};
//==============================
// * updatePicCollapse
//==============================
Game_Picture.prototype.updatePicCollapse = function () {
if (this._picEffect.collapse.mode == 1 || this._picEffect.collapse.mode == 2) {
this.updatePicCollapse1_2();
} else if (this._picEffect.collapse.mode == 3) {
this.updatePicCollapse3();
};
if (this._picEffect.collapse.shakeEnabled) { this.updatePicCollapseShake() };
};
//==============================
// * updatePicCollapse1_2
//==============================
Game_Picture.prototype.updatePicCollapse1_2 = function () {
if (this._picEffect.collapse.scale < 1.00) {
this._picEffect.collapse.scale += this._picEffect.collapse.scaleSpeed;
if (this._picEffect.collapse.scale >= 1.00) { this._picEffect.collapse.scale = 1.00 };
};
if (this._picEffect.collapse.mode == 1) {
this._picEffect.collapse.scaleX = -this._picEffect.collapse.scale;
this._picEffect.collapse.scaleY = +this._picEffect.collapse.scale;
} else {
this._picEffect.collapse.scaleX = +this._picEffect.collapse.scale;
this._picEffect.collapse.scaleY = -this._picEffect.collapse.scale;
};
this._picEffect.collapse.opacity -= this._picEffect.collapse.opacitySpeed;
};
//==============================
// * updatePicCollapse1_3
//==============================
Game_Picture.prototype.updatePicCollapse3 = function () {
if (this._picEffect.collapse.phase == 0) {
if (this._picEffect.collapse.scale < 1.00) {
this._picEffect.collapse.scale += this._picEffect.collapse.scaleSpeed;
if (this._picEffect.collapse.scale >= 1.00) {
this._picEffect.collapse.scale = 1.00;
this._picEffect.collapse.phase = 1;
};
};
} else {
if (this._picEffect.collapse.scale > -1.00) {
this._picEffect.collapse.scale -= this._picEffect.collapse.scaleSpeed;
if (this._picEffect.collapse.scale <= -1.00) {
this._picEffect.collapse.scale = -1.00;
};
};
};
this._picEffect.collapse.scaleX = +this._picEffect.collapse.scale;
this._picEffect.collapse.scaleY = -this._picEffect.collapse.scale;
this._picEffect.collapse.opacity -= this._picEffect.collapse.opacitySpeed;
};
//==============================
// * updatePicCollapseShake
//==============================
Game_Picture.prototype.updatePicCollapseShake = function () {
this._picEffect.collapse.shakeSpeed++
if (this._picEffect.collapse.shakeSpeed > 1) {
this._picEffect.collapse.shakeSpeed = 0;
this._picEffect.collapse.shakeX = - 4 + Math.randomInt(8);
};
};
//==============================
// * setPicQuickMove
//==============================
Game_Picture.prototype.setPicQuickMove = function (data) {
this._picEffect.needRefresh = true;
const mode = this.getQuickMove(String(data.mode));
this._picEffect.quickMove.mode = mode;
if (mode == -1) { this.clearQuickMove(); return };
this._picEffect.quickMove.x = 0;
this._picEffect.quickMove.y = 0;
this._picEffect.quickMove.range = 0;
this._picEffect.quickMove.rangeMax = Math.min(Math.max(Number(data.range), 10), 600);
this._picEffect.quickMove.phase = 0;
this._picEffect.quickMove.speed = Math.min(Math.max(Number(data.speed), 1), 100);
this._picEffect.quickMove.times = Math.min(Math.max(Number(data.times), 1), 9999999);
};
//==============================
// * get Quick Move
//==============================
Game_Picture.prototype.getQuickMove = function (mode) {
if (mode == "Up") {
return 0;
} else if (mode == "Left") {
return 1
} else if (mode == "Right") {
return 2;
} else if (mode == "Down") {
return 3;
}
return -1;
};
//==============================
// * updatePicQuickMove
//==============================
Game_Picture.prototype.updatePicQuickMove = function () {
if (this._picEffect.quickMove.phase == 0) {
this._picEffect.quickMove.range += this._picEffect.quickMove.speed;
if (this._picEffect.quickMove.range >= this._picEffect.quickMove.rangeMax) {
this._picEffect.quickMove.range = this._picEffect.quickMove.rangeMax;
this._picEffect.quickMove.phase = 1;
};
} else {
this._picEffect.quickMove.range -= this._picEffect.quickMove.speed;
if (this._picEffect.quickMove.range <= 0) {
this._picEffect.quickMove.range = 0;
this._picEffect.quickMove.phase = 0;
this._picEffect.quickMove.times--;
if (this._picEffect.quickMove.times <= 0) { this.clearQuickMove() };
};
};
if (this._picEffect.quickMove.mode == 0) {
this._picEffect.quickMove.y = -this._picEffect.quickMove.range;
} else if (this._picEffect.quickMove.mode == 1) {
this._picEffect.quickMove.x = -this._picEffect.quickMove.range;
} else if (this._picEffect.quickMove.mode == 2) {
this._picEffect.quickMove.x = this._picEffect.quickMove.range;
} else if (this._picEffect.quickMove.mode == 3) {
this._picEffect.quickMove.y = this._picEffect.quickMove.range;
};
};
//==============================
// * setPicQuickZoom
//==============================
Game_Picture.prototype.setPicQuickZoom = function (data) {
this._picEffect.needRefresh = true;
const mode = this.getQuickZoom(String(data.mode));
if (mode == -1) { this.clearQuickZoom(); return };
this._picEffect.quickZoom.mode = mode;
this._picEffect.quickZoom.scaleX = 0;
this._picEffect.quickZoom.scaleY = 0;
this._picEffect.quickZoom.range = 0;
this._picEffect.quickZoom.rangeMax = 0.10;
this._picEffect.quickZoom.phase = 0;
const speed = Math.min(Math.max(Number(data.speed), 10), 500);
this._picEffect.quickZoom.speed = 0.005 * speed / 100;
this._picEffect.quickZoom.times = Math.min(Math.max(Number(data.times), 1), 9999999);
};
//==============================
// * get Zoom Move
//==============================
Game_Picture.prototype.getQuickZoom = function (mode) {
if (mode == "Zoom Out & In") {
return 0;
} else if (mode == "Zoom In") {
return 1;
} else if (mode == "Zoom Out") {
return 2;
}
return -1;
};
//==============================
// * updatePicQuickZoom
//==============================
Game_Picture.prototype.updatePicQuickZoom = function () {
if (this._picEffect.quickZoom.phase == 0) {
this._picEffect.quickZoom.range += this._picEffect.quickZoom.speed;
if (this._picEffect.quickZoom.range >= this._picEffect.quickZoom.rangeMax) {
this._picEffect.quickZoom.range = this._picEffect.quickZoom.rangeMax;
this._picEffect.quickZoom.phase = 1;
};
} else {
this._picEffect.quickZoom.range -= this._picEffect.quickZoom.speed;
if (this._picEffect.quickZoom.range <= 0) {
this._picEffect.quickZoom.range = 0;
this._picEffect.quickZoom.phase = 0;
this._picEffect.quickZoom.times--;
if (this._picEffect.quickZoom.times <= 0) { this.clearQuickZoom() };
};
};
if (this._picEffect.quickZoom.mode == 0) {
this._picEffect.quickZoom.scaleX = this._scaleX < 0 ? this._picEffect.quickZoom.range : -this._picEffect.quickZoom.range;
this._picEffect.quickZoom.scaleY = this._picEffect.quickZoom.range;
} else if (this._picEffect.quickZoom.mode == 1) {
this._picEffect.quickZoom.scaleX = this._scaleX < 0 ? this._picEffect.quickZoom.range : -this._picEffect.quickZoom.range;
this._picEffect.quickZoom.scaleY = -this._picEffect.quickZoom.range;
} else if (this._picEffect.quickZoom.mode == 2) {
this._picEffect.quickZoom.scaleX = this._scaleX < 0 ? -this._picEffect.quickZoom.range : this._picEffect.quickZoom.range;
this._picEffect.quickZoom.scaleY = this._picEffect.quickZoom.range;
};
};
//==============================
// * setPicCharMode
//==============================
Game_Picture.prototype.setPicCharMode = function (data) {
this._picEffect.needRefresh = true;
this.clearFlipEffect();
this.clearAnimatedEffect();
this._picEffect.charMode.enabled = true;
this._picEffect.charMode.blinkinterval = Math.min(Math.max(Number(data.blinkInterval), 60), 999);
this._picEffect.charMode.interval = Math.randomInt(this._picEffect.charMode.blinkinterval);
this._picEffect.charMode.index = 0;
this._picEffect.charMode.nextIndex = 2;
this._picEffect.charMode.speed = 0;
this._picEffect.charMode.speaking = false;
this._picEffect.charMode.speakingNow = String(data.speaking) == "true" ? true : false;
};
//==============================
// * update Pic Char Mode
//==============================
Sprite_Picture.prototype.updatePicCharMode = function (picture) {
if (picture._picEffect.charMode.speaking != picture.isPicSpeaking()) {
if (picture._picEffect.charMode.speaking && !picture.isPicSpeaking()) {
picture._picEffect.charMode.interval = Math.randomInt(picture._picEffect.charMode.blinkinterval) + 60;
picture._picEffect.charMode.nextIndex = 0;
this.refreshPicFrame(picture, picture._picEffect.charMode.nextIndex);
};
picture._picEffect.charMode.speaking = picture.isPicSpeaking();
};
if (!picture.isPicSpeaking()) {
if (picture._picEffect.charMode.interval > 0) { picture._picEffect.charMode.interval--; return };
};
picture._picEffect.charMode.speed++;
if (picture._picEffect.charMode.speed > 10) {
picture._picEffect.charMode.speed = 0;
this.refreshPicFrame(picture, picture._picEffect.charMode.nextIndex);
if (picture.isPicSpeaking()) {
picture._picEffect.charMode.nextIndex = picture._picEffect.charMode.nextIndex == 0 ? 1 : 0;
} else {
picture._picEffect.charMode.nextIndex = picture._picEffect.charMode.nextIndex == 0 ? 2 : 0;
if (picture._picEffect.charMode.nextIndex == 2) {
picture._picEffect.charMode.interval = Math.randomInt(picture._picEffect.charMode.blinkinterval) + picture._picEffect.charMode.blinkinterval;
};
};
};
picture._picEffect.charMode.speaking = picture.isPicSpeaking();
};
//==============================
// * setPicShakeEffect
//==============================
Game_Picture.prototype.setPicShakeEffect = function (data) {
this._picEffect.needRefresh = true;
this._picEffect.shakeEffect.mode = this.getBreathMode(String(data.mode));
this._picEffect.shakeEffect.duration = Math.min(Math.max(Number(data.duration), 20), 9999999);
this._picEffect.shakeEffect.range = 0;
this._picEffect.shakeEffect.rangeMax = Math.min(Math.max(Number(data.power), 4), 300);
this._picEffect.shakeEffect.speed1 = 60;
this._picEffect.shakeEffect.speed2 = Math.min(Math.max(Number(data.speed), 1), 7) * 5;
if (this._picEffect.shakeEffect.speed2 > 30) { this._picEffect.shakeEffect.speed2 = 60 }
this._picEffect.shakeEffect.interval = 60;
this._picEffect.shakeEffect.x = 0;
this._picEffect.shakeEffect.y = 0;
};
//==============================
// * updatePicShaking
//==============================
Game_Picture.prototype.updatePicShaking = function () {
this._picEffect.shakeEffect.speed1 += this._picEffect.shakeEffect.speed2;
const sRange = (this._picEffect.shakeEffect.rangeMax / 2);
if (this._picEffect.shakeEffect.speed1 >= this._picEffect.shakeEffect.interval) {
this._picEffect.shakeEffect.speed1 = 0;
this._picEffect.shakeEffect.range = Math.randomInt(this._picEffect.shakeEffect.rangeMax);
if (this._picEffect.shakeEffect.mode == 0) {
this._picEffect.shakeEffect.y = -sRange + this._picEffect.shakeEffect.range;
} else if (this._picEffect.shakeEffect.mode == 1) {
this._picEffect.shakeEffect.x = -sRange + this._picEffect.shakeEffect.range;
} else {
this._picEffect.shakeEffect.x = -sRange + this._picEffect.shakeEffect.range;
this._picEffect.shakeEffect.range = Math.randomInt(this._picEffect.shakeEffect.rangeMax);
this._picEffect.shakeEffect.y = -sRange + this._picEffect.shakeEffect.range;
};
};
this._picEffect.shakeEffect.duration--;
if (this._picEffect.shakeEffect.duration == 0) { this.clearShakeEffect() };
};
//==============================
// * setPicBreathEffect
//==============================
Game_Picture.prototype.setPicBreathEffect = function (data) {
this._picEffect.needRefresh = true;
var power = Number(data.power);
var mode = this.getBreathMode(String(data.mode));
if (mode == -1) { this.clearBreathEffect(); return };
this.clearFlipEffect();
this._picEffect.breathEffect.mode = mode;
this._picEffect.breathEffect.phase = 0;
this._picEffect.breathEffect.duration = 0;
this._picEffect.breathEffect.rangeMax = 0.00050 * power / 100;;
var sp = Number(Math.randomInt(20) * (0.00001).toFixed(5));
this._picEffect.breathEffect.range = Number(sp);
var sp = Number(Math.randomInt(20) * 0.0000001).toFixed(7);
this._picEffect.breathEffect.speed = (0.0000150 + Number(sp)) * power / 100;
this._picEffect.breathEffect.scale = 0.000000;
};
//==============================
// * get Breath Mode
//==============================
Game_Picture.prototype.getBreathMode = function (mode) {
if (mode == "Vertical") {
return 0;
} else if (mode == "Horizontal") {
return 1
} else if (mode == "Vertical & Horizontal") {
return 2;
}
return -1;
};
//==============================
// * updatePicBreath
//==============================
Game_Picture.prototype.updatePicBreath = function () {
if (this._picEffect.breathEffect.phase == 0) {
this._picEffect.breathEffect.range -= this._picEffect.breathEffect.speed;
if (this._picEffect.breathEffect.range <= -this._picEffect.breathEffect.rangeMax) {
this._picEffect.breathEffect.range = -this._picEffect.breathEffect.rangeMax;
this._picEffect.breathEffect.phase = 1;
};
} else {
this._picEffect.breathEffect.range += this._picEffect.breathEffect.speed;
if (this._picEffect.breathEffect.range >= this._picEffect.breathEffect.rangeMax) {
this._picEffect.breathEffect.range = this._picEffect.breathEffect.rangeMax;
this._picEffect.breathEffect.phase = 0;
};
};
this._picEffect.breathEffect.scale -= this._picEffect.breathEffect.range;
if (this._picEffect.breathEffect.mode == 0) {
this._picEffect.breathEffect.scaleY = this._picEffect.breathEffect.scale;
} else if (this._picEffect.breathEffect.mode == 1) {
this._picEffect.breathEffect.scaleX = this._scaleX > 0 ? -this._picEffect.breathEffect.scale : this._picEffect.breathEffect.scale;
} else {
this._picEffect.breathEffect.scaleY = this._picEffect.breathEffect.scale;
this._picEffect.breathEffect.scaleX = this._scaleX > 0 ? -this._picEffect.breathEffect.scale : this._picEffect.breathEffect.scale;
};
};
//==============================
// * get Float Mode
//==============================
Game_Picture.prototype.getFloatMode = function (mode) {
if (mode == "Vertical") {
return 0;
} else if (mode == "Vertical Left") {
return 1;
} else if (mode == "Vertical Right") {
return 2;
};
return -1;
};
//==============================
// * setPicFloatEffect
//==============================
Game_Picture.prototype.setPicFloatEffect = function (data) {
this._picEffect.needRefresh = true;
var power = Number(data.power);
var mode = this.getFloatMode(String(data.mode));
if (mode == -1) { this.clearFloatEffect(); return };
this._picEffect.floatEffect.mode = mode;
this._picEffect.floatEffect.phase = 0;
this._picEffect.floatEffect.duration = 0;
this._picEffect.floatEffect.rangeMax = 1.5 * power / 100;;
var sp = Number(Math.randomInt(10) * 0.01);
this._picEffect.floatEffect.range = Number(sp);
var sp = Number(Math.randomInt(20) * 0.001).toFixed(3);
this._picEffect.floatEffect.speed = (0.05 + Number(sp)) * power / 100;
this._picEffect.floatEffect.y_Real = 0.0;
this._picEffect.floatEffect.x = 0;
this._picEffect.floatEffect.y = 0;
};
//==============================
// * updatePicFloat
//==============================
Game_Picture.prototype.updatePicFloat = function () {
if (this._picEffect.floatEffect.phase == 0) {
this._picEffect.floatEffect.range -= this._picEffect.floatEffect.speed;
if (this._picEffect.floatEffect.range <= -this._picEffect.floatEffect.rangeMax) {
this._picEffect.floatEffect.range = -this._picEffect.floatEffect.rangeMax;
this._picEffect.floatEffect.phase = 1;
};
} else {
this._picEffect.floatEffect.range += this._picEffect.floatEffect.speed;
if (this._picEffect.floatEffect.range >= this._picEffect.floatEffect.rangeMax) {
this._picEffect.floatEffect.range = this._picEffect.floatEffect.rangeMax;
this._picEffect.floatEffect.phase = 0;
};
};
this._picEffect.floatEffect.y_Real -= this._picEffect.floatEffect.range;
this._picEffect.floatEffect.y = -this._picEffect.floatEffect.y_Real;
if (this._picEffect.floatEffect.mode == 1) {
this._picEffect.floatEffect.x = -this._picEffect.floatEffect.y_Real;
} else if (this._picEffect.floatEffect.mode == 2) {
this._picEffect.floatEffect.x = this._picEffect.floatEffect.y_Real;
};
};
//==============================
// * setFlipEffect
//==============================
Game_Picture.prototype.setPicFlipEffect = function (data) {
this._picEffect.needRefresh = true;
var mode = this.getBreathMode(String(data.mode));
this._picEffect.flipEffect.mode = mode;
if (mode == -1 || this.isPicCharMode()) { this.clearFlipEffect(); return };
this.clearBreathEffect();
this._picEffect.flipEffect.skip = false;
this._picEffect.flipEffect.loop = String(data.loop) == "true" ? true : false;
this._picEffect.flipEffect.twoFaces.enabled = String(data.twoFaces) == "true" ? true : false;
this._picEffect.flipEffect.twoFaces.index = 0;
this._picEffect.flipEffect.twoFaces.needRefresh = false;
this._picEffect.flipEffect.twoFaces.phase1 = 0;
this._picEffect.flipEffect.twoFaces.phase2 = 0;
if (this.isPicTwoFaces()) { this.clearAnimatedEffect() };
this._picEffect.flipEffect.speed = 0.01 * Number(data.speed) / 100;
this._picEffect.flipEffect.scale = 0;
this._picEffect.flipEffect.scaleX = 0;
this._picEffect.flipEffect.scaleY = 0;
};
//==============================
// * pic Flip Sides
//==============================
Game_Picture.prototype.picflipSides = function () {
this._picEffect.flipEffect.twoFaces.needRefresh = true;
this._picEffect.flipEffect.twoFaces.index++;
if (this._picEffect.flipEffect.twoFaces.index > 1) { this._picEffect.flipEffect.twoFaces.index = 0 };
};
//==============================
// * need Pic Flip Sides
//==============================
Game_Picture.prototype.needPicflipSides = function () {
if (this._picEffect.flipEffect.twoFaces.phase1 == this._picEffect.flipEffect.twoFaces.phase2) { return false };
return true;
};
//==============================
// * need Pic Flip Sides
//==============================
Game_Picture.prototype.updateFlipeSides = function () {
this._picEffect.flipEffect.twoFaces.phase1 = this._picEffect.flipEffect.scale > -1.00 ? 0 : 1;
if (this.needPicflipSides()) { this.picflipSides() };
this._picEffect.flipEffect.twoFaces.phase2 = this._picEffect.flipEffect.twoFaces.phase1;
};
//==============================
// * updatePicflip
//==============================
Game_Picture.prototype.updatePicflip = function () {
if (this._picEffect.flipEffect.skip) { return };
if (this._picEffect.flipEffect.phase == 0) {
this._picEffect.flipEffect.scale -= this._picEffect.flipEffect.speed;
if (this._picEffect.flipEffect.scale <= -2.00) {
this._picEffect.flipEffect.scale = -2.00;
this._picEffect.flipEffect.phase = 1;
if (!this._picEffect.flipEffect.loop) { this._picEffect.flipEffect.skip = true };
};
} else {
this._picEffect.flipEffect.scale += this._picEffect.flipEffect.speed;
if (this._picEffect.flipEffect.scale >= 0.00) {
this._picEffect.flipEffect.scale = 0.00;
this._picEffect.flipEffect.phase = 0;
};
};
if (this._picEffect.flipEffect.mode == 0) {
this._picEffect.flipEffect.scaleY = this._picEffect.flipEffect.scale;
} else if (this._picEffect.flipEffect.mode == 1) {
this._picEffect.flipEffect.scaleX = this._picEffect.flipEffect.scale;
} else {
this._picEffect.flipEffect.scaleY = this._picEffect.flipEffect.scale;
this._picEffect.flipEffect.scaleX = this._picEffect.flipEffect.scale;
};
if (this.isPicTwoFaces()) { this.updateFlipeSides() };
};
//==============================
// * get Fade Mode
//==============================
Game_Picture.prototype.getFadeMode = function (mode) {
if (mode == "Smooth") {
return 0;
} else if (mode == "Blinking") {
return 1;
};
return -1;
};
//==============================
// * setPicFadeEffect
//==============================
Game_Picture.prototype.setPicFadeEffect = function (data) {
this._picEffect.needRefresh = true;
const mode = this.getFadeMode(String(data.mode));
if (mode == -1) { this.clearFadeEffect(); return };
this.clearFlipEffect();
this._picEffect.fadeEffect.mode = mode;
this._picEffect.fadeEffect.phase = 1;
this._picEffect.fadeEffect.inteval = 0;
this._picEffect.fadeEffect.intevalMax = Math.min(Math.max(Number(data.interval), 10), 1000);
this._picEffect.fadeEffect.rangeMax = 255;
this._picEffect.fadeEffect.repeatTimes = 0;
this._picEffect.fadeEffect.range = 0;
this._picEffect.fadeEffect.speed = Math.min(Math.max(Number(data.speed), 1), 50);
this._picEffect.fadeEffect.opacity = 0;
if (this._picEffect.fadeEffect.mode == 1) {
this._picEffect.fadeEffect.repeatTimes = 1;
this._picEffect.fadeEffect.speed = 50;
if (this._picEffect.fadeEffect.intevalMax < 30) {
this._picEffect.fadeEffect.intevalMax = 30;
};
this._picEffect.fadeEffect.opacity = -255;
this._picEffect.fadeEffect.inteval = this._picEffect.fadeEffect.intevalMax;
};
};
//==============================
// * updatePicFade
//==============================
Game_Picture.prototype.updatePicFade = function () {
if (this._picEffect.fadeEffect.inteval > 0) { this._picEffect.fadeEffect.inteval--; return };
if (this._picEffect.fadeEffect.phase == 0) {
this._picEffect.fadeEffect.range -= this._picEffect.fadeEffect.speed;
if (this._picEffect.fadeEffect.range <= 0) {
this._picEffect.fadeEffect.range = 0;
this._picEffect.fadeEffect.phase = 1;
if (this._picEffect.fadeEffect.mode == 0) {
this._picEffect.fadeEffect.inteval = this._picEffect.fadeEffect.intevalMax;
};
};
} else {
this._picEffect.fadeEffect.range += this._picEffect.fadeEffect.speed;
if (this._picEffect.fadeEffect.range >= this._picEffect.fadeEffect.rangeMax) {
this._picEffect.fadeEffect.range = this._picEffect.fadeEffect.rangeMax;
this._picEffect.fadeEffect.phase = 0;
if (this._picEffect.fadeEffect.mode == 0) {
this._picEffect.fadeEffect.inteval = this._picEffect.fadeEffect.intevalMax;
} else if (this._picEffect.fadeEffect.repeatTimes > 0) {
this._picEffect.fadeEffect.repeatTimes--;
if (this._picEffect.fadeEffect.repeatTimes == 0) {
this._picEffect.fadeEffect.repeatTimes = Math.randomInt(3) + 1;
const interv = this._picEffect.fadeEffect.intevalMax + Math.randomInt(this._picEffect.fadeEffect.intevalMax / 2);
this._picEffect.fadeEffect.inteval = interv;
}
}
};
};
this._picEffect.fadeEffect.opacity = -this._picEffect.fadeEffect.range;
};
//==============================
// * setPicAnimatedEffect
//==============================
Game_Picture.prototype.setPicAnimatedEffect = function (data) {
if (this.isPicCharMode()) { return };
this._picEffect.needRefresh = true;
this._picEffect.animatedEffect.enabled = true;
this._picEffect.animatedEffect.frameIndex = 0;
this._picEffect.animatedEffect.frameMax = Math.min(Math.max(Number(data.frames), 1), 100);
this._picEffect.animatedEffect.speedReal = 5 * Math.min(Math.max(Number(data.speed), 1), 7);
if (this._picEffect.animatedEffect.speedReal > 30) { this._picEffect.animatedEffect.speedReal = 61 };
this._picEffect.animatedEffect.speed = this._picEffect.animatedEffect.speedReal + 1;
this._picEffect.animatedEffect.interval = 60;
};
//==============================
// * updatePicBind
//==============================
Game_Picture.prototype.updatePicBind = function (data) {
if (!$gameParty.inBattle()) {
this._picEffect.bindEffect.x_offset = -$gameMap.displayX() * $gameMap.tileWidth();
this._picEffect.bindEffect.y_offset = -$gameMap.displayY() * $gameMap.tileHeight();
} else {
this._picEffect.bindEffect.x_offset = 0;
this._picEffect.bindEffect.y_offset = 0;
};
};
//==============================
// * update Picture Effects
//==============================
Game_Picture.prototype.updatePictureEffects = function () {
if (this.picIsFlip()) {
this.updatePicflip();
} else if (this.picIsBreathing()) {
this.updatePicBreath();
};
if (this.picIsFloating()) { this.updatePicFloat() };
if (this.picIsShaking()) { this.updatePicShaking() };
if (this.picIsFading()) { this.updatePicFade() };
if (this.isPicSwing()) { this.updatePicSwing() };
if (this.picIsQuickMove()) { this.updatePicQuickMove() };
if (this.picIsQuickZoom()) { this.updatePicQuickZoom() };
if (this.picIsBind()) {
this.updatePicBind()
} else {
this._picEffect.bindEffect.x_offset = 0;
this._picEffect.bindEffect.y_offset = 0;
};
if (this.picIsCollapsing()) { this.updatePicCollapse() };
if (this.picIsCameraMode()) { this.updatePicCamera() }
};
//==============================
// * Update
//==============================
const _mog_picEffects_game_picture = Game_Picture.prototype.update;
Game_Picture.prototype.update = function () {
_mog_picEffects_game_picture.call(this);
this.updatePictureEffects()
};
//=============================================================================
// ■■■ Sprite Picture ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Initialize
//==============================
const _mog_picEffects_sprite_picture_initialize = Sprite_Picture.prototype.initialize;
Sprite_Picture.prototype.initialize = function (pictureId) {
_mog_picEffects_sprite_picture_initialize.call(this, pictureId);
this._picAnimated = false;
};
//==============================
// * redataPicEffect
//==============================
Sprite_Picture.prototype.redataPicEffect = function (picture) {
if (picture.picIsFlip()) {
if (picture._picEffect.flipEffect.mode == 0) {
this.scale.y = 1.00;
} else if (picture._picEffect.flipEffect.mode == 1) {
this.scale.x = 1.00;
} else {
this.scale.x = 1.00;
this.scale.y = 1.00;
};
};
if (picture.picIsFading()) { this.opacity = 255 };
};
//==============================
// * update Picture Effects
//==============================
Sprite_Picture.prototype.updatePictureEffects = function (picture) {
this.redataPicEffect(picture);
this.x += picture.picEffectX();
this.y += picture.picEffectY();
this.scale.x += picture.picEffectScaleX();
this.scale.y += picture.picEffectScaleY();
this.opacity += picture.picEffectOpacity();
this.rotation += picture.picEffectRotation();
if (picture.picIsFlip()) {
this.updatepicFlip(picture);
} else if (picture.picIsBreathing()) {
this.updatepicBreathing(picture);
} else if (picture.picIsQuickZoom()) {
this.updatePicQuickZoom(picture)
};
if (picture.isPicCharMode()) {
this.updatePicCharMode(picture)
} else if (picture.picIsAnimated()) { this.updatePicAnimated(picture) };
if (picture.picIsCollapsing()) { this.updatePicCollapse(picture) };
if (picture._picEffect.ignoreWave) { this.updateIgnoreWave(picture) };
};
//==============================
// * updateIgnoreWave
//==============================
Sprite_Picture.prototype.updateIgnoreWave = function (picture) {
this.x -= $gameScreen._picEffect.wave.x;
this.y -= $gameScreen._picEffect.wave.y;
};
//==============================
// * updatePicQuickZoom
//==============================
Sprite_Picture.prototype.updatePicQuickZoom = function (picture) {
this.anchor.y = 1;
this.anchor.x = 0.5;
if (this.scale.x > 0) {
this.x += this._picData.cw / 2;
} else {
this.x -= this._picData.cw / 2;
}
this.y += this._picData.ch;
};
//==============================
// * updatepicFlip
//==============================
Sprite_Picture.prototype.updatepicFlip = function (picture) {
const cw = this._picData.cw / 2;
const ch = this._picData.ch / 2;
if (picture._picEffect.flipEffect.mode == 0) {
this.anchor.y = 0.5;
this.y += ch;
} else if (picture._picEffect.flipEffect.mode == 1) {
this.anchor.x = 0.5;
this.x += picture._scaleX > 0 ? cw : -cw;
} else {
this.anchor.x = 0.5;
this.anchor.y = 0.5;
this.x += picture._scaleX > 0 ? cw : -cw;
this.y += ch;
};
if (picture._picEffect.flipEffect.twoFaces.needRefresh) {
picture._picEffect.flipEffect.twoFaces.needRefresh = false;
this.refreshPicFrame(picture, picture._picEffect.flipEffect.twoFaces.index);
};
};
//==============================
// * updatepicBreathing
//==============================
Sprite_Picture.prototype.updatepicBreathing = function (picture) {
this.anchor.y = 1;
this.y += this._picData.ch;
if (picture._picEffect.breathEffect.mode > 0) {
this.anchor.x = 0.5;
if (this.scale.x > 0) {
this.x += this._picData.cw / 2;
} else {
this.x -= this._picData.cw / 2;
}
};
};
//==============================
// * updatePicAnimated
//==============================
Sprite_Picture.prototype.updatePicAnimated = function (picture) {
picture._picEffect.animatedEffect.speed += picture._picEffect.animatedEffect.speedReal;
if (picture._picEffect.animatedEffect.speed >= picture._picEffect.animatedEffect.interval) {
picture._picEffect.animatedEffect.speed = 0;
picture._picEffect.animatedEffect.frameIndex++;
if (picture._picEffect.animatedEffect.frameIndex >= picture._picEffect.animatedEffect.frameMax) {
picture._picEffect.animatedEffect.frameIndex = 0;
};
this.refreshPicFrame(picture, picture._picEffect.animatedEffect.frameIndex);
};
};
//==============================
// * updatePicCollapse
//==============================
Sprite_Picture.prototype.updatePicCollapse = function (picture) {
if (picture._picEffect.collapse.mode == 0) {
if (picture._picEffect.collapse.frameY < this._picData.ch) {
const speed = (this._picData.ch / picture._picEffect.collapse.speed2) * picture._picEffect.collapse.speed1 / 100;
picture._picEffect.collapse.range = speed;
picture._picEffect.collapse.frameY += picture._picEffect.collapse.range;
this.setFrame(0, -picture._picEffect.collapse.frameY, this._picData.cw, this._picData.ch);
this.y -= picture._picEffect.collapse.frameY;
picture._picEffect.collapse.opacity -= (255 / this._picData.ch) * picture._picEffect.collapse.speed1 / 100;
} else {
picture._picEffect.collapse.opacity = -255;
};
if (picture._picEffect.breathEffect.mode >= 0) { this.updatepicBreathing(picture) };
};
if (picture._picEffect.collapse.mode > 0) {
this.anchor.y = 1;
this.y += this._picData.ch;
this.anchor.x = 0.5;
if (this.scale.x > 0) {
this.x += this._picData.cw / 2;
} else {
this.x -= this._picData.cw / 2;
};
};
this.blendMode = picture._picEffect.collapse.blendMode;
};
//==============================
// * refreshPicFrame
//==============================
Sprite_Picture.prototype.refreshPicFrame = function (picture, index) {
const x = index * this._picData.cw;
this.setFrame(x, 0, this._picData.cw, this._picData.ch);
};
//==============================
// * setPicEffectData
//==============================
Sprite_Picture.prototype.setPicEffectData = function (picture) {
picture._picEffect.needRefresh = false;
this._picData = {};
this._picData.ch = this.bitmap.height;
this._picAnimated = picture.picIsAnimated();
if (picture.isPicCharMode()) {
this._picData.cw = this.bitmap.width / 3;
} else if (picture.isPicTwoFaces()) {
this._picData.cw = this.bitmap.width / 2;
} else {
this._picData.cw = picture.picIsAnimated() ? this.bitmap.width / picture._picEffect.animatedEffect.frameMax : this.bitmap.width;
};
this.refreshPicFrame(picture, 0);
};
//==============================
// * needRefreshData
//==============================
Sprite_Picture.prototype.needRefreshData = function (picture) {
if (!this.bitmap) { return false };
if (!this.bitmap.isReady()) { return false };
if (picture._picEffect.needRefresh) { return true };
if (this._picAnimated != picture.picIsAnimated()) { return true };
if (this._picData) { return false };
return true;
};
//==============================
// * clear Pic Data
//==============================
Sprite_Picture.prototype.clearPicData = function () {
this._picData = null;
};
//==============================
// ♦ ALIAS ♦ Update
//==============================
const _mog_picEffects_sprite_picture_update = Sprite_Picture.prototype.update;
Sprite_Picture.prototype.update = function () {
_mog_picEffects_sprite_picture_update.call(this);
const pic = this.picture();
if (pic) {
if (this.needRefreshData(pic)) { this.setPicEffectData(pic) };
if (this.visible && this._picData) { this.updatePictureEffects(pic) };
} else {
if (this._picData) { this.clearPicData() };
};
};
})();