This should be fairly simple to do via scripting.
Go into the script editor and goto the Game_Enemy class.
At the top you'll see a bunch of attr_reader/attr_accessor's
At the bottom of this part, add attr_accessor :catch_offset.
Now, go into the initialize method and add in @catch_offset = 0.
Go to the Game_Battler3 tab.
Go to the attack_effect method and near the bottom you should see the block
if hit_result == true
# State Removed by Shock
remove_states_shock
# Substract damage from HP
self.hp -= self.damage
Dirctly above the self.hp -=self.damage line
add in
self.catch_offset += 1 if self.is_a?(Game_Enemy) and self.damage > self.maxhp/24
Go to the skill_effect method and towards the bottom you should see
# Substract damage from HP
last_hp = self.hp
self.hp -= self.damage
effective |= self.hp != last_hp
# State change
@state_changed = false
Right above this, add in
self.catch_offset += 1 if self.is_a?(Game_Enemy) and self.damage > self.maxhp/24
Now, go into the item_effect method and directly beneath
self.damage = -recover_hp
add
self.catch_offset += 1 if self.is_a?(Game_Enemy) and self.damage > self.maxhp/24
If you are using this as a variable in the sense of the event editor, then this is how you get it.
Suppose you are using a variable with id 20 for the monster with id 3.
Call a script an use
for i in $game_troop.enemies
$game_variables[20] += i.catch_offset if i.enemy_id == 3
end
As an alternative to my method above, you could do all of this by checking hp changes in Scene_Battle.
If a monster gets healed does it effect this at all?
A much simpler method would be to just use what percent the monsters hp are of their max, rather than the every time it lose 1/24th bit; just a suggestion
Finally, if you have any questions, please ask