OMORI_Android/www.eng/js/plugins/Aries003_WeatherControl.js

1177 lines
No EOL
41 KiB
JavaScript

//=============================================================================
// ★ Aries003_WeatherControl ★ 1.0.0
//=============================================================================
/*:
* @plugindesc Fine-tune in-game weather with various customizable features.
* @author Aries
*
* @help
* ★ Aries003_WeatherControl ★ 1.0.0
* ----------------------------------------------------------------------------
* The Weather Control plugin allows you to control the existing
* weather effects with much more fine-grained authority,
* and adds 3 new weather effects that does not come with RPG Maker MV.
*
* Control the look and feel of in-game weather by adjusting speed, angle,
* size, and assign an image for the 3 built-in weather effects.
*
* Thunder strikes can occur periodically, flashing the screen and playing
* a thunder sound effect. You can adjust the period and
* randomness via parameters.
*
* Plugin commands are also supplied that allow you to change images in-game.
* This change is not saved between files.
* ----------------------------------------------------------------------------
* Listed below are plugin and script commands to adjust weather in-game.
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Plugin: AriesToggleStormThunder [Flag]
* Script: Aries.P003_WCT.toggleStormThunder [Flag]
*
* Enables or disables thunderflashes during a Storm.
* [Flag] - 'true' or 'false' without quotation marks.
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Plugin: AriesWeather [Weather] [Power] [Duration]
* Script: $gameScreen.changeWeather([Weather], [Power], [Duration])
*
* Sets the current weather.
* [Weather] - 'none', 'rain', 'storm', 'snow', 'leaves', 'embers', 'shine'
* [Power] - A number between 1 to 9
* [Duration] - The duration in frames of how long the transition occurs for.
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Plugin: AriesSetWeatherImage [Weather] [Filename]
* Script: Aries.P003_WCT.setWeatherImage([Weather], [Filename])
*
* Sets the current weather.
* [Weather] - 'none', 'rain', 'storm', 'snow', 'leaves', 'embers', 'shine'
* [Filename] - New image file for the weather effect.
* ----------------------------------------------------------------------------
* ★ Changelog
* ----------------------------------------------------------------------------
*
* @param Rain
* @default
*
* @param Detailed Settings (Rain)
* @parent Rain
* @default
*
* @param Storm
* @default
*
* @param Detailed Settings (Storm)
* @parent Storm
* @default
*
* @param Snow
* @default
*
* @param Detailed Settings (Snow)
* @parent Snow
* @default
*
* @param Leaves
* @default
*
* @param Detailed Settings (Leaves)
* @parent Leaves
* @default
*
* @param Embers
* @default
*
* @param Detailed Settings (Embers)
* @parent Embers
* @default
*
* @param Shine
* @default
*
* @param Detailed Settings (Shine)
* @parent Shine
* @default
*
* @param Rain Image
* @parent Rain
* @desc Define a Picture file for raindrops. (Place image in the Pictures folder.)
* Valid: Any file name. Leave empty for default.
* @default
*
* @param Raindrop Count Minimum
* @parent Rain
* @type number
* @min 0
* @max 999
* @desc Amount of raindrops to create during Rain with the magnitude of 1.
* Valid: A number between 0 to 999
* @default 12
*
* @param Raindrop Count Maximum
* @parent Rain
* @type number
* @min 0
* @max 999
* @desc Amount of raindrops to create during Rain with the magnitude of 1.
* Valid: A number between 0 to 999
* @default 300
*
* @param Raindrop Lifetime
* @parent Detailed Settings (Rain)
* @type number
* @min 1
* @max 30
* @desc Controls how long a raindrop should last during Rain.
* Valid: A number between 1 to 30
* @default 5
*
* @param Raindrop Speed
* @parent Detailed Settings (Rain)
* @type number
* @min 1
* @max 100
* @desc Controls the speed of a raindrop during Rain.
* Valid: A number between 1 to 100
* @default 35
*
* @param Raindrop Angle Base
* @parent Detailed Settings (Rain)
* @type number
* @min -60
* @max 60
* @desc Controls the base angle at which raindrops fall during Rain.
* Valid: A number between -60 to 60
* @default 9
*
* @param Raindrop Angle Variation
* @parent Detailed Settings (Rain)
* @type number
* @min 0
* @max 180
* @desc Deviate raindrop angle up to X degrees during Rain. (4 is +-4°)
* Valid: A number between 0 to 180
* @default 4
*
* @param Raindrop Opacity Base
* @parent Detailed Settings (Rain)
* @type number
* @min 0
* @max 255
* @desc Controls the opacity of raindrops during Rain.
* Valid: A number between 0 to 255
* @default 180
*
* @param Raindrop Opacity Variation
* @parent Detailed Settings (Rain)
* @type number
* @min 0
* @max 128
* @desc Deviate raindrop opacity up to X value during Rain. (60 is +-60 opacity)
* Valid: A number between 0 to 128
* @default 60
*
* @param Raindrop Size Variation
* @parent Detailed Settings (Rain)
* @type number
* @min 0
* @max 50
* @desc Deviate raindrop sizes up to X% during Rain. (No effect when not using an image.)
* Valid: A number between 0 to 50
* @default 20
*
* @param Storm Raindrop Lifetime
* @parent Detailed Settings (Storm)
* @type number
* @min 1
* @max 30
* @desc Controls how long a raindrop should last during Storm.
* Valid: A number between 1 to 30
* @default 2
*
* @param Storm Raindrop Speed
* @parent Detailed Settings (Storm)
* @type number
* @min 1
* @max 100
* @desc Controls the speed of a raindrop during Storm.
* Valid: A number between 1 to 100
* @default 75
*
* @param Storm Raindrop Angle Base
* @parent Detailed Settings (Storm)
* @type number
* @min -60
* @max 60
* @desc Controls the base angle at which raindrops fall during Storm.
* Valid: A number between -60 to 60
* @default 18
*
* @param Storm Raindrop Angle Variation
* @parent Detailed Settings (Storm)
* @type number
* @min 0
* @max 180
* @desc Deviate raindrop angle up to X degrees during Storm. (12 is +-12°)
* Valid: A number between 0 to 180
* @default 12
*
* @param Storm Raindrop Opacity Base
* @parent Detailed Settings (Storm)
* @type number
* @min 0
* @max 255
* @desc Controls the opacity of raindrops during Storm.
* Valid: A number between 0 to 255
* @default 210
*
* @param Storm Raindrop Opacity Variation
* @parent Detailed Settings (Storm)
* @type number
* @min 0
* @max 128
* @desc Deviate raindrop opacity up to X value during Rain. (125 is +-125 opacity)
* Valid: A number between 0 to 128
* @default 125
*
* @param Storm Raindrop Size Variation
* @parent Detailed Settings (Storm)
* @type number
* @min 0
* @max 50
* @desc Deviate raindrop sizes up to X% during Storm. (No effect when not using an image.)
* Valid: A number between 0 to 50
* @default 33
*
* @param Storm Thunder
* @parent Storm
* @type boolean
* @on On
* @off Off
* @desc Flash the screen and play a sound effect occasionally during Storm.
* Valid: True/False
* @default true
*
* @param Storm Thunder in Battle
* @parent Storm Thunder
* @type boolean
* @on On
* @off Off
* @desc Allow thunderflashes to occur in battle.
* Valid: True/False
* @default false
*
* @param Thunder Sound
* @parent Storm Thunder
* @desc Sound effect to play when a thunderflash occurs.
* Valid: Any file name.
* @default Thunder9
*
* @param Thunder Sound Volume
* @parent Storm Thunder
* @type number
* @min 0
* @max 100
* @desc Volume of the sound effect played when a thunderflash occurs.
* Valid: A number between 0 to 100.
* @default 75
*
* @param Thunder Sound Pitch
* @parent Storm Thunder
* @type number
* @min 50
* @max 150
* @desc Pitch of the sound effect played when a thunderflash occurs.
* Valid: A number between 50 to 150.
* @default 100
*
* @param Thunder Sound Pitch Variation
* @parent Storm Thunder
* @type number
* @min 0
* @max 50
* @desc Deviate sound pitch up to X value when a thunderflash occurs.
* Valid: A number between 0 to 50.
* @default 15
*
* @param Thunder Flash Power
* @parent Storm Thunder
* @type number
* @min 0
* @max 255
* @desc Strength of the screen flash played when a thunderflash occurs.
* Valid: A number between 0-255.
* @default 180
*
* @param Thunder Flash Variation
* @parent Storm Thunder
* @type number
* @min 0
* @max 128
* @desc Deviate flash power up to X value when a thunderflash occurs.
* Valid: A number between 0-128.
* @default 50
*
* @param Thunder Wait Time
* @parent Storm Thunder
* @type number
* @desc Duration until the next thunderflash. (Adjusted based on Power)
* Valid: Any number
* @default 300
*
* @param Thunder Wait Time Variation
* @parent Storm Thunder
* @type number
* @desc Deviate wait time up to X value until the next thunderflash.
* Valid: Any number
* @default 45
*
* @param Storm Image
* @parent Storm
* @desc Define a Picture file for raindrops (Storm). (Place image in the Pictures folder.)
* Valid: Any file name. Leave empty for default.
* @default
*
* @param Storm Raindrop Count Minimum
* @parent Storm
* @type number
* @min 0
* @max 999
* @desc Amount of raindrops to create during a Storm with the magnitude of 1.
* Valid: A number between 0 to 999
* @default 75
*
* @param Storm Raindrop Count Maximum
* @parent Storm
* @type number
* @min 0
* @max 999
* @desc Amount of raindrops to create during a Storm with the magnitude of 9.
* Valid: A number between 0 to 999
* @default 350
*
* @param Snow Image
* @parent Snow
* @desc Image used for snow.
* Valid: Any file name. Leave empty for default.
* @default
*
* @param Snow Count Minimum
* @parent Snow
* @type number
* @min 0
* @max 999
* @desc Amount of raindrops to create during Snow with the magnitude of 1.
* Valid: A number between 0 to 999
* @default 12
*
* @param Snow Count Maximum
* @parent Snow
* @type number
* @min 0
* @max 999
* @desc Amount of raindrops to create during Snow with the magnitude of 9.
* Valid: A number between 0 to 999
* @default 320
*
* @param Snowflake Lifetime
* @parent Detailed Settings (Snow)
* @type number
* @min 1
* @max 80
* @desc Controls how long a snowflake should last during Snow.
* Valid: A number between 1 to 200
* @default 16
*
* @param Snowflake Speed Base
* @parent Detailed Settings (Snow)
* @type number
* @min 1
* @max 200
* @desc Controls the speed of a snowflake during Snow.
* Valid: A number between 1 to 200
* @default 25
*
* @param Snowflake Speed Variation
* @parent Detailed Settings (Snow)
* @type number
* @min 0
* @max 50
* @desc Deviate snowflake speed up to X value during Snow. (10 is +-10% speed)
* Valid: A number between 0 to 50
* @default 10
*
* @param Snowflake Opacity Base
* @parent Detailed Settings (Snow)
* @type number
* @min 0
* @max 255
* @desc Controls the opacity of snowflakes during Snow.
* Valid: A number between 0 to 255
* @default 220
*
* @param Snowflake Opacity Variation
* @parent Detailed Settings (Snow)
* @type number
* @min 0
* @max 255
* @desc Deviate snowflake opacity up to X value during Snow. (20 is +-20 opacity)
* Valid: A number between 0 to 255
* @default 20
*
* @param Snowflake Size Variation
* @parent Detailed Settings (Snow)
* @type number
* @min 0
* @max 50
* @desc Deviate snowflake sizes up to X% during Snow. (No effect when not using an image.)
* Valid: A number between 0 to 50
* @default 40
*
* @param Leaf Image
* @parent Leaves
* @desc Image used for leaves. * Leaf weather effects do not appear when left empty.
* Valid: Any file name.
* @default Leaf
*
* @param Leaf Count Minimum
* @parent Leaves
* @type number
* @min 0
* @max 999
* @desc Amount of leaves to create during Leaves with the magnitude of 1.
* Valid: A number between 0 to 999
* @default 10
*
* @param Leaf Count Maximum
* @parent Leaves
* @type number
* @min 0
* @max 999
* @desc Amount of leaves to create during Leaves with the magnitude of 9.
* Valid: A number between 0 to 999
* @default 100
*
* @param Leaf Lifetime
* @parent Detailed Settings (Leaves)
* @type number
* @min 1
* @max 80
* @desc Controls how long a leaf should last during Leaves.
* Valid: A number between 1 to 200
* @default 80
*
* @param Leaf Speed Base
* @parent Detailed Settings (Leaves)
* @type number
* @min 1
* @max 15
* @desc Controls the speed of a leaf during Leaves.
* Valid: A number between 1 to 15
* @default 3
*
* @param Leaf Speed Variation
* @parent Detailed Settings (Leaves)
* @type number
* @min 0
* @max 5
* @desc Deviate leaf speed up to X value during Leaves.
* Valid: A number between 0 to 5
* @default 2
*
* @param Leaf Size Variation
* @parent Detailed Settings (Leaves)
* @type number
* @min 0
* @max 50
* @desc Deviate leaf sizes up to X% during Leaves.
* Valid: A number between 0 to 50
* @default 32
*
* @param Embers Image
* @parent Embers
* @desc Image used for embers. * Embers weather do not appear when left empty.
* Valid: Any file name.
* @default Embers
*
* @param Embers Count Minimum
* @parent Embers
* @type number
* @min 0
* @max 999
* @desc Amount of embers to create during Embers with the magnitude of 1.
* Valid: A number between 0 to 999
* @default 20
*
* @param Embers Count Maximum
* @parent Embers
* @type number
* @min 0
* @max 999
* @desc Amount of embers to create during Embers with the magnitude of 9.
* Valid: A number between 0 to 999
* @default 160
*
* @param Embers Lifetime
* @parent Detailed Settings (Embers)
* @type number
* @min 1
* @max 80
* @desc Controls how long embers should last during Embers.
* Valid: A number between 1 to 200
* @default 33
*
* @param Embers Speed Base
* @parent Detailed Settings (Embers)
* @type number
* @min 1
* @max 60
* @desc Controls the speed of embers during Embers.
* Valid: A number between 1 to 60
* @default 30
*
* @param Embers Speed Variation
* @parent Detailed Settings (Embers)
* @type number
* @min 0
* @max 25
* @desc Deviate embers speed up to X value during Embers.
* Valid: A number between 0 to 25
* @default 25
*
* @param Embers Size Variation
* @parent Detailed Settings (Embers)
* @type number
* @min 0
* @max 50
* @desc Deviate leaf sizes up to X% during Leaves.
* Valid: A number between 0 to 50
* @default 40
*
* @param Shine Image
* @parent Shine
* @desc Image used for shining effects.
* Valid: Any file name.
* @default Shine
*
* @param Shine Count Minimum
* @parent Shine
* @type number
* @min 0
* @max 999
* @desc Amount of sparkles to create during Shine with the magnitude of 1.
* Valid: A number between 0 to 999
* @default 20
*
* @param Shine Count Maximum
* @parent Shine
* @type number
* @min 0
* @max 999
* @desc Amount of sparkles to create during Shine with the magnitude of 9.
* Valid: A number between 0 to 999
* @default 360
*
* @param Shine Lifetime
* @parent Detailed Settings (Shine)
* @type number
* @min 1
* @max 25
* @desc Controls how long sparkles should last during Shine.
* Valid: A number between 1 to 25
* @default 25
*
* @param Shine Opacity Base
* @parent Detailed Settings (Shine)
* @type number
* @min 0
* @max 255
* @desc Controls the opacity of sparkles during Shine.
* Valid: A number between 0 to 255
* @default 220
*
* @param Shine Opacity Variation
* @parent Detailed Settings (Shine)
* @type number
* @min 0
* @max 255
* @desc Deviate sparkle opacity up to X value during Shine.
* Valid: A number between 0 to 255
* @default 20
*
* @param Shine Size Variation
* @parent Detailed Settings (Shine)
* @type number
* @min 0
* @max 90
* @desc Deviate sparkle sizes up to X% during Shine.
* Valid: A number between 0 to 90
* @default 80
*/
var Aries = Aries || {};
var Imported = Imported || {};
Aries.P003_WCT = {};
Aries.P003_WCT.Param = PluginManager.parameters("Aries003_WeatherControl");
Aries.P003_WCT.RainImage = String(Aries.P003_WCT.Param["Rain Image"]);
Aries.P003_WCT.RainMin = Number(Aries.P003_WCT.Param["Raindrop Count Minimum"]);
Aries.P003_WCT.RainMax = Number(Aries.P003_WCT.Param["Raindrop Count Maximum"]);
Aries.P003_WCT.RainLife = Number(Aries.P003_WCT.Param["Raindrop Lifetime"]);
Aries.P003_WCT.RainSpeed = Number(Aries.P003_WCT.Param["Raindrop Speed"]);
Aries.P003_WCT.RainAngleC = Number(Aries.P003_WCT.Param["Raindrop Angle Base"]);
Aries.P003_WCT.RainAlphaC = Number(Aries.P003_WCT.Param["Raindrop Opacity Base"]);
Aries.P003_WCT.RainAngleV = Number(Aries.P003_WCT.Param["Raindrop Angle Variation"]);
Aries.P003_WCT.RainAlphaV = Number(Aries.P003_WCT.Param["Raindrop Opacity Variation"]);
Aries.P003_WCT.RainSizeV = Number(Aries.P003_WCT.Param["Raindrop Size Variation"]);
Aries.P003_WCT.StormImage = String(Aries.P003_WCT.Param["Storm Image"]);
Aries.P003_WCT.StormMin = Number(Aries.P003_WCT.Param["Storm Raindrop Count Minimum"]);
Aries.P003_WCT.StormMax = Number(Aries.P003_WCT.Param["Storm Raindrop Count Maximum"]);
Aries.P003_WCT.StormLife = Number(Aries.P003_WCT.Param["Storm Raindrop Lifetime"]);
Aries.P003_WCT.StormSpeed = Number(Aries.P003_WCT.Param["Storm Raindrop Speed"]);
Aries.P003_WCT.StormAngleC = Number(Aries.P003_WCT.Param["Storm Raindrop Angle Base"]);
Aries.P003_WCT.StormAlphaC = Number(Aries.P003_WCT.Param["Storm Raindrop Opacity Base"]);
Aries.P003_WCT.StormAngleV = Number(Aries.P003_WCT.Param["Storm Raindrop Angle Variation"]);
Aries.P003_WCT.StormAlphaV = Number(Aries.P003_WCT.Param["Storm Raindrop Opacity Variation"]);
Aries.P003_WCT.StormSizeV = Number(Aries.P003_WCT.Param["Storm Raindrop Size Variation"]);
Aries.P003_WCT.StormThunder = eval(Aries.P003_WCT.Param["Storm Thunder"]);
Aries.P003_WCT.StormThunderB = eval(Aries.P003_WCT.Param["Storm Thunder in Battle"]);
Aries.P003_WCT.ThunderSound = String(Aries.P003_WCT.Param["Thunder Sound"]);
Aries.P003_WCT.ThunderSEVol = Number(Aries.P003_WCT.Param["Thunder Sound Volume"]);
Aries.P003_WCT.ThunderSEPitch = Number(Aries.P003_WCT.Param["Thunder Sound Pitch"]);
Aries.P003_WCT.ThunderSEPitchV = Number(Aries.P003_WCT.Param["Thunder Sound Pitch Variation"]);
Aries.P003_WCT.ThunderWait = Number(Aries.P003_WCT.Param["Thunder Wait Time"]);
Aries.P003_WCT.ThunderWaitV = Number(Aries.P003_WCT.Param["Thunder Wait Time Variation"]);
Aries.P003_WCT.ThunderFlash = Number(Aries.P003_WCT.Param["Thunder Flash Power"]);
Aries.P003_WCT.ThunderFlashV = Number(Aries.P003_WCT.Param["Thunder Flash Variation"]);
Aries.P003_WCT.SnowImage = String(Aries.P003_WCT.Param["Snow Image"]);
Aries.P003_WCT.SnowMin = Number(Aries.P003_WCT.Param["Snow Count Minimum"]);
Aries.P003_WCT.SnowMax = Number(Aries.P003_WCT.Param["Snow Count Maximum"]);
Aries.P003_WCT.SnowLife = Number(Aries.P003_WCT.Param["Snowflake Lifetime"]);
Aries.P003_WCT.SnowSpeedC = Number(Aries.P003_WCT.Param["Snowflake Speed Base"]);
Aries.P003_WCT.SnowAlphaC = Number(Aries.P003_WCT.Param["Snowflake Opacity Base"]);
Aries.P003_WCT.SnowSpeedV = Number(Aries.P003_WCT.Param["Snowflake Speed Variation"]);
Aries.P003_WCT.SnowAlphaV = Number(Aries.P003_WCT.Param["Snowflake Opacity Variation"]);
Aries.P003_WCT.SnowSizeV = Number(Aries.P003_WCT.Param["Snowflake Size Variation"]);
Aries.P003_WCT.LeafImage = String(Aries.P003_WCT.Param["Leaf Image"]);
Aries.P003_WCT.LeafMin = Number(Aries.P003_WCT.Param["Leaf Count Minimum"]);
Aries.P003_WCT.LeafMax = Number(Aries.P003_WCT.Param["Leaf Count Maximum"]);
Aries.P003_WCT.LeafLife = Number(Aries.P003_WCT.Param["Leaf Lifetime"]);
Aries.P003_WCT.LeafSpeedC = Number(Aries.P003_WCT.Param["Leaf Speed Base"]);
Aries.P003_WCT.LeafSpeedV = Number(Aries.P003_WCT.Param["Leaf Speed Variation"]);
Aries.P003_WCT.LeafSizeV = Number(Aries.P003_WCT.Param["Leaf Size Variation"]);
Aries.P003_WCT.HeatImage = String(Aries.P003_WCT.Param["Embers Image"]);
Aries.P003_WCT.HeatMin = Number(Aries.P003_WCT.Param["Embers Count Minimum"]);
Aries.P003_WCT.HeatMax = Number(Aries.P003_WCT.Param["Embers Count Maximum"]);
Aries.P003_WCT.HeatLife = Number(Aries.P003_WCT.Param["Embers Lifetime"]);
Aries.P003_WCT.HeatSpeedC = Number(Aries.P003_WCT.Param["Embers Speed Base"]);
Aries.P003_WCT.HeatSpeedV = Number(Aries.P003_WCT.Param["Embers Speed Variation"]);
Aries.P003_WCT.HeatSizeV = Number(Aries.P003_WCT.Param["Embers Size Variation"]);
Aries.P003_WCT.MysticImage = String(Aries.P003_WCT.Param["Shine Image"]);
Aries.P003_WCT.MysticMin = Number(Aries.P003_WCT.Param["Shine Count Minimum"]);
Aries.P003_WCT.MysticMax = Number(Aries.P003_WCT.Param["Shine Count Maximum"]);
Aries.P003_WCT.MysticLife = Number(Aries.P003_WCT.Param["Shine Lifetime"]);
Aries.P003_WCT.MysticAlphaC = Number(Aries.P003_WCT.Param["Shine Opacity Base"]);
Aries.P003_WCT.MysticAlphaV = Number(Aries.P003_WCT.Param["Shine Opacity Variation"]);
Aries.P003_WCT.MysticSizeV = Number(Aries.P003_WCT.Param["Shine Size Variation"]);
var _aries_p003_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function (command, args) {
_aries_p003_pluginCommand.call(this, command, args);
if (command === "AriesToggleStormThunder") {
Aries.P003_WCT.toggleStormThunder(eval(args[0]));
} else if (command === "AriesWeather") {
$gameScreen.changeWeather(String(args[0]).toLowerCase(), args[1], args[2]);
} else if (command === "AriesSetWeatherImage") {
Aries.P003_WCT.setWeatherImage(String(args[0]).toLowerCase(), String(args[1]).toLowerCase());
}
};
Aries.P003_WCT.toggleStormThunder = function (flag) {
Aries.P003_WCT.StormThunder = flag;
};
Aries.P003_WCT.setWeatherImage = function (weathertype, image) {
switch (weathertype) {
case "rain":
Aries.P003_WCT.RainImage = image;
break;
case "storm":
Aries.P003_WCT.StormImage = image;
break;
case "snow":
Aries.P003_WCT.SnowImage = image;
break;
case "leaves":
Aries.P003_WCT.LeafImage = image;
break;
case "embers":
Aries.P003_WCT.HeatImage = image;
break;
case "shine":
Aries.P003_WCT.MysticImage = image;
break;
}
if (SceneManager._scene instanceof Scene_Map) {
SceneManager._scene._spriteset.refreshWeatherBitmaps();
}
};
var _aries_p003_gameScreen_clearWeather = Game_Screen.prototype.clearWeather;
Game_Screen.prototype.clearWeather = function () {
_aries_p003_gameScreen_clearWeather.call(this);
this._weatherWind = [0, 0];
this._stormThunderSound = "";
this._stormThunderFlash = 0;
this._stormThunderCount = 4 * (Aries.P003_WCT.ThunderWait + Aries.P003_WCT.ThunderWaitV);
this._stormThunderFrequency = 0;
this._snowBloom = 0;
};
var _aries_p003_gameScreen_updateWeather = Game_Screen.prototype.updateWeather;
Game_Screen.prototype.updateWeather = function () {
_aries_p003_gameScreen_updateWeather.call(this);
if (this._weatherType === "storm") {
if (Aries.P003_WCT.StormThunder === true && !$gameParty.inBattle()) {
this.updateStorm();
} else if (Aries.P003_WCT.StormThunderB === true && $gameParty.inBattle()) {
this.updateStorm();
}
}
};
Game_Screen.prototype.updateStorm = function () {
this._stormThunderCount -= 1 + 0.5 * Number(this._weatherPower);
if (this._stormThunderCount <= 0) {
var alpha = Math.min(Aries.P003_WCT.ThunderFlash - Aries.P003_WCT.ThunderFlashV + Math.randomInt(1 + Aries.P003_WCT.ThunderFlashV * 2), 255);
this.startFlash([255, 255, 255, alpha], 4);
if (Aries.P001_ASE !== undefined) {
Aries.P001_ASE.glow(18, 2, 3, 0.75);
}
this._stormThunderCount = 4 * (Aries.P003_WCT.ThunderWait - Aries.P003_WCT.ThunderWaitV + Math.randomInt(1 + Aries.P003_WCT.ThunderWaitV * 2));
thunderSound = {name: Aries.P003_WCT.ThunderSound, pan: 0, pitch: Aries.P003_WCT.ThunderSEPitch - Aries.P003_WCT.ThunderSEPitchV + Math.randomInt(1 + Aries.P003_WCT.ThunderSEPitchV * 2), volume: Aries.P003_WCT.ThunderSEVol};
AudioManager.playStaticSe(thunderSound);
}
};
Spriteset_Map.prototype.refreshWeatherBitmaps = function () {
this._weather._createBitmaps();
};
Weather.prototype._createBitmaps = function () {
this._createRainBitmap();
this._createStormBitmap();
this._createSnowBitmap();
this._createLeafBitmap();
this._createHeatBitmap();
this._createMysticBitmap();
};
Weather.prototype._createRainBitmap = function () {
if (Aries.P003_WCT.RainImage.length > 0) {
this._rainBitmap = ImageManager.loadPicture(Aries.P003_WCT.RainImage);
} else {
this._rainBitmap = new Bitmap(1, 60);
this._rainBitmap.fillAll("white");
}
};
Weather.prototype._createStormBitmap = function () {
if (Aries.P003_WCT.StormImage.length > 0) {
this._stormBitmap = ImageManager.loadPicture(Aries.P003_WCT.StormImage);
} else {
this._stormBitmap = new Bitmap(2, 100);
this._stormBitmap.fillAll("white");
}
};
Weather.prototype._createSnowBitmap = function () {
if (Aries.P003_WCT.SnowImage.length > 0) {
this._snowBitmap = ImageManager.loadPicture(Aries.P003_WCT.SnowImage);
} else {
this._snowBitmap = new Bitmap(9, 9);
this._snowBitmap.drawCircle(4, 4, 4, "white");
}
};
Weather.prototype._createLeafBitmap = function () {
if (Aries.P003_WCT.LeafImage.length > 0) {
this._leafBitmap = ImageManager.loadPicture(Aries.P003_WCT.LeafImage);
} else {
this._leafBitmap = new Bitmap(9, 9);
this._leafBitmap.drawCircle(4, 4, 4, "green");
}
};
Weather.prototype._createHeatBitmap = function () {
if (Aries.P003_WCT.HeatImage.length > 0) {
this._heatBitmap = ImageManager.loadPicture(Aries.P003_WCT.HeatImage);
} else {
this._heatBitmap = new Bitmap(7, 7);
this._heatBitmap.drawCircle(3, 3, 3, "black");
}
};
Weather.prototype._createMysticBitmap = function () {
if (Aries.P003_WCT.MysticImage.length > 0) {
this._mysticBitmap = ImageManager.loadPicture(Aries.P003_WCT.MysticImage);
} else {
this._mysticBitmap = new Bitmap(9, 9);
this._mysticBitmap.drawCircle(4, 4, 4, "white");
this._mysticBitmap.rotateHue(Math.randomInt(359));
}
};
Weather.prototype._addSprite = function () {
var sprite = new Sprite_Weather(this.viewport);
switch (this.type) {
case "rain":
var life = Aries.P003_WCT.RainLife;
var size = 0.01 * (100 - Aries.P003_WCT.RainSizeV + Math.randomInt(1 + Aries.P003_WCT.RainSizeV * 2));
var getangle = Aries.P003_WCT.RainAngleC - Aries.P003_WCT.RainAngleV + Math.randomInt(1 + Aries.P003_WCT.RainAngleV * 2);
var alpha = Aries.P003_WCT.RainAlphaC - Aries.P003_WCT.RainAlphaV + Math.randomInt(1 + Aries.P003_WCT.RainAlphaV * 2);
sprite.setUp("rain", life, size, getangle, alpha);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "storm":
var life = Aries.P003_WCT.StormLife;
var size = 0.01 * (100 - Aries.P003_WCT.StormSizeV + Math.randomInt(1 + Aries.P003_WCT.StormSizeV * 2));
var getangle = Aries.P003_WCT.StormAngleC - Aries.P003_WCT.StormAngleV + Math.randomInt(1 + Aries.P003_WCT.StormAngleV * 2);
var alpha = Aries.P003_WCT.StormAlphaC - Aries.P003_WCT.StormAlphaV + Math.randomInt(1 + Aries.P003_WCT.StormAlphaV * 2);
sprite.setUp("storm", life, size, getangle, alpha);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "snow":
var life = Aries.P003_WCT.SnowLife;
var size = 0.01 * (100 - Aries.P003_WCT.SnowSizeV + Math.randomInt(1 + Aries.P003_WCT.SnowSizeV * 2));
var getangle = (-1 + Math.randomInt(3)) * 0.267;
var alpha = Aries.P003_WCT.SnowAlphaC - Aries.P003_WCT.SnowAlphaV + Math.randomInt(1 + Aries.P003_WCT.SnowAlphaV * 2);
var snowspeed = 1.33 + Math.randomInt(2);
sprite.setUp("snow", life, size, getangle, alpha, snowspeed);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "leaves":
var life = Aries.P003_WCT.LeafLife;
var size = 0.007 * (100 - Aries.P003_WCT.LeafSizeV + Math.randomInt(1 + Aries.P003_WCT.LeafSizeV * 2));
var getangle = Aries.P003_WCT.LeafSpeedV;
var alpha = 255;
var snowspeed = 0.83 + Math.randomInt(2);
sprite.setUp("leaves", life, size, getangle, alpha, snowspeed);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "embers":
var life = Aries.P003_WCT.HeatLife;
var size = 0.007 * (100 - Aries.P003_WCT.HeatSizeV + Math.randomInt(1 + Aries.P003_WCT.HeatSizeV * 2));
var getangle = Aries.P003_WCT.HeatSpeedV;
var alpha = 255;
var snowspeed = 0.83 + Math.randomInt(2);
sprite.setUp("embers", life, size, getangle, alpha, snowspeed);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "shine":
var life = Aries.P003_WCT.MysticLife;
var size = 0.007 * (100 - Aries.P003_WCT.MysticSizeV + Math.randomInt(1 + Aries.P003_WCT.MysticSizeV * 2));
var getangle = 12;
var alpha = Aries.P003_WCT.MysticAlphaC - Aries.P003_WCT.MysticAlphaV + Math.randomInt(1 + Aries.P003_WCT.MysticAlphaV * 2);
var snowspeed = 0.25 * (2 + Math.randomInt(3));
sprite.setUp("shine", life, size, getangle, alpha, snowspeed);
sprite.rotation = Math.random();
sprite.opacity = 0;
break;
}
sprite.opacity = 0;
this._sprites.push(sprite);
this.addChild(sprite);
};
Weather.prototype._getMaxSpriteCount = function () {
var maxCount = 0;
switch (this.type) {
case "rain":
maxCount = Aries.P003_WCT.RainMin + Aries.P003_WCT.RainMax * this.power * 0.1;
break;
case "storm":
maxCount = Aries.P003_WCT.StormMin + Aries.P003_WCT.StormMax * this.power * 0.1;
break;
case "snow":
maxCount = Aries.P003_WCT.SnowMin + Aries.P003_WCT.SnowMax * this.power * 0.1;
break;
case "leaves":
maxCount = Aries.P003_WCT.LeafMin + Aries.P003_WCT.LeafMax * this.power * 0.1;
break;
case "embers":
maxCount = Aries.P003_WCT.HeatMin + Aries.P003_WCT.HeatMax * this.power * 0.1;
break;
case "shine":
maxCount = Aries.P003_WCT.MysticMin + Aries.P003_WCT.MysticMax * this.power * 0.1;
break;
}
return maxCount;
};
Weather.prototype._updateAllSprites = function () {
var maxSprites = this._getMaxSpriteCount();
if (this._sprites.length < maxSprites) {
this._addSprite();
}
if (this._sprites.length > maxSprites) {
this._removeSprite();
}
this._sprites.forEach(function (sprite) {
this._updateSprite(sprite);
sprite.x = sprite.ax - this.origin.x;
sprite.y = sprite.ay - this.origin.y;
}, this);
};
Weather.prototype._updateSprite = function (sprite) {
sprite.update();
switch (this.type) {
case "rain":
this._updateRainSprite(sprite);
break;
case "storm":
this._updateStormSprite(sprite);
break;
case "snow":
this._updateSnowSprite(sprite);
break;
case "leaves":
this._updateLeafSprite(sprite);
break;
case "embers":
this._updateHeatSprite(sprite);
break;
case "shine":
this._updateMysticSprite(sprite);
break;
}
if (sprite._lifetime <= 0 && sprite.opacity <= 6) {
this._rebornSprite(sprite);
}
};
Weather.prototype._updateRainSprite = function (sprite) {
sprite.bitmap = this._rainBitmap;
sprite.rotation = sprite._anglev * (Math.PI / 180);
var velocity = sprite.getVelocity(Aries.P003_WCT.RainSpeed);
sprite.ax += velocity[0];
sprite.ay += velocity[1];
};
Weather.prototype._updateStormSprite = function (sprite) {
sprite.bitmap = this._stormBitmap;
sprite.rotation = sprite._anglev * (Math.PI / 180);
var velocity = sprite.getVelocity(Aries.P003_WCT.StormSpeed);
sprite.ax += velocity[0];
sprite.ay += velocity[1];
};
Weather.prototype._updateSnowSprite = function (sprite) {
sprite.bitmap = this._snowBitmap;
sprite.ax += sprite._anglev;
sprite.ay += sprite._snowSpeed;
};
Weather.prototype._updateLeafSprite = function (sprite) {
sprite.bitmap = this._leafBitmap;
sprite.rotation += 0.025 * sprite._anglev;
sprite.ax += 2 * Math.sin(0.0078 * sprite._randomSeed);
sprite.ay += sprite._snowSpeed;
};
Weather.prototype._updateHeatSprite = function (sprite) {
sprite.bitmap = this._heatBitmap;
sprite.ax += 2 * Math.sin(0.0139 * sprite._randomSeed);
sprite.ay -= sprite._snowSpeed;
};
Weather.prototype._updateMysticSprite = function (sprite) {
sprite.bitmap = this._mysticBitmap;
};
Weather.prototype._rebornSprite = function (sprite) {
sprite.ax = Math.randomInt(Graphics.width + 500) - 200 + this.origin.x;
sprite.ay = Math.randomInt(Graphics.height + 600) - 400 + this.origin.y;
switch (this.type) {
case "rain":
var life = Aries.P003_WCT.RainLife;
var size = 0.01 * (100 - Aries.P003_WCT.RainSizeV + Math.randomInt(1 + Aries.P003_WCT.RainSizeV * 2));
var getangle = Aries.P003_WCT.RainAngleC - Aries.P003_WCT.RainAngleV + Math.randomInt(1 + Aries.P003_WCT.RainAngleV * 2);
var alpha = Aries.P003_WCT.RainAlphaC - Aries.P003_WCT.RainAlphaV + Math.randomInt(1 + Aries.P003_WCT.RainAlphaV * 2);
sprite.setUp("rain", life, size, getangle, alpha);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "storm":
var life = Aries.P003_WCT.StormLife;
var size = 0.01 * (100 - Aries.P003_WCT.StormSizeV + Math.randomInt(1 + Aries.P003_WCT.StormSizeV * 2));
var getangle = Aries.P003_WCT.StormAngleC - Aries.P003_WCT.StormAngleV + Math.randomInt(1 + Aries.P003_WCT.StormAngleV * 2);
var alpha = Aries.P003_WCT.StormAlphaC - Aries.P003_WCT.StormAlphaV + Math.randomInt(1 + Aries.P003_WCT.StormAlphaV * 2);
sprite.setUp("storm", life, size, getangle, alpha);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "snow":
var life = Aries.P003_WCT.SnowLife;
var size = 0.01 * (100 - Aries.P003_WCT.SnowSizeV + Math.randomInt(1 + Aries.P003_WCT.SnowSizeV * 2));
var getangle = (-1 + Math.randomInt(3)) * 0.267;
var alpha = Aries.P003_WCT.SnowAlphaC - Aries.P003_WCT.SnowAlphaV + Math.randomInt(1 + Aries.P003_WCT.SnowAlphaV * 2);
var snowspeed = 1.33 + Math.randomInt(2);
sprite.setUp("snow", life, size, getangle, alpha, snowspeed);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "leaves":
var life = Aries.P003_WCT.LeafLife;
var size = 0.007 * (100 - Aries.P003_WCT.LeafSizeV + Math.randomInt(1 + Aries.P003_WCT.LeafSizeV * 2));
var getangle = Aries.P003_WCT.LeafSpeedV;
var alpha = 255;
var snowspeed = 0.83 + Math.randomInt(2);
sprite.setUp("leaves", life, size, getangle, alpha, snowspeed);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "embers":
var life = Aries.P003_WCT.HeatLife;
var size = 0.007 * (100 - Aries.P003_WCT.HeatSizeV + Math.randomInt(1 + Aries.P003_WCT.HeatSizeV * 2));
var getangle = Aries.P003_WCT.HeatSpeedV;
var alpha = 255;
var snowspeed = 0.83 + Math.randomInt(2);
sprite.setUp("embers", life, size, getangle, alpha, snowspeed);
sprite.blendMode = PIXI.BLEND_MODES.NORMAL;
break;
case "shine":
var life = Aries.P003_WCT.MysticLife;
var size = 0.007 * (100 - Aries.P003_WCT.MysticSizeV + Math.randomInt(1 + Aries.P003_WCT.MysticSizeV * 2));
var getangle = 12;
var alpha = Aries.P003_WCT.MysticAlphaC - Aries.P003_WCT.MysticAlphaV + Math.randomInt(1 + Aries.P003_WCT.MysticAlphaV * 2);
var snowspeed = 0.25 * (2 + Math.randomInt(3));
sprite.setUp("shine", life, size, getangle, alpha, snowspeed);
sprite.rotation = Math.random();
sprite.opacity = 0;
break;
}
};
function Sprite_Weather() {
this.initialize.apply(this, arguments);
}
Sprite_Weather.prototype = Object.create(Sprite.prototype);
Sprite_Weather.prototype.constructor = Sprite_Weather;
Sprite_Weather.prototype.initialize = function () {
Sprite.prototype.initialize.call(this);
this._type = "none";
this._lifetime = 0;
this._size = 0;
this._anglev = 0;
this._alpha = 0;
this._snowSpeed = 0;
this.setUpDone = false;
};
Sprite_Weather.prototype.update = function () {
if (this.setUpDone === true) {
if (this._lifetime > 0) {
if (this._type === "snow") {
this.opacity = Math.min(this.opacity + 24, this._alpha);
this.scale.x = this._size;
this.scale.y = this._size;
} else if (this._type === "shine") {
this.opacity = Math.min(this.opacity + 48, this._alpha);
this.scale.x += 0.09;
this.scale.y += 0.09;
} else if (this._type === "embers") {
this.opacity = Math.min(this.opacity + 32, this._alpha);
var newTone = this.getColorTone();
newTone[0] *= 0.98;
newTone[1] *= 0.95;
this.setColorTone(newTone);
this.scale.x = this._size;
this.scale.y = this._size;
} else {
this.opacity = Math.min(this.opacity + 72, this._alpha);
this.scale.x = this._size;
this.scale.y = this._size;
}
this._lifetime -= 1;
this._randomSeed -= 1;
} else {
if (this._type === "snow") {
this.opacity -= 16;
} else if (this._type === "shine") {
this.opacity -= 15;
this.scale.x -= 0.09;
this.scale.y -= 0.09;
} else if (this._type === "leaves" || this._type === "embers") {
this.scale.x -= 0.01;
this.scale.y -= 0.01;
this.opacity -= 8;
} else {
this.opacity -= 48;
}
}
}
};
Sprite_Weather.prototype.setUp = function (type, life, size, getangle, alpha, snowSpeed = 0) {
this._type = type;
this._lifetime = life + Math.randomInt(life * 0.25);
this._size = size;
this._anglev = getangle;
this._alpha = alpha;
this._snowSpeed = snowSpeed;
this._randomSeed = Math.randomInt(16777216);
if (this._type === "shine") {
this.scale.x = 0;
this.scale.y = 0;
this.anchor = new Point(0.5, 0.5);
this.blendMode = PIXI.BLEND_MODES.ADD;
this.setColorTone([Math.randomInt(2) * -255, Math.randomInt(2) * -255, Math.randomInt(2) * -255, 0]);
} else if (this._type === "leaves") {
this.scale.x = 1;
this.scale.y = 1;
this.anchor = new Point(0.5, 0.5);
this.blendMode = PIXI.BLEND_MODES.NORMAL;
this.setColorTone([0, 0, 0, 0]);
} else if (this._type === "embers") {
this.scale.x = 1;
this.scale.y = 1;
this.anchor = new Point(0.5, 0.5);
this.blendMode = PIXI.BLEND_MODES.NORMAL;
this.setColorTone([255, 200, 0, 0]);
} else {
this.scale.x = 1;
this.scale.y = 1;
this.anchor = new Point(0, 0);
this.blendMode = PIXI.BLEND_MODES.NORMAL;
this.setColorTone([0, 0, 0, 0]);
}
this.setUpDone = true;
};
Sprite_Weather.prototype.getVelocity = function (speed) {
var speedX = speed * Math.cos(this._anglev * (Math.PI / 180));
var speedY = -1 * speed * Math.sin(this._anglev * (Math.PI / 180));
return [speedY, speedX];
};
if (Aries.P001_ASE !== undefined) {
var _aries_p003_spritesetBase_createScreenEffectFilters = Spriteset_Base.prototype.createScreenEffectFilters;
Spriteset_Base.prototype.createScreenEffectFilters = function () {
_aries_p003_spritesetBase_createScreenEffectFilters.call(this);
this._wct_glow_filter = new PIXI.filters.AdvancedBloomFilter;
this._wct_glow_filter.enabled = false;
this._wct_glow_filter.brightness = 0.5;
this._wct_glow_filter.bloomScale = 0.667;
this._wct_glow_filter.blur = 0;
this._wct_glow_filter.threshold = 0.05;
this._filters.push(this._wct_glow_filter);
};
var _aries_p003_spritesetBase_updateScreenEffects = Spriteset_Base.prototype.updateScreenEffects;
Spriteset_Base.prototype.updateScreenEffects = function () {
_aries_p003_spritesetBase_updateScreenEffects.call(this);
if (this._wct_glow_filter) {
switch ($gameScreen.weatherType()) {
case "rain":
this._wct_glow_filter.enabled = true;
this._wct_glow_filter.bloomScale = 0.035 * $gameScreen.weatherPower();
this._wct_glow_filter.brightness = 1 - 0.025 * $gameScreen.weatherPower();
this._wct_glow_filter.blur = 0.1 * $gameScreen.weatherPower();
this._wct_glow_filter.threshold = 0.075;
break;
case "storm":
this._wct_glow_filter.enabled = true;
this._wct_glow_filter.bloomScale = 0.05 * $gameScreen.weatherPower();
this._wct_glow_filter.brightness = 1 - 0.06 * $gameScreen.weatherPower();
this._wct_glow_filter.blur = 0.2 * $gameScreen.weatherPower();
this._wct_glow_filter.threshold = 0.075;
break;
case "snow":
this._wct_glow_filter.enabled = true;
this._wct_glow_filter.bloomScale = 0.1 + 0.005 * $gameScreen.weatherPower();
this._wct_glow_filter.brightness = 1 + 0.001 * $gameScreen.weatherPower();
this._wct_glow_filter.blur = 0.5 + 0.1 * $gameScreen.weatherPower();
this._wct_glow_filter.threshold = 0.667;
break;
case "embers":
this._wct_glow_filter.enabled = true;
this._wct_glow_filter.bloomScale = 0.2 + 0.015 * $gameScreen.weatherPower();
0.2 * (1 + Math.sin(0.03 * Graphics.frameCount));
this._wct_glow_filter.brightness = 1;
this._wct_glow_filter.blur = 6 + 0.1 * $gameScreen.weatherPower();
this._wct_glow_filter.threshold = 0.75;
break;
default:
this._wct_glow_filter.enabled = false;
this._wct_glow_filter.bloomScale = 1;
this._wct_glow_filter.brightness = 1;
this._wct_glow_filter.blur = 0;
this._wct_glow_filter.threshold = 1;
break;
}
}
};
}