optiprimeful

Veteran
Veteran
Joined
Aug 27, 2017
Messages
86
Reaction score
7
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,428
Reaction score
15,223
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
86
Reaction score
7
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:

optiprimeful

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

Latest Profile Posts

Got like a sudden surge of wish lists overnight. :)
headshot_headshot.jpg
The theory has been proved. Based on an invisible image's data(the big red dot in the previous image), RM can identify different parts of an enemy and do something respectively. :kaojoy:
Ok.. coding what should be a simple "everyone is petrified and therefore dead, now go to game over screen" shouldn't involve needing to become Dr. J and dunking from the free throw line(my way of saying "jumping through hoops").
Hmmmm... how many xrays til I get super powers?
..of the major old school series that began in the 80s- early 90s, I still haven't beaten 'a' Zelda game. Mario 64 was the first Mario I've beaten. I don't know if I should give that honor to Link to the Past or A Link Between Worlds(I currently own both). Well technically I've haven't beaten a Sonic either (Game Genie doesn't count =P).

Forum statistics

Threads
115,381
Messages
1,089,423
Members
150,099
Latest member
Lilyhia
Top