维护提醒

BWIKI 全站将于 9 月 3 日(全天)进行维护,期间无法编辑任何页面或发布新的评论。

全站通知:

模组:武器

来自星露谷物语维基
跳到导航 跳到搜索

物品

此页面解释了游戏如何存储和解析“武器”类型的物品数据。对于物品数据的概述,请参阅模组:物品数据

概览

武器是能够被玩家挥舞或使用以杀伤怪物的物品。

武器的物品类型(W) (在 C# 代码中,也写作 ItemRegistry.type_weapon),其数据存储在 Data/Weapons,其贴图默认存储在 TileSheets/weapons,其代码存储在 StardewValley.Tools.MeleeWeaponStardewValley.Tools.Slingshot

数据格式

Data/Weapons中的数据为一个“字符串 → 数据模型”查询,其中:

  • 键为武器的非限定性物品ID
  • 值为包含如下字段的模型。

武器基本信息

字段 效果
Name 内部名称
DisplayName
Description
用于显示翻译后名称和描述的模板字符串
Type 武器类型。可能取值为:0(刀)、1(匕首)、2(棒或锤)或 3(剑)。

外观

字段 效果
Texture 该武器所在的贴图集的素材名称。
SpriteIndex 物品在贴图集Texture中的索引。0代表左上角。

数值

字段 效果
MinDamage
MaxDamage
使用此武器对怪物的最小和最大伤害。
Knockback (可选) 目标被武器击中时后退多远。为相对于生锈的剑之类的基础武器的乘数(例1.5代表生锈的剑的150%)。默认为1。
Speed (可选) 玩家可以多快地挥舞此武器。每点相当于40毫秒,0点相当于0毫秒。这会和玩家的武器速度叠加。默认为0。
Precision (可选) 减少miss的概率。默认为0。
Defense (可选) 减少玩家受到的伤害。默认为0。
AreaOfEffect (可选) 略增大效果区域。默认为0。
CritChance (可选) 暴击几率,为 0(从不)至 1(每次)之间的小数。其中,0.02为默认值。
CritMultiplier (可选) 暴击所造成的伤害是普通攻击的多少倍。可以为小数。默认为3。

游戏逻辑

字段 效果
CanBeLostOnDeath 玩家晕倒后此工具是否丢失。默认为true。
MineBaseLevel
MineMinLevel
(可选) 影响矿井宝箱掉落此武器的基础层数和最小层数。默认为-1,代表不可自动掉落。

高级

字段 效果
Projectiles (可选) 使用该武器时发射的抛射物,它会按直线运动,直到击中怪物、造成伤害。会分别发射列表中列出的所有抛射物。

此字段为包含如下字段的数据模型所组成的列表(列表中每项都会生成一个抛射物):

字段 效果
Id 抛射物的唯一字符串ID
Damage (可选) 抛射物击中怪物造成的伤害。默认为10。
Explodes (可选) 抛射物撞到东西时是否爆炸。默认为false。
Bounces (可选) 抛射物在自毁前最多可以在墙壁上反弹多少次。默认为0。
MaxDistance (可选) 抛射物能到达的最大距离,单位为地块。默认为4。
Velocity (可选) 抛射物运动的速度。默认为10。
RotationVelocity (可选) 旋转速度。默认为32。
TailLength (可选) 抛射物尾迹长度。默认为1。
FireSound
BounceSound
CollisionSound
(可选) 发射抛射物、抛射物反弹或撞到东西的音效。三者均默认为none。
MinAngleOffset
MaxAngleOffset
(可选) 每次发射该抛射物时,相对发射方向的随机偏移。二者均默认为0,此时会以玩家面向方向的90°角方位发射。
SpriteIndex (可选) TileSheets/Projectiles素材文件中的贴图集索引。默认为11(闪光的黄色球体贴图)。
Item (可选) 发射的物品。若设置,则重写SpriteIndex

此字段为包含如下字段的数据模型所组成的列表:

字段 效果
公共字段 参见模组:物品查询#物品生成字段以获取关于弹药物品支持的一般物品字段。

若设置为返回多个物品的物品查询,则会随机选择其中一个。

注意这些实际上是武器发射的魔法抛射物,不能像弹弓一样直接瞄准。

CustomFields 此条目的自定义字段

武器的类别被硬编码为-98(Object.weaponCategory)。

实现说明

弹弓说明

  • 基础弹弓在武器数据中的ParentSheetIndex为32,每升一级,索引+1(最多不超过34,尽管原版中只能获取32和33)。
  • 弹弓伤害是动态计算的,与武器数据无关。

矿井宝箱掉落

当玩家打碎矿井中的宝箱时,有一定概率掉落物品。如下所示为选取掉落物的机制[1]

  1. 匹配MineMinLevel低于当前矿井层数的物品。
  2. 从上一步所得列表中,基于MineBaseLevel和当前矿井层数之差进行概率检查。其中,概率为中心落在基础层数的钟形曲线:
    层数差 概率
    0 100%
    5 92%
    10 71%
    15 46%
    20 25%
    25 4%
    层数差取绝对值;例如,基础层数在当前层数之上/之下5层都会有92%的概率。(此概率依据正态分布 e-(当前层数 - 基础层数)2 / (2 * 122) 计算。)
  3. 寻找层数差最小的武器,将其加入列表(若此物品在第二步中被选中,则有双倍几率掉落)。
  4. 从余下武器列表中随机选取一个掉落物。

参考

  1. 参见游戏代码中的Utility.getUncommonItemForThisMineLevel

另请参阅