五、武器 weapons.ini 代码讲解
weapons.ini 定义武器(枪械、炮弹、导弹、光束等)。单位与防御建筑通过 weapon=武器ID 引用。格式与游戏本体 data/weapons_ini.js 一致。
5.1 完整示例
[mg]
name=机枪
dmg=14
cd=0.28
range=6
proj=bullet
splash=0
burst=0
vs={"infantry":1.6,"light":0.6,"heavy":0.3,"building":0.25}
prefer=infantry
[cz_flamethrower]
name=火焰喷射器
dmg=18
cd=0.35
range=3.5
proj=flame
splash=2.2
burst=4
burstGap=0.08
vs={"infantry":2.0,"light":1.2,"heavy":0.5,"building":0.7}
prefer=infantry
[cz_aaMissile]
name=防空导弹
dmg=45
cd=1.2
range=8
proj=rocket
air=true
airOnly=true
vs={"air":1.0}
prefer=air
5.2 字段速查
[Weapon]>name= (string) — 显示名称。科技树/说明框显示。
[Weapon]>dmg= (int) — 单发伤害。
会被目标
[Weapon]>cd= (number) — 攻击间隔(秒)。
armor 与 vs= 倍率修正。机枪约 14,主炮约 90-120,超武数百。越小射速越快。机枪 0.28,主炮 2-4。
[Weapon]>range= (number) — 射程(格数)。
狙击 9+,机枪 6,喷火 3.5。
[Weapon]>proj= (enum: bullet|shell|rocket|arc|flame|beam|tesla) — 弹道类型。
影响飞行速度、穿墙与视觉特效。
[Weapon]>splash= (number) — 溅射半径(格数,0=无溅射)。
火炮/火箭常用,对溅射范围内所有目标造成伤害。
[Weapon]>burst= (int) — 齐射次数(0=单发)。
一次攻击连续发射多发,配合
[Weapon]>burstGap= (number) — 齐射内每发间隔(秒)。
burstGap 控制间隔。仅
[Weapon]>vs= (JSON) — 对各护甲伤害倍率。
burst>0 时生效。键为护甲类型(infantry/light/heavy/building/air/naval/sub),值为倍率。如
[Weapon]>prefer= (enum) — 索敌偏好。
{"infantry":1.6,"heavy":0.3}。infantry|air|light|heavy|naval|sub|building。有 prefer 的武器会优先攻击该类型目标。
[Weapon]>air= (boolean) — 可攻击空军。
机枪/防空可打飞机需设
[Weapon]>airOnly= (boolean) — 仅攻击空军(防空炮)。
true。防空武器专用。
[Weapon]>minRange= (number) — 最小射程(可选)。
近身时无法开火,如
[Weapon]>needStop= (boolean) — 停下才能开火(火炮)。
minRange=2 防止贴脸。自行火炮类设
[Weapon]>waterOnly= (boolean) — 仅攻击水面单位(鱼雷)。
true,行进中不攻击。海军武器专用。
[Weapon]>sfx= (string) — 音效名(可选)。
开火音效。
[Weapon]>color= (hex) — 弹道颜色(可选)。
光束/电弧等特效颜色。
5.3 索敌评分
引擎自动索敌时,武器会按以下规则打分(分数越低越优先):
score = 距离 + prefer 匹配? → -4.0 + prefer 不匹配? → +2.5(有 prefer 时) + 能反击? → -1.2 + 打矿车? → -0.8 + 防空打空军? → -2.5 + 不能反击建筑? → +3.5
制作提示:给新武器起名建议加专属前缀(如
cz_),避免与官方武器 ID 冲突。weapon= 引用时写全 ID。