xy-server/game/core/ItemUtil.ts
2025-04-23 09:34:08 +08:00

151 lines
4.2 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import SKDataUtil from "../gear/SKDataUtil";
import SKLogger from "../gear/SKLogger";
import Player from "../object/Player";
import { EEquipIndex } from "../role/EEnum";
import GameUtil from "./GameUtil";
export default class ItemUtil {
// 获得道具定义
static getItemName(itemId: any): string {
let result = this.getItemData(itemId);
if (result) {
return result.name;
}
SKLogger.warn(`$警告:找不到道具名称定义:${itemId}`);
return "";
}
// 获得道具定义
static getItemData(itemId: any): any {
if (itemId == null) {
return null;
}
let conf = GameUtil.game_conf;
if (!conf) {
return null;
}
let items = conf.item;
if (!items) {
return null;
}
let result = items[itemId];
if (!result) {
return null;
}
return result;
}
//获取玩家背包中所有信物道具
static getBagXwItem(player:Player) : any[] {
if (player == null)
return [];
var tempList:any = []
for (const id in player.bag_list) {
var info = this.getItemData(id)
if (!!info && 18 == info.type) {
tempList.push(info)
}
}
return tempList
}
// 能否合成
static canSynthesis(itemId: number): Boolean {
// 如果配置不存在则返回不能合成
if (!GameUtil.game_conf) {
return false;
}
let list = GameUtil.game_conf.synthesis;
for (let key in list) {
let item = list[key];
// 如果是合成物品则能合成
if (itemId == item.id) {
return true;
}
// 如果在合成列表中能合成
if (item.list.indexOf(itemId) != -1) {
return true;
}
}
return false;
}
// 获得合成表
static getSynthesisItem(index: number): string {
let result: any = GameUtil.game_conf;
if (result == null) {
return "";
}
result = result.synthesis;
if (result == null) {
return "";
}
result = result[index];
if (result == null) {
return "";
}
result = result.map;
return result;
}
// 获得玩家背包里道具数量
static getBagItemCount(player: Player, itemId: number): number {
if (player == null) {
return 0;
}
// 玩家背包里无此道具
if (!player.bag_list.hasOwnProperty(itemId)) {
return 0;
}
// 玩家背包里此道具数量为0
let count = player.bag_list[itemId];
return count;
}
// 是否为佩饰
static isBaldric(index: number): boolean {
if(SKDataUtil.atRange(index,[EEquipIndex.CAPE,EEquipIndex.PENDANT,EEquipIndex.BELT,EEquipIndex.RING_LEFT,EEquipIndex.RING_RIGHT])){
return true;
}
return false;
}
static getBaldricSuit(suitId:number):any{
let conf=GameUtil.game_conf.baldric_suit;
let data=SKDataUtil.valueForKey(conf,suitId);
return data;
}
// 能否分解
static canResolve(data:any):number{
if(SKDataUtil.atRange(data.id,[20011,20012,20013,20014,20015])){
return 5;
}
if(SKDataUtil.atRange(data.id,[21011,21012,21013,21014,21015])){
return 10;
}
return 0;
}
// 二阶仙器分解为50个八荒,三阶分解为80四阶160五阶320
static getEquipResolve(grade: number): number {
if (grade == 2) {
return 50;
}
if (grade == 3) {
return 80;
}
if (grade == 4) {
return 160;
}
if (grade == 5) {
return 320;
}
return 0;
}
// 获得佩饰颜色
static getBaldricColor(grade:number): string {
if (grade == 1) {
return "#60d566";
} else if (grade == 2) {
return "#5fd5d6";
} else if (grade == 3) {
return "#b94bd1";
}
return "#ff0000";
}
}