Krawzer_KOF

Veteran
Veteran
Joined
Aug 27, 2017
Messages
89
Reaction score
9
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

Global Moderators
Global Mod
Joined
Mar 2, 2012
Messages
43,769
Reaction score
15,321
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)
 

Krawzer_KOF

Veteran
Veteran
Joined
Aug 27, 2017
Messages
89
Reaction score
9
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
134
Reaction score
79
First Language
Portuguese
Primarily Uses
RMMV
You can break the event if the condition is not met:

60lq3PwMTLiVbo4SPROy9Q.png
 

Another Fen

Veteran
Veteran
Joined
Jan 23, 2013
Messages
608
Reaction score
320
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:

Krawzer_KOF

Veteran
Veteran
Joined
Aug 27, 2017
Messages
89
Reaction score
9
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!
 

Maronius

Villager
Member
Joined
Oct 29, 2015
Messages
21
Reaction score
4
Primarily Uses
Anybody knows the javascript to check if a battler IS NOT inflicted by a specific state (so the opposite of b.isStateAffected(x))?
 

Latest Threads

Latest Profile Posts

I found an absolutely brilliant lifehack on the internet today.

Screenshot_760.jpg
It does sometimes get a little embarrassing that I often come here to ask for help with something and seldom have anything to actually show for it. If there is one thing though I can commend myself for, it's for sticking with an idea I've been tinkering with for this long now and gradually making headways. Even though I've been reserved about my progress, I can say I'm farther now than where I initially started.
I'm gonna put my project on pause for a tiny bit so I can explore the engine outside of it... Winging it can only get you so far LMFAO
Have seen some of my favorite people here posting and helping others with questions today -- love to see it!

Forum statistics

Threads
116,136
Messages
1,096,077
Members
151,555
Latest member
Fotdur
Top