Example #1
0
def test_mona(transformer_ability: AbilityTransformer):
    # Mona - 10150304
    # https://dragalialost.wiki/w/Mona
    ex_ability_data = transformer_ability.transform_ex_ability(157570005)

    expected_info = {
        AbilityEffectInfo(
            157570005, ConditionComposite(),
            BuffParameter.WIND_ELEM_DMG_UP, 0.2, max_occurrences=1
        ),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units, expected_info)
Example #2
0
def test_joker(transformer_ability: AbilityTransformer):
    # Joker - 10350505
    # https://dragalialost.wiki/w/Joker
    ex_ability_data = transformer_ability.transform_ex_ability(101100007)

    expected_info = {
        AbilityEffectInfo(
            101100007, ConditionComposite(),
            BuffParameter.ASPD_PASSIVE, 0.07
        ),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units, expected_info)
Example #3
0
def test_sophie(transformer_ability: AbilityTransformer):
    # Sophie - 10450404
    # https://dragalialost.wiki/w/Sophie
    ex_ability_data = transformer_ability.transform_ex_ability(157570413)

    expected_info = {
        AbilityEffectInfo(
            157570413, ConditionComposite(),
            BuffParameter.LIGHT_ELEM_DMG_UP, 0.15
        ),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units, expected_info)
Example #4
0
def test_fs_dmg_up(transformer_ability: AbilityTransformer):
    # Grace - 10850503
    # https://dragalialost.wiki/w/Grace
    ex_ability_data = transformer_ability.transform_ex_ability(106000016)

    expected_info = {
        AbilityEffectInfo(106000016,
                          ConditionComposite(),
                          BuffParameter.FS_DAMAGE_PASSIVE,
                          0.2,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #5
0
def test_auto_dmg_up(transformer_ability: AbilityTransformer):
    # Gala Laxi - 10350102
    # https://dragalialost.wiki/w/Gala_Laxi
    ex_ability_data = transformer_ability.transform_ex_ability(106070008)

    expected_info = {
        AbilityEffectInfo(106070008,
                          ConditionComposite(),
                          BuffParameter.AUTO_DAMAGE,
                          0.2,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #6
0
def test_paralyzed_punisher(transformer_ability: AbilityTransformer):
    # Sharena - 10550404
    # https://dragalialost.wiki/w/Sharena
    ex_ability_data = transformer_ability.transform_ex_ability(120040008)

    expected_info = {
        AbilityEffectInfo(120040008,
                          ConditionComposite(),
                          BuffParameter.PARALYZED_PUNISHER,
                          0.08,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #7
0
def test_debuffed_punisher(transformer_ability: AbilityTransformer):
    # Gala Leif - 10150303
    # https://dragalialost.wiki/w/Gala_Leif
    ex_ability_data = transformer_ability.transform_ex_ability(106080008)

    expected_info = {
        AbilityEffectInfo(106080008,
                          ConditionComposite(Condition.TARGET_ATK_OR_DEF_DOWN),
                          BuffParameter.ATK_OR_DEF_DOWN_PUNISHER,
                          0.08,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #8
0
def test_buff_time(transformer_ability: AbilityTransformer):
    # Tobias
    # https://dragalialost.wiki/w/Tobias
    ex_ability_data = transformer_ability.transform_ex_ability(118000008)

    expected_info = {
        AbilityEffectInfo(118000008,
                          ConditionComposite(),
                          BuffParameter.TARGETED_BUFF_TIME,
                          0.2,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #9
0
def test_hp_on_revival(transformer_ability: AbilityTransformer):
    # Kimono Elisanne - 10550103
    # https://dragalialost.wiki/w/Kimono_Elisanne
    ex_ability_data = transformer_ability.transform_ex_ability(166000008)

    expected_info = {
        AbilityEffectInfo(166000008,
                          ConditionComposite(Condition.ON_REVIVED),
                          BuffParameter.HEAL_INSTANT_HP,
                          0.3,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #10
0
def test_crt_dmg_up(transformer_ability: AbilityTransformer):
    # Halloween Mym - 10450102
    # https://dragalialost.wiki/w/Halloween_Mym
    ex_ability_data = transformer_ability.transform_ex_ability(126000008)

    expected_info = {
        AbilityEffectInfo(126000008,
                          ConditionComposite(),
                          BuffParameter.CRT_DAMAGE_PASSIVE,
                          0.3,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_bow(transformer_ability: AbilityTransformer):
    # Meene - 10650303
    # https://dragalialost.wiki/w/Meene
    ex_ability_data = transformer_ability.transform_ex_ability(101040010)

    expected_info = {
        AbilityEffectInfo(101040010,
                          ConditionComposite(),
                          BuffParameter.SP_RATE,
                          0.15,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #12
0
def test_light_dmg_up(transformer_ability: AbilityTransformer):
    # Peony - 10750402
    # https://dragalialost.wiki/w/Peony
    ex_ability_data = transformer_ability.transform_ex_ability(157570408)

    expected_info = {
        AbilityEffectInfo(157570408,
                          ConditionComposite(),
                          BuffParameter.LIGHT_ELEM_DMG_UP,
                          0.2,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_axe(transformer_ability: AbilityTransformer):
    # Ramona - 10450101
    # https://dragalialost.wiki/w/Ramona
    ex_ability_data = transformer_ability.transform_ex_ability(101030010)

    expected_info = {
        AbilityEffectInfo(101030010,
                          ConditionComposite(),
                          BuffParameter.DEF_PASSIVE,
                          0.15,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_lance(transformer_ability: AbilityTransformer):
    # Gala Mym - 10550101
    # https://dragalialost.wiki/w/Gala_Mym
    ex_ability_data = transformer_ability.transform_ex_ability(101010010)

    expected_info = {
        AbilityEffectInfo(101010010,
                          ConditionComposite(),
                          BuffParameter.HP_RAISE_BY_MAX,
                          0.15,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_dagger(transformer_ability: AbilityTransformer):
    # Renee - 10340203
    # https://dragalialost.wiki/w/Renee
    ex_ability_data = transformer_ability.transform_ex_ability(103000010)

    expected_info = {
        AbilityEffectInfo(103000010,
                          ConditionComposite(),
                          BuffParameter.CRT_RATE_PASSIVE,
                          0.1,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_sword(transformer_ability: AbilityTransformer):
    # Wedding Elisanne - 10150302
    # https://dragalialost.wiki/w/Wedding_Elisanne
    ex_ability_data = transformer_ability.transform_ex_ability(101050010)

    expected_info = {
        AbilityEffectInfo(101050010,
                          ConditionComposite(),
                          BuffParameter.DP_RATE,
                          0.15,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_manacaster(transformer_ability: AbilityTransformer):
    # Ilia - 10950401
    # https://dragalialost.wiki/w/Ilia
    ex_ability_data = transformer_ability.transform_ex_ability(109000009)

    expected_info = {
        AbilityEffectInfo(109000009,
                          ConditionComposite(),
                          BuffParameter.OD_GAUGE_DAMAGE,
                          0.2,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_blade(transformer_ability: AbilityTransformer):
    # Nobunaga - 10250103
    # https://dragalialost.wiki/w/Nobunaga
    ex_ability_data = transformer_ability.transform_ex_ability(101020010)

    expected_info = {
        AbilityEffectInfo(101020010,
                          ConditionComposite(),
                          BuffParameter.ATK_EX,
                          0.1,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_wand(transformer_ability: AbilityTransformer):
    # Veronica - 10750501
    # https://dragalialost.wiki/w/Veronica
    ex_ability_data = transformer_ability.transform_ex_ability(102000010)

    expected_info = {
        AbilityEffectInfo(102000010,
                          ConditionComposite(),
                          BuffParameter.SKILL_DAMAGE_PASSIVE,
                          0.15,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
def test_staff(transformer_ability: AbilityTransformer):
    # Aurien - 10830101
    # https://dragalialost.wiki/w/Aurien
    ex_ability_data = transformer_ability.transform_ex_ability(104000010)

    expected_info = {
        AbilityEffectInfo(104000010,
                          ConditionComposite(),
                          BuffParameter.RP_UP,
                          0.2,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #21
0
def test_panther(transformer_ability: AbilityTransformer):
    # Panther - 10550104
    # https://dragalialost.wiki/w/Panther
    ex_ability_data = transformer_ability.transform_ex_ability(103150005)

    expected_info = {
        AbilityEffectInfo(
            103150005, ConditionComposite(),
            BuffParameter.INFLICT_PROB_SCORCHREND, 0.2
        ),
        AbilityEffectInfo(
            103150005, ConditionComposite(),
            BuffParameter.DURATION_EXT_SCORCHREND, 0.2
        ),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units, expected_info)
Example #22
0
def test_shapeshifting_boost(transformer_ability: AbilityTransformer):
    # Gala Euden - 10150403
    # https://dragalialost.wiki/w/Gala_Euden
    ex_ability_data = transformer_ability.transform_ex_ability(136000008)

    expected_info = {
        AbilityEffectInfo(136000008,
                          ConditionComposite(),
                          BuffParameter.DRAGON_DAMAGE,
                          0.1,
                          max_occurrences=1),
        AbilityEffectInfo(136000008,
                          ConditionComposite(),
                          BuffParameter.DRAGON_TIME,
                          0.2,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #23
0
def test_hp_and_def(transformer_ability: AbilityTransformer):
    # Chrom - 10150105
    # https://dragalialost.wiki/w/Chrom
    ex_ability_data = transformer_ability.transform_ex_ability(101060010)

    expected_info = {
        AbilityEffectInfo(101060010,
                          ConditionComposite(),
                          BuffParameter.DEF_PASSIVE,
                          0.1,
                          max_occurrences=1),
        AbilityEffectInfo(101060010,
                          ConditionComposite(),
                          BuffParameter.HP_RAISE_BY_MAX,
                          0.1,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #24
0
def test_od_punisher(transformer_ability: AbilityTransformer):
    # Seimei - 10750104
    # https://dragalialost.wiki/w/Seimei
    ex_ability_data = transformer_ability.transform_ex_ability(106000008)

    expected_info = {
        AbilityEffectInfo(106000008,
                          ConditionComposite(Condition.TARGET_OD_STATE),
                          BuffParameter.OD_GAUGE_DAMAGE,
                          0.10,
                          max_occurrences=1),
        AbilityEffectInfo(106000008,
                          ConditionComposite(Condition.TARGET_OD_STATE),
                          BuffParameter.OD_STATE_PUNISHER,
                          0.15,
                          max_occurrences=1),
    }

    check_ability_effect_unit_match(ex_ability_data.effect_units,
                                    expected_info)
Example #25
0
def test_transform_all_character_ex(transformer_ability: AbilityTransformer,
                                    asset_manager: AssetManager):
    unknown_abilities = UnknownAbilityDataCollection()
    counter: int = 0

    # Not checking all abilities in the ability asset directly
    # because there are some unused or deprecated ability inside.
    # We don't want to spend time handling unused things.
    for chara_data in asset_manager.asset_chara_data.playable_data:
        ex_id = chara_data.ex_id_at_max_level
        counter += 1

        try:
            ex_ability_data = transformer_ability.transform_ex_ability(ex_id)

            unknown_abilities.add_data_if_needed(chara_data,
                                                 ex_id,
                                                 ex_ability_data,
                                                 check_effective_for_team=True)
        except (AbilityConditionUnconvertibleError,
                AbilityVariantUnconvertibleError) as ex:
            # Condition/Variant unconvertible (most likely due to unknown/unhandled condition/variant)
            ex_ability_data = asset_manager.asset_ex_ability.get_data_by_id(
                ex_id)

            condition_ids = ({
                ex_id: ex_ability_data.condition.condition_code
            } if ex_ability_data.condition.is_unknown_condition else {})

            unknown_abilities.add_data(
                UnknownAbilityData(chara_id=chara_data.id,
                                   ability_id=ex_id,
                                   condition_ids=condition_ids,
                                   variant_ids={
                                       ex_id:
                                       ex_ability_data.unknown_variant_type_ids
                                   },
                                   error=ex))

    unknown_abilities.print_and_fail_if_any(counter)