npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ai-rpg-engine/equipment

v3.8.0

Published

Equipment slots, item definitions, and loadout management for AI RPG Engine

Readme

@ai-rpg-engine/equipment

npm License: MIT

用于AI RPG Engine的装备栏、物品定义和装备管理。

安装

npm install @ai-rpg-engine/equipment

功能介绍

管理角色在五个装备栏(武器、盔甲、饰品、工具、小饰品)中的装备,使用物品目录、装备操作、基于标签的条件和综合效果计算。所有操作都是不可变的。

用法

创建和装备

import {
  createEmptyLoadout,
  equipItem,
  computeLoadoutEffects,
} from '@ai-rpg-engine/equipment';
import type { ItemCatalog } from '@ai-rpg-engine/equipment';

const catalog: ItemCatalog = {
  items: [
    {
      id: 'iron-sword',
      name: 'Iron Sword',
      description: 'A sturdy blade.',
      slot: 'weapon',
      rarity: 'common',
      statModifiers: { str: 2 },
      grantedTags: ['armed'],
      grantedVerbs: ['slash'],
    },
  ],
};

let loadout = createEmptyLoadout();
const result = equipItem(loadout, 'iron-sword', catalog, []);
// result.loadout.equipped.weapon === 'iron-sword'
// result.errors === []

const effects = computeLoadoutEffects(result.loadout, catalog);
// effects.statModifiers.str === 2
// effects.grantedTags === ['armed']

物品栏管理

import { addToInventory, removeFromInventory } from '@ai-rpg-engine/equipment';

let loadout = createEmptyLoadout();
loadout = addToInventory(loadout, 'healing-potion');
const { loadout: updated, removed } = removeFromInventory(loadout, 'healing-potion');

验证

import { validateLoadout } from '@ai-rpg-engine/equipment';

const result = validateLoadout(loadout, catalog, characterTags);
// result.ok, result.errors

装备栏

| 装备栏 | 用途 | |------|---------| | weapon | 主要攻击性武器 | | armor | 防御装备 | | accessory | 戒指、护身符、增强物品 | | tool | 实用工具(开锁器、扫描仪) | | trinket | 护身符、徽章、被动物品 |

物品稀有度

common | uncommon | rare | legendary

圣物成长——一件获得名称的装备

一件经历过某些事件的物品会积累历史,而历史则赋予它一个名称。一把夺走过三条人命的弯刀将变成血染弯刀。成长是根据物品的历史计算得出的,而不是人为设定的。

evaluateRelicGrowth 是读取部分——它将历史转化为等级和称号:

import { evaluateRelicGrowth } from '@ai-rpg-engine/equipment';

const relic = evaluateRelicGrowth(item, chronicle, currentTick);
// -> { currentEpithet: 'Bloodied Cutlass', milestonesReached: [...], tier: 1 }

五个触发因素驱动着这个过程——kill-count(击杀数)、age(年龄)、recognition-count(被识别次数)、faction-kills(阵营击杀数)和 boss-kill(Boss 击杀数),这些数据都来自物品的历史记录。武器默认为 DEFAULT_WEAPON_MILESTONES,其他物品默认为 DEFAULT_ARMOR_MILESTONES;可以通过配置来为每个物品进行覆盖。

createItemChronicleCore 是写入部分:一个可选的 EngineModule,用于记录实际游戏中的历史。

import { createItemChronicleCore, getItemDisplayName } from '@ai-rpg-engine/equipment';
import { evaluateItemRecognition } from '@ai-rpg-engine/modules';

// add to your engine's module list
createItemChronicleCore({
  catalog: itemCatalog,
  recognition: { evaluate: evaluateItemRecognition }, // optional
})

getItemDisplayName(world, 'cutlass', 'Cutlass'); // 'Bloodied Cutlass'

它会记录 acquired(首次拾取或装备)、used-in-kill(归功于击杀者所装备的武器)和 recognized(当你的区域内有人对你的物品产生反应时)。recognition 是通过注入的方式添加,而不是导入,因为这个包不依赖于 @ai-rpg-engine/modules。可以使用 getItemDisplayNamegetRelicSummarygetItemChronicle 来读取成长数据,或者使用 refreshRelicSummaries 在需要时重新计算。

记录是确定性的——基于事件驱动,以 event.tick 为关键,不依赖于系统时间或随机数生成器。如果游戏没有添加这个模块,那么它与在模块存在之前构建的游戏将完全相同,并且该模块不会注册任何默认命名空间,因此在一个没有任何物品被记录的世界中,也不会产生任何状态。

AI RPG Engine 的一部分

这个包是 AI RPG Engine 单仓库项目的一部分。

许可证

MIT