"""Fixes the empty post-arena "search" minigame (Discord fix)."""
import re

from sc_lua import eol

MOD = {
    'id': 'arena_search_fix',
    'name': 'Arena search fix',
    'description': 'Fixes end of arena match search nodes not giving out credits properly',
    'author': 'found on SCPP discord ported by Furebel',
    'default_enabled': True,
    'order': 10,
    'files': {'loot': 'data/gamedata/shared/loot_tables.lua'},
    'tweakables': [],
}

RANGES = ['1_3', '4_6', '7_8', '9_10', '11_12', '13_15']


def apply(files, v, log):
    text = files['loot']
    nl = '\r\n' if '\r\n' in text else '\n'
    missing = [r for r in RANGES if not re.search(r'LootTable\.CommonRanks_%s_v3\s*=' % r, text)]
    if missing:
        log('WARNING: CommonRanks_%s_v3 not found; this game version may not need the fix. Skipped.' % missing[0])
        return
    todo = [r for r in RANGES
            if not re.search(r'(?m)^LootTable\.CommonRanks_%s\s*=\s*LootTable\.CommonRanks_%s_v3' % (r, r), text)]
    if not todo:
        log('aliases already present')
        return
    if not text.endswith(nl):
        text += nl
    text += nl + '-- aliases added so the server finds the arena-search tables' + nl
    text += nl.join('LootTable.CommonRanks_%s = LootTable.CommonRanks_%s_v3' % (r, r) for r in todo) + nl
    files['loot'] = text
    log('added %d alias lines' % len(todo))
