UNPKG

mh3-data

Version:

Monster Hunter Tri data for monsters, quests, and weapons

110 lines 3.44 kB
import { GreatSwords, GreatSwordDamageProperties } from './great-sword'; import { Hammers, HammerDamageProperties } from './hammer'; import { Lances, LanceDamageProperties } from './lance'; import { Longswords, LongswordDamageProperties } from './longsword'; import { SwitchAxes, SwitchAxeDamageProperties } from './switch-axe'; import { SwordAndShields, SwordAndShieldDamageProperties } from './sword-and-shield'; import { Sharpness, WeaponClass } from './enum'; /** * Type guard for a {@link CutHit} */ export function isCutHit(object) { return object.type === 'cut'; } /** * Callback for {@link Array.find} to find a weapon * @param weaponId Weapon to find */ const findWeapon = (weaponId) => (weapon) => { return weapon.id === weaponId; }; /** * @param weaponClass * @param weaponId * * @returns instance of a {@link Weapon} */ export function getWeapon(weaponClass, weaponId) { let weapon = undefined; switch (weaponClass) { case WeaponClass.GREAT_SWORD: { weapon = GreatSwords.find(findWeapon(weaponId)); break; } case WeaponClass.HAMMER: { weapon = Hammers.find(findWeapon(weaponId)); break; } case WeaponClass.LANCE: { weapon = Lances.find(findWeapon(weaponId)); break; } case WeaponClass.LONGSWORD: { weapon = Longswords.find(findWeapon(weaponId)); break; } case WeaponClass.SWITCH_AXE: { weapon = SwitchAxes.find(findWeapon(weaponId)); break; } case WeaponClass.SWORD_AND_SHIELD: { weapon = SwordAndShields.find(findWeapon(weaponId)); break; } default: { throw new Error(`'${weaponClass}' is not a valid weapon type`); } } if (!weapon) throw new Error(`Could not find weapon of type ''${weaponClass}'' with id: '${weaponId}'`); return weapon; } /** * @returns DamageProperties corresponding to the provided weaponType */ export function getWeaponDamageProperties(weaponClass) { switch (weaponClass) { case WeaponClass.GREAT_SWORD: { return GreatSwordDamageProperties; } case WeaponClass.HAMMER: { return HammerDamageProperties; } case WeaponClass.LANCE: { return LanceDamageProperties; } case WeaponClass.LONGSWORD: { return LongswordDamageProperties; } case WeaponClass.SWITCH_AXE: { return SwitchAxeDamageProperties; } case WeaponClass.SWORD_AND_SHIELD: { return SwordAndShieldDamageProperties; } default: { throw new Error(`Could not find damageProperties for weapon type '${weaponClass}'`); } } } export function sharpnessAsString(sharpness) { switch (sharpness) { case Sharpness.RED: return 'red'; case Sharpness.ORANGE: return 'orange'; case Sharpness.YELLOW: return 'yellow'; case Sharpness.GREEN: return 'green'; case Sharpness.BLUE: return 'blue'; case Sharpness.WHITE: return 'white'; case Sharpness.PURPLE: return 'purple'; default: throw new Error(`Invalid sharpness value '${sharpness}'`); } } //# sourceMappingURL=weapon-util.js.map