maplestory_dpm_calc icon indicating copy to clipboard operation
maplestory_dpm_calc copied to clipboard

JobGeneration YAML migration

Open oleneyl opened this issue 4 years ago • 1 comments

Branch

feature/create_from_config

List

  • [ ] adele.py
  • [ ] angelicbuster.py
  • [ ] aran.py
  • [x] archmageFb.py
  • [x] archmageTc.py
  • [ ] ark.py
  • [x] battlemage.py
  • [x] bishop.py
  • [ ] blaster.py
  • [x] bowmaster.py
  • [ ] cadena.py
  • [x] cannonshooter.py
  • [x] captain.py
  • [x] darknight.py
  • [ ] demonavenger.py
  • [ ] demonslayer.py
  • [ ] dualblade.py
  • [ ] eunwol.py
  • [ ] evan.py
  • [ ] flamewizard.py
  • [ ] globalSkill.py
  • [ ] hero.py
  • [ ] hoyoung.py
  • [ ] ilium.py
  • [ ] kain.py
  • [ ] kaiser.py
  • [ ] kinesis.py
  • [ ] luminous.py
  • [ ] mechanic.py
  • [ ] mercedes.py
  • [ ] michael.py
  • [ ] nightlord.py
  • [ ] nightwalker.py
  • [ ] paladin.py
  • [ ] pathfinder.py
  • [ ] phantom.py
  • [ ] seedrings.py
  • [ ] shadower.py
  • [ ] sniper.py
  • [ ] soulmaster.py
  • [ ] striker.py
  • [ ] viper.py
  • [ ] wildhunter.py
  • [ ] windbreaker.py
  • [ ] xenon.py
  • [ ] zero.py

oleneyl avatar Feb 11 '21 06:02 oleneyl

작업 방식

  1. 아래를 실행하여 덤프된 스킬 설정을 불러둔다.(optional)
  • python3 test.py --job {직업한글이름} --task conf
  1. 직업의 __init__ 을 JobGenerator.load() 함수로 대체한다.
  • before
    def __init__(self):
        super(JobGenerator, self).__init__()
        self.jobtype = "DEX"
        self.jobname = "보우마스터"
        self.vEnhanceNum = 11
        self.ability_list = Ability_tool.get_ability_set(
            "boss_pdamage", "crit", "buff_rem"
        )
        self.preEmptiveSkills = 1
  • after
    • python
class JobGenerator(ck.JobGenerator):
    def __init__(self):
        super(JobGenerator, self).__init__()
        self.load(os.path.join(os.path.dirname(__file__), 'configs', 'bowmaster.json'))
        self.ability_list = Ability_tool.get_ability_set('boss_pdamage', 'crit', 'buff_rem')

  • json
{
    "jobtype": "DEX",
    "jobname": "보우마스터",
    "vEnhanceNum": 11,
    "preEmptiveSkills": 1
}
  1. get_passive_skill_list 를 대치한다.
  • before
    def get_passive_skill_list(
        self, vEhc, chtr: ck.AbstractCharacter, options: Dict[str, Any]
    ):
        passive_level = chtr.get_base_modifier().passive_level + self.combat
        CriticalShot = core.InformedCharacterModifier("크리티컬 샷", crit=40)
        PhisicalTraining = core.InformedCharacterModifier(
            "피지컬 트레이닝", stat_main=30, stat_sub=30
        )
        BowAccelation = core.InformedCharacterModifier(
            "보우 엑셀레이션", stat_main=20
        )

        MarkmanShip = core.InformedCharacterModifier("마크맨쉽", armor_ignore=25, patt=25)

        BowExpert = core.InformedCharacterModifier(
            "보우 엑스퍼트", att=60 + passive_level, crit_damage=8
        )
        AdvancedFinalAttackPassive = core.InformedCharacterModifier(
            "어드밴스드 파이널 어택(패시브)", att=20 + ceil(passive_level / 2)
        )  # 오더스 적용필요

        ElusionStep = core.InformedCharacterModifier(
            "일루젼 스탭", stat_main=80 + 2 * passive_level
        )

        return [
            CriticalShot,
            PhisicalTraining,
            BowAccelation,
            MarkmanShip,
            BowExpert,
            AdvancedFinalAttackPassive,
            ElusionStep,
        ]
  • after
    • python
# 없음. default가 config file로부터 로드
  • json
    "passive_skill_list": [
        {
            "name": "크리티컬 샷",
            "crit": 40
        }, {
            "name": "피지컬 트레이닝",
            "stat_main": 30,
            "stat_sub": 30
        }, {
            "name": "보우 엑셀레이션",
            "stat_main": 20
        }, {
            "name": "마크맨쉽",
            "armor_ignore": 25,
            "patt": 25
        }, {
            "name": "보우 엑스퍼트",
            "att": "60 + passive_level",
            "crit_damage": 8
        }, {
            "name": "어드밴스드 파이널 어택(패시브)",
            "att": "20 + math.ceil(passive_level / 2)"
        }, {
            "name": "일루젼 스텝",
            "stat_main": "80 + 2 * passive_level"
        }
    ]
  1. get_not_implied_skill_list 를 대치
  • before

    def get_not_implied_skill_list(
        self, vEhc, chtr: ck.AbstractCharacter, options: Dict[str, Any]
    ):
        passive_level = chtr.get_base_modifier().passive_level + self.combat
        WeaponConstant = core.InformedCharacterModifier("무기상수", pdamage_indep=30)
        Mastery = core.InformedCharacterModifier(
            "숙련도", mastery=85 + ceil(passive_level / 2)
        )
        ExtremeArchery = core.InformedCharacterModifier(
            "익스트림 아처리", att=40, pdamage_indep=30
        )

        return [WeaponConstant, Mastery, ExtremeArchery]
  • after
    • python : 없음. default가 config file base
    • json
      "not_implied_skill_list": [
          {
              "name": "무기상수",
              "pdamage_indep": 30
          }, {
              "name": "숙련도",
              "mastery": "85 + math.ceil(passive_level / 2)"
          }, {
              "name": "익스트림 아처리",
              "att": 40,
              "pdamage_indep": 30
          }
      ]
    

oleneyl avatar Jul 03 '21 05:07 oleneyl