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:
@@ -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">
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user