# 附加属性系统

# 一、介绍

附加属性意即:附加于背包物品(或业务方自定义物品)上的属性,可以是血量、级别、防御等自定义的属性,与现有的属性系统区分开

该模块则提供了查询物品附加属性的接口,以及升级对应属性的接口

# 二、使用

// 先在头部引入附加属性模块
import { attachedAttributeSystem } from "@timi/mogs-sdk";
1
2

1. 获取背包中物品的附加属性

引入该模块后,会自动为背包中的物品实例附加***attachedAttributes***字段,可直接读取,无需通过调用接口,

const backpackItem = getBackpackItem(); // 取得背包物品的伪代码
const attachedAttributes = backpackItem.attachedAttributes;
attachedAttributes.forEach((item, key) => {
    console.log('属性id:', key);
    console.log('属性数值:', item.value);
    console.log('升级消耗物品:', item.upgradePreview.consumptions);
});
1
2
3
4
5
6
7

注意:由于后台设定的属性升级配置表中没有包含属性信息(如:属性名称、***属性icon***等)的字段,所以该模块目前只能提供属性id,业务方需自行维护属性id与对应属性信息的关联

2. 获取自定义物品的附加属性

业务方自行维护的自定义物品,虽不在背包中,但仍可通过属性升级配置表为物品配置附加属性和升级规则

const attachedAttributes = attachedAttributeSystem.getAttachedAttributes({
    itemId: 123456, // 这个ID是业务方自定义物品的ID
    itemType: 3 // 属性升级配置表中的目标类型
});
attachedAttributes.forEach((item, key) => {
    console.log('属性id:', key);
    console.log('属性数值:', item.value);
    console.log('升级消耗物品:', item.upgradePreview.consumptions);
});
1
2
3
4
5
6
7
8
9

3. 升级属性

const bloodAttribute = attachedAttributes.get(9527); // 假设某个物品的血量属性id是9527
await bloodAttribute.upgrade(); // 升级属性
1
2

4. 监听附加属性变化

attachedAttributeSystem.onAttachedAttributeChange((e) => {
    console.log('发生变化的物品id:', e.itemId);
    console.log('发生变化的属性id:', e.attributeId);
    console.log('变化之前的属性数值:', e.previousValue.value);
    console.log('当前的属性数值:', e.currentValue.value);
})
1
2
3
4
5
6