You've already forked KF-MMO-Server
Inventory system improvements,
stats
This commit is contained in:
@@ -1,9 +1,57 @@
|
||||
import { enums } from "./enums"
|
||||
import { game } from "../game"
|
||||
|
||||
export class itemData{
|
||||
name : string
|
||||
id : number
|
||||
rarity: number
|
||||
itemType : number
|
||||
stats = {}
|
||||
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 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
|
||||
}
|
||||
|
||||
@@ -2,5 +2,5 @@ import { itemData } from "./itemData"
|
||||
|
||||
export class itemGenerated{
|
||||
instanceId: number
|
||||
item: itemData
|
||||
item: itemData | null
|
||||
}
|
||||
@@ -13,7 +13,7 @@ export class lobbyState{
|
||||
lobby.players = []
|
||||
lobby.users = []
|
||||
for (let i = 0; i < this.players.length; i++) {
|
||||
lobby.players.push(playerData.copyLight(this.players[i]));
|
||||
lobby.players.push(this.players[i].copyLight());
|
||||
}
|
||||
return lobby
|
||||
}
|
||||
|
||||
@@ -3,14 +3,42 @@ import { playerInventory } from "./playerInventory";
|
||||
|
||||
export class playerData{
|
||||
id : number
|
||||
level : number = 1
|
||||
characterId : number
|
||||
inventory : playerInventory = new playerInventory()
|
||||
rigidbody : physicsObject = new physicsObject()
|
||||
|
||||
static copyLight(data : playerData){
|
||||
copyLight(){
|
||||
let player : any = {}
|
||||
player.id = data.id
|
||||
player.rigidbody = data.rigidbody
|
||||
player.id = this.id
|
||||
player.rigidbody = this.rigidbody
|
||||
return player
|
||||
}
|
||||
|
||||
getItemById(id : number){
|
||||
let item = this.inventory.items.find(i=>i.id == id)
|
||||
return item
|
||||
}
|
||||
|
||||
validateEquipment(){
|
||||
if(this.inventory.weapon != -1){
|
||||
if(this.getItemById(this.inventory.weapon) == null){
|
||||
this.inventory.weapon == -1;
|
||||
}
|
||||
}
|
||||
if(this.inventory.equipment[0] != -1){
|
||||
if(this.getItemById(this.inventory.equipment[0]) == null){
|
||||
this.inventory.equipment[0] == -1;
|
||||
}
|
||||
}
|
||||
if(this.inventory.equipment[1] != -1){
|
||||
if(this.getItemById(this.inventory.equipment[1]) == null){
|
||||
this.inventory.equipment[1] == -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
constructor(init?: Partial<playerData>) {
|
||||
Object.assign(this, init);
|
||||
}
|
||||
}
|
||||
@@ -4,16 +4,4 @@ export class playerInventory{
|
||||
weapon : number = -1
|
||||
equipment : number[] = [-1,-1]
|
||||
items : itemData[] = []
|
||||
|
||||
static validate(inv : playerInventory){
|
||||
if(inv.equipment[0] == inv.weapon){
|
||||
inv.equipment[0] = -1
|
||||
}
|
||||
if(inv.equipment[1] == inv.weapon){
|
||||
inv.equipment[1] = -1
|
||||
}
|
||||
if(inv.equipment[1] == inv.equipment[0]){
|
||||
inv.equipment[1] = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user