[VXAce] How can I check if a specific party member has a state?

ConnedQuest

Warper
Member
Joined
Oct 27, 2021
Messages
3
Reaction score
1
First Language
English
Primarily Uses
RMVXA
In this case, the state I am looking for is Fallen, and in the eventing screen I only see a way to check if the actor has the state.
In my game, you can change the formation at will, and I want an enemy to stomp on the target with fallen (using force action, with a state that cancels their normal turn AI, which only lets me check party member index).
Sorry if its too wordy/poorly written, I'm new to using script and whatnot.
 
Last edited:

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
34,760
Reaction score
8,969
First Language
German
Primarily Uses
RMMV
there is an eventing way to do this, but it's much longer.
you'll need an event that checks every party member for the state and then selects the fitting force action to act - basically one conditional branch for each party index with the different force actions inside.
 

ConnedQuest

Warper
Member
Joined
Oct 27, 2021
Messages
3
Reaction score
1
First Language
English
Primarily Uses
RMVXA
Oh, jeez. That doesn't sound like much fun at all.
At that point I'd rather just have them just stomp randomly. Thanks man!
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
34,760
Reaction score
8,969
First Language
German
Primarily Uses
RMMV
you can use scripts to automate that, but that will require at least some ability to understand scripts.
you can find those scripts in the pinned topic about script equivalents to event commands.
 

NhatNguyen

Peaceful Days Dev
Veteran
Joined
Sep 19, 2013
Messages
274
Reaction score
842
First Language
Vietnamese
Primarily Uses
RMVXA
I haven't got a chance to test this but you can try this code in troop event section.
Replace the 3 variables at the beginning to match with your game.
This piece of code is looping through your party then call force action on enemyIndex that will use skill_id to the party member that has been inflicted with state_id
Ruby:
enemyIndex = 0
state_id = 5
skill_id = 12
$game_party.battle_members.each_with_index do |member, index|
  if member.state?(state_id)
    params = [0, enemyIndex, skill_id, index]
    $game_troop.interpreter.instance_variable_set(:@params, params)
    $game_troop.interpreter.command_339 # Force action.
  end
end
 

ConnedQuest

Warper
Member
Joined
Oct 27, 2021
Messages
3
Reaction score
1
First Language
English
Primarily Uses
RMVXA
enemyIndex = 0 state_id = 5 skill_id = 12 $game_party.battle_members.each_with_index do |member, index| if member.state?(state_id) params = [0, enemyIndex, skill_id, index] $game_troop.interpreter.instance_variable_set:)@params, params) $game_troop.interpreter.command_339 # Force action. end end
Sorry if formatting sucks there. It works perfectly, thank you so much!
 

NhatNguyen

Peaceful Days Dev
Veteran
Joined
Sep 19, 2013
Messages
274
Reaction score
842
First Language
Vietnamese
Primarily Uses
RMVXA
Glad to hear that :p
 

Latest Threads

Latest Posts

Latest Profile Posts

After the initial success with one event, I set up four different events on the same map to detect who is in which slot in my current party, and fortunately it managed to work as intended, with the events changing image to match the party members even as I swapped their positions around in formation. This will be a great tool for immersive scene design.
Finally finished the first hand-drawn map! It took me a week, but I'm so proud!
Actual line of code I just had to write for a plugin:

return Object.keys(this._shopStock).map(key => key.split(",")).map(element => element.map(value => Number(value))).filter(key => key[0] === mapId && key[1] === eventId);

Forum statistics

Threads
118,446
Messages
1,116,042
Members
155,409
Latest member
bartowski93
Top