DOF/sqr/User/Asset/Item/Item.nut

137 lines
4.6 KiB
Plaintext

/*
文件名:Item.nut
路径:User/Asset/Item/Item.nut
创建日期:2024-12-13 12:30
文件用途:项目类
*/
GameItem <- {};
class GameItem.Item {
function _typeof() {
return "Item";
}
//在背包中的格子位置
PosInKnapsack = -1;
//获取信息窗口
function GetInfoWindow() {
if (typeof this == "Equipment") {
return GameItem.EquipmentInfo(this);
} else if (typeof this == "Stackable") {
return GameItem.StackableInfo(this);
}
error("GameItem::Info:: 未知物品类型");
}
//获取图标精灵
function GetIconSprite() {
if (typeof this == "Equipment") {
return GameItem.EquipmentIcon(this);
} else if (typeof this == "Stackable") {
return GameItem.StackableIcon(this);
}
error("GameItem::Icon:: 未知物品类型");
}
//public::
//通过ID构造物品
function ConstructionItemById(Idx) {
if (AssetManager.EquipmentList.rawin(Idx)) {
return GameItem.Equipment(Idx);
} else if (AssetManager.StackableList.rawin(Idx)) {
return GameItem.Stackable(Idx);
} else {
error("没有这个道具编号: " + Idx);
}
}
//通过包构造物品
function ConstructionItemByPacket(Pack) {
local Ret = {};
local Type = Pack.Get_Byte();
Ret.Pos <- Pack.Get_Short();
//装备类型
if (Type == 1) {
local EquInfo = {
//装备ID
EquipId = Pack.Get_Int(),
//交易类型
EquipTradeType = Pack.Get_Byte(),
//装备附魔编号
EquipEnchant = Pack.Get_Int(),
//装备强化等级或增幅等级
EquipUpgrade = Pack.Get_Byte(),
//装备锻造
EquipSeparate = Pack.Get_Byte(),
//装备增幅属性 0 无 1 力量 2 智力 3 体力 4 精神
EquipIncrease = Pack.Get_Byte(),
//装备力量百分比
EquipPowerPercentage = Pack.Get_Byte(),
//装备智力百分比
EquipIntellectPercentage = Pack.Get_Byte(),
//装备体力百分比
EquipStaminaPercentage = Pack.Get_Byte(),
//装备精神百分比
EquipSpiritPercentage = Pack.Get_Byte(),
//装备物理攻击百分比
EquipPhysicalAttackPercentage = Pack.Get_Byte(),
//装备魔法攻击百分比
EquipMagicAttackPercentage = Pack.Get_Byte(),
//装备独立攻击百分比
EquipIndependentAttackPercentage = Pack.Get_Byte(),
//装备物理防御百分比
EquipPhysicalDefensePercentage = Pack.Get_Byte(),
//装备魔法防御百分比
EquipMagicDefensePercentage = Pack.Get_Byte(),
//装备全属强
EquipAllElementalAttack = Pack.Get_Byte(),
//装备水属强
EquipWaterAttack = Pack.Get_Byte(),
//装备火属强
EquipFireAttack = Pack.Get_Byte(),
//装备光属强
EquipLightAttack = Pack.Get_Byte(),
//装备暗属强
EquipDarkAttack = Pack.Get_Byte(),
//装备品质
EquipPercentage = Pack.Get_Byte(),
//装备再封装次数
EquipWrapCount = Pack.Get_Byte(),
//装备是否封装
EquipIsWrap = Pack.Get_Byte(),
//耐久度
EquipDurability = Pack.Get_Byte(),
}
Ret.Item <- GameItem.Equipment(EquInfo);
}
//消耗品类型
else if (Type == 2 || Type == 3) {
local ItemInfo = {
//道具ID
ItemId = Pack.Get_Int(),
//交易类型
ItemTradeType = Pack.Get_Byte(),
//道具数量
ItemCount = Pack.Get_Int(),
}
Ret.Item <- GameItem.Stackable(ItemInfo);
}
//时装类型
else if (Type == 4) {
local ItemInfo = {
//道具ID
ItemId = Pack.Get_Int(),
//交易类型
ItemTradeType = Pack.Get_Byte(),
//道具数量
ItemCount = Pack.Get_Int(),
}
Ret.Item <- GameItem.Equipment(ItemInfo.ItemId);
}
Ret.Item.PosInKnapsack = Ret.Pos;
return Ret;
}
}