메이플 헬퍼 - 3
etc
작성일 : 2024.12.08
메이플에는 제네시스 무기 해방이라는 엔드 컨텐츠가 있습니다. 이번 겨울 쇼케이스 이후에 제네시스 무기 해방 퀘스트의 방법이 바뀌어 이를 계산해주는 계산기를 만들기로 했습니다.
해방퀘 조건
해방퀘스트는 255레벨 부터 시작할 수 있고 하위 보스를 잡고 필요한 어둠의 흔적을 모두 채우면 다음 퀘스트를 진행할 수 있습니다.
퀘스트 | 필요한 어둠의 흔적 |
---|---|
사자왕 반 레온 | 500 |
시간의 대신관 아카이럼 | 500 |
폭군 매그너스 | 500 |
윙 마스터 스우 | 1000 |
파멸의 검 데미안 | 1000 |
거미의 왕 윌 | 1000 |
악몽의 주인 루시드 | 1000 |
붉은 마녀 진 힐라 | 1000 |
어둠의 흔적은 검은 마법사의 수하 보스들을 잡아 채울 수 있습니다.
이때 검은 마법사는 월 1회 다른 보스들은 주 1회 잡을 수 있는데
목요일마다 보스가 초기화되어 다시 잡을 수 있습니다.
추가로 이 보스들은 여려 명이서 잡게되면 1/n로 보상이 분배됩니다.
보스이름 | 난이도 | 보상 |
---|---|---|
스우 | 노멀 | 10 |
하드 | 50 | |
익스트림 | 50 | |
데미안 | 노멀 | 10 |
하드 | 50 | |
루시드 | 이지 | 15 |
노멀 | 20 | |
하드 | 65 | |
더스크 | 노멀 | 20 |
카오스 | 65 | |
윌 | 이지 | 15 |
노멀 | 25 | |
하드 | 75 | |
듄켈 | 노멀 | 25 |
하드 | 75 | |
진 힐라 | 노멀 | 45 |
하드 | 90 | |
검은 마법사 | 하드 | 600 |
익스트림 | 600 |
필요한 로직
제게 필요한 정보는 다음이 있습니다.
- 현재 진행중인 퀘스트
- 현재 보유한 어듬의 흔적
- 1주에 획득할 수 있는 어둠의 흔적
- 월에 획득하는 어둠의 흔적
- 보스를 잡는 날짜
진행도 계산
진행중인 퀘스트를 선택한 후 보유중인 어둠의 흔적을 입력하면 퀘스트의 진행도를 알려줍니다.
const progress = currentBoss?.required_darkness
? (currentQuest.gauge / currentBoss.required_darkness) * 100
: 0 // 퍼센트 계산, required_darkness가 없으면 0%
선택한 보스 계산
보스는 난이도와 상관없이 주에 1회 잡을 수 있기 때문에 input
태그를 이용해 하나의 난이도만 선택할 수 있도록 해주고 몇명이서 보스를 잡았는지 선택할 수 있게 합니다.
그리고 선택한 보스의 보상 합계를 합산해 1주에 획득할 수 있는 보상으로 기록하고 소수점은 제거 합니다.
이때 주에 획득할 수 있는 보상과 월에 획득할 수 있는 보상을 분리합니다.
완료 날짜 계산
사용자가 계산기를 사용한 날짜를 기준으로 계산해 현재 날짜에서 1주에 획득하는 어둠의 흔적 / 모든 총 필요한 어둠의 흔적
으로 계산해 완료 예상 날짜를 제공합니다.
// 계산 로직 함수
const result = {
need_darkness: 0,
bossReward: 0,
blackMageReward: 0,
totalReward: 0,
date: 0,
}
// 주마다 보상을 누적해 계산
export const calculateRewards = (result: RewardResult): RewardResult => {
const reward = { ...result }
while (reward.totalReward < reward.need_darkness) {
reward.totalReward += reward.bossReward
if (reward.date % 4 === 0 || reward.date > 0) {
reward.totalReward += reward.blackMageReward
}
reward.date += 1
}
return reward
}
마치며
이번에 해방퀘의 조건이 바뀌면서 빠르게 이 기능을 추가하면 좋은 반응이 있겠단 생각이 들어 바로 반영 하게 되었습니다. 역시 만들고 난 후 여러 사람들이 이용해주는 데이터를 확인할 수 있었습니다.