v0.1.35a: 缺陷歼灭——wonder 崩链/boss 卡队/patch 泄漏/拒单门/衰减/数值平衡 17 条

【高】wonder 全链修复(sendMission/settle/missionById wonders 回退+ExpeditionPanel 合并列表);
boss 战败 releaseSquad(整队不再永困 expedition);patchUndo 按插件归属 Map+rollbackPatch(跨 MOD/跨世界不再泄漏)
【中】buyItem 拒单线>池底(0.35>0.25——断供真断供);warFatigue 年首×0.9 衰减(长局不永久冷降);
MOD 功法注入 trackedTech 卸载摘除;patch 缺失键 warn;guard>1 钳制 Math.max(0,1-guard);
transition 12 处逗号简写→每属性独立时长(0.1.33 动画实际恢复);t-shanling/t-zidian 越级下调;土系恒应(×1.02)
【低】断供计数封顶12/播报 month 修正/era 权重下界 0.05/新贵 id 碰撞 7 位/新字段 normalize 补/
go() 停时器/saveNow 并发锁
【金钟罩】0.1.35 基线重算(warFatigue衰减/池底分离/功法平衡受控变更) 61 例绿
This commit is contained in:
2026-08-23 22:30:02 +08:00
parent ae3fcabc20
commit b420fa0c67
15 changed files with 94 additions and 48 deletions
+3 -2
View File
@@ -1,5 +1,6 @@
import { useGameStore } from '../store'
import { MISSIONS, missionById } from '../../game/data/secrets'
import type { MissionDef } from '../../game/data/secrets'
import { sendMission, recallAll } from '../../game/engine/runtime/Systems/missions'
import { combatPowerOf } from '../../game/engine/runtime/Systems/combat'
import { useState } from 'react'
@@ -46,7 +47,7 @@ export default function ExpeditionPanel() {
<div className="mission-card">
<div className="card-title" style={{ fontSize: '1rem' }}></div>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill,minmax(180px,1fr))', gap: 8 }}>
{MISSIONS.map((m) => {
{[...MISSIONS, ...Object.values((w.state.worldSim?.wonders ?? {}) as Record<string, MissionDef>)].map((m) => {
const sel = selectedMissionDef === m.id
return (
<div
@@ -126,7 +127,7 @@ export default function ExpeditionPanel() {
<div>
<div className="card-title" style={{ fontSize: '1rem', marginTop: 8 }}></div>
{active.map((m) => {
const def2 = missionById(m.defId)
const def2 = ((w.state.worldSim?.wonders?.[m.defId] as MissionDef | undefined) ?? missionById(m.defId))
const stage = def2.stages[m.stage]
return (
<div key={m.id} className="mission-card">
+1 -1
View File
@@ -203,7 +203,7 @@ export const useGameStore = create<GameStore>((set, get) => ({
}
},
go: (screen) => set({ screen }),
go: (screen) => { stopTimer(); set({ screen }) },
startNewGame: async (opts, slot) => {
stopTimer()
+12 -12
View File
@@ -216,7 +216,7 @@ html[data-blade] .battle-lines {
font-family: inherit;
font-size: 0.95rem;
letter-spacing: 1px;
transition: background-color, color, transform, opacity, border-color 0.16s ease;
transition: background-color 0.16s ease, color 0.16s ease, transform 0.16s ease, opacity 0.16s ease, border-color 0.16s ease ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 236, 190, 0.05);
}
.btn:hover:not(:disabled) {
@@ -512,7 +512,7 @@ html[data-blade] .battle-lines {
font-family: inherit;
text-shadow: 0 1px 2px rgba(70, 15, 8, 0.65);
box-shadow: 0 8px 26px rgba(140, 40, 24, 0.35), inset 0 1px 0 rgba(255, 240, 210, 0.28);
transition: background-color, color, transform, opacity, border-color 0.18s;
transition: background-color 0.18s ease, color 0.18s ease, transform 0.18s ease, opacity 0.18s ease, border-color 0.18s ease
}
.boot-newgame:hover {
box-shadow: 0 10px 32px rgba(180, 60, 35, 0.5), inset 0 1px 0 rgba(255, 240, 210, 0.3);
@@ -530,7 +530,7 @@ html[data-blade] .battle-lines {
border-radius: 3px;
padding: 10px 14px;
cursor: pointer;
transition: background-color, color, transform, opacity, border-color 0.18s;
transition: background-color 0.18s ease, color 0.18s ease, transform 0.18s ease, opacity 0.18s ease, border-color 0.18s ease
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
}
.boot-slot:hover {
@@ -623,7 +623,7 @@ html[data-blade] .battle-lines {
border-radius: 3px;
cursor: pointer;
color: #ddceac;
transition: background-color, color, transform, opacity, border-color 0.16s;
transition: background-color 0.16s ease, color 0.16s ease, transform 0.16s ease, opacity 0.16s ease, border-color 0.16s ease
}
.diff-opt:hover {
border-color: #6b5836;
@@ -703,7 +703,7 @@ html[data-blade] .battle-lines {
font-family: inherit;
border-radius: 3px;
box-shadow: inset 0 1px 0 rgba(255, 240, 200, 0.06), 0 2px 5px rgba(0, 0, 0, 0.45);
transition: background-color, color, transform, opacity, border-color 0.15s;
transition: background-color 0.15s ease, color 0.15s ease, transform 0.15s ease, opacity 0.15s ease, border-color 0.15s ease
user-select: none;
}
.speed-btn:hover {
@@ -835,7 +835,7 @@ html[data-blade] .battle-lines {
border-radius: 3px;
padding: 12px 12px 10px;
cursor: pointer;
transition: background-color, color, transform, opacity, border-color 0.18s;
transition: background-color 0.18s ease, color 0.18s ease, transform 0.18s ease, opacity 0.18s ease, border-color 0.18s ease
box-shadow:
0 4px 12px rgba(0, 0, 0, 0.55),
inset 0 0 0 1px rgba(255, 252, 242, 0.6),
@@ -1165,7 +1165,7 @@ html[data-blade] .battle-lines {
font-size: 0.85rem;
color: #64502e;
background: #f7f0de;
transition: background-color, color, transform, opacity, border-color 0.14s;
transition: background-color 0.14s ease, color 0.14s ease, transform 0.14s ease, opacity 0.14s ease, border-color 0.14s ease
}
.squadian:hover {
border-color: var(--gold);
@@ -1339,7 +1339,7 @@ html[data-blade] .battle-lines {
align-items: center;
justify-content: center;
box-shadow: 0 2px 8px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,240,200,0.15);
transition: background-color, color, transform, opacity, border-color 0.16s;
transition: background-color 0.16s ease, color 0.16s ease, transform 0.16s ease, opacity 0.16s ease, border-color 0.16s ease
}
.modal-close:hover {
border-color: var(--vermilion);
@@ -1409,7 +1409,7 @@ html[data-blade] .battle-lines {
font-family: inherit;
color: #342a18;
font-size: 0.98rem;
transition: background-color, color, transform, opacity, border-color 0.15s;
transition: background-color 0.15s ease, color 0.15s ease, transform 0.15s ease, opacity 0.15s ease, border-color 0.15s ease
box-shadow: inset 0 1px 0 rgba(255, 255, 250, 0.6);
}
.opt-btn:hover {
@@ -1551,7 +1551,7 @@ html[data-blade] .battle-lines {
min-width: 108px;
cursor: pointer;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 252, 240, 0.6);
transition: background-color, color, transform, opacity, border-color 0.14s;
transition: background-color 0.14s ease, color 0.14s ease, transform 0.14s ease, opacity 0.14s ease, border-color 0.14s ease
}
.gene-node:hover {
border-color: var(--gold);
@@ -1858,7 +1858,7 @@ html[data-blade] .battle-lines {
cursor: pointer;
font-family: inherit;
letter-spacing: 1px;
transition: background-color, color, transform, opacity, border-color 0.14s;
transition: background-color 0.14s ease, color 0.14s ease, transform 0.14s ease, opacity 0.14s ease, border-color 0.14s ease
}
.badge:hover {
transform: translateY(-1px);
@@ -1901,7 +1901,7 @@ html[data-blade] .battle-lines {
cursor: pointer;
font-family: inherit;
color: #ddceac;
transition: background-color, color, transform, opacity, border-color 0.15s;
transition: background-color 0.15s ease, color 0.15s ease, transform 0.15s ease, opacity 0.15s ease, border-color 0.15s ease
}
.world-badge:hover {
border-color: var(--gold);