KF-MMO-Server/Classes/itemData.ts

76 lines
1.7 KiB
TypeScript

import { game } from "../game"
import { inventoryChange } from "./Incoming/inventoryChange"
export class itemData{
name : string
id : number
templateId : number
rarity : number
count : number = 1
stats : Stat[] = []
static fromPersistentData(data : persistentItemData){
let item = new itemData()
item.name = data.name;
item.id = ++game.itemCount;
item.templateId = data.id;
item.rarity = Math.floor(Math.random()*data.rarityMax);
item.count = 1;
return item
}
static fromChange(change : inventoryChange){
let item = new itemData()
item.id = change.id
item.name = change.name
if(change.hasOwnProperty("stats")){
item.stats = change.stats
}
else{
item.stats = []
}
item.count = change.change
item.rarity = change.rarity
item.templateId = change.templateId
return item
}
static copy(data : itemData){
let item = new itemData()
item.name = data.name;
item.id = data.id;
item.templateId = data.templateId;
item.rarity = data.rarity
item.count = data.count
data.stats.forEach(stat=>item.stats.push(stat))
return item
}
}
export class persistentItemData{
name: string
id: number
itemType: number
description: string
rarityMin: number
rarityMax: number
maxCount: number
tags: number[] = []
stats: Stat[] = []
constructor(init?: Partial<persistentItemData>) {
Object.assign(this, init);
}
}
export interface Stat {
Key: number
Value: number
}