//=========================================================================== // MOG_DizzyEffect.js // Translate to Japanese : fungamemake.com //=========================================================================== /*: * @plugindesc (v1.0) Adiciona o efeito Dizzy. * @author Moghunter * * @help * =========================================================================== * +++ MOG - Dizzy Effect (v1.0) +++ * By Moghunter * https://atelierrgss.wordpress.com/ * =========================================================================== * Adiciona o efeito Dizzy, esse efeito pode ser utilizado no mapa * e na batalha. * * =========================================================================== * PLUGIN COMMAND * =========================================================================== * Para ativar o efeito coloque o comando abaixo. * * dizzy_effect : POWER : DURATION : BLEND_MODE : OPACITY : REALTIME * * POWER - Poder do efeito (1..10) * DURATION - Duração do efeito (30..999) * BLEND_MODE - Efeito de brilho (0..2) * OPACITY - Opacidade (30..255); * REALTIME - O efeito será atualizado a cada imagem. * (*Pode causar Lag se o poder do efeito for muito alto) * * Exemplo * * dizzy_effect : 2 : 260 : 0 : 255 : true * * =========================================================================== * Para cancelar o efeito use o comando abaixo. * * dizzy_clear * * =========================================================================== * SCRIPT COMMAND * =========================================================================== * Para ativar o efeito Dizzy através do Script command use o código abaixo. * * $gameSystem.dizzeEffect(power,duration,blendType,opacity,realTime) * * Exemplo * * $gameSystem.dizzeEffect(1,1,0,150,false); * * =========================================================================== * SKILL NOTETAGS * =========================================================================== * Para ativar o efeito Dizzy nas habilidades ou items use o comentário abaixo * caixa de notas da Habilidade/Item. * * Dizzy Animation * */ /*:ja * @plugindesc (v1.0) マップ上/戦闘にディジーエフェクトを追加します。 * @author Moghunter * * @help * 翻訳:ムノクラ * https://fungamemake.com/ * https://twitter.com/munokura/ * * =========================================================================== * +++ MOG - Dizzy Effect (v1.0) +++ * By Moghunter * https://atelierrgss.wordpress.com/ * =========================================================================== * マップ上/戦闘にディジーエフェクトを追加します。 * * =========================================================================== * プラグインコマンド * =========================================================================== * 以下のコマンドで効果を有効にします。 * * dizzy_effect : POWER : DURATION : BLEND_MODE : OPACITY : REALTIME * * POWER - 効果力 (1から10) * DURATION - 効果持続時間 (30から999) * BLEND_MODE - 合成方法 (0:通常 / 1:加算 / 2:乗算) * OPACITY - 不透明度 (30から255) * REALTIME - 効果は各画像で更新されます。 * (*効果力が高すぎるとラグが発生する可能性があります。) * * 例 * * dizzy_effect : 2 : 260 : 0 : 255 : true * * =========================================================================== * 以下のコマンドで効果をキャンセルします。 * * dizzy_clear * * =========================================================================== * スクリプトコマンド * =========================================================================== * 以下のスクリプトコマンドで効果を有効にします。 * * $gameSystem.dizzeEffect(power,duration,blendType,opacity,realTime) * * 例 * * $gameSystem.dizzeEffect(1,1,0,150,false); * * =========================================================================== * スキル/アイテムのメモタグ * =========================================================================== * 以下のメモタグを、スキル/アイテムのメモ欄へ入力することで、有効にします。 * * Dizzy Animation * */ //=========================================================================== // ** PLUGIN PARAMETERS //=========================================================================== var Imported = Imported || {}; Imported.MOG_DizzyEffect = true; var Moghunter = Moghunter || {}; //=========================================================================== // ** Game_System //=========================================================================== //============================== // * Initialize //============================== var _mog_DizzyEffect_temp_initialize = Game_Temp.prototype.initialize; Game_Temp.prototype.initialize = function () { _mog_DizzyEffect_temp_initialize.call(this); this._dizzyEffectLoadTime = 20; }; //=========================================================================== // ** Game_System //=========================================================================== //============================== // * Initialize //============================== var _mog_DizzyEffect_sys_initialize = Game_System.prototype.initialize; Game_System.prototype.initialize = function () { _mog_DizzyEffect_sys_initialize.call(this); this.setDizzyEffectSystem(); }; //============================== // * set Dizzy Effect System //============================== Game_System.prototype.setDizzyEffectSystem = function () { this._dizzyEffect = {}; this._dizzyEffect.enabled = false; this._dizzyEffect.refresh = false; this._dizzyEffect.loop = false; this._dizzyEffect.speed = 10; this._dizzyEffect.duration = 60; this._dizzyEffect.time = 60; this._dizzyEffect.reloadTime = 0; this._dizzyEffect.frames = 1; this._dizzyEffect.mode = 0; this._dizzyEffect.opacity = 255; this._dizzyEffect.blendMode = 0; this._dizzyEffect.realTime = true; this._dizzySpritesData = []; }; //============================== // * Dizze Effect //============================== Game_System.prototype.dizzeEffect = function (power, duration, blendType, opacity, realTime) { var power2 = Math.min(Math.max(Number(power), 1), 10); var duration2 = Math.min(Math.max(Number(duration), 20), 9999); var blendType2 = Math.min(Math.max(Number(blendType), 0), 2); var opacity2 = Math.min(Math.max(Number(opacity), 60), 255); var realTime2 = String(realTime) === "true" ? true : false; $gameSystem._dizzyEffect.frames = power2; $gameSystem._dizzyEffect.time = duration2; $gameSystem._dizzyEffect.blendMode = blendType2; $gameSystem._dizzyEffect.opacity = opacity2; $gameSystem._dizzyEffect.realTime = realTime2; $gameSystem._dizzyEffect.refresh = true; }; //=========================================================================== // ** Scene Manager //=========================================================================== SceneManager._dizzyBitmap = null; //============================== // * Snap For Dizzy //============================== SceneManager.snapForDizzy = function () { this._dizzyBitmap = this.snap(); }; //=========================================================================== // ** Scene Map //=========================================================================== //============================== // * can Call Menu Dizzy //============================== Scene_Map.prototype.canCallMenuDizzy = function () { if ($gameSystem._dizzyEffect.duration <= 20) { return true }; if ($gameTemp._dizzyEffectLoadTime > 0) { return false }; return true }; //============================== // * call Menu //============================== var _mog_dizzyEffect_sMenu_callMenu = Scene_Map.prototype.callMenu; Scene_Map.prototype.callMenu = function () { if (!this.canCallMenuDizzy()) { return }; _mog_dizzyEffect_sMenu_callMenu.call(this); }; //=========================================================================== // ** Game_Interpreter //=========================================================================== //============================== // * PluginCommand //============================== var _mog_DizzyEffect_pluginCommand = Game_Interpreter.prototype.pluginCommand Game_Interpreter.prototype.pluginCommand = function (command, args) { _mog_DizzyEffect_pluginCommand.call(this, command, args) this.dizzyEffectPluginCommand(command, args); return true; }; //============================== // * Dizzy Effect Plugin Command //============================== Game_Interpreter.prototype.dizzyEffectPluginCommand = function (command, args) { if (command === "dizzy_effect") { var power = args[1] != null ? args[1] : 2; var duration = args[3] != null ? args[3] : 0; var blendType = args[5] != null ? args[5] : 0; var opacity = args[7] != null ? args[7] : 255; var realTime = args[9] != null ? args[9] : false; $gameSystem.dizzeEffect(power, duration, blendType, opacity, realTime) } else if (command === "dizzy_clear") { $gameSystem._dizzyEffect.duration = 0; }; }; //=========================================================================== // ** Game Action //=========================================================================== //============================== // * Execute Damage //============================== var _mog_dizzyEffect_gAction_applyItemUserEffect = Game_Action.prototype.applyItemUserEffect; Game_Action.prototype.applyItemUserEffect = function (target) { _mog_dizzyEffect_gAction_applyItemUserEffect.call(this, target); if (this.canUseDizzyAnimation(target)) { this.executeDizzyAnimation(target) }; }; //============================== // * can Use Dizzy Animation //============================== Game_Action.prototype.canUseDizzyAnimation = function (target) { var enable = false if (!this.item()) { enable = false }; var notes = this.item().note.split(/[\r\n]+/); notes.forEach(function (note) { if (note.toLowerCase() == "dizzy effect") { enable = true }; }, this); return enable }; //============================== // ** Execute Dizzy Animation //============================== Game_Action.prototype.executeDizzyAnimation = function (target) { $gameSystem.dizzeEffect(1, 1, 0, 150, false); }; //=========================================================================== // ** Scene Base //=========================================================================== //============================== // * dizzy Sprite //============================== Scene_Base.prototype.dizzySprite = function () { return this._spriteset._dizzySprite; }; //============================== // * dizzy Sprite Data //============================== Scene_Base.prototype.dizzySpriteData = function () { return $gameSystem._dizzySpritesData; }; //============================== // * record Dizzy Data //============================== Scene_Base.prototype.recordDizzyData = function () { $gameSystem._dizzySpritesData = []; for (var i = 0; i < this.dizzySprite()._sprites.length; i++) { var sprite = this.dizzySprite()._sprites[i]; $gameSystem._dizzySpritesData[i] = {}; $gameSystem._dizzySpritesData[i].x = sprite.x; $gameSystem._dizzySpritesData[i].y = sprite.y; $gameSystem._dizzySpritesData[i].opacity = sprite.opacity; $gameSystem._dizzySpritesData[i].scaleX = sprite.scale.x; $gameSystem._dizzySpritesData[i].scaleY = sprite.scale.y; $gameSystem._dizzySpritesData[i].rotation = sprite.rotation; $gameSystem._dizzySpritesData[i].blendMode = sprite.scale.blendMode; $gameSystem._dizzySpritesData[i].rt = sprite.rt; $gameSystem._dizzySpritesData[i].sc = sprite.sc; $gameSystem._dizzySpritesData[i].wait = sprite.wait; }; }; //=========================================================================== // ** Scene Map //=========================================================================== //============================== // * Terminate //============================== var _mog_dizzyEffect_scMap_terminate = Scene_Map.prototype.terminate; Scene_Map.prototype.terminate = function () { if (this._spriteset && this.dizzySprite() && this.dizzySprite()._sprites) { this.recordDizzyData() }; _mog_dizzyEffect_scMap_terminate.call(this); }; //=========================================================================== // ** Spriteset Base //=========================================================================== //============================== // * Initialize //============================== var _mog_dizzyEffect_sprtBase_initialize = Spriteset_Base.prototype.initialize; Spriteset_Base.prototype.initialize = function () { _mog_dizzyEffect_sprtBase_initialize.call(this); this.createDizzySprite(); }; //============================== // * create Dizzy Sprite //============================== Spriteset_Base.prototype.createDizzySprite = function () { this._dizzySprite = new DizzySprites(); this._dizzySprite.z = 500; this.addChild(this._dizzySprite); }; //=========================================================================== // * SpriteWeatherEX //=========================================================================== function DizzySprites() { this.initialize.apply(this, arguments); }; DizzySprites.prototype = Object.create(Sprite.prototype); DizzySprites.prototype.constructor = DizzySprites; //============================== // * Initialize //============================== DizzySprites.prototype.initialize = function () { Sprite.prototype.initialize.call(this); this.z = 500; this.createField(); }; //============================== // * Data //============================== DizzySprites.prototype.data = function () { return $gameSystem._dizzyEffect; }; //============================== // * Data Sprites //============================== DizzySprites.prototype.dataSprites = function () { return $gameSystem._dizzySpritesData; }; //============================== // * create Field //============================== DizzySprites.prototype.createField = function () { this._field = new Sprite(); this.addChild(this._field); }; //============================== // * dizzy Bitmap //============================== DizzySprites.prototype.dizzyBitmap = function () { return SceneManager._dizzyBitmap; }; //============================== // * remove Sprites //============================== DizzySprites.prototype.removeSprites = function () { for (var i = 0; i < this._sprites.length; i++) { this._field.removeChild(this._sprites[i]); }; this._sprites = null; SceneManager._dizzyBitmap = null; }; //============================== // * create Sprites //============================== DizzySprites.prototype.createSprites = function () { this.data().duration = this.data().time; this._sprites = []; SceneManager.snapForDizzy(); for (var i = 0; i < this.data().frames; i++) { this._sprites[i] = new Sprite(this.dizzyBitmap()); this.setupSpriteEffect(this._sprites[i], i, this.data().frames); this._field.addChild(this._sprites[i]); }; }; //============================== // * clear Base Parameters //============================== DizzySprites.prototype.clearBaseParameters = function (sprite) { sprite.x = this.centerX(); sprite.y = this.centerY(); sprite.anchor.x = 0.5; sprite.anchor.y = 0.5; sprite.scale.x = 1.00; sprite.scale.y = 1.00 sprite.rotation = 0; sprite.opacity = this.data().opacity; sprite.blendMode = this.data().blendMode; }; //============================== // * refresh Bitmap //============================== DizzySprites.prototype.refreshBitmap = function (sprite) { this.visible = false; SceneManager.snapForDizzy(); this.visible = true; sprite.bitmap = this.dizzyBitmap(); }; //============================== // * prepare Refresh //============================== DizzySprites.prototype.prepareRefresh = function (sprite, i) { this.clearBaseParameters(sprite) if (this.data().realTime) { this.refreshBitmap(sprite) }; this._field.children.sort(function (a, b) { return a.scale.x - b.scale.x }); }; //============================== // * setup Sprite Effect //============================== DizzySprites.prototype.setupSpriteEffect = function (sprite, i, itemMax) { this.clearBaseParameters(sprite); var frTime = Math.floor(50 / this.data().frames); sprite.wait = -frTime + Math.abs(frTime * (-itemMax + i)); if (sprite.wait < 0) { sprite.wait = 0 } sprite.rt = 0; sprite.sc = 0.01; }; //============================== // * load Sprites //============================== DizzySprites.prototype.loadSprites = function () { this._sprites = []; if (!SceneManager._dizzyBitmap) { SceneManager.snapForDizzy() }; for (var i = 0; i < this.dataSprites().length; i++) { this._sprites[i] = new Sprite(this.dizzyBitmap()); this.clearBaseParameters(this._sprites[i]); this.loadSpriteData(this._sprites[i], this.dataSprites()[i]); this._field.addChild(this._sprites[i]); }; $gameSystem._dizzySpritesData = []; this._field.children.sort(function (a, b) { return a.scale.x - b.scale.x }); }; //============================== // * load Sprite Data //============================== DizzySprites.prototype.loadSpriteData = function (sprite, data) { sprite.x = data.x; sprite.y = data.y; sprite.scale.x = data.scaleX; sprite.scale.y = data.scaleY; sprite.opacity = data.opacity; sprite.rotation = data.rotation; sprite.scale.blendMode = data.blendMode; sprite.rt = data.rt; sprite.sc = data.sc; sprite.wait = data.wait; }; //============================== // * refresh Dizzy Sprites //============================== DizzySprites.prototype.refreshDizzySprites = function (preLoad) { this.data().refresh = false; if (this._sprites) { this.removeSprites() }; if (preLoad) { this.loadSprites(); } else { this.createSprites(); }; }; //============================== // * center X //============================== DizzySprites.prototype.centerX = function () { return Graphics.boxWidth / 2; }; //============================== // * center Y //============================== DizzySprites.prototype.centerY = function () { return Graphics.boxHeight / 2; }; //============================== // * update Sprites //============================== DizzySprites.prototype.updateSprites = function (sprite, i) { sprite.x = this.centerX(); sprite.y = this.centerY(); if (sprite.wait > 0) { sprite.wait--; if (this.data().realTime && sprite.wait <= 0) { this.refreshBitmap(sprite) }; return; }; sprite.opacity -= 5; sprite.rotation += sprite.rt; sprite.scale.x += sprite.sc; sprite.scale.y += sprite.sc; if (sprite.opacity === 0 && this.data().duration > 0) { this.prepareRefresh(sprite, i) }; }; //============================== // * need Remove Sprites //============================== DizzySprites.prototype.needRemoveSprites = function (needClear) { if (!needClear) { return false }; if (this.data().loop) { return false }; if (this.data().duration > 0) { return false }; return true; }; //============================== // * update //============================== DizzySprites.prototype.update = function () { Sprite.prototype.update.call(this); if ($gameTemp._dizzyEffectLoadTime > 0) { $gameTemp._dizzyEffectLoadTime-- }; if (this.data().refresh) { this.refreshDizzySprites(false) }; if (!this._sprites && this.dataSprites().length > 0 && $gameTemp._dizzyEffectLoadTime === 0) { this.refreshDizzySprites(true) }; if (this.data().duration > 0 && !this.data().loop) { this.data().duration-- }; if (this._sprites) { var needClear = true; for (var i = 0; i < this._sprites.length; i++) { this.updateSprites(this._sprites[i], i); if (this._sprites[i].opacity > 0) { needClear = false } }; if (this.needRemoveSprites(needClear)) { this.removeSprites() }; }; };