Both of these will need you to track some additional data, I think two global arrays with AMP_PARTYSIZE_ACTIVE slots will be enough: global.party_was_in_battle and global.party_last_move_selected.
- In obj_battlecontrol's create event, fill these both with 0's in all slots.
- For only earning EXP in battle:
- In obj_battlecontrol's step event bcontrolstate_WIN_STEP section, change "if(amp_has_monster(exp_monster)){" to "if(amp_has_monster(exp_monster) && global.party_was_in_battle[exp_monster]){"
- In obj_battlemonster's step event after the "//Monster's been seen in battle! Add to list." comment, add "if(amp_id < AMP_PARTYSIZE_ACTIVE){global.party_was_in_battle[amp_id] = true;}"
- For remembering the last move selected:
- In mev_battle_attack_select, right at the top add "global.party_last_move_selected[obj_battlecontrol.action_monster.amp_id] = menuvalue_x + 2*menuvalue_y"
- In mev_battle_attack, at the end of the "if(validmoves > 0)" block somewhere, append a switch state like
if(obj_battlecontrol.action_monster.amp_id < AMP_PARTYSIZE_ACTIVE){ switch(global.party_last_move_selected[obj_battlecontrol.action_monster.amp_id]){ case 0: menuvalue_x = 0 menuvalue_y = 0 break; case 1: menuvalue_x = 1 menuvalue_y = 0 break case 2: menuvalue_x = 0 menuvalue_y = 1 break case 3: menuvalue_x = 1 menuvalue_y = 1 break } }