Refine NPC interactions and runtime item generation

This commit is contained in:
2026-04-05 17:13:07 +08:00
parent c49c64896a
commit 89cecda7da
58 changed files with 4199 additions and 1562 deletions

View File

@@ -102,7 +102,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(976, 61, 4, 11),
},
baseStats: { attackRange: 1.3, speed: 6.8, hp: 102, maxHp: 102 },
habitatTags: ['鍦板', '鑽掓潙', '瀵哄簷', '閬楄抗'],
habitatTags: ['地宫', '荒村', '废寺', '遗迹'],
},
{
id: 'monster-04',
@@ -121,7 +121,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(870, 58, 3, 15),
},
baseStats: { attackRange: 1.1, speed: 4.8, hp: 152, maxHp: 152 },
habitatTags: ['鐭抽樁', '娓″彛', '妗?', '闆箔'],
habitatTags: ['石阶', '渡口', '古桥', '山门'],
},
{
id: 'monster-06',
@@ -140,7 +140,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(1606, 73, 3, 11),
},
baseStats: { attackRange: 1.2, speed: 5.8, hp: 140, maxHp: 140 },
habitatTags: ['鐭块亾', '鐭抽樁', '搴熷煄', '鍦板'],
habitatTags: ['矿道', '石阶', '废城', '地宫'],
},
{
id: 'monster-07',
@@ -159,7 +159,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(1444, 76, 3, 11),
},
baseStats: { attackRange: 1.1, speed: 6.1, hp: 108, maxHp: 108 },
habitatTags: ['闆炬灄', '鑽掓潙', '瀵哄簷', '灞辫矾'],
habitatTags: ['雾林', '荒村', '废寺', '山路'],
},
{
id: 'monster-08',
@@ -178,7 +178,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(950, 50, 3, 17),
},
baseStats: { attackRange: 1.0, speed: 6.7, hp: 118, maxHp: 118 },
habitatTags: ['绔规灄', '闆炬灄', '娌兼辰', '鑽掗噹'],
habitatTags: ['竹林', '雾林', '沼泽', '荒野'],
},
{
id: 'monster-11',
@@ -197,7 +197,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(770, 70, 3, 10),
},
baseStats: { attackRange: 1.4, speed: 7.4, hp: 124, maxHp: 124 },
habitatTags: ['闀胯', '钀ュ湴', '鏂灒', '瀹嫅'],
habitatTags: ['长街', '营地', '断垣', '宫苑'],
},
{
id: 'monster-13',
@@ -214,7 +214,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
attack: rowAnimation(1056, 66, 1, 15),
},
baseStats: { attackRange: 1.7, speed: 8.2, hp: 96, maxHp: 96 },
habitatTags: ['绔规灄', '闆炬灄', '灞辫矾', '鑺卞洯'],
habitatTags: ['竹林', '雾林', '山路', '花圃'],
},
{
id: 'monster-18',
@@ -233,7 +233,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(1771, 77, 1, 17),
},
baseStats: { attackRange: 1.8, speed: 4.4, hp: 186, maxHp: 186 },
habitatTags: ['鐭块亾', '閾稿潑', '搴熷煄', '杈瑰叧'],
habitatTags: ['矿道', '铸坊', '废城', '边关'],
},
{
id: 'monster-02',
@@ -252,7 +252,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(688, 43, 4, 7),
},
baseStats: { attackRange: 1.4, speed: 7.3, hp: 112, maxHp: 112 },
habitatTags: ['浠欓棬', '闀垮粖', '閬楄抗', '绁潧'],
habitatTags: ['仙门', '长廊', '遗迹', '祭坛'],
},
{
id: 'monster-05',
@@ -271,7 +271,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(840, 60, 4, 14),
},
baseStats: { attackRange: 1.6, speed: 7.0, hp: 126, maxHp: 126 },
habitatTags: ['濡栭浘', '娲炲ぉ', '璋峰湴', '绉樻'],
habitatTags: ['妖雾', '洞天', '谷地', '秘境'],
},
{
id: 'monster-10',
@@ -290,7 +290,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(720, 48, 3, 15),
},
baseStats: { attackRange: 1.2, speed: 5.0, hp: 136, maxHp: 136 },
habitatTags: ['娲炲ぉ', '璋峰湴', '鏈堟箹', '鐭垮潙'],
habitatTags: ['洞天', '谷地', '月湖', '石坑'],
},
{
id: 'monster-12',
@@ -309,7 +309,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(506, 46, 3, 11),
},
baseStats: { attackRange: 1.6, speed: 7.8, hp: 120, maxHp: 120 },
habitatTags: ['娲炲ぉ', '宕?', '浠欏矝', '鍙よ抗'],
habitatTags: ['洞天', '崖壁', '仙岛', '古迹'],
},
{
id: 'monster-14',
@@ -328,7 +328,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(671, 61, 4, 11),
},
baseStats: { attackRange: 1.7, speed: 7.1, hp: 128, maxHp: 128 },
habitatTags: ['鏈堟箹', '澶╂渤', '浠欐床', '鐏垫硥'],
habitatTags: ['月湖', '天河', '仙洲', '灵泉'],
},
{
id: 'monster-15',
@@ -346,7 +346,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(2400, 75, 2, 17),
},
baseStats: { attackRange: 1.5, speed: 4.6, hp: 168, maxHp: 168 },
habitatTags: ['鑺卞渻', '绁炴湪', '璋峰湴', '绉樺'],
habitatTags: ['花圃', '神木', '谷地', '秘境'],
},
{
id: 'monster-16',
@@ -365,7 +365,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
die: rowAnimation(728, 52, 3, 9),
},
baseStats: { attackRange: 1.8, speed: 6.9, hp: 130, maxHp: 130 },
habitatTags: ['濡栭浘', '浠欓棬', '椋炵€?', '鎮┖'],
habitatTags: ['妖雾', '仙门', '星舟', '悬空'],
},
{
id: 'monster-20',
@@ -383,7 +383,7 @@ const BASE_HOSTILE_NPC_PRESETS: Array<
attack: rowAnimation(804, 67, 2, 12),
},
baseStats: { attackRange: 1.4, speed: 6.4, hp: 138, maxHp: 138 },
habitatTags: ['鏈堟箹', '鐏垫硥', '澶╂渤', '瀵掔帀'],
habitatTags: ['月湖', '灵泉', '天河', '寒玉'],
},
];
@@ -394,12 +394,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.74,
buildHostileNpcLootItem(
'script-fragment',
'鏉愭枡',
'娈嬮〉纰庣墖',
'材料',
'残页碎片',
'common',
['material'],
2,
'鏁h惤鐨勪功椤靛拰鏄撶鐨勭鐗囷紝浠嶆畫鐣欑潃鎶ょ澧ㄦ按鐨勭棔杩广€?',
'散落的书页和易碎纸片上,还残留着护符墨水的痕迹。',
),
),
buildHostileNpcLootEntry(
@@ -407,12 +407,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.24,
buildHostileNpcLootItem(
'archive-sigil',
'閬楃墿',
'妗f鍗拌',
'稀有品',
'档案印记',
'rare',
['relic', 'mana'],
1,
'涓€涓偓娴殑鍗拌锛屽瓨鍌ㄧ潃鍛ㄥ洿鐨勭伒鏂囥€?',
'一枚悬浮的印记,内部储着周围灵文的回响。',
),
),
],
@@ -422,12 +422,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.74,
buildHostileNpcLootItem(
'bone-dust',
'鏉愭枡',
'楠ㄥ皹',
'材料',
'骨尘',
'common',
['material'],
2,
'鐮寸骞界伒鐣欎笅鐨勭矇鏈姸娈嬮銆?',
'破碎骨灵散落下来的粉末状残渣。',
),
),
buildHostileNpcLootEntry(
@@ -435,12 +435,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.22,
buildHostileNpcLootItem(
'whisper-ember',
'閬楃墿',
'浣庤浣欑儸',
'稀有品',
'低语余烬',
'rare',
['relic', 'mana'],
1,
'寰急鐨勭伀鑺憋紝浠嶅甫鐫€涓嶅畨鐨勯榄傝兘閲忓棥鍡′綔鍝嶃€?',
'微弱的火星里还带着不安魂力的回响。',
),
),
],
@@ -450,12 +450,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.7,
buildHostileNpcLootItem(
'stone-shell-shard',
'鏉愭枡',
'鐭冲3纰庣墖',
'材料',
'石壳碎片',
'uncommon',
['material'],
2,
'浠庣埇琛岀煶鑳屾帬椋熻€呰韩涓婂墺钀界殑鐮寸鎶ょ敳鐗囥€?',
'从石背蜗怪身上剥落下来的坚硬护壳碎片。',
),
),
buildHostileNpcLootEntry(
@@ -463,12 +463,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.32,
buildHostileNpcLootItem(
'venom-gland',
'鏉愭枡',
'姣掕吅',
'材料',
'毒腺',
'uncommon',
['material'],
1,
'浠嶅甫鐫€浣欐俯鐨勫瘑灏佹瘨鍥娿€?',
'仍带着余温的密封毒囊。',
),
),
],
@@ -478,12 +478,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.68,
buildHostileNpcLootItem(
'watcher-tendon',
'鏉愭枡',
'瀹堟湜鑰呰倢鑵?',
'材料',
'守望筋丝',
'common',
['material'],
2,
'浠庢紓娴溂 stalker 韬笂鎵笅鐨勭粏涓濄€?',
'从漂浮妖眼身上扯下的细丝筋络。',
),
),
buildHostileNpcLootEntry(
@@ -491,12 +491,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.3,
buildHostileNpcLootItem(
'blood-lens',
'閬楃墿',
'琛€鏅堕€忛暅',
'稀有品',
'血瞳透镜',
'rare',
['relic', 'mana'],
1,
'缁忚繃鎶涘厜鐨勭溂鏅讹紝鍙寮烘晫鎰忓嚌瑙嗘妧宸с€?',
'经由打磨的眼晶,可放大敌意与凝视类术式。',
),
),
],
@@ -506,12 +506,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.38,
buildHostileNpcLootItem(
'carapace-plate',
'鎶ょ敳',
'鐢插3鏉?',
'护甲',
'甲壳板',
'rare',
['armor', 'material'],
1,
'鍙噸閾镐负閲嶅瀷闃叉姢鐨勮嚧瀵嗙敳澹炦ి€?',
'可重铸成重型防具的致密甲板。',
),
),
buildHostileNpcLootEntry(
@@ -519,12 +519,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.18,
buildHostileNpcLootItem(
'guard-core',
'閬楃墿',
'瀹堝崼鏍稿績',
'稀有品',
'守御核心',
'rare',
['relic'],
1,
'钑村惈閲庢€ч槻寰℃湰鑳界殑鏍稿績锛屽潥涓嶅彲鎽ං€?',
'蕴着本能防御意志的核心,坚实得近乎难摧。',
),
),
],
@@ -534,12 +534,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.72,
buildHostileNpcLootItem(
'spore-pouch',
'鏉愭枡',
'瀛㈠泭',
'材料',
'孢囊',
'uncommon',
['material'],
2,
'瑁呮弧涓嶇ǔ瀹氳槕鑿囧瀛愮殑鍥婅銆?',
'装满不稳定菌孢的鼓胀囊袋。',
),
),
buildHostileNpcLootEntry(
@@ -547,12 +547,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.28,
buildHostileNpcLootItem(
'burst-cap',
'娑堣€楀搧',
'鐖嗚弴甯?',
'消耗品',
'爆菇帽',
'uncommon',
['healing'],
1,
'鍙姞宸ヤ负鎴樺湴鑽墏鐨勬尌鍙戞€ц弴甯姐€?',
'可加工成战地药剂的挥发菌帽。',
),
),
],
@@ -562,12 +562,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.76,
buildHostileNpcLootItem(
'vine-tendril',
'鏉愭枡',
'钘ら』',
'材料',
'藤须',
'common',
['material'],
2,
'浠庝紡鍑昏棨钄撲笂鑾峰彇鐨勫潥闊х氦缁淬€?',
'从枯藤伏虫身上取得的韧性藤丝。',
),
),
buildHostileNpcLootEntry(
@@ -575,12 +575,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.2,
buildHostileNpcLootItem(
'ambush-fang',
'姝﹀櫒',
'浼忓嚮鐗?',
'武器',
'伏袭牙刃',
'rare',
['weapon', 'material'],
1,
'杩戞垬鐚庝汉鐝嶈鐨勫ぉ鐒跺皷鍒€¢€?',
'近战猎手格外珍视的天然尖牙刃。',
),
),
],
@@ -590,12 +590,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.72,
buildHostileNpcLootItem(
'spirit-slime',
'鏉愭枡',
'鐏佃厫榛忔恫',
'材料',
'灵腐黏液',
'common',
['material'],
2,
'鍦ㄩ粦鏆椾腑缂撴參鍙戝厜鐨勭矘绋犳畫鐣欑墿銆?',
'在黑暗中微微发光的腐灵残液。',
),
),
buildHostileNpcLootEntry(
@@ -603,12 +603,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.2,
buildHostileNpcLootItem(
'marsh-core',
'閬楃墿',
'娌兼辰鏍稿績',
'稀有品',
'沼泽核心',
'rare',
['relic', 'mana'],
1,
'娌兼辰鐏垫皵涓庢畫鐣欑槾姘旂殑鍑濊仛鑺傜偣銆?',
'沼气与阴湿灵力凝成的核心结节。',
),
),
],
@@ -618,12 +618,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.58,
buildHostileNpcLootItem(
'night-fang',
'鏉愭枡',
'澶滅墮',
'材料',
'夜牙',
'uncommon',
['material'],
1,
'閫傚悎鍒朵綔姣掕嵂鎴栭櫡闃辩殑鍒€鍒冪姸鐛犵墮銆?',
'适合炼毒与设陷的刃状兽牙。',
),
),
buildHostileNpcLootEntry(
@@ -631,12 +631,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.24,
buildHostileNpcLootItem(
'shadow-pelt',
'鎶ょ敳',
'鏆楀奖鐨?',
'护甲',
'暗影兽皮',
'rare',
['armor', 'material'],
1,
'绌挎埓鏃跺彲娑堝辑鍔ㄩ潤鐨勬繁鑹插吔鐨€?',
'披戴后能稍稍融入夜色的深色皮膜。',
),
),
],
@@ -646,12 +646,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.64,
buildHostileNpcLootItem(
'ember-wing',
'鏉愭枡',
'鐑考',
'材料',
'烬翼',
'uncommon',
['material'],
2,
'浠嶅湪鏁h惤鏆栫伆鐨勭儳鐒︾繀缈肩鐗囥€?',
'仍散着余热灰烬的焦脆翼片。',
),
),
buildHostileNpcLootEntry(
@@ -659,12 +659,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.22,
buildHostileNpcLootItem(
'ashfire-feather',
'閬楃墿',
'鐏扮儸鐏窘',
'稀有品',
'灰焰翎',
'rare',
['relic', 'mana'],
1,
'钑村惈寰皬浣嗘寔涔呯殑鐑伒鐨勭窘灏栥€?',
'羽尖里封着微弱却持久的灼灵余火。',
),
),
],
@@ -674,12 +674,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.66,
buildHostileNpcLootItem(
'serpent-venom-sac',
'鏉愭枡',
'铔囨瘨鍥?',
'材料',
'蛇毒囊',
'uncommon',
['material'],
1,
'鐐奸噾甯堜笌鍒哄閮界弽瑙嗙殑姣掔礌鍥娿€?',
'炼药师与刺客都很看重的高浓毒囊。',
),
),
buildHostileNpcLootEntry(
@@ -687,12 +687,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.16,
buildHostileNpcLootItem(
'serpent-eye',
'閬楃墿',
'铔囩溂',
'稀有品',
'蛇瞳',
'rare',
['relic', 'mana'],
1,
'鍗充娇闈欐涔熻兘杩借釜闄勮繎鍔ㄩ潤鐨勮寮傜溂鏅躲€?',
'即使静止不动,也像仍在追索附近的活物。',
),
),
],
@@ -702,12 +702,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.7,
buildHostileNpcLootItem(
'tide-ink',
'鏉愭枡',
'娼ⅷ',
'材料',
'潮墨',
'uncommon',
['material'],
2,
'鐢ㄤ簬灏佸嵃銆侀櫡闃变笌姘村睘鎬х绠撶殑娴撶榛戞恫銆?',
'适合封印、符阵与水属术式的浓黑灵墨。',
),
),
buildHostileNpcLootEntry(
@@ -715,12 +715,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.18,
buildHostileNpcLootItem(
'lake-pearl',
'閬楃墿',
'婀栫彔',
'稀有品',
'湖珠',
'rare',
['relic', 'mana'],
1,
'钑村惈鏈堝厜婀挎皵鐨勫厜婊戠弽鐝犮€?',
'裹着月华水气的光润珍珠。',
),
),
],
@@ -730,12 +730,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.46,
buildHostileNpcLootItem(
'thorn-nectar',
'Consumable',
'Thorn Nectar',
'消耗品',
'棘露蜜浆',
'uncommon',
['healing', 'material'],
1,
'Sticky sap that can be refined into emergency recovery tonic.',
'黏稠树露可炼成紧急疗伤的回生药浆。',
),
),
buildHostileNpcLootEntry(
@@ -743,12 +743,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.12,
buildHostileNpcLootItem(
'devour-bloom',
'Relic',
'Devour Bloom',
'稀有品',
'噬灵花核',
'epic',
['relic'],
1,
'A predatory blossom that stores concentrated life force.',
'会掠食灵机的妖花花核,积着浓缩生机。',
),
),
],
@@ -758,12 +758,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.72,
buildHostileNpcLootItem(
'mist-wing',
'Material',
'Mist Wing',
'材料',
'雾翼膜',
'common',
['material'],
2,
'Thin membrane steeped in drifting fog and static charge.',
'浸着游雾与静电的轻薄翼膜。',
),
),
buildHostileNpcLootEntry(
@@ -771,12 +771,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.2,
buildHostileNpcLootItem(
'chase-rune',
'Relic',
'Chase Rune',
'稀有品',
'追猎符印',
'rare',
['relic'],
1,
'A pursuit mark that resonates with speed and pressure.',
'能与速度和压迫感共鸣的追索印记。',
),
),
],
@@ -786,12 +786,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.62,
buildHostileNpcLootItem(
'ancient-hide',
'Armor',
'Ancient Hide',
'护甲',
'古苔兽皮',
'uncommon',
['armor', 'material'],
1,
'Thick hide layered with old dust, moss, and impact scars.',
'厚重皮层间压着旧尘、苔痕与碰撞裂纹。',
),
),
buildHostileNpcLootEntry(
@@ -799,12 +799,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.14,
buildHostileNpcLootItem(
'ruin-heart',
'Relic',
'Ruin Heart',
'稀有品',
'遗墟之心',
'epic',
['relic'],
1,
'A heavy core pulsing with the stubborn will of abandoned ruins.',
'沉重的核心里跳着废墟不肯坍塌的执念。',
),
),
],
@@ -814,12 +814,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.44,
buildHostileNpcLootItem(
'spring-essence',
'Consumable',
'Spring Essence',
'消耗品',
'灵泉精露',
'uncommon',
['mana'],
1,
'A cool droplet that restores focus and spiritual rhythm.',
'清凉的泉露能稳住心神与灵息运转。',
),
),
buildHostileNpcLootEntry(
@@ -827,12 +827,12 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
0.11,
buildHostileNpcLootItem(
'tide-mother-core',
'Relic',
'Tide Mother Core',
'稀有品',
'潮母灵核',
'epic',
['relic', 'mana'],
1,
'A refined water-heart formed only in the deepest luminous springs.',
'只有在最深的明泉里才会凝出的水华灵核。',
),
),
],
@@ -841,22 +841,22 @@ const BASE_HOSTILE_NPC_LOOT_TABLES: Record<string, MonsterLootEntry[]> = {
const HOSTILE_NPC_OVERRIDES = hostileNpcOverridesJson as Record<string, HostileNpcPresetOverride>;
const BASE_HOSTILE_NPC_COMBAT_TAGS: Record<string, string[]> = {
'monster-03': ['闀囬偑', '鎺у満', '鏈哄姩'],
'monster-04': ['閲嶇敳', '瀹堝尽', '鍙嶅嚮'],
'monster-06': ['閲嶇敳', '瀹堝尽', '鍘嬪埗'],
'monster-07': ['鎺у満', '鍥炲', '鐐艰嵂'],
'monster-08': ['蹇', '杩藉嚮', '鏈哄姩'],
'monster-11': ['蹇', '绐佽繘', '鍘嬪埗'],
'monster-13': ['蹇', '杩藉嚮', '椋庤'],
'monster-18': ['閲嶅嚮', '瀹堝尽', '鍫″瀿'],
'monster-02': ['娉曚慨', '绗﹂樀', '鎺у満'],
'monster-05': ['鎺у満', '娉曚慨', '闀囬偑'],
'monster-10': ['娉曞姏', '鍥炲', '鎶や綋'],
'monster-12': ['鏈哄姩', '杩滃皠', '椋庤'],
'monster-14': ['娉曞姏', '绗﹂樀', '鍥炲'],
'monster-15': ['鍥炲', '鎶や綋', '閲嶇敳'],
'monster-16': ['闆锋硶', '鏈哄姩', '杩囪浇'],
'monster-20': ['娉曞姏', '鍥炲', '闀囬偑'],
'monster-03': ['镇邪', '控场', '机动'],
'monster-04': ['重甲', '守御', '反击'],
'monster-06': ['重甲', '守御', '压制'],
'monster-07': ['控场', '回复', '炼药'],
'monster-08': ['快袭', '追击', '机动'],
'monster-11': ['快袭', '突进', '压制'],
'monster-13': ['快袭', '追击', '风行'],
'monster-18': ['重击', '守御', '堡垒'],
'monster-02': ['法修', '符阵', '控场'],
'monster-05': ['控场', '法修', '镇邪'],
'monster-10': ['法力', '回复', '护体'],
'monster-12': ['机动', '远射', '风行'],
'monster-14': ['法力', '符阵', '回复'],
'monster-15': ['回复', '护体', '重甲'],
'monster-16': ['雷法', '机动', '过载'],
'monster-20': ['法力', '回复', '镇邪'],
};
function mergeHostileNpcPreset(
@@ -894,7 +894,7 @@ function buildHostileNpcBehaviorVectors(preset: {
combatTags: string[];
baseStats: Pick<SceneHostileNpc, 'attackRange' | 'speed' | 'maxHp'>;
}) {
const controlBias = preset.combatTags.some(tag => ['鎺у満', '绗﹂樀', '娉曞姏'].includes(tag)) ? 0.28 : 0.12;
const controlBias = preset.combatTags.some(tag => ['控场', '符阵', '法力'].includes(tag)) ? 0.28 : 0.12;
const mobilityBias = preset.baseStats.speed >= 7 ? 0.34 : 0.16;
const pressureBias = preset.baseStats.attackRange >= 1.5 ? 0.32 : 0.18;
const enduranceBias = preset.baseStats.maxHp >= 150 ? 0.3 : 0.16;
@@ -902,7 +902,7 @@ function buildHostileNpcBehaviorVectors(preset: {
return [
{
id: `${preset.id}:predatory-strike`,
name: `${preset.name}鐨勬湰鑳藉帇杩玚`,
name: `${preset.name}的本能压迫`,
category: 'combat' as const,
baseScore: 0.52,
intentVector: buildDefaultAxisVector({
@@ -974,12 +974,20 @@ export function rollHostileNpcLoot(
`monster-loot:${monster.id}:${monster.name}`,
{
count: 2,
categories: ['鏉愭枡', '娑堣€楀搧', '绋€鏈夊搧', '涓撳睘鐗?'],
categories: ['材料', '消耗品', '稀有品', '专属品'],
},
));
}
return defeatedHostileNpcs.flatMap(monster => {
const preset = getHostileNpcPresetById(state.worldType!, monster.id);
const presetLoot = preset
? preset.lootTable
.filter(entry => Math.random() <= entry.dropRate)
.map(entry => ({
...entry.item,
}))
: [];
const context = buildRuntimeItemGenerationContext({
state,
generationChannel: 'monster_drop',
@@ -1000,17 +1008,6 @@ export function rollHostileNpcLoot(
fixedPermanence: ['resource', 'timed'],
});
const runtimeItems = flattenDirectedRuntimeRewardItems(directedReward);
if (runtimeItems.length > 0) {
return runtimeItems;
}
const preset = getHostileNpcPresetById(state.worldType!, monster.id);
if (!preset) return [];
return preset.lootTable
.filter(entry => Math.random() <= entry.dropRate)
.map(entry => ({
...entry.item,
}));
return [...presetLoot, ...runtimeItems];
});
}