maplestory_dpm_calc
maplestory_dpm_calc copied to clipboard
JobGeneration YAML migration
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
작업 방식
- 아래를 실행하여 덤프된 스킬 설정을 불러둔다.(optional)
-
python3 test.py --job {직업한글이름} --task conf
- 직업의
__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
}
-
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"
}
]
-
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 } ]