def parse_recover_mp(text, turn):
    m = re.match('.*(\\d+)ターンの間、(味方全体|自分)に(\\d+)[％%]の(MP|ＭＰ)回復.*', text, re.UNICODE)
    if m:
        turn = m.group(1)
        scope = parse_scope(m.group(2))
        up_val = (int(m.group(3)) / 100)
        return f'Effect({scope}, Recover.mp_turn, {up_val}, {turn})'
    m = re.match('.*味方全体の(MP|ＭＰ)を(\\d+)[％%]回復.*', text, re.UNICODE)
    if m:
        up_val = (int(m.group(2)) / 100)
        return f'Effect(Scope.my_team, Recover.mp_imm, {up_val})'
    m = re.match('.*自分の(MP|ＭＰ)を(\\d+)[％%]回復.*', text, re.UNICODE)
    if m:
        up_val = (int(m.group(2)) / 100)
        return f'Effect(Scope.my_self, Recover.mp_imm, {up_val})'
def parse_recover_mp(text, turn):
    m = re.match('.*(\\d+)ターンの間、(味方全体|自分)に(\\d+)[％%]の(MP|ＭＰ)回復.*', text, re.UNICODE)
    if m:
        turn = m.group(1)
        scope = parse_scope(m.group(2))
        up_val = (int(m.group(3)) / 100)
        return f'Effect({scope}, Recover.mp_turn, {up_val}, {turn})'
    m = re.match('.*味方全体の(MP|ＭＰ)を(\\d+)[％%]回復.*', text, re.UNICODE)
    if m:
        up_val = (int(m.group(2)) / 100)
        return f'Effect(Scope.my_team, Recover.mp_imm, {up_val})'
    m = re.match('.*自分の(MP|ＭＰ)を(\\d+)[％%]回復.*', text, re.UNICODE)
    if m:
        up_val = (int(m.group(2)) / 100)
        return f'Effect(Scope.my_self, Recover.mp_imm, {up_val})'