Can this be done with critical hits?
Yes.
Here's the method in Game_Battler that runs when it is determined that the attack/skill DID Crit:
#--------------------------------------------------------------------------
# * Apply Critical
#--------------------------------------------------------------------------
def apply_critical(damage)
damage * 3
end
So you'll want to modify that method. Something like:
#--------------------------------------------------------------------------
# * Apply Critical
#--------------------------------------------------------------------------
def apply_critical(damage)
add_state(33)
damage * 3
end
If you're pasting this as a new scriptlet in Materials, rather than modifying the current script, be sure to place
class Game_Battler < Game_BattlerBase before it and
end after it.
I started making a Battle Effects script a while back, which allows you to apply all different kinds of effects when certain conditions you specify are met on-hit (critical hits and hitting a weakness/resistance are among them). However, I only completed about half of the possible conditions/effects and the script overwrites several methods so the compatibility is kind of weak. Right now I'm only continuing progress on this script in the places where I need it for my own games (since I can control my own compatibility issues), but I do plan to write or commission such a script for MV at some point, in which case I'll pay much more attention to compatibility.