Make more out of weather than just a visual effect

BurningOrca

Veteran
Veteran
Joined
Apr 14, 2019
Messages
173
Reaction score
129
First Language
German
Primarily Uses
RMMV
Already a while ago I written myself a whole bunch of weather related plugins.
First I wanted to make this just one plugin, but it took not long to realize it became a mess, so I had to split it
into a core an extension plugins. Pretty sure some of those things I did can be done with simple eventing, too.
The basic idea came from the weather mechanics of Pokémon which can drastically affect battles.
Altough those plugins heavily affect battle they do not add the weather effect into the battle themselves.
This is because there are already at least three plugin creators (Yanfly, Tsukihime, OcRam) that did that and I didn't want to
commit the crime of plugiarism.
My plugins will work on the default weather engine and thus are compatible to those three plugins, but not to MOG_WeatherEx.
I will constantly update this thread to explain each single one of my plugins and upload them once they are all explained.
If you have any further ideas around the weather that are not covered by my plugins, please let me know and I will see if I can
convert them to code.

Usage
The plugins can be used for commercial and non-commercial use. Normally I do not want any credits, but as this was a lot of work,
I would appreciate it if I get credited by my user name on this forum.
Don't repost these plugin in this forum and please link always back to this thread
when mentioning the plugin in another thread.
The plugins cannot be used in an existing save file.

Compatibility issues:
Place this above YEP_BattleEngineCore
and you have to comment this part of YEP_BattleEngineCore otherwise BO_WeatherSummon wont work correctly:

Code:
Yanfly.BEC.Game_Action_applyGlobal = Game_Action.prototype.applyGlobal;
Game_Action.prototype.applyGlobal = function() {
    //if ($gameParty.inBattle()) return;
    Yanfly.BEC.Game_Action_applyGlobal.call(this);
};
or use BO_YepX_WeatherBattleEngineCore

BO_WeatherCore
- Builds the basic for the extension plugins.
- 1 Plugin Parameter: BattleWeatherEffectsMap
- The plugins that add weather effects into the battle screen normally do not change the weather back at the end of the battle in case it changed during battle. BO_WeatherCore provides this functionality which can be switched on/off via this plugin parameter.
- The global variable $wpow is always set to current weather power. It can be used in formulas, e.g. 2 * (a.atk + $wpow) - b.def.

BO_WeatherCharacterStyles
Doesn't affect the battle. This is rather for visual aspects. It changes the actors/enemies/events appearance during different weathers only via notetags. In the notetags 'None' can be used as a weather name.

Actor notetags are:
<Weather X Face:Y> Where X is the name of the weather and Y is the name of the file which should used for the actors face image during the weather X. Please note: The face image index stayes the same, e.g. Marsha is at 8 or 7 (do not know if it zero based), so please make sure the 8th (7th) part of the new image actually contains some non transparent pixels.

<Weather X Character:Y> The same as above for the character image file name.
<Weather X Battler:Y> The same but for the battler image name.

Examples:

<Weather Rain Face:Harold_Rain>
<Weather Rain Character:Harold_Rain>
<Weather Rain Battler:Harold_Rain>
<Weather Storm Face:Harold_Storm>
<Weather Storm Character:Harold_Storm>
<Weather Storm Battler:Harold_Storm>

The enemy notetag is:
<Weather X Hue:Y> Where X is the name of the weather and Y is the new Hue value to be used during battle.

Examples:
<Weather Storm Hue:267>
<Weather Rain Hue:33>
<Weather Snow Hue:204>
<Weather None Hue:129>

Event Notetags:
<Weather X Page Y:[Z,Idx] Where X is the name of the weather and Y is the zero-based index of the event page that should get a weather dependend image. Z is the name of the new image file to be used and Idx the index within this image file to be used.

Examples:
<Weather Rain Page 0:[Event1,1]><Weather Snow Page 0:[Event1,2]>

Normal Outfits.PNG
Snow Outfits.PNG

BO_WeatherSummon
This plugin is all about changing the weather at the start of the battle or during the battle. It is entirely notetag based.

Actor/Enemy/Class notetags:
<WeatherSummon:X Pow Dur Turns> Actor/Enemy entering battle will immediately
change the current weather into the given weather.
Where
- X is the name of the weather, e.g. Rain
- Pow is the new weather power, may exceed the default maximum of 9
- Dur is the duration in Frames it takes to change the weather to the new one
- Turns is the amount of turns the weather stayes active during battle after summoned
(0 means infinite).

<WeatherClear> As soon as this Actor/Enemy enters the battle the active weather will
be set to 'None'.

Entering the battle could mean:
- At the start of the battle, where the actor/enemy with the lowest speed defines the starting weather.
- Being swapped out, e.g. by using YEP_PartySystem
- Appearing halfway. But do not make an enemy appearing halfway being a weather summoner and have a weather specific Hue, because it won't be displayed correctly and I don't know why.

Item/Skill notetags:
The same as above, but the weather changes upon using the skill/item.

<WeatherEnhance: Pow>Upon using the skill/item the current weathers power will be strengthend/weakend by the amount given by Pow, where Pow can be negative.

<WeatherEnhance:X,Pow>Same as above, but only works if the current weather is X (e.g. Rain)

Examples:
<WeatherSummon: Snow 12 0 0>
<WeatherSummon: Rain 12 0 1>
<WeatherClear>
<WeatherEnhance:Rain,3>
<WeatherEnhance:5>

BO_WeatherRestrictedUsage

This plugin allowes the usage of skills and items to be restricted to certain weather.

Skill/Item Notetags:
<WeatherUse X> Where X is the name of the weather: A skill/item can only be used during this weather.
<WeatherSeal X> Where X is the name of the weather: The skill/item cannot be used during this weather.

Both can also be applied to element names, which will add the restriction to all skills/elements that do damage of this element.
Don't worry the plugin will remove the tag from the element name.

Examples (Sorry for german screenshots):
<WeatherUse Rain>
<WeatherSeal Storm>
Fire<WeatherSeal Rain>

WeatherUse.PNG
My Stormbringen can only be used during rain.

WeatherSeal.PNG
My Let it snow cannot be used during rain.

Elements.PNG
All fire element attacks cannot be used during rain.

You may also use the 'None' weather with this.

BO_WeatherBGS

This plugin does not required BO_WeatherCore. It basically adds background sounds to the weather, which can be defined in the plugin parameters. If you are already using OcRam_WeatherEx you do not need this plugin, because OcRam has a way better implementation of background sounds for weather.

BO_WeatherCustomSkillsAndItems

I do not recall why I thought it was a good idea to do this. This plugin basically let's you customize almost every single property of a skill/items except the effects for certain weathers. It is entirely notetag based.

<Weather X Name: Y> Where X is the name of the weather and Y is the name
of the skill/item during this weather.

<Weather X TextColor: Y> Where X is the name of the weather and Y is the
color in which the skill should be displayed during this weather, e.g.
<Weather Rain TextColor: Blue> or <Weather Snow TextColor:#00BBFF>

<Weather X DamageType: Y> Where X is the name of the weather and Y is
a number indicating the damage type during this weather.
- 0: None
- 1: HP Damage
- 2: MP Damage
- 3: HP Heal
- 4: MP Heal
- 5: HP Drain
- 6: MP Drain

<Weather X DamageFormula: Y> Where X is the name of the weather and Y
is the damage formula to be used during this weather.

<Weather X AttackSpeed: Y> Where X is the name of the weather and Y
is the attack speed of the given skill/item during this weather.

<Weather X AttackTimes: Y> Where X is the name of the weather and Y
is the number of times the opponent is attacked consecutively during
this turn by the item/skill when this weather is active. Minimum 1, Maximum 9.

<Weather X Scope: Y> Where X is the name of the weather and Y is
a number indicating the scope of the skill/item.
- 0 None
- 1: Single Enemy
- 2: All Enemies
- 3: One random Enemy
- 4: Two random Enemy
- 5: Three random Enemy
- 6: Four random Enemy
- 7: One ally
- 8: All allies
- 9: One ally (dead)
- 10: All allies (dead)
- 11: The user

<Weather X Animation: Y> Where X is the name of the weather and Y is the database
id of the animation to be played for the item/skill during this weather.

<Weather X Icon: Y> Where X is the name of the weather and Y is the icon to be
displayed next to the skill/item in the selection window during this weather.

<Weather X Description: Y> Where X is the name of the weather and Y is the decription
to be displayed for this skill/item during the given weather.

<Weather X CanCrit: >Y> Where X is the name of the weather and Y is either
true or false to indicate whether this skill/item can cause critical hits during
the given weather.

<Weather X Variance: Y> Where X is the name of the weather and Y is the
the damage variance percentage during this weather. Minimum 0, Maximum 100.

<Weather X Element: Y> Where X is the name of the weather and Y is either
the database id of the element or name of the element of this skill/item
during the given weather, e.g. <Weather Rain Element: 2> or <Weather Rain Element: Wate

<Weather X MpCost: Y> Where X is the name of the weather and Y is the
number of MP to be used for the skill during this weather.

<Weather X TpCost: Y> The same as above but for TP.

<Weather X TpGain: Y> Where X is the name of the weather and Y is the
amount of TP to be gained when using this skill/item during the given weather.

<Weather X HitType: Y> Where X is the name of the weather and Y is a number
indicating the hit type of the skill/item during this weather.
- 0: Certain Hit
- 1: Physical
- 2: Magical

<Weather X SuccessRate: Y> Where X is the name of the weather and Y is the
successrate of the skill/item during this weather. Minimum 0, Maximum 100.

Examples:
<Weather Rain Name:Water Triple Strike>
<Weather Rain TextColor: Blue>
<Weather Storm DamageType:1> // For HP Damage
<Weather Rain DamageFormula: (4 * (a.atk + $wpow) - 2 * b.def) / 3>
<Weather Storm AttackSpeed:500>
<Weather Rain AttackTimes: 3>
<Weather Snow Scope:2> // For all enemies
<Weather Rain Animation:81>
<Weather Rain Icon:67>
<Weather Rain Description:Hits the opponent three times doing water damage.>
<Weather Storm CanCrit:false>
<Weather Storm Variance:0>
<Weather Rain Element:Water>
<Weather Rain MpCost: 5>

<Weather Storm TpCost:10>
<Weather Rain TpGain: 10>
<Weather Snow HitType:0> // For certain hit
<Weather Rain SuccessRate:80>


It does not make sense but you may also use the 'None' weather with this.

BO_WeatherRandomEncounter

With this plugin you can make random encounter appear only during certain weather.
This is accomplished via notetags on the map. It does not require BO_WeatherCore.

<X Encounter: Y/> where X is the name of the weather and Y is a comma seperated list of troop ids.

All troops with ids listed under those notetags will only appear during the given weather. All troops which are not part of any of those notetags will appear during each weather.

You still have to set up all these encounters with rarity and region ids normally in the map screen.

Map Encounters.PNG

BO_WeatherTraits

This plugin provides additional traits via notetags,
that are only active during certain weather.
All the notetags can be applied to Actors, Classes, Enemies, States and Equipment.
Note: Not all of the existing traits of the editor are supported.
The supported notetags are explained in the plugins helpfile.

BO_WeatherActionEffects

With this plugin items and skills might have effects, that only trigger during a certain
weather. It is entirely notetag based and all the supported notetags are explained in the
plugins helpfile.

BO_WeatherDamageMultiplier

This plugin provides additional damage multipliers depending on the weather via notetags and suffixes on the type names.
Type Name Suffixes (Skill Types, Element Types, Weapon Types, Armor Types):
<Weather X Damage Y> Where x is the name of the weather and Y is a floating value representing the damage factor.
The factor can be negative.

Examples:
* Fire<Weather Rain Damage 0.5>: Fire Element Skills/Items will deal half damage during rain
* Shield<Weather Snow Damage 0.25>: All armor of type shield will reduce damage to quarter during snow.
* Sword<Weather Storm Damage 2.0> All skills performed with weapons of type sword will deal twice as much damage.

<Weather X Heal Y> Where x is the name of the weather and Y is a floating point number defining the healing factor.
The factor can be negative.

Examples:
* White Magic<Weather Rain Heal -1.0> All healing skills of type white magic will do damage during rain instead.
* Water<Weather Rain Heal 2.0> All healing skills of the water element will heal twice as much during rain.

Notetags (Actor, Class, Enemy):
<Weather X Damage Deal: Y> Where X is the name of the weather and Y is a floating point
value representing the damage factor. This damage factor will be applied if an actor/class/enemy
uses a damaging or draining skill/item on an actor/enemy during the given weather.

<Weather X Damage Receive: Y> Where X is the name of the weather and Y is a floating point
value representing the damage factor. This damage factor will be applied if an actor/class/enemy
is attacked by a damaging or draining skill/item by an actor/enemy during the given weather.

<Weather X Drain Deal: Y> Where X is the name of the weather and Y is a floating point
value representing the damage factor. This damage factor will be applied if an actor/class/enemy
uses a draining skill/item on an actor/enemy during the given weather. Will overrule the damage deal
factor.

<Weather X Drain Receive: Y> Where X is the name of the weather and Y is a floating point
value representing the damage factor. This damage factor will be applied if an actor/class/enemy
is attacked by a draining skill/item by an actor/enemy during the given weather. Will overrule the
damage receive factor.

<Weather X Heal Deal: Y> Where X is the name of the weather and Y is a floating point
value representing the heal factor. This factor will be applied when an actor/class/enemy uses
a healing skill/item on an actor/enemy during the given weather.

<Weather X Heal Receive: Y> Where X is the name of the weather and Y is a floating point
value representing the damage factor. This factor will be applied when an actor/class/enemy
receives healing from another actor/enemy during the given weather.

<Weather X ElementHeal: Y> Where X is the name of the weather and Y is the id or name of the
element. Skills/Items with the given element will always heal units with this notetag applied
during the given weather.

<Weather X ElementDamage: Y> Where X is the name of the weather and Y is the id or name of the
element. Skills/Items with the given element will always damage units with this notetag applied
during the given weather. ElementDamage will always overrule ElementHeal for the same Element
independend of the notetag order.

All factors can be negative.

Edit:
Fixed a bug in BO_WeatherSummon I found while using it in another project then my test project.

Edit 2:
Fixed a bugs in BO_WeatherDamageMultiplier: ElementHeal and ElementDamage didn't work. They also didn't apply the element of normal attacks.


BO_WeatherTurnsDisplay

One big thing I noticed, which was really missing from this is a display for how many turns the weather in battle lasts.
It is an extension plugin for BO_WeatherSummon and creates a small window in the battle scene, that displays the remaining turns of the weather.
And sorry I forgot to include a help file in this one. Now I just hope it is self explanatory enough.

Here you see screenshots of it's default position and layout, which can be adjusted in the plugin parameters:
Snow Display.PNG

It will hide itself when the turn count reaches 0 and is also able to display endless amount of turns:
Storm Display.PNG


BO_YepX_WeatherBattleEngineCore

Added multiple workarounds for YEP_BattleEngineCore compatibility with BO_WeatherSummon and BO_WeatherCustomSkillsAndItems.
Requires BO_WeatherSummon abd YEP_BattleEngineCore and needs to be placed under both.
With this it is no longer needed to comment out the code in Game_Action.prototype.applyGlobal in YEP_BattleEngineCore for BO_WeatherSummon to work properly.
 

Attachments

Last edited:

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
12,954
Reaction score
13,314
First Language
English
Primarily Uses
RMVXA

Moved to Plug-in Releases at request of OP

 

BurningOrca

Veteran
Veteran
Joined
Apr 14, 2019
Messages
173
Reaction score
129
First Language
German
Primarily Uses
RMMV
Fixed a bug in BO_WeatherSummon where the battle processing event was not anymore processed correctly when this plugin was installed.

The same Bug was in BO_WeatherCore aswell and I only realized this today.
 
Last edited:

Siul

Veteran
Veteran
Joined
Nov 19, 2012
Messages
77
Reaction score
14
First Language
Spanish
Primarily Uses
Seems a nice Work @BurningOrca

Can I ask what wheather plugins are compatible with yours? (but MOG, of course, as you stated before)

It's just because I found this script pretty interesting but I'd need a couple of new weathers at least.

Thanks in advance and good job.
 

BurningOrca

Veteran
Veteran
Joined
Apr 14, 2019
Messages
173
Reaction score
129
First Language
German
Primarily Uses
RMMV
Seems a nice Work @BurningOrca

Can I ask what wheather plugins are compatible with yours? (but MOG, of course, as you stated before)

It's just because I found this script pretty interesting but I'd need a couple of new weathers at least.

Thanks in advance and good job.
Honestly I am sorry as I don't know a good answer to this question. The thing is I haven't tested other weather plugins. If a plugin which introduces new weathers uses the default weather engine (MOG doesn't) and just extends on it, it should be compatible. You then just have to find out how the weather is called and for example use something like <Weather Sandstorm AttackTimes: 5> with my plugin.
 

Siul

Veteran
Veteran
Joined
Nov 19, 2012
Messages
77
Reaction score
14
First Language
Spanish
Primarily Uses
That's the point, at the moment, I just found plugins that modify some of the preexistant weathers, not introducing any (if you know any, please tell me). Besides, I don't know how to code properly so I can introduce it myself in the engine.

Just another question, can the weather power (not only the type of weather) be used as a condition for damage formulas or similar?

Big thanks again.
 

BurningOrca

Veteran
Veteran
Joined
Apr 14, 2019
Messages
173
Reaction score
129
First Language
German
Primarily Uses
RMMV
Sorry except MOG's I don't know any. I can't read portuguese so it is hard to figure out for me how MOG's weather works. That is why I cannot make my plugins work with MOGs weather.
I personally don't know anything about graphics programming, otherwise I would have tried to introduce new weather myself. The only thing I know about it is that their is a lot of math involved.

Fog can be done with a fog graphic and a layers plugin. Victor Engine and OcRam have such plugins.
I guess sandstorm can be done in a similar way.
About other weathors I really really don't know.

And no all my notetags just use the weather type. $wpow which represents the weather power can only be used in the damage formulas themselves.
 

BurningOrca

Veteran
Veteran
Joined
Apr 14, 2019
Messages
173
Reaction score
129
First Language
German
Primarily Uses
RMMV
Opps, I forgot layer plugins just introduce a way to display graphics such as fog on the screen on different layers, but do not introduce them as new types of weather.

Edit:
Updated the plugins to include YEP Battle Engine Core workarounds.
 
Last edited:

dragonx777

Veteran
Veteran
Joined
Jan 25, 2015
Messages
133
Reaction score
42
First Language
English
Primarily Uses
RMMV
@BurningOrca this is nice and is what I’m trying to accomplish in my game now through events. I am using Ocram’s Weather EX currently and this seems incompatible. Any chance for compatibility?
 

BurningOrca

Veteran
Veteran
Joined
Apr 14, 2019
Messages
173
Reaction score
129
First Language
German
Primarily Uses
RMMV
It seems incompatible?
I thought they are compatible.
Please give me more details!
Which plugin parameter do I have to set in OcRams plugin to test for the incompatibility?
 

dragonx777

Veteran
Veteran
Joined
Jan 25, 2015
Messages
133
Reaction score
42
First Language
English
Primarily Uses
RMMV
It seems incompatible?
I thought they are compatible.
Please give me more details!
Which plugin parameter do I have to set in OcRams plugin to test for the incompatibility?
it may be another plugin that was causing the issue. I’ll do further testing tonight to verify but it was the weather effects such as damage multiplier and random encounters (using Ocram’s troop plugin as well). I have many more than the default rain, storm, snow weather types. I’m sure it’s me and not your awesome plugin.
 

dragonx777

Veteran
Veteran
Joined
Jan 25, 2015
Messages
133
Reaction score
42
First Language
English
Primarily Uses
RMMV
@BurningOrca all good as far as I can tell. I have to rethink some of the plugins I use for other features but this is great!
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Ive got a long lost half uncle. Thats real cool.
I forget what is bumping rule in this forum. Is anyone know? Thank you.
BCj
Ew, why does my blogpost on the rpgmaker.net site look like a garbled mess? Are html codes disabled or something?
I feel that I should cut down on my order queue so I can get some more time for my projects, its been quite a longggg while since I worked on them LOL
I friend of mine insisted on practicing dubbing things with him... and its quite funny, yet, it really takes a huge amount of practice!

Forum statistics

Threads
97,883
Messages
947,622
Members
129,117
Latest member
Babiboo
Top