Exemplo n.º 1
0
def append_special_place_names(places):
    # handle special german casting names
    fishing_places = places["de"].keys()

    coin = coinach.CoinachReader()
    reader = csv.reader(coin.exd("PlaceName", lang="de"))
    next(reader)
    next(reader)
    next(reader)

    place_idx = 0
    xml_idx = 9

    for row in reader:
        place = int(row[place_idx])
        if not place:
            continue
        if place not in fishing_places:
            continue
        m = re.search(r"<Case\(2\)>([^<]*)<\/Case>", row[xml_idx])
        if not m:
            continue

        if isinstance(places["de"][place], list):
            places["de"][place].append(m.group(1))
        else:
            places["de"][place] = [places["de"][place], m.group(1)]
Exemplo n.º 2
0
def get_special_place_names(places):
    # handle special german casting names
    fishing_places = places['de'].keys()

    output = {}
    for locale in locales:
        output[locale] = {}
    coin = coinach.CoinachReader()
    reader = csv.reader(coin.exd('PlaceName', lang='de'))
    next(reader)
    next(reader)
    next(reader)

    place_idx = 0
    xml_idx = 9

    for row in reader:
        place = int(row[place_idx])
        if not place:
            continue
        if place not in fishing_places:
            continue
        m = re.search(r'<Case\(2\)>([^<]*)<\/Case>', row[xml_idx])
        if not m:
            continue
        output['de'][place] = m.group(1)

    return output
Exemplo n.º 3
0
def get_from_coinach():
    # TODO: make an arg parser for non-default paths
    reader = coinach.CoinachReader(verbose=True)
    writer = coinach.CoinachWriter(verbose=True)
    if FFXIV_PATH:
        reader.ffxiv_path = FFXIV_PATH
    monsters = update(reader, writer)
    if CN_FFXIV_PATH:
        reader.ffxiv_path = CN_FFXIV_PATH
    monsters = update_cn(reader, writer, monsters)
    all_monsters = {}
    for (k, v) in monsters.items():
        all_monsters[v['name']['en']] = v
    writer.write(os.path.join('resources', _OUTPUT_FILE),
                 os.path.basename(os.path.abspath(__file__)), 'gMonster',
                 all_monsters)
Exemplo n.º 4
0
def get_from_coinach():
    reader = coinach.CoinachReader()
    monsters = {}
    update_coinach(monsters, reader)
    update_raw_csv(monsters, _BASE_GITHUB + _CN_GITHUB, 'cn')
    update_raw_csv(monsters, _BASE_GITHUB + _KO_GITHUB, 'ko')

    all_monsters = {}
    for (_, info) in monsters.items():
        all_monsters[info['name']['en']] = info

    writer = coinach.CoinachWriter()
    writer.write(
        os.path.join('resources', _OUTPUT_FILE),
        os.path.basename(os.path.abspath(__file__)),
        'gMonster',
        all_monsters)
Exemplo n.º 5
0
def get_from_coinach(_ffxiv_game_path, _saint_conainch_cmd_path,
                     _cactbot_path):
    reader = coinach.CoinachReader(coinach_path=_saint_conainch_cmd_path,
                                   ffxiv_path=_ffxiv_game_path)
    monsters = {}
    update_coinach(monsters, reader)
    update_raw_csv(monsters, "cn")
    update_raw_csv(monsters, "ko")

    all_monsters = {}
    for (_, info) in monsters.items():
        all_monsters[info["name"]["en"]] = info

    writer = coinach.CoinachWriter(cactbot_path=_cactbot_path)

    header = """import { LocaleObject } from '../types/trigger';

type LocaleTextOrArray = LocaleObject<string | string[]>;

export type Rank = 'S' | 'SS+' | 'SS-' | 'A' | 'B';

// Optional values are supported in `Options.CustomMonsters`.
export type HuntEntry = {
  id: string;
  name: LocaleTextOrArray | string | string[];
  rank?: Rank;
  regex?: RegExp;
  hp?: number;
};

export type HuntMap = {
  [huntName: string]: HuntEntry;
};"""

    writer.writeTypeScript(
        filename=os.path.join("resources", _OUTPUT_FILE),
        scriptname=os.path.basename(os.path.abspath(__file__)),
        header=header,
        type="HuntMap",
        as_const=False,
        data=all_monsters,
    )

    print(f"File '{_OUTPUT_FILE}' successfully created.")
Exemplo n.º 6
0
def get_from_coinach(_ffxiv_game_path, _saint_conainch_cmd_path, _cactbot_path):
    reader = coinach.CoinachReader(
        coinach_path=_saint_conainch_cmd_path, ffxiv_path=_ffxiv_game_path
    )
    monsters = {}
    update_coinach(monsters, reader)
    update_raw_csv(monsters, _BASE_GITHUB + _CN_GITHUB, "cn")
    update_raw_csv(monsters, _BASE_GITHUB + _KO_GITHUB, "ko")

    all_monsters = {}
    for (_, info) in monsters.items():
        all_monsters[info["name"]["en"]] = info

    writer = coinach.CoinachWriter(cactbot_path=_cactbot_path)
    writer.write(
        os.path.join("resources", _OUTPUT_FILE),
        os.path.basename(os.path.abspath(__file__)),
        "gMonster",
        all_monsters,
    )

    print(f"File '{_OUTPUT_FILE}' successfully created.")
Exemplo n.º 7
0
def get_from_coinach(_ffxiv_game_path, _saint_conainch_cmd_path,
                     _cactbot_path):
    reader = coinach.CoinachReader(coinach_path=_saint_conainch_cmd_path,
                                   ffxiv_path=_ffxiv_game_path)
    monsters = {}
    update_coinach(monsters, reader)
    update_raw_csv(monsters, "cn")
    update_raw_csv(monsters, "ko")

    all_monsters = {}
    for (_, info) in monsters.items():
        all_monsters[info["name"]["en"]] = info

    writer = coinach.CoinachWriter(cactbot_path=_cactbot_path)

    header = """import { LocaleObject } from '../types/trigger';
type LocaleTextOrArray = LocaleObject<string | string[]>;

type HuntData = {
  [huntName: string]: {
    readonly id: string;
    readonly name: LocaleTextOrArray;
    readonly rank: string;
  };
};"""

    writer.writeTypeScript(
        filename=os.path.join("resources", _OUTPUT_FILE),
        scriptname=os.path.basename(os.path.abspath(__file__)),
        header=header,
        type="HuntData",
        as_const=False,
        data=all_monsters,
    )

    print(f"File '{_OUTPUT_FILE}' successfully created.")
Exemplo n.º 8
0
            weather_name = row[i]
            if not weather_name:
                break
            weathers.append(weather_name)
            sum += int(row[i + 1])
            rates.append(sum)
        # add leading zeroes so they sort properly.
        all_rates["%04d" % int(row[0])] = {
            "weathers": weathers,
            "rates": rates,
        }
    return all_rates


def update(reader, writer):
    data = reader.exd("WeatherRate")
    all_rates = parse_data(data)
    writer.write(
        os.path.join("resources", _OUTPUT_FILE),
        os.path.basename(os.path.abspath(__file__)),
        "gWeatherRates",
        all_rates,
    )


if __name__ == "__main__":
    # TODO: make an arg parser for non-default paths
    reader = coinach.CoinachReader(verbose=True)
    writer = coinach.CoinachWriter(verbose=True)
    update(reader, writer)