@ adatechnology/ 游戏项目
引擎-不可知项目录引擎. 它定义了物品是什么(类别、实际体积(以米计)、重量(以公斤计)、稀有性、耐久性、储存寿命、营养、,
保护、携带能力、武器链接(在发现的地方)、游戏扩展和补丁的注册以及发现、更新、存储的默认规则,
携带重量和衣物保护。 它没有内容(目录生活在 @adatechnology/game-items-goods),没有渲染器(3D 生活于
@adatechnology/game-items-three)),它对于任何游戏一无所知.
状态:引擎完成(第001种的T3.1a和T3.1e):注册,规则,懒惰衰老,携带,保护,使用效果,食谱,发现和武库桥. 凡事都纯;宿主守州.
单位:米、公斤、升、日.
安装
pnpm add @adatechnology/game-items
一个平地 <script src=".../dist/index.global.js"> 揭露 GameItems 全球.
使用量
import { createItems } from '@adatechnology/game-items'
import type { ItemDef } from '@adatechnology/game-items'
const beans: ItemDef = { id: 'canned_beans', category: 'food', size: [0.075, 0.11, 0.075], weight: 0.43, rarity: 'common', shelfLife: 1460, portions: 2 }
const items = createItems({
packs: [{ id: 'mine', items: [beans], places: [{ id: 'house' }] }],
patch: { canned_beans: { weight: 0.45 } }, // field by field; arrays replace
rules: { carry: { baseKg: 10 } }, // merged over DEFAULT_RULES
})
items.get('canned_beans').volume // 0.928 L, derived from size
items.byCategory('food')
顺序:包(一个后期物品,代用相同的代号), patch, (中文(简体) ), remove, (中文(简体) ), include。每个不一致之处(未知类别、罕见或地点、无效大小、,
重量、储存寿命、保护、携带或规则)在一个错误中报告.
逻辑
import { createFindsProvider, freshness, blockChance, maxLoadKg, placeFinds } from '@adatechnology/game-items'
freshness(milk, { ageDays: 0, since: 0, storage: 'fridge', storedAt: 0 }, 20) // closes the account lazily, then 'fresh' | 'stale' | 'spoiled' | 'rotten'
blockChance(pieces, 'arms', 'bite') // 1 - PROD(1 - value x condition), capped at 90%
maxLoadKg(strength) // (8 + 2.5 x strength) x 1.2
const stacks = createFindsProvider(items).findsFor({ place: 'house', container: 'fridge', state: 'fortified', rng, day: 12 })
const { contents, leftover } = placeFinds(stacks, slots, items) // the floorplan's `contents`
- 衰老是懒惰. 无勾选 :
advanceAge关闭ageDays += (now - since) x multiplier当项目移动或被查看时。 冰箱和冰箱需要电源(主机通过)powered;没有动力的冷藏机使食物新鲜而有两天时间;头两天的冷却年龄为x0.5;电池每月损失10%的电荷;过180天的汽油故障10%的起步. - 查找是一个提供者后面的两个端口. 装有明确游泳池的容器(3D取景器)
sorteiaConteudo:按足迹、加权顺序、加固的x2.5和+1对用品进行计算, 被废弃的40%空加垃圾)从中取出;其他任何像游戏中的rollItems(计算范围、类别权重、地点项目中很少的60/28/9/2.5)。 都留着 随机绘制源的顺序; 堆栈首先选择,然后绘制每个(年龄、条件、充电、充电)的状态。 计数随着爆发的日子 (单位:千美元)max(floor, 1 - perDay x days),0日没有),可以按区域进行分级. - 供货商是地板的
FindsProvider按形状 (单位:千美元)findsFor(query) -> FindStack[]; 此软件包不导入game-floorplan。 。 。 . - 武器库成为物项:
itemsFromArsenal(arsenal, { records })制造ammo_<caliber>, (中文(简体) ),firearm_<id>财务报告和审定财务报表throwable_<id>; 游戏的框 (records)给出弹道,重量和稀有性,其余部分为估算. - 包装也携带
pools(什么样的家具持有),poolAliases, (中文(简体) ),useEffects财务报告和审定财务报表recipes· ;resolveUse, (中文(简体) ),canCraft财务报告和审定财务报表craft读取,然后离开 将结果应用到主机.
API 密码
| 名称 | 这是什么 |
|---|---|
createItems(options?) | ItemsCatalog: 地图 items, (中文(简体) ), categories, (中文(简体) ), places, (中文(简体) ), containers, (中文(简体) ), pools, (中文(简体) ), recipes, (中文(简体) ), useEffects, (中文(简体) ), rules· ; has, (中文(简体) ), get (在未知的情况下), list, (中文(简体) ), byCategory, (中文(简体) ), byPlace, (中文(简体) ), byTag |
ItemDef | 扩展可交互性 ItemDef; 字段在 src/types.ts |
ITEM_CATEGORIES | 14个类别food, (中文(简体) ), drink, (中文(简体) ), medical, (中文(简体) ), tools, (中文(简体) ), melee, (中文(简体) ), materials, (中文(简体) ), clothing, (中文(简体) ), bags, (中文(简体) ), electronics, (中文(简体) ), fuel, (中文(简体) ), outdoors, (中文(简体) ), books, (中文(简体) ), collectibles, (中文(简体) ), keys; 游戏添加更多 categories |
DEFAULT_RULES, (中文(简体) ), ItemRules | 稀有重量 60/28/9/2.5/0.5(仅限固定地点),新鲜度0.5/1/1.5,存储乘数,载体 (8 + 2.5 × strength) × 1.2 100%/150%,保护上限为90%,佩戴-8/-3,撕破25%, aging, (中文(简体) ), inventory, (中文(简体) ), use (过去最好的食物), spawn (新商店库存,按稀有程度、年龄、收费、填充), finds (按日,州,池数减 |
advanceAge, (中文(简体) ), moveToStorage, (中文(简体) ), storageMultiplier, (中文(简体) ), freshness, (中文(简体) ), shelfRatio, (中文(简体) ), chargeLevel, (中文(简体) ), failsToStart | 衰老和衰变 |
blockChance, (中文(简体) ), wearBlocked, (中文(简体) ), repairPiece, (中文(简体) ), pieceBlock | 分层服装保护 |
maxLoadKg, (中文(简体) ), carriedKg, (中文(简体) ), loadState, (中文(简体) ), bagOption, (中文(简体) ), canTake | 携带重量和槽 |
resolveUse | 将某一项用作数据是做什么的 UseContext.seal 密封物品(ItemDef.seal页:1 SealSpec 仍被关闭、打洞或漏水者不吃(blocked(中文(简体) ) |
canCraft, (中文(简体) ), craft | 食谱 |
createFindsProvider, (中文(简体) ), rollByCategory, (中文(简体) ), rollExplicitPool, (中文(简体) ), spawnData, (中文(简体) ), depletionFactor, (中文(简体) ), placeFinds, (中文(简体) ), toLootTables | 发现 |
itemsFromArsenal | 作为物项的武库 |
checkItems(parts) | 一致性检查 createItems 运行 |
RARITIES, (中文(简体) ), BODY_SLOTS, (中文(简体) ), DURABILITY_KINDS | 封闭的词汇表 |
地点也是登记地点:没有船只、包装或游戏宣布; finds.places 仅当至少一个地方注册时才选中.
黄金与球队的密码对抗
tests/team-golden.test.ts 比较两个端口与团队自己的代码答案: rollByCategory 游戏的 rollItems (2 400个案件)和 rollExplicitPool 3D 室内取景器 sorteiaConteudo (1875个病例),结果和随机抽取的数量相同. 装入 tests/fixtures/team-golden/ 记录一次 pnpm --filter @adatechnology/game-items record:team-golden,从而切断了已交付源的功能,将其运行在一个 vm 与种子随机流.