@ruvice/my-maple-models
Version:
Shared models and utils for MapleStory Nexon Open API
395 lines (394 loc) • 16.1 kB
JavaScript
import { ItemEquipmentSlot } from "../maple/Equipment/equipmentTypes";
import { Potential, CharacterClass, StatName, MapleServer } from "../maple/Generic/enums";
export const ItemEquipmentSlotMappingSEA = {
"Ring1": ItemEquipmentSlot.Ring1,
"Ring2": ItemEquipmentSlot.Ring2,
"Ring3": ItemEquipmentSlot.Ring3,
"Ring4": ItemEquipmentSlot.Ring4,
"Pendant": ItemEquipmentSlot.Pendant,
"Pendant 2": ItemEquipmentSlot.Pendant2,
"Weapon": ItemEquipmentSlot.Weapon,
"Belt": ItemEquipmentSlot.Belt,
"Hat": ItemEquipmentSlot.Hat,
"Face Acc.": ItemEquipmentSlot.FaceAccessory,
"Eye Acc.": ItemEquipmentSlot.EyeAccessory,
"Top": ItemEquipmentSlot.Top,
"Bottom": ItemEquipmentSlot.Bottom,
"Shoes": ItemEquipmentSlot.Shoes,
"Earring": ItemEquipmentSlot.Earring,
"Shoulder": ItemEquipmentSlot.ShoulderDecoration,
"Glove": ItemEquipmentSlot.Glove,
"Emblem": ItemEquipmentSlot.Emblem,
"Badge": ItemEquipmentSlot.Badge,
"Medal": ItemEquipmentSlot.Medal,
"Secondary Weapons": ItemEquipmentSlot.SecondaryWeapons,
"Cape": ItemEquipmentSlot.Cape,
"M. Heart": ItemEquipmentSlot.MechanicalHeart,
"Pocket Item": ItemEquipmentSlot.PocketItem
};
export const ItemEquipmentSlotMappingKMS = {
"모자": ItemEquipmentSlot.Hat,
"상의": ItemEquipmentSlot.Top,
"하의": ItemEquipmentSlot.Bottom,
"신발": ItemEquipmentSlot.Shoes,
"장갑": ItemEquipmentSlot.Glove,
"망토": ItemEquipmentSlot.Cape,
"무기": ItemEquipmentSlot.Weapon,
"보조무기": ItemEquipmentSlot.SecondaryWeapons,
"엠블렘": ItemEquipmentSlot.Emblem,
"귀고리": ItemEquipmentSlot.Earring,
"벨트": ItemEquipmentSlot.Belt,
"펜던트": ItemEquipmentSlot.Pendant,
"펜던트2": ItemEquipmentSlot.Pendant2,
"반지1": ItemEquipmentSlot.Ring1,
"반지2": ItemEquipmentSlot.Ring2,
"반지3": ItemEquipmentSlot.Ring3,
"반지4": ItemEquipmentSlot.Ring4,
"어깨장식": ItemEquipmentSlot.ShoulderDecoration,
"훈장": ItemEquipmentSlot.Medal,
"뱃지": ItemEquipmentSlot.Badge,
"포켓 아이템": ItemEquipmentSlot.PocketItem,
"기계 심장": ItemEquipmentSlot.MechanicalHeart,
"얼굴장식": ItemEquipmentSlot.FaceAccessory,
"눈장식": ItemEquipmentSlot.EyeAccessory
};
export const ItemEquipmentSlotMappingTMS = {
// Standard equips
"帽子": ItemEquipmentSlot.Hat,
"上衣": ItemEquipmentSlot.Top,
"褲/裙": ItemEquipmentSlot.Bottom,
"鞋子": ItemEquipmentSlot.Shoes,
"手套": ItemEquipmentSlot.Glove,
"披風": ItemEquipmentSlot.Cape,
"耳環": ItemEquipmentSlot.Earring,
"腰帶": ItemEquipmentSlot.Belt,
"墜飾": ItemEquipmentSlot.Pendant,
"墜飾2": ItemEquipmentSlot.Pendant2,
"肩膀裝飾": ItemEquipmentSlot.ShoulderDecoration,
"臉飾": ItemEquipmentSlot.FaceAccessory,
"眼飾": ItemEquipmentSlot.EyeAccessory,
"武器": ItemEquipmentSlot.Weapon,
"輔助武器": ItemEquipmentSlot.SecondaryWeapons,
// Emblem vs Badge (TMS commonly uses these two distinct labels)
"徽章": ItemEquipmentSlot.Emblem,
"胸章": ItemEquipmentSlot.Badge,
"勳章": ItemEquipmentSlot.Medal,
"口袋道具": ItemEquipmentSlot.PocketItem,
"機器心臟": ItemEquipmentSlot.MechanicalHeart,
// Rings
"戒指1": ItemEquipmentSlot.Ring1,
"戒指2": ItemEquipmentSlot.Ring2,
"戒指3": ItemEquipmentSlot.Ring3,
"戒指4": ItemEquipmentSlot.Ring4,
};
export const PotentialMappingSEA = {
"Rare": Potential.Rare,
"Epic": Potential.Epic,
"Unique": Potential.Unique,
"Legendary": Potential.Legendary
};
export const PotentialMappingKMS = {
"레어": Potential.Rare,
"에픽": Potential.Epic,
"유니크": Potential.Unique,
"레전드리": Potential.Legendary
};
export const PotentialMappingTMS = {
// MapleStoryTW commonly: 特殊 -> 稀有 -> 罕見 -> 傳說
"特殊": Potential.Rare,
"稀有": Potential.Epic,
"罕見": Potential.Unique,
"傳說": Potential.Legendary,
};
export const CharacterClassMappingSEA = {
"Hero": CharacterClass.Hero,
"Paladin": CharacterClass.Paladin,
"Dark Knight": CharacterClass.DarkKnight,
"Soul Master": CharacterClass.SoulMaster,
"Mihile": CharacterClass.Mihile,
"Blaster": CharacterClass.Blaster,
"Demon Slayer": CharacterClass.DemonSlayer,
"Demon Avenger": CharacterClass.DemonAvenger,
"Aran": CharacterClass.Aran,
"Kaiser": CharacterClass.Kaiser,
"Adele": CharacterClass.Adele,
"Zero": CharacterClass.Zero,
"ArchMage F/P": CharacterClass.ArchMageFP,
"ArchMage I/L": CharacterClass.ArchMageIL,
"Bishop": CharacterClass.Bishop,
"Flame Wizard": CharacterClass.FlameWizard,
"Battle Mage": CharacterClass.BattleMage,
"Evan": CharacterClass.Evan,
"Luminous": CharacterClass.Luminous,
"Illium": CharacterClass.Illium,
"Lara": CharacterClass.Lara,
"Kinesis": CharacterClass.Kinesis,
"Bowmaster": CharacterClass.Bowmaster,
"Crossbow Master": CharacterClass.CrossbowMaster,
"Pathfinder": CharacterClass.Pathfinder,
"Wind Breaker": CharacterClass.WindBreaker,
"Wild Hunter": CharacterClass.WildHunter,
"Mercedes": CharacterClass.Mercedes,
"Kaine": CharacterClass.Kaine,
"Night Lord": CharacterClass.NightLord,
"Shadower": CharacterClass.Shadower,
"Blade Master": CharacterClass.BladeMaster,
"Night Walker": CharacterClass.NightWalker,
"Xenon": CharacterClass.Xenon,
"Phantom": CharacterClass.Phantom,
"Cadena": CharacterClass.Cadena,
"Khali": CharacterClass.Khali,
"HoYoung": CharacterClass.HoYoung,
"Viper": CharacterClass.Viper,
"Captain": CharacterClass.Captain,
"Cannon Master": CharacterClass.CannonMaster,
"Striker": CharacterClass.Striker,
"Mechanic": CharacterClass.Mechanic,
"Eunwol": CharacterClass.Eunwol,
"Angelic Buster": CharacterClass.AngelicBuster,
"Ark": CharacterClass.Ark,
"Hayato": CharacterClass.Hayato,
"Kanna": CharacterClass.Kanna,
"Len": CharacterClass.Len,
"Mo Xuan": CharacterClass.MoXuan,
"Lynn": CharacterClass.Lynn
};
export const CharacterClassMappingKMS = {
"히어로": CharacterClass.Hero,
"다크나이트": CharacterClass.DarkKnight,
"팔라딘": CharacterClass.Paladin,
"비숍": CharacterClass.Bishop,
"불독": CharacterClass.ArchMageFP,
"썬콜": CharacterClass.ArchMageIL,
"섀도어": CharacterClass.Shadower,
"나이트로드": CharacterClass.NightLord,
"듀얼블레이드": CharacterClass.BladeMaster,
"보우마스터": CharacterClass.Bowmaster,
"패스파인더": CharacterClass.Pathfinder,
"소울마스터": CharacterClass.SoulMaster,
"플레임위자드": CharacterClass.FlameWizard,
"나이트워커": CharacterClass.NightWalker,
"윈드브레이커": CharacterClass.WindBreaker,
"스트라이커": CharacterClass.Striker,
"미하일": CharacterClass.Mihile,
"아란": CharacterClass.Aran,
"에반": CharacterClass.Evan,
"메르세데스": CharacterClass.Mercedes,
"루미너스": CharacterClass.Luminous,
"팬텀": CharacterClass.Phantom,
"은월": CharacterClass.Eunwol,
"엔젤릭버스터": CharacterClass.AngelicBuster,
"카이저": CharacterClass.Kaiser,
"카데나": CharacterClass.Cadena,
"카인": CharacterClass.Kaine,
"제논": CharacterClass.Xenon,
"메카닉": CharacterClass.Mechanic,
"배틀메이지": CharacterClass.BattleMage,
"와일드헌터": CharacterClass.WildHunter,
"블래스터": CharacterClass.Blaster,
"데몬 어벤저": CharacterClass.DemonAvenger,
"데몬 슬레이어": CharacterClass.DemonSlayer,
"아델": CharacterClass.Adele,
"아크": CharacterClass.Ark,
"일리움": CharacterClass.Illium,
"칼리": CharacterClass.Khali,
"호영": CharacterClass.HoYoung,
"라라": CharacterClass.Lara,
"키네시스": CharacterClass.Kinesis,
"제로": CharacterClass.Zero,
"신궁": CharacterClass.CrossbowMaster,
"바이퍼": CharacterClass.Viper,
"캡틴": CharacterClass.Captain,
"캐논슈터": CharacterClass.CannonMaster,
"렌": CharacterClass.Len,
"묵현": CharacterClass.MoXuan,
"린": CharacterClass.Lynn,
"칸나": CharacterClass.Kanna,
"하야토": CharacterClass.Hayato
};
export const CharacterClassMappingTMS = {
"主教": CharacterClass.Bishop,
"亞克": CharacterClass.Ark,
"伊利恩": CharacterClass.Illium,
"傑諾": CharacterClass.Xenon,
"凱內西斯": CharacterClass.Kinesis,
"凱撒": CharacterClass.Kaiser,
"凱殷": CharacterClass.Kaine,
"劍豪": CharacterClass.Hayato,
"卡莉": CharacterClass.Khali,
"卡蒂娜": CharacterClass.Cadena,
"夜使者": CharacterClass.NightLord,
"夜光": CharacterClass.Luminous,
"大魔導士(冰、雷)": CharacterClass.ArchMageIL,
"大魔導士(火、毒)": CharacterClass.ArchMageFP,
"天使破壞者": CharacterClass.AngelicBuster,
"影武者": CharacterClass.BladeMaster,
"惡魔復仇者": CharacterClass.DemonAvenger,
"惡魔殺手": CharacterClass.DemonSlayer,
"烈焰巫師": CharacterClass.FlameWizard,
"狂狼勇士": CharacterClass.Aran,
"爆破者": CharacterClass.Blaster,
"班雷昂": CharacterClass.BattleMage,
"盜俠": CharacterClass.Shadower,
"神射手": CharacterClass.CrossbowMaster,
"精靈遊俠": CharacterClass.Mercedes,
"聖騎士": CharacterClass.Paladin,
"開拓者": CharacterClass.Pathfinder,
"陰陽師": CharacterClass.Kanna,
"英雄": CharacterClass.Hero,
"虎影": CharacterClass.HoYoung,
"墨玄": CharacterClass.MoXuan, // TODO: add CharacterClass.Mokhyeon (묵현) to enum, then map here
"槍神": CharacterClass.Captain,
"機甲戰神": CharacterClass.Mechanic,
"米哈逸": CharacterClass.Mihile,
"菈菈": CharacterClass.Lara,
"蓮": CharacterClass.Len,
"覺醒者": CharacterClass.Adele,
"追風者": CharacterClass.WindBreaker,
"暗夜行者": CharacterClass.NightWalker,
"狂豹獵人": CharacterClass.WildHunter,
"閃雷悍將": CharacterClass.Striker,
"幻影俠盜": CharacterClass.Phantom,
"黑騎士": CharacterClass.DarkKnight,
"劍士": CharacterClass.Viper,
"箭神": CharacterClass.Bowmaster,
"琳恩": CharacterClass.Lynn, // TODO: add CharacterClass.Lynn (린) to enum, then map here
"隱月": CharacterClass.Eunwol,
"神之子": CharacterClass.Zero,
"龍魔導士": CharacterClass.Evan,
"聖魂劍士": CharacterClass.SoulMaster,
"重砲指揮官": CharacterClass.CannonMaster,
};
export const StatMappingSEA = {
"Minimum ATT Stat": StatName.MinimumAttStat,
"Maximum ATT Stat": StatName.MaximumAttStat,
"Damage": StatName.Damage,
"Boss Monster Damage": StatName.BossMonsterDamage,
"Final Damage": StatName.FinalDamage,
"Ignore DEF": StatName.IgnoreDef,
"Critical Rate": StatName.CriticalRate,
"Critical Damage": StatName.CriticalDamage,
"Status Resistance": StatName.StatusResistance,
"Stance": StatName.Stance,
"DEF": StatName.Def,
"Speed": StatName.Speed,
"Jump": StatName.Jump,
"Star Force": StatName.Starforce,
"Arcane Force": StatName.ArcaneForce,
"Authentic Force": StatName.AuthenticForce,
"STR": StatName.Str,
"DEX": StatName.Dex,
"INT": StatName.Int,
"LUK": StatName.Luk,
"HP": StatName.Hp,
"MP": StatName.Mp,
"Item Drop Rate": StatName.ItemDropRate,
"Meso Obtained": StatName.MesoObtained,
"Buff Duration": StatName.BuffDuration,
"Attack Speed": StatName.AttackSpeed,
"Normal monster damage": StatName.NormalMonsterDamage,
"Cooldown reduction (sec)": StatName.CooldownReductionSec,
"Cooldown reduction (%)": StatName.CooldownReductionPercent,
"Unaffected by Cooldown": StatName.UnaffectedByCooldown,
"Ignore Elemental Resistance": StatName.IgnoreElementalResistance,
"Abnormal Status Additional Damage": StatName.AbnormalStatusAdditionalDamage,
"Additonal EXP Obtained": StatName.AdditionalExpObtained,
"ATT": StatName.Att,
"MATT": StatName.MAtt,
"Combat Power": StatName.CombatPower,
"Summon Duration Increase": StatName.SummonDurationIncrease
};
export const StatMappingKMS = {
"최소 스탯공격력": StatName.MinimumAttStat,
"최대 스탯공격력": StatName.MaximumAttStat,
"데미지": StatName.Damage,
"보스 몬스터 데미지": StatName.BossMonsterDamage,
"최종 데미지": StatName.FinalDamage,
"방어율 무시": StatName.IgnoreDef,
"크리티컬 확률": StatName.CriticalRate,
"크리티컬 데미지": StatName.CriticalDamage,
"상태이상 내성": StatName.StatusResistance,
"스탠스": StatName.Stance,
"방어력": StatName.Def,
"이동속도": StatName.Speed,
"점프력": StatName.Jump,
"스타포스": StatName.Starforce,
"아케인포스": StatName.ArcaneForce,
"어센틱포스": StatName.AuthenticForce,
"STR": StatName.Str,
"DEX": StatName.Dex,
"INT": StatName.Int,
"LUK": StatName.Luk,
"HP": StatName.Hp,
"MP": StatName.Mp,
"아이템 드롭률": StatName.ItemDropRate,
"메소 획득량": StatName.MesoObtained,
"버프 지속시간": StatName.BuffDuration,
"공격 속도": StatName.AttackSpeed,
"일반 몬스터 데미지": StatName.NormalMonsterDamage,
"재사용 대기시간 감소 (초)": StatName.CooldownReductionSec,
"재사용 대기시간 감소 (%)": StatName.CooldownReductionPercent,
"재사용 대기시간 미적용": StatName.UnaffectedByCooldown,
"속성 내성 무시": StatName.IgnoreElementalResistance,
"상태이상 추가 데미지": StatName.AbnormalStatusAdditionalDamage,
"추가 경험치 획득": StatName.AdditionalExpObtained,
"공격력": StatName.Att,
"마력": StatName.MAtt,
"전투력": StatName.CombatPower,
"소환수 지속시간 증가": StatName.SummonDurationIncrease
};
export const StatMappingTMS = {
// Attack range / “stat attack”
"最低屬性攻擊力": StatName.MinimumAttStat,
"最高屬性攻擊力": StatName.MaximumAttStat,
// Damage
"傷害": StatName.Damage,
"BOSS怪物傷害": StatName.BossMonsterDamage,
"最終傷害": StatName.FinalDamage,
// Ignore / crit
"無視防禦率": StatName.IgnoreDef,
"爆擊機率": StatName.CriticalRate,
"爆擊傷害": StatName.CriticalDamage,
// Defensive / misc
"狀態異常耐性": StatName.StatusResistance,
"格擋": StatName.Stance, // TW label corresponds to “stance”
"防禦力": StatName.Def,
"移動速度": StatName.Speed,
"跳躍力": StatName.Jump,
// Forces
"星力": StatName.Starforce,
"神秘力量": StatName.ArcaneForce,
"真實之力": StatName.AuthenticForce,
// Primary stats
"STR": StatName.Str,
"DEX": StatName.Dex,
"INT": StatName.Int,
"LUK": StatName.Luk,
"HP": StatName.Hp,
"MP": StatName.Mp,
// Drop / meso / buffs
"道具掉落率": StatName.ItemDropRate,
"楓幣獲得量": StatName.MesoObtained,
"Buff持續時間": StatName.BuffDuration,
// Speed / cooldown / special
"攻擊速度": StatName.AttackSpeed,
"一般怪物傷害": StatName.NormalMonsterDamage,
"冷卻時間減少(秒)": StatName.CooldownReductionSec,
"冷卻時間減少(%)": StatName.CooldownReductionPercent,
"未套用冷卻時間": StatName.UnaffectedByCooldown,
"無視屬性耐性": StatName.IgnoreElementalResistance,
"狀態異常追加傷害": StatName.AbnormalStatusAdditionalDamage,
// EXP
"獲得額外經驗值": StatName.AdditionalExpObtained,
// Attack / power
"攻擊力": StatName.Att,
"魔法攻擊力": StatName.MAtt,
"戰鬥力": StatName.CombatPower,
// Summons
"召喚獸持續時間增加": StatName.SummonDurationIncrease,
};
export function toMapleServer(input) {
return Object.values(MapleServer).includes(input)
? input
: undefined;
}