I've been working on a MERP setup for the last few months and have managed to use a macro to generate a powercard that then links to a rollable table to generate critical results.
Here's an example of a weapon attack, specifically the missile weapon attack macro:
!power {{
--name|Missile Attack
--tokenid|@{selected|token_id}
--target_list|@{target|token_id}
--emote|@{selected|character_name}^^Attacking^^@{target|character_name}
--leftsub|Against @{target|token_name}
--rightsub|Missile Attack
--Attack Total | [[ [$atk] 1d100!>95cs>95cf<5 + [[ @{selected|skill_missile_total_bonus} ]] [Attacker Skill Bonus] +[[ @{selected|total_hitloss_penalty} ]] [Attacker Hit Loss Penalty] + @{selected|activity_penalty} [Attacker Activity Penalty] + [[ @{selected|armgreaves_penalty} ]] [Arm Greaves OB Penalty] - [[ @{target|defensive_total_bonus} ]] [Target DB] + [[ ?{Attacker Modifiers (e.g. -30 for drawing a weapon)|0} ]] [Attacker Modifiers] - [[ ?{Defender Modifiers (e.g. defender parry amount)|0} ]] [Defender Modifiers] ]]
--Dice Roll | [^atk.base]
--?? $atk.base <= 5 ?? Fumble|You stumble and fail to attack
--?+ $atk.total > 5 AND @{target|armorworn} == no_armor +? api_rt|AT-4_MissileWeaponsAttackvsNone [^atk]
--?+ $atk.total > 5 AND @{target|armorworn} == soft_leather +? api_rt|AT-4_MissileWeaponsAttackvsSoftLeather [^atk]
--?+ $atk.total > 5 AND @{target|armorworn} == rigid_leather +? api_rt|AT-4_MissileWeaponsAttackvsRigidLeather [^atk]
--?+ $atk.total > 5 AND @{target|armorworn} == chain_armor +? api_rt|AT-4_MissileWeaponsAttackvsChain [^atk]
--?+ $atk.total > 5 AND @{target|armorworn} == plate_armor +? api_rt|AT-4_MissileWeaponsAttackvsPlate [^atk]
}}
I know there must be a better way of doing this but it does work pretty well. There's a lot of setting-up of tables though, which I find super clunky. If anyone could explain how to convert this into an API script, I'd be all ears!