Esempio n. 1
0
    def from_css(css: CrossServerSkill) -> 'ActiveSkill':
        jp_skill = css.jp_skill
        na_skill = css.na_skill
        kr_skill = css.kr_skill
        cur_skill = css.cur_skill

        desc_ja = cur_skill.full_text(JaASTextConverter())
        desc_en = cur_skill.full_text(EnASTextConverter())
        desc_ko = cur_skill.full_text(KoASTextConverter())
        desc_templated_ja = cur_skill.templated_text(JaASTextConverter())
        desc_templated_en = cur_skill.templated_text(EnASTextConverter())
        desc_templated_ko = cur_skill.templated_text(KoASTextConverter())

        skill_type_tags = skill_text_typing.parse_as_conditions(css)
        tags = skill_text_typing.format_conditions(skill_type_tags)

        return ActiveSkill(
            active_skill_id=jp_skill.skill_id,
            compound_skill_type_id=cur_skill.compound_skill_type,
            name_ja=jp_skill.name,
            name_en=na_skill.name,
            name_ko=kr_skill.name,
            desc_ja=desc_ja,
            desc_en=desc_en,
            desc_ko=desc_ko,
            desc_templated_ja=desc_templated_ja,
            desc_templated_en=desc_templated_en,
            desc_templated_ko=desc_templated_ko,
            desc_official_ja=jp_skill.raw_description,
            desc_official_en=na_skill.raw_description,
            desc_official_ko=kr_skill.raw_description,
            cooldown_turns_max=cur_skill.cooldown_turns_max,
            cooldown_turns_min=cur_skill.cooldown_turns_min,
            tags=tags)
Esempio n. 2
0
    def from_as(act: ASSkill) -> 'ActiveSubskill':
        desc_ja = act.full_text(JaASTextConverter())
        desc_en = act.full_text(EnASTextConverter())
        desc_ko = act.full_text(KoASTextConverter())
        desc_templated_ja = act.templated_text(JaASTextConverter())
        desc_templated_en = act.templated_text(EnASTextConverter())
        desc_templated_ko = act.templated_text(KoASTextConverter())

        skill_type_tags = skill_text_typing.parse_as_conditions(act, True)
        tags = skill_text_typing.format_conditions(skill_type_tags)

        return ActiveSubskill(
            active_subskill_id=act.skill_id,
            # TODO: Figure out how to do names
            name_ja="",
            name_en="",
            name_ko="",
            desc_ja=desc_ja,
            desc_en=desc_en,
            desc_ko=desc_ko,
            desc_templated_ja=desc_templated_ja,
            desc_templated_en=desc_templated_en,
            desc_templated_ko=desc_templated_ko,
            board_65=act.board.to_6x5(),
            board_76=act.board.to_7x6(),
            cooldown=act.cooldown_turns_max or -1,
            tags=tags)
Esempio n. 3
0
def save_cross_database(output_dir: str, db: CrossServerDatabase):
    raw_card_dir = os.path.join(output_dir, 'cards')
    pathlib.Path(raw_card_dir).mkdir(parents=True, exist_ok=True)

    for c in db.ownable_cards:
        card_file = os.path.join(raw_card_dir, '{}.txt'.format(c.monster_id))
        with open(card_file, 'w', encoding='utf-8') as f:
            # Write top level info for the monster
            f.write('#{} {}\n'.format(c.monster_id, c.na_card.card.name))
            card_info = c.jp_card.card
            f.write('HP: {} ATK: {} RCV: {} LB: {}\n'.format(card_info.max_hp,
                                                             card_info.max_atk,
                                                             card_info.max_rcv,
                                                             card_info.limit_mult))
            f.write('AWK: {}\n'.format(','.join(map(str, card_info.awakenings))))
            f.write('SAWK: {}\n'.format(','.join(map(str, card_info.super_awakenings))))
            f.write('\n')

            if c.active_skill:
                dump_skill(f, c.active_skill, EnASTextConverter())

            if c.leader_skill:
                dump_skill(f, c.leader_skill, EnLSTextConverter())

    as_file = os.path.join(output_dir, 'active_skills.txt')
    with open(as_file, 'w', encoding='utf-8') as f:
        converter = EnASTextConverter()
        for css in db.active_skills:
            dump_skill(f, css, converter)

    ls_file = os.path.join(output_dir, 'leader_skills.txt')
    with open(ls_file, 'w', encoding='utf-8') as f:
        converter = EnLSTextConverter()
        for css in db.leader_skills:
            dump_skill(f, css, converter)
Esempio n. 4
0
    def from_css(css: CrossServerSkill) -> 'ActiveSkill':
        jp_skill = css.jp_skill
        na_skill = css.na_skill
        kr_skill = css.kr_skill

        jp_as_converter = JpASTextConverter()
        ja_description = jp_skill.full_text(jp_as_converter)

        en_as_converter = EnASTextConverter()
        en_description = jp_skill.full_text(en_as_converter)

        skill_type_tags = skill_text_typing.parse_as_conditions(css)
        tags = skill_text_typing.format_conditions(skill_type_tags)

        # In the event that we don't have KR data, use the NA name and calculated description.
        kr_name = kr_skill.name if jp_skill != kr_skill else na_skill.name
        ko_desc = kr_skill.raw_description if jp_skill != kr_skill else en_description

        return ActiveSkill(active_skill_id=jp_skill.skill_id,
                           name_ja=jp_skill.name,
                           name_en=na_skill.name,
                           name_ko=kr_name,
                           desc_ja=ja_description,
                           desc_en=en_description,
                           desc_ko=ko_desc,
                           turn_max=jp_skill.turn_max,
                           turn_min=jp_skill.turn_min,
                           tags=tags)
Esempio n. 5
0
    def from_as(act: ASSkill) -> 'ActivePart':
        desc_ja = act.full_text(JaASTextConverter())
        desc_en = act.full_text(EnASTextConverter())
        desc_ko = act.full_text(KoASTextConverter())
        desc_templated_ja = act.templated_text(JaASTextConverter())
        desc_templated_en = act.templated_text(EnASTextConverter())
        desc_templated_ko = act.templated_text(KoASTextConverter())

        skill_type_tags = skill_text_typing.parse_as_conditions(act, True)
        tags = skill_text_typing.format_conditions(skill_type_tags)

        return ActivePart(active_part_id=act.skill_id,
                          active_skill_type_id=act.skill_type,
                          desc_ja=desc_ja,
                          desc_en=desc_en,
                          desc_ko=desc_ko,
                          desc_templated_ja=desc_templated_ja,
                          desc_templated_en=desc_templated_en,
                          desc_templated_ko=desc_templated_ko,
                          tags=tags)
Esempio n. 6
0
 def print_translations(skill) -> None:
     if isinstance(skill, ActiveSkill):
         if args.show_en:
             print("EN:", skill.text(EnASTextConverter()))
         if args.show_ja:
             print("JA:", skill.text(JaASTextConverter()))
         if args.show_ko:
             print("KO:", skill.text(KoASTextConverter()))
     elif isinstance(skill, LeaderSkill):
         if args.show_en:
             print("EN:", skill.text(EnLSTextConverter()))
         if args.show_ja:
             print("JA:", skill.text(JaLSTextConverter()))
         if args.show_ko:
             print("KO:", skill.text(KoLSTextConverter()))
Esempio n. 7
0
import argparse
import os
import pathlib
import padtools
from pad.common import pad_util
from pad.common.shared_types import Server
from pad.raw.skills import skill_text_typing
from pad.raw.skills.en.active_skill_text import EnASTextConverter
from pad.raw.skills.jp.active_skill_text import JpASTextConverter
from pad.raw.skills.en.leader_skill_text import EnLSTextConverter
from pad.raw.skills.jp.leader_skill_text import JpLSTextConverter
from pad.raw.skills.jp.enemy_skill_text import JpESTextConverter
from pad.raw.skills.en.enemy_skill_text import EnESTextConverter
from pad.raw.skills.leader_skill_info import LeaderSkill

AS_CONVERTERS = (JpASTextConverter(), EnASTextConverter(), EnASTextConverter())
LS_CONVERTERS = (JpLSTextConverter(), EnLSTextConverter(), EnLSTextConverter())
ES_CONVERTERS = (JpESTextConverter(), EnESTextConverter(), EnESTextConverter())

from pad.raw_processor import merged_database
from pad.raw_processor.crossed_data import CrossServerDatabase
from pad.raw.skills.enemy_skill_info import BEHAVIOR_MAP


def parse_args():
    parser = argparse.ArgumentParser(description="Runs the integration test.",
                                     add_help=False)
    input_group = parser.add_argument_group("Input")
    input_group.add_argument("--input_dir",
                             required=True,
                             help="Path to a folder where the input data is")
Esempio n. 8
0
 def load_text(self):
     self.en_ls_text = self.leader_skill.jp_skill.full_text(
         EnLSTextConverter()) if self.leader_skill else None
     self.en_as_text = self.active_skill.jp_skill.full_text(
         EnASTextConverter()) if self.active_skill else None
Esempio n. 9
0
    def __init__(self, jp_database: Database, na_database: Database,
                 kr_database: Database):
        self.all_cards = build_cross_server_cards(
            jp_database, na_database,
            kr_database)  # type: List[CrossServerCard]
        self.ownable_cards = list(
            filter(lambda c: 0 < c.monster_id < 19999,
                   self.all_cards))  # type: List[CrossServerCard]

        self.leader_skills = build_cross_server_skills(
            jp_database.leader_skills, na_database.leader_skills,
            kr_database.leader_skills)

        ls_converter = EnLSTextConverter()
        for ls in self.leader_skills:
            ls.en_text = ls.jp_skill.full_text(ls_converter)
            ls.skill_type_tags = list(
                skill_text_typing.parse_ls_conditions(ls.en_text))
            ls.skill_type_tags.sort(key=lambda x: x.value)

        self.active_skills = build_cross_server_skills(
            jp_database.active_skills, na_database.active_skills,
            kr_database.active_skills)

        as_converter = EnASTextConverter()
        for ask in self.active_skills:
            ask.en_text = ask.jp_skill.full_text(as_converter)
            ask.skill_type_tags = list(
                skill_text_typing.parse_as_conditions(ask.en_text))
            ask.skill_type_tags.sort(key=lambda x: x.value)

        self.dungeons = build_cross_server_dungeons(
            jp_database, na_database,
            kr_database)  # type: List[CrossServerDungeon]

        self.enemy_skills = build_cross_server_enemy_skills(
            jp_database.raw_enemy_skills, na_database.raw_enemy_skills,
            kr_database.raw_enemy_skills)

        self.jp_bonuses = jp_database.bonuses
        self.na_bonuses = na_database.bonuses
        self.kr_bonuses = kr_database.bonuses

        self.jp_exchange = jp_database.exchange
        self.na_exchange = na_database.exchange
        self.kr_exchange = kr_database.exchange

        self.jp_egg_machines = jp_database.egg_machines
        self.na_egg_machines = na_database.egg_machines
        self.kr_egg_machines = kr_database.egg_machines

        self.jp_exchange = jp_database.exchange
        self.na_exchange = na_database.exchange
        self.kr_exchange = kr_database.exchange

        self.monster_id_to_card = {c.monster_id: c for c in self.all_cards}
        self.leader_id_to_leader = {s.skill_id: s for s in self.leader_skills}
        self.active_id_to_active = {s.skill_id: s for s in self.active_skills}
        self.dungeon_id_to_dungeon = {d.dungeon_id: d for d in self.dungeons}

        self.hq_image_monster_ids = []  # type: List[MonsterId]
        self.animated_monster_ids = []  # type: List[MonsterId]

        for csc in self.ownable_cards:
            if csc.leader_skill:
                csc.leader_skill = self.leader_id_to_leader[
                    csc.leader_skill.skill_id]
            if csc.active_skill:
                csc.active_skill = self.active_id_to_active[
                    csc.active_skill.skill_id]
            csc.load_text()