@skullandbonestools/snbdata
Version:
Inofficial data package for the Skull and Bones game by Ubisoft.
62 lines • 3.36 kB
JavaScript
import itemsData from '../../data/items.json';
import { Contracts } from './contracts';
import { Events } from './events';
import { Materials } from './materials';
import { Seasons } from './seasons';
import { WorldEvents } from './worldEvents';
export class Item {
constructor(id, type, dateAdded, lastUpdated, tier, blueprint, value, weight, gearScore, projectilesPerShot, damagePerShot, rateOfFire, reloadSpeed, optimalRange, projectileSpeed, timeToTarget, required, requiredRank, perks, rarity, season, obtainable, event, worldEvent, armor, damageMitigation, contract) {
this.id = id;
this.type = type;
this.dateAdded = dateAdded;
this.lastUpdated = lastUpdated;
this.tier = tier;
this.blueprint = blueprint;
this.value = value;
this.weight = weight;
this.gearScore = gearScore;
this.projectilesPerShot = projectilesPerShot;
this.damagePerShot = damagePerShot;
this.rateOfFire = rateOfFire;
this.reloadSpeed = reloadSpeed;
this.optimalRange = optimalRange;
this.projectileSpeed = projectileSpeed;
this.timeToTarget = timeToTarget;
this.required = required;
this.requiredRank = requiredRank;
this.perks = perks;
this.rarity = rarity;
this.season = season;
this.obtainable = obtainable;
this.event = event;
this.worldEvent = worldEvent;
this.armor = armor;
this.damageMitigation = damageMitigation;
this.contract = contract;
}
static fromRawData(rawData) {
const season = rawData.season;
const event = rawData.event;
const contract = rawData.contract;
const worldEvent = Array.isArray(rawData.worldEvent)
? rawData.worldEvent.map((_worldEvent) => WorldEvents[_worldEvent])
: WorldEvents[rawData.worldEvent];
const required = rawData.required ? new Map() : undefined;
if (required) {
for (const [requiredKey, quantity] of Object.entries(rawData.required)) {
const requiredMaterial = requiredKey;
required.set(Materials[requiredMaterial], quantity);
}
}
return new Item(rawData.id, rawData.type, new Date(rawData.dateAdded), new Date(rawData.lastUpdated), rawData.tier, rawData.blueprint ?? undefined, rawData.value ?? undefined, rawData.weight ?? undefined, rawData.gearScore ?? undefined, rawData.projectilesPerShot ?? undefined, rawData.damagePerShot ?? undefined, rawData.rateOfFire ?? undefined, rawData.reloadSpeed ?? undefined, rawData.optimalRange ?? undefined, rawData.projectileSpeed ?? undefined, rawData.timeToTarget ?? undefined, required, rawData.requiredRank ?? undefined, rawData.perks ?? [], rawData.rarity ?? undefined, rawData.season ? Seasons[season] : undefined, rawData.obtainable ?? undefined, rawData.event ? Events[event] : undefined, worldEvent ?? undefined, rawData.armor ?? undefined, rawData.damageMitigation ?? undefined, rawData.contract ? Contracts[contract] : undefined);
}
static loadItems() {
const items = {};
for (const [key, value] of Object.entries(itemsData)) {
items[key] = Item.fromRawData(value);
}
return items;
}
}
export const Items = Item.loadItems();
//# sourceMappingURL=items.js.map