Check if target is a state affected

optiprimeful

Veteran
Veteran
Joined
Aug 27, 2017
Messages
78
Reaction score
6
First Language
English
Primarily Uses
RMMV
How do I check if the target of an attack has a state so that my common event activates?

Something like this $gameActors.actor(x).isStateAffected(x) but for the target of an attack.
Thanks.
 

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
38,541
Reaction score
12,058
First Language
English
Primarily Uses
RMMV
In the damage formula, a is the attacker, and b is the target. So if the formula above is correct, you would use b.isStateAffected(x)
 

optiprimeful

Veteran
Veteran
Joined
Aug 27, 2017
Messages
78
Reaction score
6
First Language
English
Primarily Uses
RMMV
I meant something like a restriction to the common event. The target of the attack would need to be inflicted with a particular state for the common event to run. The problem with the formula is that the common event will run even if the target is not under the state requirement.
 

Frozen_Phoenix

Veteran
Veteran
Joined
Nov 15, 2014
Messages
133
Reaction score
74
First Language
Portuguese
Primarily Uses
RMMV
You can break the event if the condition is not met:

 

Another Fen

Veteran
Veteran
Joined
Jan 23, 2013
Messages
539
Reaction score
255
First Language
German
Primarily Uses
When I didn't know much about scripting I usually made my skills add an invisible state to the target. The common event would then check every battler for that state to determine if it was hit by the skill (before removing that state again).

You could use that strategy to find out if there is one target that is inflicted with both the "target marker" state and the state you originally wanted to check.
If there is none, the common event would end without doing anything (in a way like Frozen_Phoenix already suggested).

Alternatively, you can also extend the skills damage formula to set a switch or variable that your common event can check and reset. For example, if you add this before your actual damage formula:

if (b.isStateAffected( 15 )) $gameSwitches.setValue( 25 , true); (actual damage formula here)

Switch 25 would be "ON" if the target was inflicted with state 15 when you run the common event (The common event would be required to change the switch back to "OFF" of course in order to work the next time).
Keep in mind that if you use the damage formula for anything not related to calculating damage, you probably should not use the default "Auto Battle" trait for any actor that could learn the skill.

Edit: Replaced the damage formula suggestion.
 
Last edited:

optiprimeful

Veteran
Veteran
Joined
Aug 27, 2017
Messages
78
Reaction score
6
First Language
English
Primarily Uses
RMMV
Problem solved! I had no idea I could use a target mark state and totally forgot about the exit event processing. Thank you so much!
 

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

Latest Threads

Latest Posts

Latest Profile Posts

40 card deck size, the plugin seems more sluggish.
Village theme I composed for a commission!
Stream will be live shortly with some Haunting Ground! Feel free to drop by!
welp, the stock market went down by 7% because of corona today. Time to buy stocks?
Man, being able to edit my game WHILE testplaying it is like the most convenient thing EVER. Thank you, MV...it even makes up for the OGG thing. Well, almost.

Forum statistics

Threads
94,560
Messages
921,889
Members
124,423
Latest member
Detulovnoc
Top