KF-MMO-Server/Items/_pickup.ts

70 lines
2.1 KiB
TypeScript

import { itemData } from "../Classes/itemData";
import { lobbyMessage } from "../Classes/lobbyMessage";
import { playerData } from "../Classes/playerData";
import { game } from "../game";
export function pickup(socket, data){
if(!socket.hasOwnProperty("user")) return;
let buff = Buffer.from(data, 'base64');
let data1 : itemData = JSON.parse(buff.toString('utf-8'));
let player : playerData = socket.player
if(player != null){
let inventory = player.inventory
let template = game.getItemTemplate(data1.templateId)
let items = inventory.items.filter(i=>i.templateId == data1.templateId)
let totalAdded = 0
if(data1.count > template.maxCount)
{
console.log("ERROR ERROR ITEM ERROR")
return;
}
items.forEach(item=>{
var maxAmount = Math.min(template.maxCount - item.count, data1.count - totalAdded);
if (maxAmount > 0)
{
item.count += maxAmount;
totalAdded += maxAmount;
}
})
if(totalAdded < data1.count)
{
let maxAmount = data1.count - totalAdded
let itemCopy = itemData.copy(data1);
itemCopy.count = maxAmount;
totalAdded += maxAmount;
inventory.items.push(itemCopy);
}
if (totalAdded == data1.count)
{
if(data1.rarity >= 75){
let message = socket.user.login + " picked up "
if(data1.rarity >= 95){
message += "<color=purple>" + data1.name + "</color> (epic)"
}
else if(data1.rarity >= 75){
message += "<color=red>" + data1.name + "</color> (rare)"
}
else if(data1.rarity >= 60){
message += "<color=yellow>" + data1.name + "</color> (uncommon)"
}
else
message += data1.name;
game.addMessage(new lobbyMessage(message))
}
}
else
{
console.log("ERROR ERROR ITEM ERROR")
}
}
}