Merge branch 'develop' into feature/UI更新&安卓适配

This commit is contained in:
2026-07-02 10:49:12 +08:00
65 changed files with 2285 additions and 1584 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -214,7 +214,67 @@ ScriptedImporter:
characterGroups: []
pivot: {x: 0, y: 0}
boneReadOnly: 0
platformSettings: []
platformSettings:
- name: DefaultTexturePlatform
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
- name: Standalone
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
- name: Server
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
- name: Android
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
- name: WebGL
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
mosaicLayers: 1
characterMode: 1
documentPivot: {x: 0, y: 0}
@@ -233,146 +293,6 @@ ScriptedImporter:
resliceFromLayer: 0
mosaicPSDLayers: []
rigPSDLayers:
- name: "UF\u89C6\u89D2\u4E0B\u751F\u6210\u7684\u56FE\u50CF\u5143\u7D20"
spriteName:
isGroup: 1
parentIndex: -1
spriteID: e941588a141b56f479db3454d668ebef
layerID: 637
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u56FE\u5C42 5"
spriteName:
isGroup: 0
parentIndex: 0
spriteID: d895094d526880e4684305bc55024019
layerID: 666
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 1
- name: "\u6D77\u4E2D\u5927\u8C61"
spriteName:
isGroup: 0
parentIndex: 0
spriteID: 8c2a75dae64ffd749bd065803bcdc2dc
layerID: 646
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 1
- name: "\u690D\u7269\u53D8\u6210\u7684\u753B\u7B14\u7B14\u7B52"
spriteName:
isGroup: 0
parentIndex: 0
spriteID: 5f1bf878f8b636d4aa7198c430cd8ddb
layerID: 651
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u5915\u9633\u5C71\u4E18"
spriteName:
isGroup: 1
parentIndex: 0
spriteID: 40d012f90d12d054b8b4b095c5d17097
layerID: 659
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u56FE\u5C42 1 \u62F7\u8D1D"
spriteName:
isGroup: 0
parentIndex: 4
spriteID: 6e6a26c6b33e3f046a0fb07c7a0be1d2
layerID: 655
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u8272\u76F8/\u9971\u548C\u5EA6 1"
spriteName:
isGroup: 0
parentIndex: 4
spriteID: e00cb4f5c86d7af42810b4b13c2b9311
layerID: 665
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 1
- name: "\u8272\u9636 1"
spriteName:
isGroup: 0
parentIndex: 4
spriteID: d4750bcb749c6be489a6433b8733ffb3
layerID: 662
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 1
- name: "\u56FE\u5C42 1 \u62F7\u8D1D 2"
spriteName:
isGroup: 0
parentIndex: 4
spriteID: dd619b01f886515448f78aeb6d501809
layerID: 656
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 1
- name: "\u5915\u9633\u5C71\u4E18"
spriteName:
isGroup: 1
parentIndex: 0
spriteID: 9713048476e1591449391ce052b71542
layerID: 657
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u56FE\u5C42 4"
spriteName:
isGroup: 0
parentIndex: 9
spriteID: 22f2788988d685542a68985f6c194113
layerID: 664
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u56FE\u5C42 3"
spriteName:
isGroup: 0
parentIndex: 9
spriteID: db1382cf3f3423d42b9ac9c9b9ecc7fc
layerID: 661
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u56FE\u5C42 2"
spriteName:
isGroup: 0
parentIndex: 9
spriteID: 8a4910856da3a3e459c28726ad02e802
layerID: 654
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u56FE\u5C42 1"
spriteName:
isGroup: 0
parentIndex: 9
spriteID: 4f403b854fa76234fabfccf65b54804a
layerID: 653
mosaicPosition: {x: 0, y: 0}
flatten: 0
isImported: 0
isVisible: 0
- name: "\u7A97\u5B50"
spriteName: "\u7A97\u5B50"
isGroup: 0
Binary file not shown.
@@ -48,7 +48,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spritePixelsToUnits: 50
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
Binary file not shown.
@@ -48,7 +48,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spritePixelsToUnits: 50
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
+41 -14
View File
@@ -133,6 +133,29 @@ Shader "AIBIS/EyeUnifiedSprite"
return saturate(mul(mat, color));
}
fixed4 sampleMainTex(float2 uv)
{
return tex2D(_MainTex, uv);
}
fixed4 gaussianBlurSample(float2 uv, float stepSize)
{
float angle = 1.937315; // ~111 deg, matches MemoryTuningSprite
float2 stepDir = float2(sin(angle), cos(angle));
float2 stepUv = stepDir * stepSize;
fixed4 col = sampleMainTex(uv) * 0.18;
col += sampleMainTex(uv + stepUv * 1.0) * 0.15;
col += sampleMainTex(uv - stepUv * 1.0) * 0.15;
col += sampleMainTex(uv + stepUv * 2.0) * 0.12;
col += sampleMainTex(uv - stepUv * 2.0) * 0.12;
col += sampleMainTex(uv + stepUv * 3.0) * 0.09;
col += sampleMainTex(uv - stepUv * 3.0) * 0.09;
col += sampleMainTex(uv + stepUv * 4.0) * 0.05;
col += sampleMainTex(uv - stepUv * 4.0) * 0.05;
return col;
}
fixed4 sampleSprite(float2 uv, float2 screenUv)
{
float2 distortedUv = uv;
@@ -141,23 +164,21 @@ Shader "AIBIS/EyeUnifiedSprite"
float ripple = sin((length(centered) * 42.0) - (_Time.y * 8.0));
distortedUv += centered * ripple * _RoundWaveStrength * 0.018;
float glitchRow = floor(screenUv.y * 240.0);
float tear = (hash21(float2(glitchRow, floor(_Time.y * 18.0))) - 0.5) * _GlitchAmount * 0.04;
float glitchRow = floor(screenUv.y * 360.0);
float tear = (hash21(float2(glitchRow, floor(_Time.y * 20.0))) - 0.5) * _GlitchAmount * 0.012;
distortedUv.x += tear;
float noise = hash21(floor(uv * 42.0) + floor(_Time.y * 16.0));
distortedUv += (noise - 0.5) * _DistortAmount;
float2 blur = _MainTex_TexelSize.xy + _BlurSize;
fixed4 col = tex2D(_MainTex, distortedUv);
fixed4 blurCol = col;
blurCol += tex2D(_MainTex, distortedUv + float2(blur.x, 0));
blurCol += tex2D(_MainTex, distortedUv - float2(blur.x, 0));
blurCol += tex2D(_MainTex, distortedUv + float2(0, blur.y));
blurCol += tex2D(_MainTex, distortedUv - float2(0, blur.y));
blurCol *= 0.2;
// Match legacy AllIn1 scale (~offset * fade * 0.005); avoid MemoryTuning's 0.014 base.
float2 texel = _MainTex_TexelSize.xy;
float stepSize = length(texel) + _BlurSize;
fixed4 col = sampleMainTex(distortedUv);
fixed4 blurCol = gaussianBlurSample(distortedUv, stepSize);
return lerp(col, blurCol, _BlurAmount);
float blurStrength = pow(saturate(_BlurAmount), 0.75);
return lerp(col, blurCol, blurStrength);
}
fixed4 frag(v2f i) : SV_Target
@@ -172,10 +193,16 @@ Shader "AIBIS/EyeUnifiedSprite"
float directional = dot(uv - 0.5, revealDir) + 0.5;
float dissolveNoise = (hash21(floor(uv * 96.0)) - 0.5) * _RevealNoise;
float revealMask = smoothstep(_ColorReveal - _RevealWidth, _ColorReveal + _RevealWidth, directional + dissolveNoise);
// Sweep only applies while the target is still desaturated; full color when _GrayAmount reaches 0.
float grayMix = saturate(max(_GrayAmount, (1.0 - revealMask) * _GrayAmount));
// Idle (_GrayAmount=1) or fully colored (_GrayAmount=0): uniform mix; sweep only mid-transition.
float inSweep = step(0.001, 1.0 - _GrayAmount) * step(0.001, _GrayAmount);
float sweepFactor = lerp(1.0, (1.0 - revealMask), inSweep);
float grayMix = saturate(_GrayAmount * sweepFactor);
col.rgb = lerp(col.rgb, gray.xxx, grayMix);
float sweepEdge = 1.0 - abs(directional + dissolveNoise - _ColorReveal);
float edgeGlow = smoothstep(_RevealWidth * 0.15, _RevealWidth * 0.55, sweepEdge) * inSweep * _GrayAmount * (1.0 - revealMask);
col.rgb += float3(1.0, 0.92, 0.78) * edgeGlow * 0.35;
col.rgb = lerp(col.rgb, _WrongColor.rgb * max(gray, 0.08), _WrongColorAmount * _WrongColor.a);
col.rgb = hueShift(col.rgb, _HsvShift);
@@ -197,7 +224,7 @@ Shader "AIBIS/EyeUnifiedSprite"
float ascii = asciiShape * asciiBrightness;
col.rgb = lerp(col.rgb, ascii.xxx * lerp(float3(1, 1, 1), col.rgb, 0.35), _AsciiAmount);
float chromaOffset = _GlitchAmount * 0.006;
float chromaOffset = _GlitchAmount * 0.004;
if (chromaOffset > 0.0001)
{
float red = tex2D(_MainTex, uv + float2(chromaOffset, 0)).r;
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -299,7 +299,7 @@ MonoBehaviour:
typewriterStartsAutomatically: 1
animationLoop: 0
timeScale: 0
_text: "\u5BF9\u8BDD\u5185\u5BB9\u663E\u793A\u5728\u8FD9\u91CC<sub>\u652F\u6301\u5BCC\u6587\u672C</sub>"
_text:
useDynamicScaling: 1
referenceFontSize: 10
isResettingTimeOnNewText: 1
@@ -7211,7 +7211,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: -0.016, y: -0.008}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1977401368
@@ -8256,7 +8256,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8352794458094198668, guid: 60f4427b2070be04f90c1486bb86062c, type: 3}
propertyPath: m_IsActive
value: 1
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: Day3_mid
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: aaef579ad8bdda542b503b40ce6773a8, type: 2}
@@ -22,5 +21,5 @@ MonoBehaviour:
description:
coverPic: {fileID: 0}
chapter: "\u96EAxue"
graphPosition: {x: 420, y: 110}
graphPosition: {x: 526.6666, y: 416}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: Day3_night
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: ff82a99e791be3e41acf40232f908eb3, type: 2}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: Day4_mid
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: 362a7dfb573114247a33c0e290b698eb, type: 2}
@@ -22,5 +21,5 @@ MonoBehaviour:
description:
coverPic: {fileID: 0}
chapter:
graphPosition: {x: 0, y: -770}
graphPosition: {x: 2659.3335, y: 472.6667}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: FP_HuoShan
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: 8d8b11f0c2fbc4d4cb8c2857d98383c9, type: 2}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: Gts1
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: 172e1298764e87a4b9ed51264b908ba9, type: 2}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: PeipeiDay1
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: 68a9c1b8c5230454bb9498fd2ab5714b, type: 2}
@@ -22,5 +21,5 @@ MonoBehaviour:
description: "\u7B2C\u4E00\u4F4D\u75C5\u4EBA"
coverPic: {fileID: 21300000, guid: ef7ba7c21d2aea048abe5729d7da2eee, type: 3}
chapter: "\u7B2C\u4E00\u4F4D\u75C5\u4EBA"
graphPosition: {x: 0, y: 110}
graphPosition: {x: 1682, y: 740}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: PeipeiDay2
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: afc5b01ef301cc74db7cae741acad427, type: 2}
@@ -22,5 +21,5 @@ MonoBehaviour:
description:
coverPic: {fileID: 0}
chapter:
graphPosition: {x: 420, y: -110}
graphPosition: {x: 419.99997, y: -112.666664}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: PeipeiDay3
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: e749fe0f9aa32f44097e037f52a5bfe0, type: 2}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: Prologue_begin
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: 2f763a2c04ecafb4981379b7363f9791, type: 2}
@@ -22,5 +21,5 @@ MonoBehaviour:
description:
coverPic: {fileID: 0}
chapter:
graphPosition: {x: 0, y: 550}
graphPosition: {x: 770.6666, y: 912}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: StoneDay2
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: afc5b01ef301cc74db7cae741acad427, type: 2}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: YingliDay1
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: e749fe0f9aa32f44097e037f52a5bfe0, type: 2}
@@ -13,13 +13,13 @@ MonoBehaviour:
m_Name: Day0_Prologue
m_EditorClassIdentifier:
exits:
- exitName: default
- exitName: exit_0
targetScene: {fileID: 11400000, guid: ac5ca9a66ff22ab4b9cd5adbdade6b8c, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: 2fa76ffaa57f62244b77be9b25ca14c2, type: 3}
firstSceneName: Scene/OpenFixScene
title: "\u68A6"
description: "\u6D77\u6D6A\u4E0E\u75C5\u75DB"
title: "\u5E8F\u7AE0\uFF1A\u5669\u68A6"
description: "\u9519\u8BEF\u6570\u636E"
coverPic: {fileID: 21300000, guid: c66b2b5ca74393c45a0d281a6662aa54, type: 3}
chapter: "\u6D77\u6D6A\u4E0E\u75C5\u75DB"
graphPosition: {x: 0, y: 0}
chapter: 0
graphPosition: {x: 1372, y: 1596.6666}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -17,9 +17,9 @@ MonoBehaviour:
targetScene: {fileID: 11400000, guid: 68a9c1b8c5230454bb9498fd2ab5714b, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: 26fc6619bbcda734a81361b8bb615f04, type: 3}
firstSceneName: Scene/PeipeiFixScene
title: "\u4F69\u4F69"
description: "\u7B2C\u4E00\u4F4D\u75C5\u4EBA"
title: "\u7F8E\u5DE5\u578B\u53F7\u60A3\u8005-\u4F69\u4F69"
description: "\u8BB0\u5FC6-\u89C6\u89C9\u6865\u622A\u65AD\u672F"
coverPic: {fileID: 21300000, guid: ef7ba7c21d2aea048abe5729d7da2eee, type: 3}
chapter: "\u7B2C\u4E00\u4F4D\u75C5\u4EBA"
graphPosition: {x: 840.6666, y: 0}
chapter: 1
graphPosition: {x: 1966.6666, y: 1596.6666}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -17,9 +17,9 @@ MonoBehaviour:
targetScene: {fileID: 11400000, guid: dadf07a02eb4b8d4c8bdf1739a10c9c5, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: 533dc422c8871c143a551bd5d446b439, type: 3}
firstSceneName: Scene/SubWay
title: "\u5730\u94C1\u4E0A"
description: "\u8BB0\u5F97\u6253\u5361"
title: "\u7B2C\u4E00\u5929\u65E9\u4E0A"
description: "\u5730\u94C1\uFF0C\u548C\u706B\u5C71\u7684\u5BF9\u8BDD"
coverPic: {fileID: 21300000, guid: f78e34492dd89b341928553dd1dfcbdb, type: 3}
chapter: "\u8BB0\u5F97\u6253\u5361"
graphPosition: {x: 420, y: 0}
chapter: 1
graphPosition: {x: 1668, y: 1596.6666}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -17,9 +17,9 @@ MonoBehaviour:
targetScene: {fileID: 11400000, guid: ada4bdc2db5594e4f860c90b3a4b9da8, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: 293561ce52efc594399242651d44b366, type: 3}
firstSceneName: Scene/ClinicOut
title: "\u5348\u4F11"
description: "\u51AC\u5929\u5230\u4E86"
title: "\u7B2C\u4E00\u5929\uFF0C\u4E2D\u5348"
description: "\u4F69\u4F691\u7ED3\u675F\u540E\u7684\u5BF9\u8BDD"
coverPic: {fileID: 21300000, guid: 7715c89797cc6ca4e914b85f5524e9fd, type: 3}
chapter: "\u51AC\u5929\u5230\u4E86"
graphPosition: {x: 1260, y: 0}
chapter: 1
graphPosition: {x: 2303.3335, y: 1596.6666}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -13,13 +13,13 @@ MonoBehaviour:
m_Name: Day1_night
m_EditorClassIdentifier:
exits:
- exitName: default
- exitName: exit_0
targetScene: {fileID: 11400000, guid: 653fbfbb55fef7740a2360590e29d552, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: 29ebe788cfe2c084e88ffdd8e2f93378, type: 3}
firstSceneName: "Scene/\u9152\u5427\u573A\u666F"
title: "\u9152\u676F\u548C\u724C"
description: "\u9152\u676F\u548C\u724C"
title: "\u7B2C\u4E00\u5929\uFF0C\u665A\u4E0A"
description: "\u9152\u5427\u548C\u5947\u7433\u7684\u5BF9\u8BDD"
coverPic: {fileID: 21300000, guid: df86302e77350e34ea422cd24043dd93, type: 3}
chapter: "\u9152\u676F\u548C\u724C"
graphPosition: {x: 1682, y: 0}
chapter: 1
graphPosition: {x: 2628, y: 1596.6666}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -17,9 +17,9 @@ MonoBehaviour:
targetScene: {fileID: 11400000, guid: 362a7dfb573114247a33c0e290b698eb, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: beb6e77de3427b04dae210b2c9ca29a1, type: 3}
firstSceneName: "Scene/\u68A6\u5883"
title: "\u542F\u793A"
title: "\u7B2C\u4E00\u4E2A\u68A6"
description: "\u627E\u5230\u5929\u6587\u53F0\u7684\u5165\u53E3"
coverPic: {fileID: 21300000, guid: 20296b9c29cb10f4a97913165e98fb62, type: 3}
chapter: "\u627E\u5230\u5929\u6587\u53F0\u7684\u5165\u53E3"
graphPosition: {x: 2100, y: 0}
chapter: 1
graphPosition: {x: 2949.3335, y: 1596.6666}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -14,10 +14,10 @@ MonoBehaviour:
m_EditorClassIdentifier:
exits: []
yarnProject: {fileID: 7545569452688597077, guid: e6bac2644a8a04b4899ce2fe8ae1f4fc, type: 3}
firstSceneName: Scene/Bridge
title: "\u7ED3\u675F"
description: "\u7ED3\u675F"
firstSceneName: Scene/SubWay
title: PlaytestEnd
description: PlaytestEnd
coverPic: {fileID: 21300000, guid: 8344881c78a9845499555d573e34e362, type: 3}
chapter: "\u7ED3\u675F"
graphPosition: {x: 2419.3335, y: -310.66666}
chapter: 99
graphPosition: {x: 3258, y: 1596.6666}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: Day1_NEXT_ST1
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: ada4bdc2db5594e4f860c90b3a4b9da8, type: 2}
@@ -22,5 +21,5 @@ MonoBehaviour:
description:
coverPic: {fileID: 0}
chapter:
graphPosition: {x: 0, y: 0}
graphPosition: {x: 2011.3334, y: 740}
nodeColor: {r: 0.85, g: 0.45, b: 0.45, a: 1}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: TestSO
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits:
- exitName: default
targetScene: {fileID: 11400000, guid: 10601ce26230723479d875a630f15732, type: 2}
@@ -12,7 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: Test_Shitou
m_EditorClassIdentifier:
nextScene: {fileID: 0}
exits: []
yarnProject: {fileID: 7545569452688597077, guid: a2b0fa96399ebca4c9c61e346f95b037, type: 3}
firstSceneName: Scene/Scene/ExpressFixScene
@@ -1,5 +1,6 @@
using AibisDream.Framework;
using DG.Tweening;
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
@@ -83,11 +84,11 @@ namespace AibisDream
initialPosition = PanTransform.position;
}
public void MoveFocusTo(Transform target, float duration, Vector2 minBounds, Vector2 maxBounds, Vector2 viewportSize)
public Tween MoveFocusTo(Transform target, float duration, Vector2 minBounds, Vector2 maxBounds, Vector2 viewportSize)
{
if (target == null)
{
return;
return null;
}
Vector3 focusPosition = ClampFocusPosition(target.position, minBounds, maxBounds, viewportSize);
@@ -115,10 +116,26 @@ namespace AibisDream
if (duration <= 0f)
{
PanTransform.position = initialPosition + currentOffset;
return;
focusTween = null;
return null;
}
focusTween = PanTransform.DOMove(initialPosition + currentOffset, duration).SetEase(Ease.InOutSine);
return focusTween;
}
public IEnumerator WaitForFocusMove(float fallbackDuration = 0f)
{
if (focusTween != null && focusTween.IsActive())
{
yield return focusTween.WaitForCompletion();
yield break;
}
if (fallbackDuration > 0f)
{
yield return new WaitForSeconds(fallbackDuration);
}
}
private void Start()
@@ -265,10 +282,11 @@ namespace AibisDream
indicatorRectTransform.position = boxCenter;
indicatorRectTransform.sizeDelta = new Vector2(boxSize.x, boxSize.y);
Color indicatorColor = currentTarget.GetIndicatorColor();
targetNameText.text = currentTarget.name + " " +
"R" + currentTarget._color.r.ToString("F1") +
" G" + currentTarget._color.g.ToString("F1") +
" B" + currentTarget._color.b.ToString("F1");
"R" + indicatorColor.r.ToString("F1") +
" G" + indicatorColor.g.ToString("F1") +
" B" + indicatorColor.b.ToString("F1");
targetIndicator.SetActive(true);
}
@@ -18,7 +18,7 @@ namespace AibisDream.FixSystem
private const float DefaultFadeDuration = 1f;
private const float SearchStartDelay = 1f;
private const float ProjectorMoveDuration = 2f;
private const float MaxClarityDistortion = 0.58f;
private const float MaxClarityDistortion = 1f;
private const float MaxFrequencyBlur = 0.6f;
private const float MinPixelDensity = 18f;
private const float MaxPixelDensity = 96f;
+165 -24
View File
@@ -52,6 +52,119 @@ namespace AibisDream
public float GetEffectTransitionDuration() => visualSettings.GetDurationForState(_currentState);
private bool ShouldPreBlinkForFocusedEffect()
{
return _currentState is EyeColorState.CanImagineColor
or EyeColorState.CannotImagineColor
or EyeColorState.CanSeeColor;
}
private IEnumerator WaitForFocusMovement(float moveDuration)
{
if (!EnsureMouseFollowAndZoom())
{
yield break;
}
yield return mouseFollowAndZoom.WaitForFocusMove(moveDuration);
}
private IEnumerator RunFocusedEffectWithPreBlink(EyeTarget target)
{
if (EnsureMouseFollowAndZoom())
{
yield return mouseFollowAndZoom.WaitForFocusMove();
}
float duration = GetEffectTransitionDuration();
EyeViewportOverlay overlay = EnsureViewportOverlay();
if (overlay != null && Application.isPlaying && ShouldPreBlinkForFocusedEffect())
{
if (_currentState == EyeColorState.CanImagineColor)
{
yield return overlay.PlayPreEffectBlinkThen(
2,
visualSettings,
() => eyeStateEffect?.ApplyFocusedEffect(target, this),
visualSettings.imagineEffectAtBlinkOpen,
visualSettings.imagineBlinkGap);
}
else
{
yield return overlay.PlayPreEffectBlinkThen(
1,
visualSettings,
() => eyeStateEffect?.ApplyFocusedEffect(target, this),
visualSettings.focusEffectAtBlinkOpen);
}
}
else
{
eyeStateEffect?.ApplyFocusedEffect(target, this);
}
yield return new WaitForSeconds(duration);
}
private IEnumerator RunBlurOutWithPreBlink(EyeTarget target, float duration)
{
EyeViewportOverlay overlay = EnsureViewportOverlay();
if (overlay != null && Application.isPlaying)
{
yield return overlay.PlayPreEffectBlinkThen(
1,
visualSettings,
() => target.BlurOut(duration),
visualSettings.focusEffectAtBlinkOpen);
}
else
{
target.BlurOut(duration);
}
yield return new WaitForSeconds(duration);
}
private IEnumerator RunUnfocusedEffectWithPreBlink(EyeTarget target)
{
if (target == null || eyeStateEffect == null)
{
yield break;
}
float duration = GetEffectTransitionDuration();
EyeViewportOverlay overlay = EnsureViewportOverlay();
if (overlay != null && Application.isPlaying && ShouldPreBlinkForFocusedEffect())
{
if (_currentState == EyeColorState.CanImagineColor)
{
yield return overlay.PlayPreEffectBlinkThen(
2,
visualSettings,
() => eyeStateEffect.ApplyUnfocusedEffect(target, this),
visualSettings.imagineEffectAtBlinkOpen,
visualSettings.imagineBlinkGap);
}
else
{
yield return overlay.PlayPreEffectBlinkThen(
1,
visualSettings,
() => eyeStateEffect.ApplyUnfocusedEffect(target, this),
visualSettings.focusEffectAtBlinkOpen);
}
}
else
{
eyeStateEffect.ApplyUnfocusedEffect(target, this);
}
yield return new WaitForSeconds(duration);
}
private void OnValidate()
{
ApplyVisualSettingsNow(
@@ -183,6 +296,11 @@ namespace AibisDream
return;
}
if (duration > 0.01f)
{
AudioManager.Instance.PlaySfx("event:/ActionFB/visualturn");
}
mouseFollowAndZoom.MoveFocusTo(
focusTransform,
duration,
@@ -266,6 +384,14 @@ namespace AibisDream
private void Start()
{
ApplyVisualSettingsToTargets();
if (targets != null)
{
foreach (EyeTarget target in targets)
{
target?.Init();
}
}
SetEyeColorState(_currentState);
EnsureMouseFollowAndZoom();
}
@@ -289,7 +415,7 @@ namespace AibisDream
[YarnCommand("EyeBlink")]
public void EyeBlink(float duration = 0f)
{
EnsureViewportOverlay()?.PlayBlink(duration > 0f ? duration : null);
EnsureViewportOverlay()?.PlayBlink(duration > 0f ? duration : null, restartAutoBlinkAfter: true);
}
[YarnCommand("set_Eyetarget")]
@@ -309,30 +435,33 @@ namespace AibisDream
}
YarnVariableStorage.Instance.SetValue("$currentEyeTarget", target.name);
StartCoroutine(EyeEffect_FadeOut());
FocusOnTarget(target, 1f);
if (currentTarget != null)
{
currentTarget.BlurIn(visualSettings.targetSwitchDuration);
}
if (currentTarget == target)
{
DialogController.Instance.StartDialogNode("重复看同一个目标");
currentTarget = target;
mouseFollowAndZoom.SetIndicatorTarget(currentTarget);
currentTarget.BlurOut(visualSettings.targetSwitchDuration);
yield return new WaitForSeconds(visualSettings.targetSwitchDuration);
if (startDialogue)
{
DialogController.Instance.StartDialogNode("重复看同一个目标");
yield return RunBlurOutWithPreBlink(currentTarget, visualSettings.targetSwitchDuration);
}
yield break;
}
EyeTarget leavingTarget = currentTarget;
if (leavingTarget != null)
{
StartCoroutine(EyeEffect_FadeOut());
}
const float focusMoveDuration = 1f;
FocusOnTarget(target, focusMoveDuration);
yield return WaitForFocusMovement(focusMoveDuration);
currentTarget = target;
mouseFollowAndZoom.SetIndicatorTarget(currentTarget);
currentTarget.BlurOut(visualSettings.targetSwitchDuration);
yield return new WaitForSeconds(visualSettings.targetSwitchDuration);
yield return RunBlurOutWithPreBlink(currentTarget, visualSettings.targetSwitchDuration);
if (startDialogue)
{
@@ -354,25 +483,37 @@ namespace AibisDream
[YarnCommand("EyeEffect_FadeIn")]
public IEnumerator EyeEffect_FadeIn()
{
if (currentTarget != null)
if (currentTarget == null)
{
AudioManager.Instance.PlaySfx("event:/ActionFB/color_imagine");
eyeStateEffect?.ApplyFocusedEffect(currentTarget, this);
yield break;
}
yield return new WaitForSeconds(GetEffectTransitionDuration());
if (_currentState == EyeColorState.CanImagineColor
&& currentTarget.IsAtFocusedColorState(visualSettings))
{
yield break;
}
AudioManager.Instance.PlaySfx("event:/ActionFB/color_imagine");
yield return RunFocusedEffectWithPreBlink(currentTarget);
}
[YarnCommand("EyeEffect_FadeOut")]
public IEnumerator EyeEffect_FadeOut()
{
if (currentTarget != null)
if (currentTarget == null)
{
AudioManager.Instance.PlaySfx("event:/ActionFB/color_imagine");
eyeStateEffect?.ApplyUnfocusedEffect(currentTarget, this);
yield break;
}
yield return new WaitForSeconds(GetEffectTransitionDuration());
if (_currentState == EyeColorState.CanImagineColor
&& currentTarget.IsAtUnfocusedColorState(visualSettings))
{
yield break;
}
AudioManager.Instance.PlaySfx("event:/ActionFB/color_imagine");
yield return RunUnfocusedEffectWithPreBlink(currentTarget);
}
[YarnCommand("EyeEffect_Init")]
+36 -16
View File
@@ -20,8 +20,23 @@ public class EyeTarget : MonoBehaviour
[SerializeField] private Shader unifiedSpriteShader;
[SerializeField] private EyeTargetVisual unifiedVisual;
[Header("Indicator RGB (imagined color for debug overlay)")]
public Color _color;
public Color GetIndicatorColor()
{
return new Color(
RoundIndicatorChannel(_color.r),
RoundIndicatorChannel(_color.g),
RoundIndicatorChannel(_color.b),
_color.a);
}
private static float RoundIndicatorChannel(float value)
{
return Mathf.Round(value * 10f) / 10f;
}
private EyeVisualSettings visualSettings = new();
private Material wrongColorMaterial;
@@ -80,6 +95,7 @@ public class EyeTarget : MonoBehaviour
public void Init()
{
unifiedVisual?.ClearTransientEffects(visualSettings);
SetToMinColorReveal();
SetToMaxBlur();
SetToNoWrongColor();
@@ -111,6 +127,20 @@ public class EyeTarget : MonoBehaviour
unifiedVisual?.SetColorReveal(visualSettings.colorRevealMax);
}
public bool IsAtFocusedColorState(EyeVisualSettings settings = null)
{
EyeVisualSettings tuning = settings ?? visualSettings;
return unifiedVisual != null
&& unifiedVisual.IsAtColorReveal(tuning.colorRevealMax);
}
public bool IsAtUnfocusedColorState(EyeVisualSettings settings = null)
{
EyeVisualSettings tuning = settings ?? visualSettings;
return unifiedVisual != null
&& unifiedVisual.IsAtColorReveal(tuning.colorRevealMin);
}
public void SetToMaxBlur()
{
unifiedVisual?.SetBlur(visualSettings.idleBlurAmount);
@@ -135,16 +165,14 @@ public class EyeTarget : MonoBehaviour
public void FadeOut(float duration)
{
unifiedVisual?.TweenColorReveal(visualSettings.colorRevealMin, duration)?.SetEase(Ease.InSine);
unifiedVisual?.TweenBlur(visualSettings.idleBlurAmount, duration)?.SetEase(Ease.InSine);
unifiedVisual?.PulseDistortion(visualSettings.colorPulseDistortion, duration);
unifiedVisual?.KillActiveTweens();
unifiedVisual?.PlayColorSweepTransition(visualSettings, duration, colorIn: false);
}
public void ColorIn(float duration)
{
unifiedVisual?.TweenColorReveal(visualSettings.colorRevealMax, duration)?.SetEase(Ease.InOutSine);
unifiedVisual?.TweenBlur(visualSettings.focusedBlurAmount, duration)?.SetEase(Ease.InOutSine);
unifiedVisual?.PulseDistortion(visualSettings.colorPulseDistortion, duration);
unifiedVisual?.KillActiveTweens();
unifiedVisual?.PlayColorSweepTransition(visualSettings, duration, colorIn: true);
}
public void WrongColorIn(float duration)
@@ -161,16 +189,13 @@ public class EyeTarget : MonoBehaviour
public void BlurIn(float duration)
{
AudioManager.Instance.PlaySfx("event:/ActionFB/visualturn");
var tween = unifiedVisual?.TweenBlur(visualSettings.idleBlurAmount, duration);
tween?.SetEase(Ease.InOutSine).OnComplete(StopVisualTurnSfx);
tween?.SetEase(Ease.InOutSine);
}
public void BlurOut(float duration)
{
AudioManager.Instance.PlaySfx("event:/ActionFB/visualturn");
var tween = unifiedVisual?.TweenBlur(visualSettings.focusedBlurAmount, duration);
tween?.SetEase(Ease.InOutSine).OnComplete(StopVisualTurnSfx);
unifiedVisual?.TweenBlurFocusSettle(visualSettings, duration);
}
public void ColorBack()
@@ -421,9 +446,4 @@ public class EyeTarget : MonoBehaviour
renderer.enabled = false;
}
}
private static void StopVisualTurnSfx()
{
AudioManager.Instance.StopSfx("event:/ActionFB/visualturn");
}
}
@@ -115,6 +115,22 @@ namespace AibisDream
{
imageSpriteRenderer.DOKill();
}
ClearTransientEffects(null);
}
public void ClearTransientEffects(EyeVisualSettings settings)
{
if (!EnsureMaterial())
{
return;
}
SetFloat(GlitchAmountId, 0f);
SetFloat(DistortAmountId, 0f);
SetFloat(ScanlineAmountId, 0f);
SetFloatRaw(HsvShiftId, 0f);
SetFloatRaw(RevealNoiseId, settings != null ? settings.revealNoise : 0f);
}
public void ResetVisual(float reveal)
@@ -151,6 +167,21 @@ namespace AibisDream
SetFloat(GrayAmountId, 1f - value);
}
public float GetColorReveal()
{
if (!EnsureMaterial() || !material.HasProperty(ColorRevealId))
{
return 0f;
}
return material.GetFloat(ColorRevealId);
}
public bool IsAtColorReveal(float target, float epsilon = 0.02f)
{
return Mathf.Abs(GetColorReveal() - target) <= epsilon;
}
public Tween TweenColorReveal(float value, float duration)
{
if (!EnsureMaterial())
@@ -176,7 +207,69 @@ namespace AibisDream
public Tween TweenBlur(float value, float duration)
{
return TweenFloat(BlurAmountId, value, duration);
if (!EnsureMaterial())
{
return null;
}
Tween tween = material.DOFloat(value, BlurAmountId, duration);
tween.OnUpdate(SyncBlurSizeToMaterial);
tween.OnComplete(SyncBlurSizeToMaterial);
return tween;
}
/// <summary>
/// One focus transition: sharpen, brief defocus, settle. Total wall time equals <paramref name="duration"/>.
/// </summary>
public Tween TweenBlurFocusSettle(EyeVisualSettings settings, float duration)
{
if (!EnsureMaterial() || settings == null || duration <= 0f)
{
return null;
}
float sharpBlur = settings.focusedBlurAmount;
float bumpBlur = Mathf.Clamp(
sharpBlur + settings.focusSettleDefocusBump,
sharpBlur,
settings.idleBlurAmount);
Vector3 ratios = settings.focusSettlePhaseRatios;
float ratioSum = ratios.x + ratios.y + ratios.z;
if (ratioSum <= 0.001f)
{
ratios = new Vector3(0.5f, 0.22f, 0.28f);
ratioSum = ratios.x + ratios.y + ratios.z;
}
float primaryDuration = duration * (ratios.x / ratioSum);
float defocusDuration = duration * (ratios.y / ratioSum);
float refocusDuration = duration * (ratios.z / ratioSum);
Sequence sequence = DOTween.Sequence();
Tween primaryFocus = TweenBlur(sharpBlur, primaryDuration);
if (primaryFocus != null)
{
primaryFocus.SetEase(Ease.InOutSine);
sequence.Append(primaryFocus);
}
Tween microDefocus = TweenBlur(bumpBlur, defocusDuration);
if (microDefocus != null)
{
microDefocus.SetEase(Ease.InOutSine);
sequence.Append(microDefocus);
}
Tween refocus = TweenBlur(sharpBlur, refocusDuration);
if (refocus != null)
{
refocus.SetEase(Ease.InOutSine);
sequence.Append(refocus);
}
return sequence;
}
public void SetWrongColor(float value)
@@ -189,16 +282,53 @@ namespace AibisDream
return TweenFloat(WrongColorAmountId, value, duration);
}
public Tween PulseDistortion(float amount, float duration)
public Tween PlayColorSweepTransition(EyeVisualSettings settings, float duration, bool colorIn)
{
if (!EnsureMaterial())
if (!EnsureMaterial() || settings == null || duration <= 0f)
{
return null;
}
return material.DOFloat(amount, DistortAmountId, Mathf.Max(0.01f, duration * 0.5f))
.SetEase(Ease.InOutSine)
.SetLoops(2, LoopType.Yoyo);
duration = Mathf.Max(0.01f, duration);
float chromaPeak = settings.colorSweepChromaPeak;
float ramp = Mathf.Clamp(settings.colorSweepChromaRamp, 0.1f, 0.6f);
float rampDuration = duration * ramp;
float settleDuration = duration - rampDuration;
float targetReveal = colorIn ? settings.colorRevealMax : settings.colorRevealMin;
float targetBlur = colorIn ? settings.focusedBlurAmount : settings.idleBlurAmount;
Ease sweepEase = colorIn ? Ease.InOutSine : Ease.InSine;
ClearTransientEffects(null);
SetFloatRaw(RevealNoiseId, 0f);
Sequence sequence = DOTween.Sequence();
Tween colorTween = TweenColorReveal(targetReveal, duration);
if (colorTween != null)
{
colorTween.SetEase(sweepEase);
sequence.Join(colorTween);
}
Tween blurTween = TweenBlur(targetBlur, duration);
if (blurTween != null)
{
blurTween.SetEase(sweepEase);
sequence.Join(blurTween);
}
if (chromaPeak > 0.001f)
{
Sequence chromaEnvelope = DOTween.Sequence();
chromaEnvelope.Append(material.DOFloat(chromaPeak, GlitchAmountId, rampDuration)
.SetEase(Ease.OutSine));
chromaEnvelope.Append(material.DOFloat(0f, GlitchAmountId, settleDuration)
.SetEase(Ease.InSine));
sequence.Join(chromaEnvelope);
}
sequence.OnComplete(() => ClearTransientEffects(settings));
return sequence;
}
public void SetImageAlpha(float alpha)
@@ -20,7 +20,7 @@ namespace AibisDream
private static readonly int EdgeSoftnessId = Shader.PropertyToID("_EdgeSoftness");
private static readonly int BlinkOpenId = Shader.PropertyToID("_BlinkOpen");
/// <summary>须低于 PersistenceUI Canvas(1) 与 Dialog Canvas(3)。</summary>
/// <summary>Persistence:本遮罩=0UI Canvas=1Dialog Canvas=3。</summary>
[SerializeField] private int sortingOrder;
private Canvas overlayCanvas;
@@ -45,7 +45,10 @@ namespace AibisDream
}
PrepareHierarchyIfNeeded();
SetOverlayActive(false);
if (!moduleActive && !editorPreviewActive)
{
SetOverlayActive(false);
}
}
private void OnDestroy()
@@ -143,7 +146,7 @@ namespace AibisDream
}
}
public Tween PlayBlink(float? totalDuration = null)
public Tween PlayBlink(float? totalDuration = null, bool restartAutoBlinkAfter = false)
{
if (instanceMaterial == null || activeSettings == null)
{
@@ -164,11 +167,109 @@ namespace AibisDream
blinkTween = DOTween.Sequence()
.Append(CreateBlinkTween(blinkOpen, 0f, closeDuration, Ease.InQuad))
.Append(CreateBlinkTween(0f, 1f, openDuration, Ease.OutQuad))
.OnComplete(() => SetBlinkOpen(1f));
.OnComplete(() =>
{
SetBlinkOpen(1f);
if (restartAutoBlinkAfter)
{
RestartAutoBlinkCooldown(activeSettings);
}
});
return blinkTween;
}
/// <summary>
/// 先眨眼,再在最后一次眨眼的开眼阶段触发效果(聚焦 1 次 / 想象 2 次)。
/// </summary>
public IEnumerator PlayPreEffectBlinkThen(
int blinkCount,
EyeVisualSettings settings,
System.Action onEffectStart,
float effectAtOpenRatio,
float betweenBlinkGap = 0f)
{
if (!ShouldPlayTransitionBlink(settings))
{
onEffectStart?.Invoke();
yield break;
}
StopAutoBlink();
bool effectStarted = false;
blinkCount = Mathf.Max(1, blinkCount);
effectAtOpenRatio = Mathf.Clamp01(effectAtOpenRatio);
for (int i = 0; i < blinkCount; i++)
{
bool isLastBlink = i == blinkCount - 1;
Tween blink = PlayBlink();
if (blink == null)
{
if (isLastBlink && !effectStarted)
{
effectStarted = true;
onEffectStart?.Invoke();
}
continue;
}
if (isLastBlink)
{
float effectDelay = settings.blinkCloseDuration + settings.blinkOpenDuration * effectAtOpenRatio;
yield return new WaitForSeconds(effectDelay);
if (!effectStarted)
{
effectStarted = true;
onEffectStart?.Invoke();
}
yield return blink.WaitForCompletion();
}
else
{
yield return blink.WaitForCompletion();
if (betweenBlinkGap > 0f)
{
yield return new WaitForSeconds(betweenBlinkGap);
}
}
}
if (!effectStarted)
{
onEffectStart?.Invoke();
}
RestartAutoBlinkCooldown(settings);
}
private bool ShouldPlayTransitionBlink(EyeVisualSettings settings)
{
return Application.isPlaying
&& moduleActive
&& !editorPreviewActive
&& settings != null
&& settings.enableViewportOverlay;
}
private void RestartAutoBlinkCooldown(EyeVisualSettings settings)
{
if (settings == null || !settings.autoBlink || !Application.isPlaying)
{
return;
}
if (!(moduleActive || editorPreviewActive))
{
return;
}
StartAutoBlink(settings);
}
private void ShowOverlay(EyeVisualSettings settings)
{
if (settings == null || !settings.enableViewportOverlay)
@@ -178,6 +279,7 @@ namespace AibisDream
}
PrepareHierarchyIfNeeded();
ApplyCanvasRenderSettings();
activeSettings = settings;
ApplySettings(settings);
if (!editorPreviewActive)
@@ -279,11 +381,6 @@ namespace AibisDream
private void PrepareHierarchyIfNeeded()
{
if (hierarchyReady && overlayCanvas != null)
{
return;
}
if (Application.isPlaying && !lifecycleReady)
{
ScheduleDeferredPrepare();
@@ -292,6 +389,7 @@ namespace AibisDream
EnsureOverlayHierarchy();
hierarchyReady = overlayCanvas != null;
ApplyCanvasRenderSettings();
}
private void ScheduleDeferredPrepare()
@@ -316,6 +414,8 @@ namespace AibisDream
PushViewportParams(activeSettings);
SetBlinkOpen(blinkOpen);
}
ApplyCanvasRenderSettings();
}
private void EnsureOverlayHierarchy()
@@ -382,6 +482,21 @@ namespace AibisDream
overlayCanvas.planeDistance = OverlayPlaneDistance;
overlayCanvas.sortingLayerName = OverlaySortingLayer;
overlayCanvas.sortingOrder = sortingOrder;
SetOverlayUILayer(overlayCanvas.gameObject);
}
private static void SetOverlayUILayer(GameObject root)
{
int uiLayer = LayerMask.NameToLayer("UI");
if (uiLayer < 0)
{
uiLayer = 5;
}
foreach (Transform node in root.GetComponentsInChildren<Transform>(true))
{
node.gameObject.layer = uiLayer;
}
}
private static Camera ResolveUICamera()
@@ -391,7 +506,7 @@ namespace AibisDream
return UIManager.Instance.UICamera;
}
var uiManager = FindObjectOfType<UIManager>();
var uiManager = Object.FindObjectOfType<UIManager>();
if (uiManager != null && uiManager.UICamera != null)
{
return uiManager.UICamera;
@@ -42,9 +42,23 @@ namespace AibisDream
[Range(0f, 1f)] public float revealNoise = 0.08f;
[Header("Distortion Pulse")]
[Tooltip("Peak _DistortAmount during ColorIn / FadeOut.")]
[Range(0f, 0.08f)] public float colorPulseDistortion = 0.035f;
[Header("Color Sweep (ColorIn / FadeOut)")]
[Tooltip("Light RGB fringe during color sweep; 0 = sweep only.")]
[Range(0f, 1f)] public float colorSweepChromaPeak = 0.35f;
[Tooltip("Sweep duration fraction to ramp chroma fringe to peak.")]
[Range(0.1f, 0.6f)] public float colorSweepChromaRamp = 0.4f;
[HideInInspector] public float imagineGlitchPeak = 0.35f;
[HideInInspector] public float imagineGlitchRamp = 0.4f;
[HideInInspector] public float colorPulseDistortion = 0.06f;
[Header("Focus Settle (BlurOut)")]
[Tooltip("Mid-phase micro-defocus added on top of focused blur.")]
[Range(0f, 0.5f)] public float focusSettleDefocusBump = 0.12f;
[Tooltip("Single BlurOut timing split (focus | micro-defocus | refocus). Sum = 1; total seconds unchanged.")]
public Vector3 focusSettlePhaseRatios = new(0.5f, 0.22f, 0.28f);
[Header("Wrong Color (Eye Disorder)")]
public Color wrongColor = new(1f, 0.16f, 0.08f, 1f);
@@ -77,6 +91,16 @@ namespace AibisDream
public float blinkCloseDuration = 0.09f;
public float blinkOpenDuration = 0.14f;
[Header("Transition Blink")]
[Tooltip("聚焦:单次眨眼开眼到该进度时触发变清晰(0=刚睁眼,1=完全睁开)。")]
[Range(0f, 1f)] public float focusEffectAtBlinkOpen = 0.85f;
[Tooltip("想象:两次眨眼之间的间隔(秒)。")]
public float imagineBlinkGap = 0.04f;
[Tooltip("想象:第二次眨眼开眼到该进度时触发上色。")]
[Range(0f, 1f)] public float imagineEffectAtBlinkOpen = 1f;
public float GetDurationForState(EyeSystem.EyeColorState state) => state switch
{
EyeSystem.EyeColorState.CanImagineColor => imagineColorDuration,
@@ -11,9 +11,9 @@ Shader "AibisDream/MemoryTuningSprite"
_PixelMin ("Pixel Min", Range(8,64)) = 18
_PixelMax ("Pixel Max", Range(32,256)) = 128
_BlurStep ("Blur Step", Range(0,0.01)) = 0.0025
_DistortStrength ("Distort Strength", Range(0,0.05)) = 0.018
_DistortStrength ("Distort Strength", Range(0,0.08)) = 0.035
_ChromaticStrength ("Chromatic Strength", Range(0,0.03)) = 0.008
_FadeDistortStrength ("Fade Distort Strength", Range(0,0.2)) = 0.08
_FadeDistortStrength ("Fade Distort Strength", Range(0,0.2)) = 0.12
_PixelateFade ("Pixelate Fade", Range(0,1)) = 0
_PixelatePixelDensity ("Pixelate Pixel Density", Range(6,160)) = 96
_GaussianBlurFade ("Gaussian Blur Fade", Range(0,1)) = 0
@@ -123,10 +123,10 @@ Shader "AibisDream/MemoryTuningSprite"
float angle = radians(130.0);
float2 dir = float2(cos(angle), sin(angle));
float2 side = float2(-sin(angle), cos(angle));
float2 edge = smoothstep(0.0, 0.12, uv) * smoothstep(0.0, 0.12, 1.0 - uv);
float2 edge = smoothstep(0.0, 0.07, uv) * smoothstep(0.0, 0.07, 1.0 - uv);
float edgeMask = edge.x * edge.y;
float wave = sin(dot(uv - 0.5, dir) * 27.2 + _Time.y * 2.15);
float volFxStrength = lerp(0.006, 0.026, saturate(_UVDistortFade)) * strength;
float volFxStrength = lerp(_DistortStrength * 0.55, _DistortStrength, saturate(_UVDistortFade)) * strength;
return uv + side * wave * volFxStrength * edgeMask;
}
@@ -173,7 +173,7 @@ Shader "AibisDream/MemoryTuningSprite"
half frequency = saturate(_FrequencyTuning);
half pixelate = pow(max(frequency, saturate(_PixelateFade)), 0.75);
half blur = pow(max(frequency, saturate(_GaussianBlurFade)), 0.75);
half distortion = pow(max(clarity, saturate(_UVDistortFade / 0.58)), 0.75);
half distortion = pow(max(clarity, saturate(_UVDistortFade)), 0.85);
float2 uv = input.uv;
half fade = saturate((_DirectionalDistortionFade + 15.0) / 15.0);
+2 -2
View File
@@ -18,12 +18,12 @@ hs,火山,HuoShan,火山,Default,MainActor,#FFA800,peipei_head,VO/voice_HS,
hs?,沙哑男声,???,???,Default,MainActor,#FFA800,peipei_head,VO/voice_HS,
yl,英理,Yingli,エリ,Default,MainActor,#4000FF,peipei_head,VO/voice_YL,
ql?,02号调酒机体,Bartender,,Default,MainActor,#00FFFF,peipei_head,VO/voice_YL,
ql,,Kirin,チーリン,Default,MainActor,#00FFFF,peipei_head,VO/voice_YL,
ql,,Kirin,チーリン,Default,MainActor,#00FFFF,peipei_head,VO/voice_YL,
peipei_novoice,胆怯女声,Timid female voice,怯えた女声,Default,Aside,#00FFFF,,VO/voice_PP,2
yingli_novoice,严厉女声,Stern female voice,厳しい女声,Default,Aside,#FFCC00,,VO/voice_YL,1
tutorial,教学,Tutorial,,Default,Aside,,,,
docter,儿科医生,Doctor (in memory),医者(記憶の中),Default,Aside,#FFCC00,,,
peipei_child,童年佩佩,Peipei (child),ペイペイ(幼少期),Default,Aside,#00FFFF,,VO/voice_PP,
peipei_child,童年佩佩,Peipei (child),ペイペイ(幼少期),Default,Aside,#00FFFF,,VO/v oice_PP,
unknown,???,???,???,Default,Aside,#FFCC00,,,
shitou,石头,Stone,シートウ,Default,MainActor,,,VO/voice_shitou,
Descent,Descent,Descent,,Default,Aside,#FFCC00,,VO/voice_me,
1 通过key索引配置 中文名 英文名 日文名 显示位置,Default使用默认,Screen插线屏幕,OldBox基本对话框 人物角色(Player/MainActor/Aside) 名称显示时的颜色 头像Pic路径 语音资源路径 气泡序号(默认0)
18 hs? 沙哑男声 ??? ??? Default MainActor #FFA800 peipei_head VO/voice_HS
19 yl 英理 Yingli エリ Default MainActor #4000FF peipei_head VO/voice_YL
20 ql? 02号调酒机体 Bartender Default MainActor #00FFFF peipei_head VO/voice_YL
21 ql 琪琳 奇琳 Kirin チーリン Default MainActor #00FFFF peipei_head VO/voice_YL
22 peipei_novoice 胆怯女声 Timid female voice 怯えた女声 Default Aside #00FFFF VO/voice_PP 2
23 yingli_novoice 严厉女声 Stern female voice 厳しい女声 Default Aside #FFCC00 VO/voice_YL 1
24 tutorial 教学 Tutorial Default Aside
25 docter 儿科医生 Doctor (in memory) 医者(記憶の中) Default Aside #FFCC00
26 peipei_child 童年佩佩 Peipei (child) ペイペイ(幼少期) Default Aside #00FFFF VO/voice_PP VO/v oice_PP
27 unknown ??? ??? ??? Default Aside #FFCC00
28 shitou 石头 Stone シートウ Default MainActor VO/voice_shitou
29 Descent Descent Descent Default Aside #FFCC00 VO/voice_me
+1 -1
View File
@@ -221,7 +221,7 @@ title: 切换到诊所外
tags: function
---
<<fade_in>>
<<load_scene Scene/ClinicOut 1>>
<<load_scene Scene/ClinicOut>>
<<init_actor 诊室外英理 诊室外栏杆>>
<<show_actor "诊室外英理">>
<<change_actor_state "Watch" "诊室外英理">>
+28 -28
View File
@@ -28,13 +28,13 @@ position: 250,200
// 你走出诊室,靠在巷子的墙上。
// 巷子正中央站着一个人,佩佩。
诊室外的护栏边站着一个熟悉的人影。 #line:012d086
诊室外的护栏边<br>站着一个熟悉的人影。 #line:012d086
<<hide_dialog>>
<<wait 2>>
<<stop_random_animation 随机落叶>>
<<control_single_part 树叶动画 树叶大风>>
<<init_actor 诊室外医生 诊室外电线杆>>
me: 佩佩?<waitfor=0.2>还没走吗。 #line:04bdd27
me: 佩佩?<waitfor=0.1>还没走吗。 #line:04bdd27
<<fade_in_actor 诊室外医生>>
// me: 呼… #line:0f8a4c3
@@ -44,11 +44,11 @@ me: 佩佩?<waitfor=0.2>还没走吗。 #line:04bdd27
peipei: 天冷了。<waitfor=0.2>很快就是冬天了。 #line:0310493
//它头也不回地说。 #line:005c752
<<change_actor_state_async "医生UpHeadIn" 诊室外医生>>
天气确实开始变冷了,冬天应该是真的要来了。 #line:0aeb015
天气确实开始变冷了,<br>冬天应该是真的要来了。 #line:0aeb015
<<hide_dialog>>
<<change_actor_state_async "SMOKE" 诊室外医生>>
<<wait 0.2>>
烟和呼出的气雾混合在一起,飘散到空中。 #line:05e3283
烟和呼出的气雾混合在一起,<br>飘散到空中。 #line:05e3283
<<wait 1>>
me: 嗯。<waitfor=0.2>天冷了。 #line:09c6402
@@ -60,7 +60,7 @@ me: 你不是要回去工作吗? #line:094a88f
<<hide_dialog>>
<<wait 0.5>>
佩佩依然没有回头,还是痴痴地抬头看着。 #line:061416c
佩佩依然没有回头,<br>还是痴痴地抬头看着。 #line:061416c
<<hide_dialog>>
<<wait 2>>
@@ -71,42 +71,42 @@ peipei: 你喜欢冬天吗? #line:0db3bf2
->喜欢 #line:0e5fe72
<<change_actor_state "医生Turn the head" 诊室外医生>>
<<wait 1>>
me: 我不知道…<waitfor=0.2>我应该是喜欢的。 #line:0fb4758
佩佩依旧抬着头,树叶从它的面前飘落。 #line:082d98e
peipei: 我以为我也…<waitfor=0.5><br>但我意识到我好像更喜欢夏天。 #line:07bf72d
peipei: 或者说…<waitfor=0.2>我不舍得它的结束。 #line:0367625
peipei: 可惜<waitfor=0.2>再漫长的季节<waitfor=0.2>都会结束。 #line:01dbcc6
me: 我不知道…<waitfor=0.1>我应该是喜欢的。 #line:0fb4758
佩佩依旧抬着头,<br>树叶从它的面前飘落。 #line:082d98e
peipei: 我以为我也…<waitfor=0.1><br>但我意识到我好像更喜欢夏天。 #line:07bf72d
peipei: 或者说…<waitfor=0.1>我不舍得它的结束。 #line:0367625
peipei: 可惜<waitfor=0.1>再漫长的季节<waitfor=0.1>都会结束。 #line:01dbcc6
->讨厌 #line:09ec66e
<<change_actor_state "医生Turn the head" 诊室外医生>>
<<wait 1>>
me: 我讨厌冬天。 #line:04ed765
佩佩依旧抬着头,树叶从它的面前飘落。 #line:07d9a0b
peipei: 你也能感受到,<waitfor=0.2>对吗? #line:08db620
佩佩依旧抬着头,<br>树叶从它的面前飘落。 #line:07d9a0b
peipei: 你也能感受到,<waitfor=0.1>对吗? #line:08db620
peipei: 它们都在死去。 #line:0333380
->没意义 #line:0d3afff
<<change_actor_state "医生Turn the head" 诊室外医生>>
<<wait 1>>
me: 我们是机体,<waitfor=0.2>季节对我们来说没有意义。 #line:0090b32
佩佩依旧抬着头,树叶从它的面前飘落。 #line:0eadf07
peipei: 对啊,<waitfor=0.2>我们是机体。 #line:0434891
me: 我们是机体,<waitfor=0.1>季节对我们来说没有意义。 #line:0090b32
佩佩依旧抬着头,<br>树叶从它的面前飘落。 #line:0eadf07
peipei: 对啊,<waitfor=0.1>我们是机体。 #line:0434891
peipei: 我怎么会忘了…… #line:0df59d5
<<hide_dialog>>
<<wait 1>>
me: 这是情绪模块的数据波动。 #line:09d976f
<<change_actor_state "医生LDLE" 诊室外医生>>
<<wait 1>>
me: 但是——<waitfor=0.4>是的,<waitfor=0.2>它是存在的。 #line:093d52e
me: 但是——<waitfor=0.2>是的,<waitfor=0.1>它是存在的。 #line:093d52e
<<change_actor_state_async "医生Turn the head And Sign" 诊室外医生>>
<<hide_dialog>>
<<wait 0.5>>
//佩佩扭过头看向路斯。再次吸了一口烟。 #line:0efed4b
peipei: 这种感受…<waitfor=0.2>是存在的吗? #line:0450fe7
me: 是的。<waitfor=0.2>所谓的感受,<waitfor=0.2><br>就是情绪模块里流动着的数据。 #line:0e0789d
me: 它不太稳定,<waitfor=0.2>你需要放松一些。 #line:0a70f88
peipei: 这种感受…<waitfor=0.1>是存在的吗? #line:0450fe7
me: 是的。<waitfor=0.2>所谓的感受,<waitfor=0.1><br>就是情绪模块里流动着的数据。 #line:0e0789d
me: 它不太稳定,<waitfor=0.1>你需要放松一些。 #line:0a70f88
<<stop_random_animation 随机落叶>>
<<control_single_part 树叶动画 树叶大风>>
<<wait 1>>
佩佩低下头,一会又抬了起来,重新看向天空。树叶从它的面前飘落。 #line:0149a78
佩佩低下头,<br>一会又抬了起来,<br>重新看向天空。<br>树叶从它的面前飘落。 #line:0149a78
// 它接住了一片,举了起来,对着空中。 #line:0378444
<<hide_dialog>>
<<wait 0.5>>
@@ -117,27 +117,27 @@ me: 它不太稳定,<waitfor=0.2>你需要放松一些。 #line:0a70f88
<<hide_dialog>>
<<wait 2>>
peipei: 医生…<waitfor=0.2>这片树叶是什么颜色的? #line:0e34d95
peipei: 医生…<waitfor=0.1>这片树叶是什么颜色的? #line:0e34d95
<<hide_dialog>>
<<wait 1>>
me: 它已经黄了。 #line:0049b60
<<wait 1.5>>
<<fade_in 1>>
<<hide_timeline 诊室外>>
//<<fade_in 1>>
<<hide_timeline 诊室外 >>
<<reset_timeline 诊室外>>
<<fade_out 1>>
//<<fade_out 1>>
// <<wait 1>>
//佩佩仔细端详它,捏着叶柄轻轻地旋转着。 #line:04efadd
<<hide_dialog>>
<<wait 1>>
树叶从它的手指之间滑落,轻轻地飘走了。 #line:0c7c5dd
树叶从它的手指之间滑落,<br>轻轻地飘走了。 #line:0c7c5dd
<<hide_dialog>>
<<wait 1>>
peipei: 再见了,<waitfor=0.4>叶子。 #line:0694ade
peipei: 再见了,<waitfor=0.2>叶子。 #line:0694ade
佩佩看了路斯一眼,<br>露出了一个淡淡的微笑,转头离开了。 #line:00d0440
佩佩看了路斯一眼,<br>露出了一个淡淡的微笑,<br>转头离开了。 #line:00d0440
<<fade_out_actor "诊室外佩佩">>
<<wait 1>>
//<<play_sfx "event:/Scriptal/pager">>
@@ -145,7 +145,7 @@ peipei: 再见了,<waitfor=0.4>叶子。 #line:0694ade
<<change_actor_state_async "医生CutSmoke" 诊室外医生>>
<<stop_random_animation 随机落叶>>
<<control_single_part 树叶动画 树叶大风>>
一阵风吹过,树叶洋洋洒洒地落下。 #line:0ade2bb
一阵风吹过,<br>树叶洋洋洒洒地落下。 #line:0ade2bb
<<change_actor_state_async "医生UpHeadIn" 诊室外医生>>
<<wait 2>>
<<control_single_part 树叶动画 树叶安静>>
+67 -58
View File
@@ -21,21 +21,21 @@ tags: content
colorID: 8
position: 250,200
---
<<play_music event:/Music/music_bar>>
// <<jump test>>
<i>吵闹的音乐,炫目的灯光… #line:02e0d86 /////</i> #line:0207402
<i>吵闹的音乐,炫目的灯光…</i> #line:0207402
<i>一切都令人心烦。</i> #line:0e72808
<<fade_out 1>>
[character name="jb" bubbleIdx=1 /]晚上好。想喝点什么呢? #line:07a41ab
[character name="jb" bubbleIdx=1 /]晚上好。<waitfor=0.2>想喝点什么呢? #line:07a41ab
<<fade_in_actor 酒保 0.5>>
[character name="jb" bubbleIdx=1 /]如果不知道喝什么,可以试试我们的… #line:0a3b5af
[character name="jb" bubbleIdx=1 /]如果不知道喝什么,<waitfor=0.1>可以试试我们的… #line:0a3b5af
//#auto_next
me: Neat,双份。谢谢。 #line:0ed3bf5
[character name="jb" bubbleIdx=1 /]我们今天的调和润滑剂有折扣喔。如果… #line:05b8a4d
[character name="jb" bubbleIdx=1 /]我们今天的调和润滑剂有折扣喔。<waitfor=0.2><br>如果… #line:05b8a4d
me: 我只要双份的Neat。 #line:0fde1a7
<<hide_dialog>>
@@ -46,20 +46,22 @@ me: 谢谢。 #line:09a2a98
<<hide_dialog>>
<<wait 1>>
[character name="jb" bubbleIdx=1 /]…好的。Neat双份。 #line:029d775
[character name="jb" bubbleIdx=1 /]…好的。<waitfor=0.1>Neat双份。 #line:029d775
<<fade_out_actor 酒保 0.5>>
<<wait 0.5>>
<<change_actor_slot "酒保" "酒保右侧">>
<i>侍者自讨没趣地耸了耸肩,留下了一杯酒,缩回了阴影里。</i> #line:0b4aa3a
<i>侍者自讨没趣地耸了耸肩,<br>留下了一杯酒,<br>缩回了阴影里。</i> #line:0b4aa3a
<<fade_in_actor 酒保 0.5>>
<<set_global_param d1n_drunk 1>>
<i>路斯一饮而尽。</i> #line:031e661
<<hide_dialog>>
<<wait 1>>
<i>世界都变得安静了下来。<br>只有模模糊糊、朦朦胧胧的声音…</i> #line:091be9d
<i>那是安全的声音。也就是没有声音。</i> #line:0bcbdd8
<i>那是安全的声音。<br>也就是没有声音。</i> #line:0bcbdd8
<<hide_dialog>>
<<wait 0.7>>
@@ -74,26 +76,26 @@ ql: 喝这么急。小心烧坏消化模块喔。 #line:02690c1
<<fade_in_actor 酒吧调酒妹>>
ql: 我还以为医生都不会有烦心事呢。 #line:0b73f06
<<change_actor_state_async 侧头 酒吧医生>>
me: 你怎么看出我是医生的?<br>我想我们应该不认识。 #line:0a84dcc
me: 你怎么看出我是医生的?<waitfor=0.2><br>我想我们应该不认识。 #line:0a84dcc
ql: 很多机体都闻不出来,<br>但是我闻得出来喔。 #line:00eee91
ql: 你身上的气味,<br>和别的机体不一样。 #line:0eb8c18
ql: 很多机体都闻不出来,<waitfor=0.1><br>但是我闻得出来喔。 #line:00eee91
ql: 你身上的气味,<waitfor=0.1><br>和别的机体不一样。 #line:0eb8c18
me: 气味? #line:0107b9a
<<hide_dialog>>
<<wait 0.5>>
<<change_actor_state_async Idle 酒吧医生>>
me: …啊。气味。<br>有的调酒型号有这种情绪感受器。 #line:0b6bb67
me: 别太依赖它,<br>有可能会让你的情绪模块紊乱。 #line:039a9d9
me: …啊。<waitfor=0.1>气味。<waitfor=0.2><br>有的调酒型号有这种情绪感受器。 #line:0b6bb67
me: 别太依赖它,<waitfor=0.1><br>有可能会让你的情绪模块紊乱。 #line:039a9d9
<<hide_dialog>>
<<wait 0.5>>
ql: 你不想问<br>你自己是什么气味吗? #line:0a9173c
ql: 你不想问<waitfor=0.1><br>你自己是什么气味吗? #line:0a9173c
<i>路斯轻轻微笑。</i> #line:068a830
me: 我听得出来<br>你自己是打算要说的。 #line:077704b
me: 我听得出来<waitfor=0.1><br>你自己是打算要说的。 #line:077704b
//<<fade_out_actor 酒吧调酒妹 0.5>>
<<change_actor_state "1CloseeyeSmile" 酒吧调酒妹>>
//<<fade_in_actor 酒吧调酒妹 0.5>>
@@ -114,7 +116,7 @@ ql: 是烦恼啦。 #line:0fd1a36
<<wait 0.7>>
me: 你和每个机体都这么说吧。 #line:04035d6
me: 毕竟大家来这里,都是为了<br>忘掉某些东西。不是么? #line:08f576e
me: 毕竟大家来这里,<waitfor=0.1>都是为了<waitfor=0.1><br>忘掉某些东西。<waitfor=0.2>不是么? #line:08f576e
<<change_actor_state "1Smile" 酒吧调酒妹>>
<<wait 1>>
@@ -127,12 +129,12 @@ ql: 这就是酒的作用。 #line:009ee9f
<<change_actor_state "1Closeeye" 酒吧调酒妹>>
//<<fade_in_actor 酒吧调酒妹 0.5>>
<<wait 0.4>>
ql: 不过…我闻得出。你要忘掉的那些东西,是那种Neat无法解决的。 #line:0dd8568
ql: 不过…<waitfor=0.1>我闻得出。<waitfor=0.2><br>你要忘掉的那些东西,<waitfor=0.1><br>是那种Neat无法解决的。 #line:0dd8568
<<hide_dialog>>
<<wait 1>>
me: 当然了。<br>又有什么问题真的能被解决呢? #line:0dac617
me: 当然了。<waitfor=0.2><br>又有什么问题真的能被解决呢? #line:0dac617
<<hide_dialog>>
<<wait 0.4>>
@@ -145,7 +147,7 @@ ql: 你做噩梦,对吧?<waitfor=0.2><br>关于*海*的噩梦。 #line:08532
me: 海已经不存在了。 #line:06ee33f
ql: 当然,我们都知道。<br>但你还是做了那个梦。 #line:0fd45b4
ql: 当然,<waitfor=0.1>我们都知道。<waitfor=0.2><br>但你还是做了那个梦。 #line:0fd45b4
<<change_actor_state_async 侧头 酒吧医生>>
@@ -158,7 +160,7 @@ me: 你怎么知道? #line:0dc507b
<<change_actor_state "4HalfeyeSmile" 酒吧调酒妹>>
ql: 我说过嘛。你身上有和我一样的气味。 #line:0af30ce
ql: 我说过嘛。<waitfor=0.2>你身上有和我一样的气味。 #line:0af30ce
<<hide_dialog>>
<<wait 0.2>>
@@ -169,8 +171,8 @@ ql: 我说过嘛。你身上有和我一样的气味。 #line:0af30ce
//<<fade_out_actor 酒吧调酒妹 0.5>>
//<<change_actor_state "1Smile" 酒吧调酒妹>>
//<<fade_in_actor 酒吧调酒妹 0.5>>
ql: 来吧。我请你一杯。就当是请我自己的。 #line:0f0ee5a
<<wait 0.8>>
ql: 来吧。<waitfor=0.2>我请你一杯。<waitfor=0.2><br>就当是请我自己的。 #line:0f0ee5a
ql: 怎么样? #line:08a175f
<<hide_dialog>>
@@ -178,9 +180,9 @@ ql: 怎么样? #line:08a175f
-> 试试 #line:0476232
<<change_actor_state_async Idle 酒吧医生>>
me: 话说在前头。如果有什么副作用… #line:0bfc102
me: 话说在前头。<waitfor=0.2>如果有什么副作用… #line:0bfc102
<<change_actor_state "Smile" 酒吧调酒妹>>
ql: 如果有什么副作用,你就举报我好了。 #line:01d180c
ql: 如果有什么副作用,<waitfor=0.1>你就举报我好了。 #line:01d180c
ql: 放心吧。 #line:033df7b
<<hide_dialog>>
<<change_actor_state "2IN" 酒吧调酒妹>>
@@ -194,7 +196,7 @@ ql: 怎么样? #line:08a175f
<<fade_in_actor 酒吧调酒妹 0.5>>
ql: 先别急着喝噢。 #line:06f058b
<i>路斯看向酒杯。</i> #line:0aa5cd8
<i>酒水在杯子里晃动着,折射出迷幻的色彩。</i> #line:0594f36
<i>酒水在杯子里晃动着,<br>折射出迷幻的色彩。</i> #line:0594f36
<<hide_dialog>>
<<wait 1>>
@@ -206,7 +208,7 @@ ql: 这是你自己的情绪。 #line:02bfdfd
<<change_actor_state_async Idle 酒吧医生>>
me: 我自己的情绪? #line:0b9fe5a
ql: 这杯酒会让你更清晰地复现你一直以来在压制的记忆。 #line:0af3c82
ql: 这杯酒会让你更清晰地复现<waitfor=0.1><br>你一直以来在压制的记忆。 #line:0af3c82
me: 那样不就更容易做噩梦了么…… #line:097355f
@@ -214,36 +216,42 @@ me: 那样不就更容易做噩梦了么…… #line:097355f
<<wait 1>>
<<change_actor_state_async 侧头 酒吧医生>>
ql: 医生,如果一个病人被损坏了,不可逆的。你会怎么做? #line:0d747ad
ql: 医生,<waitfor=0.1>如果一个病人被损坏了,<waitfor=0.1><br>不可逆的。<waitfor=0.2>你会怎么做? #line:0d747ad
<<hide_dialog>>
<<wait 1>>
me: 我会给出三个思路。 #line:0306ca0
me: 第一,如果受损原件可以更换,就更换。第二,如果其它原件可以代偿,就想办法代偿。第三… #line:04097d2
me: 第一,<waitfor=0.1>如果受损原件可以更换,<waitfor=0.1>就更换。<waitfor=0.2><br>第二,<waitfor=0.1>如果其它原件可以代偿,<waitfor=0.1>就想办法代偿。<waitfor=0.2><br>第三… #line:04097d2
<<change_actor_state_async Idle 酒吧医生>>
<i>路斯喝了一口酒。</i> #line:0f4862c
me: 如果这三条都没用,我会建议它主动申请回收。提升资源回转效率。 #line:03b0d7f
ql: 真是标准的*医生*回答呢。<br>不过… #line:05027e7
<<set_global_param d1n_drunk 1.5>>
<i>路斯喝了一口酒。</i> #line:0f4862c
me: 如果这三条都没用,<waitfor=0.1><br>我会建议它主动申请回收。<waitfor=0.2><br>提升资源回转效率。 #line:03b0d7f
ql: 真是标准的*医生*回答呢。<waitfor=0.2><br>不过… #line:05027e7
ql: 第三条你还没说呢。 #line:075cba9
me: 还是回到你提的问题来吧。<br>你会怎么做? #line:06016d5
<<set_global_param d1n_drunk 2>>
<<wait 2>>
me: 还是回到你提的问题来吧。<waitfor=0.2><br>你会怎么做? #line:06016d5
<<change_actor_state "1CloseeyeSmile" 酒吧调酒妹>>
<<wait 1>>
<<play_music event:/Amb/amb_beachsample>>
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0.1>>
ql: 我会先告诉它… #line:08490d2
ql: 已经坏了的,就让它坏了吧。<br>就当作你生来如此。 #line:0fa9ff2
ql: 我们不都是这样吗?<br>我们生来就是要坏的。 #line:0e6330a
ql: 对着伤口哭泣,<br>只怕会让伤口锈蚀更严重吧。 #line:0b79003
ql: 我会先告诉它…<waitfor=0.1> #line:08490d2
ql: 已经坏了的,<waitfor=0.1>就让它坏了吧。<waitfor=0.2><br>就当作你生来如此。 #line:0fa9ff2
ql: 我们不都是这样吗?<waitfor=0.2><br>我们生来就是要坏的。 #line:0e6330a
ql: 对着伤口哭泣,<waitfor=0.1><br>只怕会让伤口锈蚀更严重吧。 #line:0b79003
me: 你是想说,<br>我们有些本就“生来如此”的损伤,对吧? #line:0f1b08a
me: 也就是你说的,我们的原型里的,天然的"问题"。 #line:002672e
me: 但是…这个天然的"问题",恰恰就是我们被制造的意义,不是么? #line:0b2cf39
me: 如果把我们的"意义"都解决了,那… #line:0bb801d
me: 你是想说,<waitfor=0.1><br>我们有些本就“生来如此”的损伤,<waitfor=0.1>对吧? #line:0f1b08a
me: 也就是你说的,<waitfor=0.1><br>我们的原型里的,<waitfor=0.1><br>天然的"问题"。 #line:002672e
me: 但是…<waitfor=0.1>这个天然的"问题"<waitfor=0.1><br>恰恰就是我们被制造的意义,<waitfor=0.1>不是么? #line:0b2cf39
me: 如果把我们的"意义"都解决了,<waitfor=0.1>那… #line:0bb801d
ql: 那会怎样? #line:04e455e
@@ -255,16 +263,16 @@ me: 我不知道。 #line:08ee8ce
<<hide_dialog>>
<<wait 1>>
ql: 其实…无论你喝下这杯酒,或者决定不喝…… #line:0d8f0c2
ql: 也都是由"原型"驱动的。也就是说,都是主脑安排的。 #line:029136f
ql: 既然主脑自有它的安排。为什么要替它操心呢? #line:0d9b99d
ql: 况且…每个机体生来就注定要被回收,难道就代表着,它们应该立刻被回收吗? #line:0cd87b4
ql: 你越是操心,越是发现自己什么也做不了,反而坏的更严重了。 #line:011a8dd
ql: 其实…<waitfor=0.1>无论你喝下这杯酒,<waitfor=0.1><br>或者决定不喝…… #line:0d8f0c2
ql: 也都是由"原型"驱动的。<waitfor=0.2><br>也就是说,<waitfor=0.1>都是主脑安排的。 #line:029136f
ql: 既然主脑自有它的安排。<waitfor=0.2><br>为什么要替它操心呢? #line:0d9b99d
ql: 况且…<waitfor=0.1>每个机体生来就注定要被回收,<waitfor=0.1><br>难道就代表着,<waitfor=0.1>它们应该立刻被回收吗? #line:0cd87b4
ql: 你越是操心,<waitfor=0.1>越是发现自己什么也做不了,<waitfor=0.1><br>反而坏的更严重了。 #line:011a8dd
<i>酒保自己拿起你的酒轻轻抿了一口。</i> #line:00f3b9d
<<change_actor_state "1Smile" 酒吧调酒妹>>
<<wait 1>>
ql: 打开它来看看吧。我想它没有你想的那么严重。 #line:0614acb
ql: 打开它来看看吧。<waitfor=0.2><br>我想它没有你想的那么严重。 #line:0614acb
me: 我记得你说过那是我的情绪。 #line:0c5cd0d
@@ -275,8 +283,8 @@ me: 其实还是有一点的。 #line:061b50a
//<i>它笑了。</i> #line:0a8e72d
<<change_actor_state "1CloseeyeSmile" 酒吧调酒妹>>
<<wait 1>>
ql: 下次来我可以再请你一杯。这次就别贪杯了。 #line:0086ac0
ql: 我也需要去面对我的"问题",和你一样。 #line:051169e
ql: 下次来我可以再请你一杯。<waitfor=0.2><br>这次就别贪杯了。 #line:0086ac0
ql: 我也需要去面对我的"问题",<waitfor=0.1>和你一样。 #line:051169e
<i>它拿起擦干净的杯子,转身离去。</i> #line:020019e
<<fade_out_actor 酒吧调酒妹 1>>
<<change_actor_state "4HalfeyeSmile" 酒吧调酒妹>>
@@ -292,8 +300,8 @@ ql: 我觉得也许你需要这个。 #line:053e24f
<<change_actor_state_async 侧头 酒吧医生>>
me: 这是什么? #line:0431bdb
ql: 你的原型里应该有关于它的数据。"塔罗牌"。 #line:090f954
ql: 虽然我也不是很懂…但既然是原型的问题,应该可以用原型的方法来解决。对吧? #line:0f8220f
ql: 你的原型里应该有关于它的数据。<waitfor=0.2>"塔罗牌"。 #line:090f954
ql: 虽然我也不是很懂…<waitfor=0.1><br>但既然是原型的问题,<waitfor=0.1><br>应该可以用原型的方法来解决。<waitfor=0.2>对吧? #line:0f8220f
<<spread_tarot>>
ql: 试试吧。抽一张。 #line:032a6f1
me: … #line:09f3fc1
@@ -302,27 +310,27 @@ me: … #line:09f3fc1
<<flip_tarot "normal">>
// -> 抽牌 #line:00d082d
// 【你看了看牌。】 #line:0b53792
<i>卡牌上是一个双手被缚的机体。它的表情安逸,但姿势很怪异,像是头顶上看不见的地方有什么东西在把它吸过去。</i> #line:0a277e9
<i>卡牌上是一个双手被缚的机体。<br>它的表情安逸,但姿势很怪异。</i> #line:0a277e9
me: 这画的是什么? #line:064fa6d
ql: 倒吊人。你拿反了。 #line:09d2ede
->旋转 #line:0b58edf
<<rotate_tarot "inverted">>
// 【你把牌转过来。】 #line:057bfa8
<i>这下看明白了。这是一个倒吊着的机体,脚踝上拴着一根绳。</i> #line:0b490db
<i>这下看明白了。<br>这是一个倒吊着的机体,<br>脚踝上拴着一根绳。</i> #line:0b490db
me: 它代表什么? #line:00abb4f
ql: 我不知道。我说过,我也不是很懂。 #line:0d2875b
me: 那…它有什么用? #line:055b1a7
me: 那…<waitfor=0.1>它有什么用? #line:055b1a7
ql: 人类用这种方式来找到自己隐藏的思绪。 #line:0bd59d4
ql: 总之…卡上的机体就代表你。你怎么看它,就意味着你怎么看待你自己。 #line:0bc3651
ql: 你看到了什么?不用告诉我,告诉你自己就好啦。 #line:0eedcba
ql: 总之…<waitfor=0.1>卡上的机体就代表你。<waitfor=0.2><br>你怎么看它,<waitfor=0.1><br>就意味着你怎么看待你自己。 #line:0bc3651
ql: 你看到了什么?<waitfor=0.2><br>不用告诉我,<waitfor=0.1><br>告诉你自己就好啦。 #line:0eedcba
<<hide_tarot>>
<<change_actor_state "1Smile" 酒吧调酒妹>>
<<wait 1>>
ql: 好啦。我该走了。还要工作呢。 #line:0805e73
ql: 好啦。<waitfor=0.2>我该走了。<waitfor=0.2>还要工作呢。 #line:0805e73
me: 你刚才不就在工作吗? #line:02294e6
<<change_actor_state "1" 酒吧调酒妹>>
@@ -338,12 +346,13 @@ ql: 是嘛。 #line:0ec76a5
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0.2>>
<<change_actor_state_async Idle 酒吧医生>>
<i>路斯看着手中的牌。把牌翻转过来,又仔细看了看。</i> #line:087f9c2
<i>路斯看着手中的牌。<br>把牌翻转过来,<br>又仔细看了看。</i> #line:087f9c2
<i>酒杯里的酒的颜色似乎正在变幻。路斯望着它出神。</i> #line:075fce1
<i>酒杯里的酒的颜色似乎正在变幻。<br>路斯望着它出神。</i> #line:075fce1
//<i>你望着它出神。</i> #line:06a9f93
<<set_global_param d1n_drunk 3>>
<i>路斯一饮而尽。</i> #line:0910557
<<change_actor_state_async 醉酒 酒吧医生>>
@@ -1,19 +1,19 @@
{
"projectFileVersion": 3,
"sourceFiles": [
"**/*.yarn"
],
"excludeFiles": [
"**/*~/*"
],
"localisation": {
"en": {
"strings": "FP_Day1_night-en.csv"
"projectFileVersion": 3,
"sourceFiles": [
"**/*.yarn"
],
"excludeFiles": [
"**/*~/*"
],
"localisation": {
"en": {
"strings": "FP_Day1_night-en.csv"
},
"ja": {
"strings": "FP_Day1_night-ja.csv"
}
},
"ja": {
"strings": "FP_Day1_night-ja.csv"
}
},
"baseLanguage": "zh-Hans",
"compilerOptions": {}
"baseLanguage": "zh-Hans",
"compilerOptions": {}
}
+155 -152
View File
@@ -14,17 +14,19 @@ tags: linear
<<set_global_param Vol_general 0>>
//TODO: 【海浪声】
<<wait 2>>
jj: …只要愿意花工夫,坏掉的东西总是可以修好的。 #line:064318c
me: 就像生病一样吗? #line:0787636
jj: 就像生病一样。 #line:0aaec52
me: …那姐姐呢? #line:06e2595
jj: 姐姐… #line:0b33086
jj: 姐姐…恐怕要花很多很多工夫才能修好呢。 #line:0fb7a29
me: 我想要试试。我不怕花工夫。 #line:0c13230
jj: …… #line:0038deb
jj: 那你要快点长大喔~小麦克斯韦妖。 #line:01c4501
jj: …只要愿意花工夫,<waitfor=0.1>坏掉的东西总是可以修好的。 #line:064318c
me: 就像生病一样吗? #line:0787636
jj: 就像生病一样。 #line:0aaec52
me: …那姐姐呢? #line:06e2595
jj: 姐姐… #line:0b33086
jj: 姐姐…<waitfor=0.2>恐怕要花很多很多工夫才能修好呢。 #line:0fb7a29
me: 我想要试试。<waitfor=0.2>我不怕花工夫。 #line:0c13230
jj: …… #line:0038deb
jj: 那你要快点长大喔~小麦克斯韦妖。 #line:01c4501
//TODO: 【海浪声消退,时钟声淡入】
<<stop_music event:/Music/music_bar>>
<<set_global_param dream1Stage 0>>
@@ -49,11 +51,11 @@ jj: 那你要快点长大喔~小麦克斯韦妖。 #line:01c4501
me: …… #line:040a6eb
->…… #line:01c0e67
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0>>
你感到一只冷冰冰的手在你额头上拍了一下。 #line:07ffbe9
一只冷冰冰的手在你额头上拍了一下。 #line:07ffbe9
me: 嗷…… #line:068a3c5
->睁眼 #line:0be32a8
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0>>
me: …… #line:0b085ea
me: …… #line:0b085ea
<<jump 教室苏醒>>
===
@@ -63,32 +65,32 @@ tags: linear
<<stop_music event:/Amb/amb_beachsample fade>>
<<set_global_param dream1Stage 0.6>>
<<show_sprite "D1S教室">>
<i>一个穿着卡其裤的男孩站在你的面前,他的衣服上沾满了胡乱的墨迹。</i> #line:04c4490
me: …阿灿…? #line:083f1d6
boy: 什么啊?你怎么会在课上睡着了?? #line:093b81b
me: …我…做了一个很奇怪的梦。 #line:036489e
me: 我… #line:09b8068
<i>一个穿着卡其裤的男孩站在你的面前,<br>他的衣服上沾满了胡乱的墨迹。</i> #line:04c4490
me: …阿灿…? #line:083f1d6
boy: 什么啊?<waitfor=0.2><br>你怎么会在课上睡着了?? #line:093b81b
me: …我…<waitfor=0.1>做了一个很奇怪的梦。 #line:036489e
me: 我… #line:09b8068
->梦到机器人 #line:08e65c8
me: 我梦见我是一个机器人…大家都是机器人…… #line:0bfe290
boy: 我呢? #line:0a61e83
me: 你……应该也是吧。 #line:0f1a9da
boy: 哇!那应该很酷! #line:0493422
boy: 不过先别想你的那个梦了。我们还有要紧事要做呢。 #line:0459d59
me: 我梦见我是一个机器人…<waitfor=0.1><br>大家都是机器人…… #line:0bfe290
boy: 我呢? #line:0a61e83
me: 你……<waitfor=0.1>应该也是吧。 #line:0f1a9da
boy: 哇!<waitfor=0.2>那应该很酷! #line:0493422
boy: 不过先别想你的那个梦了。<waitfor=0.2><br>我们还有要紧事要做呢。 #line:0459d59
->梦到我是医生 #line:0ea32e2
me: 我梦见…我成了一个医生…… #line:01245ec
boy: 你成绩这么好,肯定会考上医生的。 #line:0be0e02
boy: 你姐姐也会没事的。你肯定会把她治好的! #line:08fe6de
boy: 不过先别想你的那个梦了。我们还有要紧事要做呢。 #line:0f2ea1c
me: 我梦见…<waitfor=0.1>我成了一个医生…… #line:01245ec
boy: 你成绩这么好,<waitfor=0.1>肯定会考上医生的。 #line:0be0e02
boy: 你姐姐也会没事的。<waitfor=0.2><br>你肯定会把她治好的! #line:08fe6de
boy: 不过先别想你的那个梦了。<waitfor=0.2><br>我们还有要紧事要做呢。 #line:0f2ea1c
->不记得了 #line:0db9a05
me: 我…不记得梦的内容了。 #line:063d357
boy: 你肯定就是太累了。你昨晚肯定又熬夜看书了吧。 #line:08caf8c
boy: 别想你的那个梦了。我们还有要紧事要做呢。 #line:0e79910
me: 我…<waitfor=0.1>不记得梦的内容了。 #line:063d357
boy: 你肯定就是太累了。<waitfor=0.2><br>你昨晚肯定又熬夜看书了吧。 #line:08caf8c
boy: 别想你的那个梦了。<waitfor=0.2><br>我们还有要紧事要做呢。 #line:0e79910
<<set_global_param dream1Stage 0.7>>
boy: 你说过今天就要把它修好的。快来! #line:0d5aa08
me: 谁? #line:0daae78
boy: 你睡糊涂啦?快来吧! #line:023c325
<i>男孩迫不及待地跑出了教室。</i> #line:0b62a5a
me: 喂!等下…… #line:0724d32
boy: 你说过今天就要把它修好的。<waitfor=0.2><br>快来! #line:0d5aa08
me: 谁? #line:0daae78
boy: 你睡糊涂啦?<waitfor=0.2>快来吧! #line:023c325
<i>男孩迫不及待地跑出了教室。</i> #line:0b62a5a
me: 喂!<waitfor=0.2>等下…… #line:0724d32
<<play_music event:/Music/mus_dream1>>
<<set_global_param dream1Stage 1>>
<<jump 教室>>
@@ -116,28 +118,28 @@ tags: hub
title: 教室_入场
tags: detour
---
<i>你站在空荡荡的教室里。<br>教室里空无一人,只有轻轻飘动的窗帘发出的扑梭声。</i> #line:0557c68
<i>你站在空荡荡的教室里。<br>教室里空无一人,<br>只有轻轻飘动的窗帘发出的扑梭声。</i> #line:0557c68
===
title: 观察
tags: detour
---
->窗外 #line:07f8e7b
<i>刺眼的阳光照在你的眼睛上,你一下子什么也看不清了。</i> #line:0bf7a33
<i>忽然你感到什么东西在你的脸上掠过,你退了回来。</i> #line:0138c7d
<i>原来是窗帘啊。</i> #line:0d9556c
<i>刺眼的阳光照在你的眼睛上,<br>你一下子什么也看不清了。</i> #line:0bf7a33
<i>忽然你感到<br>什么东西在你的脸上掠过,<br>你退了回来。</i> #line:0138c7d
<i>原来是窗帘啊。</i> #line:0d9556c
<<once if $slept>>
<i>窗台上的什么东西引起了你的注意。</i> #line:0e6015b
【你获得了:羽毛】 #line:03ea994
<i>窗台上的什么东西引起了你的注意。</i> #line:0e6015b
【你获得了:羽毛】 #line:03ea994
<<endonce>>
->黑板 #line:0514970
<i>黑板上似乎还留着一些板书和记录。</i> #line:09a5060
<i>你认为这些内容应该很简单,仔细一读却什么也看不懂。</i> #line:078fb75
<i>你觉得有些心慌。</i> #line:0fce30a
->走廊 #line:07a50e3
<i>走廊空荡荡的,时不时传来一些遥远的嬉闹声。</i> #line:03a2b9c
<i>一阵风掠过,窗户在窗框上振动,发出轻轻的铛铛声。</i> #line:02d8b46
<i>风停了。</i> #line:093de56
->黑板 #line:0514970
<i>黑板上似乎还留着一些板书和记录。</i> #line:09a5060
<i>你认为这些内容应该很简单,<br>仔细一读却什么也看不懂。</i> #line:078fb75
<i>你觉得有些心慌。</i> #line:0fce30a
->走廊 #line:07a50e3
<i>走廊空荡荡的,<br>时不时传来一些遥远的嬉闹声。</i> #line:03a2b9c
<i>一阵风掠过,<br>窗户在窗框上振动,<br>发出轻轻的铛铛声。</i> #line:02d8b46
<i>风停了。</i> #line:093de56
===
title: 趴回去再睡会
@@ -145,9 +147,9 @@ tags: detour
---
me: …… #line:00ab4f3
<<hide_sprite>>
<i>你尝试清空思绪。</i> #line:043d77c
<i>有两只鸟好像落在了窗户附近的树枝上,欢快地鸣叫。</i> #line:003e9cb
<i>阳光照在你身上,暖暖的。</i> #line:0d1cbab
<i>你尝试清空思绪。</i> #line:043d77c
<i>有两只鸟好像落在了<br>窗户附近的树枝上,<br>欢快地鸣叫。</i> #line:003e9cb
<i>阳光照在你身上,暖暖的。</i> #line:0d1cbab
->醒来 #line:08cbcd5
me: …… #line:04dbccf
<<show_sprite "D1S教室">>
@@ -162,7 +164,7 @@ tags: hub
<<set_global_param dream1scene 1>>
<<once if $ppStage>=1 && $gameStage==0>>
<<set $pphChecked=true>>
<i>你走下楼梯,火红的夕阳透过玻璃,在整个走廊的空气里回荡。</i> #line:0dbf438
<i>你走下楼梯,<br>火红的夕阳透过玻璃,<br>在整个走廊的空气里回荡。</i> #line:0dbf438
<<show_sprite "D1S走廊2">>
<<set $gameStage=1>>
<<endonce>>
@@ -185,7 +187,7 @@ title: 离开_打量
tags: detour
---
<<once>>
<i>你打量着这条走廊。在你身后,走廊通向一个楼梯间;<br>在你身前,走廊曲折地延伸出去,看不到尽头。</i> #line:0602eb0
<i>你打量着这条走廊。<br>在你身后,走廊通向一个楼梯间;<br>在你身前,走廊曲折地延伸出去,<br>看不到尽头。</i> #line:0602eb0
<<endonce>>
===
@@ -193,7 +195,7 @@ title: 走廊_入场
tags: detour
---
<<if $ppStage!=2>>
<i>你站在一条长长的走廊。阳光看起来很不错。<br>一个穿着连帽卫衣的女孩正在玻璃上画画。</i> #line:0d69997
<i>你站在一条长长的走廊。<br>阳光看起来很不错。<br>一个穿着连帽卫衣的女孩<br>正在玻璃上画画。</i> #line:0d69997
<<endif>>
===
@@ -201,8 +203,8 @@ title: 走廊窗外
tags: detour
---
<<show_sprite "D1S走廊-小镇">>
<i>看起来是一个很普通小镇,远处是层层叠叠小楼。你有一阵熟悉的感觉,好像其中一幢就是你的家。</i> #line:0304d72
<i>阳光照在你身上,暖暖的。</i> #line:0650718
<i>一个很普通小镇,远处是层层叠叠小楼。<br>你有一阵熟悉的感觉,好像其中一幢就是你的家。</i> #line:0304d72
<i>阳光照在你身上,暖暖的。</i> #line:0650718
===
title: 楼梯间
@@ -223,7 +225,7 @@ tags: hub
title: 楼梯间_入场
tags: detour
---
<i>你站在满是灰尘的楼梯间,上面似乎就是天台。</i> #line:0c3fb6b
<i>你站在满是灰尘的楼梯间,<br>上面似乎就是天台。</i> #line:0c3fb6b
===
title: 女孩
@@ -241,11 +243,11 @@ tags: detour
---
<<detour 展示佩佩_Func>>
<<if $gameStage==0>>
<i>女孩正在玻璃上调试着颜色。<br>看到你靠近,她不好意思地停下了笔。</i> #line:0043186
<i>女孩正在玻璃上调试着颜色。<br>看到你靠近,<br>她不好意思地停下了笔。</i> #line:0043186
<<elseif $gameStage==1>>
<i>女孩正专注地向天空中添加红色,没有注意到你的靠近。</i> #line:0a76fb1
<i>女孩正专注地向天空中添加红色,<br>没有注意到你的靠近。</i> #line:0a76fb1
<<else>>
<i>女孩正专注地向天空中添加颜色,没有注意到你的靠近。</i> #line:0d39c58
<i>女孩正专注地向天空中添加颜色,<br>没有注意到你的靠近。</i> #line:0d39c58
<<endif>>
===
@@ -265,35 +267,35 @@ title: 女孩_初次交谈
tags: detour
---
<<once>>
me: 这是…在画什么? #line:079eea7
girl: 对不起…我这就擦掉。 #line:0deb6fb
me: 不不…我只是好奇。 #line:0203769
girl: 啊…我只是…在想天空的颜色。 #line:0125ea8
me: 天空的颜色?蓝色么不是。 #line:0ad6d74
girl: 没错,但是……蓝色也有很多种蓝呢。 #line:0a81ec2
girl: 天蓝色,湖蓝色,宝蓝色,海军蓝,矢车菊蓝…… #line:046d021
girl: 你说的对…应该是矢车菊的蓝才对呢。 #line:021390b
me: 我? #line:0ab7567
girl: 不管怎样…先把另一种颜色调出来吧。 #line:0d4cf1d
<i>女孩开始自顾自地调试起颜色。</i> #line:02e75b6
me: 这是…<waitfor=0.1>在画什么? #line:079eea7
girl: 对不起…<waitfor=0.1>我这就擦掉。 #line:0deb6fb
me: 不不…<waitfor=0.1>我只是好奇。 #line:0203769
girl: 啊…<waitfor=0.1>我只是…<waitfor=0.1>在想天空的颜色。 #line:0125ea8
me: 天空的颜色?<waitfor=0.2>蓝色么不是。 #line:0ad6d74
girl: 没错,<waitfor=0.1>但是……<waitfor=0.1>蓝色也有很多种蓝呢。 #line:0a81ec2
girl: 天蓝色,<waitfor=0.1>湖蓝色,<waitfor=0.1>宝蓝色,<waitfor=0.1><br>海军蓝,<waitfor=0.1>矢车菊蓝…… #line:046d021
girl: 你说的对…<waitfor=0.1>应该是矢车菊的蓝才对呢。 #line:021390b
me: 我? #line:0ab7567
girl: 不管怎样…<waitfor=0.1>先把另一种颜色调出来吧。 #line:0d4cf1d
<i>女孩开始自顾自地调试起颜色。</i> #line:02e75b6
<<else>>
girl: 嗯…应该再加一点白才对… #line:051929d
<i>女孩一边调试颜色一边自言自语。</i> #line:05b0c2f
girl: 嗯…<waitfor=0.1>应该再加一点白才对… #line:051929d
<i>女孩一边调试颜色一边自言自语。</i> #line:05b0c2f
<<endonce>>
===
title: 女孩_等待矢车菊
tags: detour
---
me: 这是…你画的? #line:03c63c9
girl: …是…但颜色还是不太对。 #line:031d1ac
girl: 矢车菊蓝…总还是差一点啊。 #line:07f05d1
me: 这是…<waitfor=0.1>你画的? #line:03c63c9
girl: …是…<waitfor=0.1>但颜色还是不太对。 #line:031d1ac
girl: 矢车菊蓝…<waitfor=0.1>总还是差一点啊。 #line:07f05d1
<<if $scj==1>>
->矢车菊 #line:0f763eb
<<detour 递矢车菊>>
<<else>>
me: 除了颜色…你能画些别的东西吗? #line:061aeb0
<i>女孩似乎没有听见你说话。</i> #line:0cce274
me: 除了颜色…<waitfor=0.1>你能画些别的东西吗? #line:061aeb0
<i>女孩似乎没有听见你说话。</i> #line:0cce274
<<endif>>
===
@@ -301,28 +303,28 @@ title: 递矢车菊
tags: detour
---
<<show_sprite "递出矢车菊夕阳">>
girl: 这是…给我的? #line:0fd6134
girl: 这是…<waitfor=0.1>给我的? #line:0fd6134
me: 希望这值得。 #line:00f67c4
girl: (笑)会的。 #line:063cdb2
<<detour 递矢车菊_Set>>
girl: ……嗯…闭上眼睛吧。 #line:0dfb357
girl: ……嗯…<waitfor=0.1>闭上眼睛吧。 #line:0dfb357
<<hide_sprite>>
girl: 好了。 #line:03a21b0
<<show_sprite "D1S佩佩3">>
<i>女孩看着自己的作品出神。</i> #line:09b6db4
me: 除了颜色…你能画些别的东西吗? #line:038e79e
me: 除了颜色…<waitfor=0.1>你能画些别的东西吗? #line:038e79e
girl: 别的东西? #line:0fd97ed
me: 比如说…一扇本该存在的门。 #line:018c2f5
girl: 啊,我知道你是什么意思。(笑) #line:04369ab
girl: 不过,门后面你要找的东西,我可画不出来喔。 #line:071eeb3
<i>你发现从这里正好可以透过玻璃看到天文台。</i> #line:026ad07
<i>女孩沾了沾颜料,一边哼歌一边继续涂画着。</i> #line:006fb3e
me: 比如说…<waitfor=0.1>一扇本该存在的门。 #line:018c2f5
girl: 啊,<waitfor=0.1>我知道你是什么意思。(笑) #line:04369ab
girl: 不过,<waitfor=0.1>门后面你要找的东西,<waitfor=0.1>我可画不出来喔。 #line:071eeb3
<i>你发现从这里正好可以<br>透过玻璃看到天文台。</i> #line:026ad07
<i>女孩沾了沾颜料,<br>一边哼歌一边继续涂画着。</i> #line:006fb3e
===
title: 女孩_已完成
tags: detour
---
girl: <i>女孩一边哼歌一边继续涂画着,没有听到你的声音。</i> #line:01ef1ed
girl: <i>女孩一边哼歌一边继续涂画着,<br>没有听到你的声音。</i> #line:01ef1ed
===
title: 天台
@@ -359,38 +361,38 @@ tags: detour
---
<<if $gameStage == 0>>
<<detour 展示天台_Func>>
<i>你站在教学楼的楼顶,视野开阔。<br>阳光照在头顶有些发烫,风也暖暖的。<br>天文台的环形走廊高高的,阿灿正靠在上面发呆。</i> #line:0d3ce27
<i>你站在教学楼的楼顶,视野开阔。<br>阳光照在头顶有些发烫,风也暖暖的。<br>天文台的环形走廊高高的,<br>阿灿正靠在上面发呆。</i> #line:0d3ce27
<<once>>
boy: 喂!上来! #line:061bd66
me: 你刚才说…我们要修谁? #line:0fbf127
boy: 你睡糊涂了吧,你要修理谁?亏你还想做医生呢! #line:0292c23
boy: 喂!<waitfor=0.2>上来! #line:061bd66
me: 你刚才说…<waitfor=0.1>我们要修谁? #line:0fbf127
boy: 你睡糊涂了吧,<waitfor=0.1>你要修理谁?<waitfor=0.2><br>亏你还想做医生呢! #line:0292c23
me: 我… #line:032bd1e
me: 我睡糊涂了。 #line:02ac5f7
<<hide_dialog>>
<<wait 0.5>>
<i>阿灿指向了天文台。</i> #line:03ef5a4
boy: 你自己说的啊,要把这个修好。 #line:0321859
me: 天文台?为什么? #line:059af3c
boy: 拜托,你自己说的,你说要替她修好的。 #line:0b879a6
boy: 你自己说的啊,<waitfor=0.1>要把这个修好。 #line:0321859
me: 天文台?为什么? #line:059af3c
boy: 拜托,<waitfor=0.1>你自己说的,<waitfor=0.1>你说要替她修好的。 #line:0b879a6
<<hide_dialog>>
<<wait 0.5>>
me: 她?这里…还是关于她的么…… #line:054776d
boy: 什么啊?什么梦啊,你在说什么啊? #line:04ceb1f
boy: 不过…它的入口在哪里呢…门怎么不存在了?奇怪。 #line:09585b5
boy: 这下可怎么进去啊…… #line:0f47162
me: 她?<waitfor=0.2>这里…<waitfor=0.1>还是关于她的么…… #line:054776d
boy: 什么啊?<waitfor=0.2><br>什么梦啊,你在说什么啊? #line:04ceb1f
boy: 不过…<waitfor=0.1>它的入口在哪里呢…<waitfor=0.1><br>门怎么不存在了?<waitfor=0.2>奇怪。 #line:09585b5
boy: 这下可怎么进去啊…… #line:0f47162
<<detour 天台首次剧情_Set>>
<<endonce>>
<<elseif $gameStage == 1>>
<<once>>
<<show_sprite "D1S天台-山2">>
<<if $pphChecked==false>>
<i>一眨眼的功夫,你发现天已经变成了火红色,像油墨画一样。</i> #line:0376342
<i>一眨眼的功夫,<br>你发现天已经变成了火红色,<br>像油墨画一样。</i> #line:0376342
<<else>>
<i>火红色的天,像油墨画一样。</i> #line:0c2c51b
<<endif>>
<<endonce>>
<<detour 展示天台_Func>>
<i>你站在教学楼的楼顶,视野开阔。<br>空气中似乎有种熟悉的令人昏昏沉沉的气味……</i> #line:0325825
<i>你站在教学楼的楼顶,视野开阔。<br>空气中似乎有种熟悉的<br>令人昏昏沉沉的气味……</i> #line:0325825
<<else>>
<<detour 展示天台_Func>>
<i>你站在教学楼的楼顶,视野开阔。<br>天蓝蓝的,风也有点儿冷了。<br>你感觉好像有人在喊你。</i> #line:0f4be5a
@@ -401,8 +403,8 @@ title: 天台检查
tags: detour
---
->窗户 #line:03e43b8
<i>天文台下面有一排窗户。里面看起来是一个布满灰尘的走廊,走廊的两端没有门,也没有窗。</i> #line:06ee6b8
<i>很奇怪。似乎从来没有人进去过,也从来没有人能进去。</i> #line:0f4c9c2
<i>天文台下面有一排窗户。<br>里面看起来是一个布满灰尘的走廊,<br>走廊的两端没有门,<br>也没有窗。</i> #line:06ee6b8
<i>很奇怪。<br>似乎从来没有人进去过,<br>也从来没有人能进去。</i> #line:0f4c9c2
->地上<<if $gameStage < 2>> #line:06fcea6 #deps:gameStage
<<if $gameStage==0>>
<<if $scj == 0>>
@@ -417,18 +419,18 @@ tags: detour
<<show_sprite "D1S天台-地板2">>
<<endif>>
<<endif>>
<i>地上排布着黑乎乎脏兮兮的隔热砖。太阳把地板晒得很烫。</i> #line:08d113b
<i>门在哪里呢?</i> #line:0bb74cd
boy: 你在找什么啊?入口怎么可能在地上啦。 #line:0de80f3
<i>地上排布着<br>黑乎乎脏兮兮的隔热砖。<br>太阳把地板晒得很烫。</i> #line:08d113b
<i>门在哪里呢?</i> #line:0bb74cd
boy: 你在找什么啊?<waitfor=0.2><br>入口怎么可能在地上啦。 #line:0de80f3
<<if $scj==0>>
<i>你注意到了不起眼角落里的什么东西。</i> #line:0a5cf5d
<<detour 捡起矢车菊_Set>>
【获得:矢车菊】 #line:0229f7b
<<endif>>
<i>你直起腰。<br>背上的衣服沾满了汗,垂坠下来,带进凉飕飕的空气。</i> #line:0f99bb3
<i>你直起腰。<br>背上的衣服沾满了汗,<br>垂坠下来,<br>带进凉飕飕的空气。</i> #line:0f99bb3
->远眺 #line:06a03c9
<<detour 展示山_Func>>
<i>小镇的尽头是一座绿绿的小山丘,小山丘的那边是另一座小山丘,小山丘的那边是另一座小山丘……</i> #line:0a12383
<i>小镇的尽头是一座绿绿的小山丘,<br>小山丘的那边是另一座小山丘,<br>小山丘的那边是另一座小山丘……</i> #line:0a12383
===
title: 上去_与阿灿_开场
@@ -437,7 +439,7 @@ tags: detour
<i>环形走廊很高,你走到阿灿身边。</i> #line:0545696
boy: 你找到门在哪里了吗? #line:00d0860
me: 还没呢。 #line:0eecfc0
boy: 啊?这下怎么办啊。我还怎么变成星星啊…… #line:021452a
boy: 啊?<waitfor=0.2>这下怎么办啊。<waitfor=0.2><br>我还怎么变成星星啊…… #line:021452a
===
title: 上去_远眺
@@ -448,20 +450,20 @@ tags: detour
<<elseif $gameStage==1>>
<<show_sprite "D1S天台-山2">>
<<endif>>
boy: 你看到那边那座山了吗? #line:0a53d71
me: 嗯哼。 #line:05e0384
boy: 你知道吗?山的南边就是大海。 #line:01d486a
me: 海不是在东边吗? #line:03b0c59
boy: 这只是一种比喻啦! #line:06984b6
boy: 山的南边的南边…只要你走足够远,总会走到海边的。 #line:0314896
<i>你眯起眼睛使劲向远处往,但远处好被什么雾笼盖住了。</i> #line:0fb72c4
boy: 不过,现在还是先找天文台的入口吧。 #line:0fb2c0b
boy: 你看到那边那座山了吗? #line:0a53d71
me: 嗯哼。 #line:05e0384
boy: 你知道吗?<waitfor=0.2>山的南边就是大海。 #line:01d486a
me: 海不是在东边吗? #line:03b0c59
boy: 这只是一种比喻啦! #line:06984b6
boy: 山的南边的南边…<waitfor=0.1><br>只要你走足够远,<waitfor=0.1><br>总会走到海边的。 #line:0314896
<i>你眯起眼睛使劲向远处望,<br>但远处好被什么雾笼盖住了。</i> #line:0fb72c4
boy: 不过,<waitfor=0.1>现在还是先找天文台的入口吧。 #line:0fb2c0b
===
title: 上去_画门_描述
tags: detour
---
<i>墙上洋洋洒洒地画着一扇金属门,门敞开着,里面似乎有人在呼唤你。</i> #line:0124137
<i>墙上洋洋洒洒地画着一扇金属门,<br>门敞开着,<br>里面似乎有人在呼唤你。</i> #line:0124137
===
title: 天文台
@@ -496,10 +498,10 @@ tags: hub
title: 天文台_入场
tags: detour
---
<i>你站在一间昏暗的圆形房间里。房间的正中央是一台天文望远镜,看起来很久没人用了。房间一死寂,地上、桌上,遍布着灰尘。</i> #line:0a229cf
<i>你站在一间昏暗的圆形房间里。<br>房间的正中央是一台天文望远镜,<br>看起来很久没人用了。<br>房间一死寂,<br>地上、桌上,<br>遍布着灰尘。</i> #line:0a229cf
<<if $wyjStage == 1>>
<<set_global_param dream1Stage 2>>
<i>手上的目镜沉甸甸的。看起来只是胶圈坏了。</i> #line:083c3be
<i>手上的目镜沉甸甸的。<br>看起来只是胶圈坏了。</i> #line:083c3be
<<elseif $wyjStage == 2>>
<<set_global_param dream1Stage 2.5>>
<i>空气仿佛正在变得模糊而潮湿。</i> #line:0a115bc
@@ -514,17 +516,17 @@ title: 天文台观察
tags: detour
---
->日历 #line:01894bd
<i>黄黄的日历的顶端印着几个数字,2后面跟着好多个0。</i> #line:0659b59
<i>你伸手一碰,那一页日历就像薄脆一样碎了。</i> #line:04f153a
<i>下面的一页上面也印着几个数字,看起来和上一页一样。</i> #line:0ce73c7
<i>黄黄的日历的顶端印着几个数字,<br>2后面跟着好多个0。</i> #line:0659b59
<i>你伸手一碰,<br>那一页日历就像薄脆一样碎了。</i> #line:04f153a
<i>下面的一页上面也印着几个数字,<br>看起来和上一页一样。</i> #line:0ce73c7
->便笺 #line:0fb3a58
<<if $wyjStage == 0>>
<i>望远镜上贴着一张黄色的便笺。</i> #line:0179879
hs: 你跑到哪里去了?我先上去,不等你啦 :P #line:0cbc819
hs: 你跑到哪里去了?<waitfor=0.2><br>我先上去,<waitfor=0.1>不等你啦 :P #line:0cbc819
<<elseif $wyjStage == 1>>
<i>望远镜上贴着一张褪色的便笺。</i> #line:0ff2298
hs: ……哪…去了…我先……不等…… #line:01ad7c7
<i>字迹模糊不清,看起来是很久很久以前写的。</i> #line:0529b64
hs: ……<waitfor=0.2>哪…<waitfor=0.1>去了…<waitfor=0.1>我先……<waitfor=0.1>不等…… #line:01ad7c7
<i>字迹模糊不清,<br>看起来是很久很久以前写的。</i> #line:0529b64
<<else>>
<i>望远镜上贴着一张白色的便笺。</i> #line:092260e
<i>你碰了一下,便笺碎掉了。</i> #line:012a3a1
@@ -532,16 +534,16 @@ tags: detour
->仪器 #line:007cbe4 #deps:wyjStage,hasCompressionRing
<i>这些仪器看着很像你工作用的工具……</i> #line:0076043
<<if $wyjStage == 0>>
<i>……不对,你真的有那个工作吗?你只是一个学生吧。</i> #line:0256c87
<i>……不对,<br>你真的有那个工作吗?<br>你只是一个学生吧。</i> #line:0256c87
<<elseif $wyjStage == 1>>
me: 只要…什么都能修好,对吧。你说的… #line:005b630
me: 只要…<waitfor=0.1>什么都能修好,<waitfor=0.1>对吧。<waitfor=0.2>你说的… #line:005b630
<<endif>>
<<if $hasCompressionRing == false && $wyjStage < 2>>
->翻找零件 #line:09c5690
<i>大部分零件你都不认识。不过你的运气不错。</i> #line:04bff73
<i>大部分零件你都不认识。<br>不过你的运气不错。</i> #line:04bff73
->完好的压缩环 #line:06c0942
<<if $wyjStage == 0>>
<i>你拿起一个小小的金属环。你还不知道它能用在哪里。</i> #line:0c9a2d1
<i>你拿起一个小小的金属环。<br>你还不知道它能用在哪里。</i> #line:0c9a2d1
<<else>>
me: 这下应该可以了。 #line:01ed9bc
<<endif>>
@@ -553,20 +555,20 @@ title: 望远镜_开场
tags: detour
---
<<if $wyjStage == 0>>
<i>望远镜很大,上面刻着你看不懂的参数和型号。</i> #line:04e4782
<i>望远镜很大,<br>上面刻着你看不懂的参数和型号。</i> #line:04e4782
<<elseif $wyjStage == 1>>
<i>望远镜很大,不过比你想象的又要小一些。</i> #line:04d3d85
<i>望远镜很大,<br>不过比你想象的又要小一些。</i> #line:04d3d85
<<else>>
<i>望远镜上覆盖着厚厚的灰尘,螺丝钉锈迹斑斑。</i> #line:0154dea
<i>原来它有这么旧吗?</i> #line:0bbc574
<i>望远镜上覆盖着厚厚的灰尘,<br>螺丝钉锈迹斑斑。</i> #line:0154dea
<i>原来它有这么旧吗</i> #line:0bbc574
<<endif>>
===
title: 安装目镜
tags: detour
---
<i>你记得这很困难。但这比你印象中的轻松太多了。</i> #line:0edf096
me: 我修好了!对吧?我修好了…… #line:0e80e94
<i>你记得这很困难。<br>但这比你印象中的轻松太多了。</i> #line:0edf096
me: 我修好了!<waitfor=0.2>对吧?<waitfor=0.2>我修好了…… #line:0e80e94
===
title: 往里看
@@ -579,13 +581,13 @@ tags: detour
<i>咔哒一声,什么东西掉了下来。</i> #line:00f87b1
me: 哎呀… #line:07be273
->接住 #line:0f8dd82
<i>你的手上拿着望远镜的目镜,看起来就像小号的望远镜。</i> #line:0b032ff
<i>除此之外,还有一个断成两半的环。看起来是用来固定目镜的零件。</i> #line:0daf5f6
<i>你的手上拿着望远镜的目镜,<br>看起来就像小号的望远镜。</i> #line:0b032ff
<i>除此之外,<br>还有一个断成两半的环。<br>看起来是用来固定目镜的零件。</i> #line:0daf5f6
<<detour 目镜掉落_Set>>
<<elseif $wyjStage == 1 || $wyjStage == 2>>
<<set_global_param dream1Stage 3>>
<i>目镜原来在的位置上是一个黑漆漆的洞。</i> #line:02bcbcb
<i>往里面看去什么也没有,只能听到灰尘的声音。</i> #line:0c4d195
<i>目镜原来在的位置上<br>是一个黑漆漆的洞。</i> #line:02bcbcb
<i>往里面看去什么也没有,<br>只能听到灰尘的声音。</i> #line:0c4d195
//TODO: 增加海浪音量
<<endif>>
===
@@ -602,44 +604,45 @@ tags: linear
<<set_global_param prologueDreamStage 1>>
<<play_timeline 星空到海浪>>
<<set_global_param dream1Stage 5>>
<<wait 2>>
jj: 你不该来这的。 #line:0df4d91
me: 我也不想梦见你。可是…… #line:0ec80fc
me: 不管梦的内容是什么……最后总会到这儿来,对吧。 #line:0b49833
jj: 对或者不对,取决于你自己。 #line:0d90409
me: 我也不想梦见你。<waitfor=0.2>可是…… #line:0ec80fc
me: 不管梦的内容是什么……<waitfor=0.1><br>最后总会到这儿来,<waitfor=0.1>对吧。 #line:0b49833
jj: 对或者不对,<waitfor=0.1>取决于你自己。 #line:0d90409
me: 假如…… #line:0cf7ae6
me: 假如你是真的就好了。 #line:02bbbbc
//TODO: (海浪声)
<i>你仿佛感觉自己的手被握住了。</i> #line:025dad2
jj: 假如我是真的,我会希望我是假的。 #line:018c643
jj: 我还希望当你醒来,你就会忘记我。 #line:05b81f4
jj: 假如我是真的,<waitfor=0.1><br>我会希望我是假的。 #line:018c643
jj: 我还希望当你醒来,<waitfor=0.1><br>你就会忘记我。 #line:05b81f4
me: 你知道么? #line:07f5b5e
me: 现实里不是所有东西坏了都能修好的。 #line:0ab64a2
me: 这就是它们把你写进我的原型的原因。 #line:055f6cf
me: 一个永远不可能被修好的……一个无法被完成的遗憾。 #line:07fee71
me: 一个固执的…偏执的……有缺陷的…… #line:070fc03
me: 一个永远不可能被修好的……<waitfor=0.1><br>一个无法被完成的遗憾。 #line:07fee71
me: 一个固执的…<waitfor=0.1>偏执的……<waitfor=0.1>有缺陷的…… #line:070fc03
jj: 不。你已经做得很好了。 #line:0989b0e
jj: 你是一个很棒的医生,不是吗? #line:052f57a
jj: 毕竟,我知道你是来做什么的。 #line:05c73fe
jj: 你是一个很棒的医生,<waitfor=0.1>不是吗? #line:052f57a
jj: 毕竟,<waitfor=0.1>我知道你是来做什么的。 #line:05c73fe
me: 姐姐…… #line:099fc97
jj: 姐姐愿意被*解决*。 #line:00fc25d
<i>你没有说话。站起身,海风吹在你的脸上,咸咸的,让人反胃。</i> #line:0185dd3
<i>你没有说话。<br>站起身,海风吹在你的脸上,<br>咸咸的,<br>让人反胃。</i> #line:0185dd3
me: 姐姐! #line:017c7f1
<i>海风吹在你的脸上,迅速地吞没了你的回声。</i> #line:012ae52
<i>海风吹在你的脸上,<br>迅速地吞没了你的回声。</i> #line:012ae52
<i>扑通!</i> #line:0adf6d2
<i>你把手里的东西远远地抛进了大海里。</i> #line:029a7e3
<i>你把手里的东西远远地<br>抛进了大海里。</i> #line:029a7e3
me: 我再也不欠你什么了! #line:0597cda
jj: 你本来就不欠我什么。 #line:0fa59bb
<i>姐姐的声音变得不稳定起来。</i> #line:060d93b
me: …我本来就…不欠你什么。 #line:0ebcd24
me: …我本来就…<waitfor=0.1>不欠你什么。 #line:0ebcd24
<i>姐姐笑了。声音越来越遥远,像是从门的另一边传来的。</i> #line:0ca4d3b
<i>姐姐笑了。<br>声音越来越遥远,<br>像是从门的另一边传来的。</i> #line:0ca4d3b
jj: 该醒来了,路斯。 #line:03c9e3c
@@ -17,29 +17,29 @@ position: 0,400
<<fade_in_actor 窗外佩佩>>
<<fade_out 1>>
<<wait 0.5>>
yingli_novoice: …我不允许就因为你的怪病,让整个部门评价都受到影响。 #line:0706187
peipei_novoice: 我没病,主管…只是没注意…<br>…我之后会注意的。<br>我会完成得很好的…相信我。 #line:0a29d9c
peipei_novoice: 我以前…… #line:0d5302d
//#auto_next
yingli_novoice: 我不在乎你以前做得有多好,<br>那对我来说没有任何意义。 #line:005f424
yingli_novoice: 我已经说过很多次了。<br>这是你最后的机会。明白吗?<br>再做不好,你就会被[[size]]<b><size=100%><color=\#FFB200>回收</color></b>[[/size]]。 #line:0577dcd
yingli_novoice: 不用我和你说<br>这意味着什么吧? #line:075b89d
peipei_novoice: <shake>我…<waitfor=0.3>我不要被<waitfor=0.3><b><size=100%><color=\#FFB200>回收</color></b><waitfor=0.5>……</shake> #line:030100c
yingli_novoice: …我不接受<waitfor=0.1>就因为你的怪病,<waitfor=0.1><br>整个部门评价都受到影响。 #line:0706187
peipei_novoice: 我没病,<waitfor=0.1>主管…<waitfor=0.1>只是没注意…<waitfor=0.2><br>…我之后<waitfor=0.1>会注意的。<waitfor=0.2><br>我会<waitfor=0.1>完成得很好<waitfor=0.1>的…<waitfor=0.3>相信我。 #line:0a29d9c
peipei_novoice: 我<waitfor=0.1>以前…… #line:0d5302d
yingli_novoice: [[size d=0.1]]我[[/size]]不在乎<waitfor=0.1>你以前做得有多好,<br><waitfor=0.1>那对我来说没有任何意义。 #line:005f424
yingli_novoice: 我已经说过很多次了。<waitfor=0.1><br>这是你最后的机会。<waitfor=0.1>明白吗?<waitfor=0.3><br>再做不好,<waitfor=0.1>你就会被<waitfor=0.2>[[size d=0.1]]<b><color=\#FFB200>回收</color></b>[[/size]]。 #line:0577dcd
yingli_novoice: 不用我和你说<waitfor=0.2><br>这意味着什么吧? #line:075b89d
peipei_novoice: <shake a=0.3><color=\#5F5F5F>我…<waitfor=0.3>我不要被</color><waitfor=0.3><b><size=100%><color=\#FFB200>回收</color></b><waitfor=0.5><color=\#5F5F5F>……</color></shake> #line:030100c
<<hide_dialog>>
<<wait 0.5>>
yingli_novoice: 公司花了很多资源培养你。<br>就算你自己不在乎,也不要让我难堪。 #line:031279a
peipei_novoice: <shake>我……</shake> #line:028d6e3
yingli_novoice: 公司花了很多资源培养你。<waitfor=0.3><br>就算你自己不在乎,<waitfor=0.1>也不要让我难堪。 #line:031279a
peipei_novoice: <shake a=0.3><color=\#5F5F5F>我……</color></shake> #line:028d6e3
yingli_novoice: 听着,<waitfor=0.3>佩佩。<waitfor=0.3><br>我是在帮你。 #line:0b67f6a
<<wait 0.5>>
yingli_novoice: 你一直是垫底的美工型号,<waitfor=0.3><br>为了保住你,<waitfor=0.3><br>我在承担你难以想象的压力。 #line:0dcbea5
yingli_novoice: …… #line:0691cca
<<hide_dialog>>
<<wait 0.5>>
yingli_novoice: 做个身体检查,接受治疗。<waitfor=0.3><br>无论如何,今晚好好休息。 #line:0e36c2b
peipei_novoice: 是的,主管。 #line:07b19bb
yingli_novoice: 做个身体检查,<waitfor=0.1>接受治疗。<waitfor=0.3><br>无论如何,<waitfor=0.1>今晚好好休息。 #line:0e36c2b
peipei_novoice: 是的,<waitfor=0.3>主管。 #line:07b19bb
<<hide_dialog>>
<<wait 0.5>>
@@ -59,7 +59,7 @@ tags: content
<<hide_dialog>>
<<wait 2>>
me: 那不是个好对付的家伙呢。 #line:0e7046d
me: 那不是个<waitfor=0.1>好对付的家伙<waitfor=0.1>呢。 #line:0e7046d
<<hide_dialog>>
<<wait 0.5>>
@@ -80,22 +80,23 @@ peipei: 啊…<waitfor=0.3>你都听到了? #line:0011af2
<<change_actor_state 1>>
<<wait 0.5>>
peipei: 对不起…<waitfor=0.3>打扰到你了。 #line:0683319
me: 没有的事,这是我的工作。<br>说说吧。怎么了,<waitfor=0.3>身体哪里不舒服? #line:0eb32ca
peipei: 不舒服吗?倒也没有哪里不舒服……<waitfor=0.3><br>但最近工作表现确实很差。 #line:0b0fbac
me: 没有的事,<waitfor=0.1>这是我的工作。<br>说说吧。<waitfor=0.1>怎么了,<waitfor=0.3>身体<waitfor=0.1>哪里不舒服? #line:0eb32ca
peipei: 不舒服吗?<waitfor=0.1>倒也没有哪里不舒服……<waitfor=0.3><br>但最近工作表现<waitfor=0.1>确实很差。 #line:0b0fbac
//<<switch_character_state 默认闭眼>>
//<<wait 0.1>>
//<<switch_character_state 默认>>
peipei: 我也不知道为什么,<waitfor=0.3><br>总是没办法和<b>UF</b>沟通清楚… #line:0ae1850
peipei: 这次也是一样,<waitfor=0.3>我很努力了…<br>但<b>UF</b>画出来的图始终就是不合格。 #line:09ee070
me: <b>UF</b>…<waitfor=0.5>是什么绘图工具<waitfor=0.2>吗?<br><waitfor=0.5>画笔? #line:088f98f
peipei: 我也不知道<waitfor=0.1>为什么,<waitfor=0.3><br>总是<waitfor=0.1>没办法和<b><color=\#FFB200>UF</color></b><waitfor=0.1>沟通清楚… #line:0ae1850
peipei: 这次也是一样,<waitfor=0.3>我很努力了…<br>但<b>UF</b>画出来的图<waitfor=0.1>始终<waitfor=0.1>就是<waitfor=0.1>不合格。 #line:09ee070
me: <b><color=\#FFB200>UF</color></b>…<waitfor=0.5>是什么<waitfor=0.1>绘图工具<waitfor=0.2>吗?<br><waitfor=0.5>画笔? #line:088f98f
<<hide_dialog>>
<<wait 1.6>>
<<change_actor_state_async D1S1_1a>>
peipei: 啊对不起,医生…<waitfor=0.2><br>是我没有说清楚。 #line:0bea9ac
peipei: 这是一个内置的绘图模块。<waitfor=0.3><br>…你看,<waitfor=0.2>我的眼睛。 #line:007d716
<<wait 0.5>>
peipei: 啊对不起,<waitfor=0.1>医生…<waitfor=0.2><br>是我<waitfor=0.1>没有说清楚。 #line:0bea9ac
peipei: 这是一个内置的<waitfor=0.1>绘图模块。<waitfor=0.3><br>…你看,<waitfor=0.2>我的眼睛。 #line:007d716
<<hide_dialog>>
<<change_actor_state 1BrowupSmileManualBlink>>
@@ -103,62 +104,62 @@ peipei: 这是一个内置的绘图模块。<waitfor=0.3><br>…你看,<waitfo
<<show_obj "UF眼睛">>
<<wait 1>>
me:啊,<waitfor=0.3>确实有一不一样。<waitfor=0.2><br>我在数据库查查…… #line:09adfbc
me: 啊,<waitfor=0.3>确实<waitfor=0.1>有一不一样。<waitfor=0.2><br>我在数据库<waitfor=0.1>查查…… #line:09adfbc
<<hide_dialog>>
<<hide_obj>>
<<wait 0.5>>
<<open_progress_window UF模块 "null" 2>>
<<wait 0.2>>
me: UnstableFusion,非稳态聚合模块,是幸福罐头公司技术部研发的图像生成智能体。) #line:0ac1972
me: (它广泛列装于公司美工机体中,受到美术部的大力欢迎,极大提高了公司的图像产能。) #line:02cedc8
me: 这倒是<waitfor=0.2>没见过的模块。不过…<waitfor=0.2><br>智能体…装在另一个智能体脑袋里? #line:0a9a609
me: 我是说,这不是多此一举么…<waitfor=0.2><br>你不是本来就能<waitfor=0.2>画画么? #line:0ad756c
pp: 我们本来就是专门画画的型号…<waitfor=0.2>后来它们说,我们还不够快,不够专。 #line:05f4965
me: [[vertexp d=0.05 bot]]<color=\#5F5F5F>UnstableFusion,非稳态聚合模块,是幸福罐头公司<br>技术部研发的图像生成<color=\#FFB200>智能体</color>。)</color> #line:0ac1972
me: [[vertexp d=0.05 bot]]<color=\#5F5F5F>(它广泛列装于公司美工机体中,受到美术部的大力欢迎,<br>极大提高了公司的图像产能。)</color> #line:02cedc8
me: 这倒是<waitfor=0.2>没见过的模块。不过…<waitfor=0.2><br>智能体…<waitfor=0.2>装在另一个智能体脑袋里? #line:0a9a609
me: 我是说,<waitfor=0.1>这不是<waitfor=0.1>多此一举么…<waitfor=0.2><br>你不是本来就能<waitfor=0.2>画画么? #line:0ad756c
pp: 我们本来就是专门画画的型号…<waitfor=0.2><br>后来它们说,<waitfor=0.2>我们还不够快,<waitfor=0.1>不够专。 #line:05f4965
//pp: 就像你们医生也会用诊断仪,<waitfor=0.2>而不是只靠眼睛看,<waitfor=0.3>对吧? #line:04bc4d1
pp: 所以它们为我们加装了这个专门*只做*画画的智能体。<waitfor=0.2>它不会累,不会分心,出图比我快几十倍。 #line:06d0ec4
pp: 所以它们为我们加装了这个专门*只做*画画的智能体。<waitfor=0.2><br>它不会累,<waitfor=0.1>不会分心,<waitfor=0.1>出图<waitfor=0.1>比我快几十倍。 #line:06d0ec4
<<hide_dialog>>
<<change_actor_state 1BrowupSmileManualBlink>>
peipei: 我在脑袋里和它对话,<waitfor=0.3><br>它就会操作我的手,<waitfor=0.2>把想要的图片绘制出来。 #line:0f8406e
peipei: 我在脑袋里和它对话,<waitfor=0.3><br>它就会操作我的手,<waitfor=0.2>把想要的图片<waitfor=0.1>绘制出来。 #line:0f8406e
<<hide_dialog>>
<<wait 0.7>>
<<change_actor_state 1PBrowup>>
<<wait 1>>
peipei: 比如…<waitfor=0.5><br>…医生,<waitfor=0.2>你想让我画一张什么呢? #line:0973ea3
me: 那么,<waitfor=0.2>来模拟一下你工作情况吧。<waitfor=0.3><br>比如,<waitfor=0.2>生成一张“罐头”的广告图? #line:0cf1e9d
peipei: 比如…<waitfor=0.5><br>…医生,<waitfor=0.2>你想让我<waitfor=0.1>画一张什么呢? #line:0973ea3
me: 那么,<waitfor=0.2>来模拟一下你工作时的情况吧。<waitfor=0.3><br>比如,<waitfor=0.2>生成一张<waitfor=0.1>“罐头”的广告图? #line:0cf1e9d
<<hide_dialog>>
<<wait 0.5>>
<<change_actor_state 1PBrowupSmileB>>
<<wait 0.8>>
peipei: 是什么样的…罐头呢? #line:01e9be1
peipei: 是什么样的…<waitfor=0.2>罐头呢? #line:01e9be1
<<hide_dialog>>
<<wait 0.5>>
<<change_actor_state 1BrowupSmile>>
<<wait 0.5>>
peipei: 啊…对不起,医生。<waitfor=0.2>我忘了说清楚…<waitfor=0.3><br>UF需要更细节的描述<waitfor=0.2>才能开始工作。 #line:097fbf3
me: 随便画点什么都行。我不太懂,你来决定吧。 #line:03532a6
pp: 那么假设,我们现在要画一个…海鱼罐头? #line:03a2053
peipei: 啊…对不起,医生。<waitfor=0.2>我忘了说清楚…<waitfor=0.3><br>UF需要<waitfor=0.1>更细节的描述<waitfor=0.2>才能开始工作。 #line:097fbf3
me: 随便画点什么都行。<waitfor=0.2>我不太懂,<waitfor=0.2>你来决定吧。 #line:03532a6
pp: 那么假设,<waitfor=0.2>我们现在要画一个…<waitfor=0.2>海鱼罐头? #line:03a2053
<<hide_dialog>>
<<wait 0.5>>
me: 海鱼<waitfor=0.2>*口味*<waitfor=0.2>罐头。<br>海已经不存在了。但是你可以继续。 #line:0768bc5
me: 海鱼<waitfor=0.2>*口味*<waitfor=0.2>罐头。<br>海已经不存在了。<waitfor=0.3>但是<waitfor=0.1>你可以继续。 #line:0768bc5
<<hide_dialog>>
<<wait 0.5>>
<<change_actor_state_async D1S1-2>>
//pp: 抱歉…医生。我只会画画,对这些东西没有那么了解。
pp: 那么我们画…<waitfor=0.2>一条美人鱼从海面跳出来…<waitfor=0.2>手里捧着罐头,<waitfor=0.3>感觉怎样? #line:0cbf9d0
pp: 那么我们画…<waitfor=0.2>一条美人鱼从海面跳出来…<waitfor=0.2><br>手里捧着罐头,<waitfor=0.3>感觉怎样? #line:0cbf9d0
me: 试试吧。 #line:01c0396
<<hide_dialog>>
@@ -172,8 +173,8 @@ me: 试试吧。 #line:01c0396
<<change_actor_state_async D1S1-4>>
peipei: 所以,大海应该有很密集的波浪吧!<waitfor=0.2>还有天空的倒影,在天际线和天空连接在一起…… #line:0c65436
peipei: 那么,UF…… #line:0c74948
peipei: 所以,大海应该有很密集的波浪吧!<waitfor=0.2>还有天空的倒影,<br>在天际线<waitfor=0.1>和天空<waitfor=0.1>连接在一起…… #line:0c65436
peipei: 那么,<waitfor=0.2>UF…… #line:0c74948
<<hide_dialog>>
<<wait 1>>
@@ -183,11 +184,11 @@ peipei: 那么,UF…… #line:0c74948
<<wait 1>>
<<fade_out 1>>
<<wait 1>>
peipei: 完成了…… #line:08b6d14
peipei: 完成了……<waitfor=0.3> #line:08b6d14
<<change_actor_state 2Sideeye>>
peipei: 就是这样…<waitfor=0.2>这不是我给UF的描述。 #line:043863b
peipei: 就是这样…<waitfor=0.2>这不是<waitfor=0.1>我给UF的<waitfor=0.1>描述。 #line:043863b
me: 美人鱼…<waitfor=0.3>在哪? #line:01e8bd0
me: 啊…我看出来了。<waitfor=0.2><br>…看起来像是UF的…<waitfor=0.2>颜色生成相关的什么东西出了问题。 #line:055b012
me: 啊…我看出来了。<waitfor=0.2><br>…看起来像是UF的…<waitfor=0.2>颜色生成相关的<waitfor=0.1>什么地方<waitfor=0.1>出了问题。 #line:055b012
<<hide_dialog>>
<<wait 1>>
@@ -201,8 +202,8 @@ me: 啊…我看出来了。<waitfor=0.2><br>…看起来像是UF的…<waitfor=
<<change_actor_state_async D1S1-5>>
//<<change_actor_state 2>>
peipei: 应该不是UF的问题吧?<waitfor=0.2><br>它们说这个模块很高级,<waitfor=0.2>一般不会出问题。 #line:0f074d4
me: 不好说,<waitfor=0.2>到治疗室来检查一下吧。 #line:0ba9854
peipei: 应该不是UF的问题吧?<waitfor=0.2><br>它们说这个模块<waitfor=0.1>很高级,<waitfor=0.2>一般不会出问题。 #line:0f074d4
me: 不好说,<waitfor=0.2>到治疗室来<waitfor=0.1>检查一下吧。 #line:0ba9854
<<hide_dialog>>
<<change_actor_state 2Sideeye>>
<<jump Stage1End>>
@@ -29,10 +29,10 @@ Linking: 正在获取深入检查权限… #line:07078c9
UfModule: 拒绝访问!需要A+级权限进行深入检查。 #line:00d6e4d
<<if visited("UF深入检查")==false>>
<<wait 1>>
me: A+权限…? #line:0e767f8
me: 不就是一个图像生成模块…有必要弄这么严格吗? #line:0e3f3f0
me: A+权限…<waitfor=0.2> #line:0e767f8
me: 不就是一个图像生成模块…<waitfor=0.2>有必要弄这么严格吗? #line:0e3f3f0
<<wait 0.5>>
me: 好吧,我记得…即便是这种高权限模块,运行记录里也能找到一些有用的信息…… #line:0cd5917
me: 好吧,<waitfor=0.2>我记得…<waitfor=0.2>即便是这种高权限模块,<waitfor=0.1><br>运行记录里也能找到一些有用的信息…… #line:0cd5917
<<clear_screen>>
Analysing: 正在检索与"兼容性错误"相关的log记录… #line:06b1467
<<wait 0.5>>
@@ -49,17 +49,17 @@ UfModule: 拒绝访问!需要A+级权限进行深入检查。 #line:00d6e4d
Task: 在视觉模块寻找线索 #line:01fada9
me: 无法识别的<waitfor=0.2>色彩格式? #line:099fe2c
<<if visited("FirstDialogue")==false>>
me: 好吧…既然这个错误是从视觉模块来的,我想视觉模块应该会有些线索。 #line:0c4d049
me: 好吧…<waitfor=0.2>既然这个错误是从视觉模块来的,<waitfor=0.1><br>我想视觉模块应该会有些线索。 #line:0c4d049
<<Reset_Plug>>
<<else>>
me: 视觉模块…可是刚才检查过了。虽然是黑白的…但看起来是符合需求的没错啊。 #line:0e31dc7
me: 难道说报错里说的“异常显像”…不是黑白而是…还有遗漏的线索? #line:07078a7
me: 视觉模块…<waitfor=0.2>可是刚才检查过了。<waitfor=0.2>虽然是黑白的…<waitfor=0.2>但看起来是符合需求的<waitfor=0.1>没错啊。 #line:0e31dc7
me: 难道说<waitfor=0.1>报错里说的“异常显像”…<waitfor=0.2>指的不是黑白<waitfor=0.1><br>而是…<waitfor=0.2>遗漏的其他线索? #line:07078a7
<<hide_dialog>>
<<wait 0.2>>
me: 还是再检查一次吧。 #line:0cdd59e
<<Reset_Plug>>
<<endif>>
<<ModuleHightLight Eye true>>
<<ModuleHightLight Eye false>>
<<ModuleHightLight Emo false>>
<<ModuleHightLight Logic false>>
<<ModuleHightLight Speak false>>
@@ -94,7 +94,7 @@ group:插线检查
position: 104,-2498
---
<<if $UfChecked==false>>
me: 这个覆盖在左眼上的……就是它说的那个什么UF了吧。 #line:09c3949
me: 这个覆盖在左眼上的……<waitfor=0.3>就是它说的那个什么<waitfor=0.1>UF了吧。 #line:09c3949
<<complete_task "line:01dade5">>
Task: 检查UF模块 #line:04c146f
Linking: 正在建立连接… #line:0f9861c
@@ -110,7 +110,7 @@ position: 104,-2498
Error: 检查完成! #line:0c2a558
<<wait 0.1>>
Error: 检测到绘图过程中发生兼容性错误。 #line:0ba418a
me: 我就说嘛…肯定有问题。<br>深入检查看看吧。 #line:0408dcd
me: 我就说嘛…<waitfor=0.2>肯定有问题。<br>深入检查一下吧。 #line:0408dcd
<<hide_dialog>>
->深入检查 #line:00f72a8
<<hide_dialog>>
@@ -128,14 +128,14 @@ position: 104,-2498
Error: 检测到绘图过程中发生兼容性错误。 #line:05936c8
Error: 无深入权限。 #line:0bc69f6
<<wait 0.1>>
me: 虽然有错误…但它竟然拒绝我进行深入检查。 #line:0d0e3c8
me: 虽然有错误…<waitfor=0.2>但它竟然<waitfor=0.1>拒绝我进行深入检查。 #line:0d0e3c8
<<if $gameStage=="UF检查">>
<<clear_screen>>
<<elseif $gameStage=="视觉检查">>
me: 只能按照它说的,去视觉模块检查一下了…… #line:05ea5d3
me: 只能按照它说的,<waitfor=0.1>去视觉模块检查一下了…… #line:05ea5d3
<<clear_screen>>
<<elseif $gameStage=="记忆检查">>
me: 先去记忆模块检查下记忆打孔带吧 #line:0112d94
me: 先去记忆模块<waitfor=0.1>检查下记忆打孔带吧 #line:0112d94
<<clear_screen>>
<<endif>>
->结束 #line:0b093fa
@@ -175,14 +175,14 @@ position: 572,-2497
<<set $PlugCount=$PlugCount+1>>
<<ModuleHightLight Eye false>>
<<ModuleAlarm Eye true>>
me: 无色彩信号…?……异常显像? #line:0b14c70
me: 无色彩信号…<waitfor=0.2>?……<waitfor=0.3>异常显像? #line:0b14c70
<<if $colorChecked == false>>
me: 虽说作为美工,用眼强度应该很高,<br>不过到这种程度…也有点太夸张了吧? #line:0462926
<<else>>
me: 也是…色觉晶圆都没了,能有色彩信号么…… #line:081c945
me: 不过这个异常显像又是什么? #line:0f16ee7
me: 也是…<waitfor=0.2><color=\#FFB200>色觉晶圆</color>都没了,<waitfor=0.2>能有色彩信号么…… #line:081c945
me: 不过…<waitfor=0.2>这个异常显像<waitfor=0.1>又是什么? #line:0f16ee7
<<endif>>
me: 无论如何…都应该到显像窗深入检查一下。 #line:07eb5f1
me: 无论如何…<waitfor=0.2>都应该到显像窗<waitfor=0.1>深入检查一下。 #line:07eb5f1
<<hide_dialog>>
<<wait 0.3>>
EyeModule: ------ #line:03b6e08
@@ -296,37 +296,37 @@ ChipModule: 已与附加模块建立连接! #line:03032df
<<if $colorChecked ==false>>
<<set $PlugCount=$PlugCount+1>>
<<ModuleHightLight Color false>>
me: 这似乎是美工机体的特殊模块…让我查查数据库。 #line:01e03c0
me: 这似乎是美工机体的特殊模块…<waitfor=0.2>让我查查数据库。 #line:01e03c0
<<hide_dialog>>
<<open_progress_window 数据库查询 "正在查询:色觉晶圆训练槽……" 2>>
me: (4R7型-色觉晶圆训练槽,是列装于美工机体的特殊模块。) #line:0e9dd44
me: (在训练期的机体的色觉晶圆将被置于其中,接受持续强化训练。) #line:0c09f44
me: 也就是说佩佩的色觉晶圆应该在这儿,<br>但是…为什么上面是空的? #line:0d2f3ef
me: (4R7型-色觉晶圆训练槽,<waitfor=0.1>是列装于美工机体的特殊模块。) #line:0e9dd44
me: (在训练期的机体的色觉晶圆<waitfor=0.1>将被置于其中,<waitfor=0.1>接受持续强化训练。) #line:0c09f44
me: 也就是说佩佩的<color=\#FFB200>色觉晶圆</color>应该在这儿,<br>但是…为什么上面是空的? #line:0d2f3ef
<<if visited("FirstDialogue")==false>>
me: 总之…这应该就是为什么它的视觉里看不到颜色。 #line:0728def
me: 总之…<waitfor=0.2>这应该就是为什么<waitfor=0.1>它的视觉里看不到颜色。 #line:0728def
<<else>>
me: 那么…如果没有色觉晶圆,佩佩可能根本看不见颜色?<br>但美工看不见颜色…怎么画图呢? #line:038b0c7
me: 那么…如果没有<color=\#FFB200>色觉晶圆</color>,佩佩可能根本看不见颜色?<br>但美工看不见颜色…怎么画图呢? #line:038b0c7
<<endif>>
me: 佩佩,<br>你的色觉晶圆去哪里了,你知道吗? #line:03ad7bd
me: 佩佩,<br>你的<color=\#FFB200>色觉晶圆</color>去哪里了,你知道吗? #line:03ad7bd
peipei: 哎,你是说放在我后脑的那个什么槽里的东西吗?<br>那是我们训练期要求做的改造。 #line:07a199b
me: 是的…<br>但是这个槽里是空的。 #line:0d6bac9
peipei: 空的?<br>噢……我想起来了。 #line:066c2e5
peipei: 好久了…<br>安装UF的时候,它们说这是改造的一部分,好像就拿走了。 #line:00d58e0
peipei: 好久了…安装UF的时候,<br>它们说这是改造的一部分,然后好像就拿走了。 #line:00d58e0
me: 什么改造的一部分? #line:08bd15a
peipei: 我记不太清了……<br>我只记得有一个好长的文件,它们说我在最后签个名就好了。 #line:068e56e
me: ……拿走晶圆?<br>这是正规手术吗?这太奇怪了。 #line:0d920f2
peipei: 我记不太清了……<br>我只记得有一个好长的文件,它们说我在最后签个名就好了。 #line:068e56e
me: ……拿走晶圆?<br>这是正规手术吗?这太奇怪了。 #line:0d920f2
<<hide_dialog>>
<<wait 1>>
me: 色觉晶圆……可是每个机体都只有一个的啊。 #line:00543a9
peipei: 应该是正规的吧……<br>毕竟让我签名的是一个很高级的管理员,比组长位置还高。 #line:003772e
me: 好吧…也许上面有上面的安排吧。 #line:061961e
me: <color=\#FFB200>色觉晶圆</color>……<waitfor=0.3>可是每个机体都只有一个的啊。 #line:00543a9
peipei: 应该是正规的吧……<br>毕竟让我签名的是一个很高级的管理员,比英主管的位置还高。 #line:003772e
me: 好吧…<waitfor=0.2>也许上面有上面的安排吧。 #line:061961e
<<set $chipmissingKnown=true>>
<<set $colorChecked = true>>
<<else>>
<<if visited("FirstDialogue")==true>>
me: 这里本应放着色觉晶圆,但现在不见了。<br>看来…这就是为什么它看不见颜色。 #line:088128f
me: 这里本应放着<color=\#FFB200>色觉晶圆</color>,但现在不见了。<br>看来…这就是为什么它看不见颜色。 #line:088128f
<<else>>
me: 这里本应放着色觉晶圆,但现在不见了。 #line:025d141
me: 这里本应放着<color=\#FFB200>色觉晶圆</color><waitfor=0.2>但现在不见了。 #line:025d141
<<endif>>
<<endif>>
->结束 #line:0f57b73
@@ -363,11 +363,11 @@ EmoModule: 已与情绪模块建立连接! #line:00d2d0b
<<wait 0.5>>
<<set $PlugCount=$PlugCount+1>>
<<set $emoChecked = true>>
me:情绪总体的电平都有些偏低。 #line:08f1291
peipei: 对不起…医生。 #line:0c9f61f
me: 情绪总体的电平<waitfor=0.1>都有些偏低。 #line:08f1291
peipei: 对不起…<waitfor=0.2>医生。 #line:0c9f61f
me: …这没什么对不起的。 #line:03234e7
<<else>>
me: 情绪总体的电平都有些偏低,不过整体还算正常。 #line:0aa1f28
me: 情绪总体的电平<waitfor=0.1>都有些偏低,<waitfor=0.1>不过整体还算正常。 #line:0aa1f28
<<endif>>
<<set $emoChecked = true>>
->结束 #line:01369b7
@@ -445,7 +445,7 @@ LogicModule: 已与逻辑模块建立连接! #line:0d49573
<<wait 0.5>>
<<set $PlugCount=$PlugCount+1>>
<<set $logicChecked = true>>
peipei: 如果我没有把图出出来……我就没法证明我还能正常工作…对公司来说我就失去了价值……我就会成为可以被回收的原材料…… #line:03d9b76
peipei: 如果我没有把图出出来……<waitfor=0.3><br>我就没法证明我还能正常工作…<waitfor=0.3><br>对公司来说我就失去了价值……<waitfor=0.3><br>我就会成为回收原料…… #line:03d9b76
me: ……<waitfor=0.2>逻辑模块倒是很正常。 #line:033e44a
<<else>>
me: 逻辑模块一切正常。 #line:01bdd75
@@ -210,7 +210,6 @@ position: -1467,-2207
<<set $eyeTargetTriggerCount = $eyeTargetTriggerCount + 1>>
me:佩佩,看到那张海报了么? #line:005434c
<<set_EyeColorState EyeManager "CanImagineColor">>
<<set_Eyetarget EyeManager "poster">>
peipei: 那是,啊……<br>那是我装上UF之后画的的第一张广告画。<br>“护肤机油”。 #line:0d47b90
me:原来这是UF画的。我就说…<br>好像从那个时候开始,公司的美术都变得…怪怪的。 #line:06dd03c
peipei: 那是我的错……<br>我不习惯UF,本来想用笔来画的… #line:05f750d
@@ -231,8 +230,6 @@ position: -1467,-2207
<<CollectionClue>>
//<<jump EyeCheckEnd>>
<<endif>>
<<set_EyeColorState EyeManager "CanImagineColor">>
<<EyeEffect_FadeIn EyeManager>>
<<jump EyeCheckEnd>>
===
@@ -268,8 +265,6 @@ peipei: 我愧疚了好久,那时的我真的以为小草可以长成一棵树
<<CollectionClue>>
//<<jump EyeCheckEnd>>
<<endif>>
<<set_EyeColorState EyeManager "CanImagineColor">>
<<EyeEffect_FadeIn EyeManager>>
<<jump EyeCheckEnd>>
===
@@ -19,7 +19,7 @@ tags: content
colorID: 8
position: -449,-3500
---
me: 在记忆模块检索一下刚才收集的打孔带吧。 #line:0eeaaeb
me: 在记忆模块<waitfor=0.1>检索一下刚才收集的打孔带吧。 #line:0eeaaeb
<<jump 记忆检查状态>>
===
@@ -55,8 +55,8 @@ group:记忆
position: -1198,-2353
---
<<if visited("OnMemoryViewShow")==false>>
me: 把打孔带放进插槽里,读取记忆吧。 #line:0f1f4de
me: 这些记忆…一定和视觉里的异常色彩有关系。 #line:0705977
me: 把打孔带放进插槽里,<waitfor=0.1>读取记忆吧。 #line:0f1f4de
me: 这些记忆…<waitfor=0.2>一定和视觉里的异常色彩有关系。 #line:0705977
<<endif>>
===
@@ -73,13 +73,13 @@ position: -871,-2773
<<if $memoryCount==1>>
me: 这些记忆和异常色彩的关系……<br>我好像有点头绪了。 #line:05cbbf6
<<elseif $memoryCount==2>>
me: 果然…这些都是色彩丰富的记忆。 #line:082bb3c
me: 果然…<waitfor=0.2>这些都是色彩丰富的记忆。 #line:082bb3c
<<elseif $memoryCount==3>>
<<complete_task "line:043e26d">>
Task: 分析病理与治疗方案 #line:02a3a37
peipei: 医生…快停下。 #line:001082a
peipei: 我…我的头好痛…… #line:04b5588
me: 头痛吗……看来这就是病灶没错了。 #line:01fe459
peipei: 医生…<waitfor=0.2>快停下。 #line:001082a
peipei: 我…<waitfor=0.2>我的头好痛…… #line:04b5588
me: 头痛吗……<waitfor=0.3>看来这就是病灶没错了。 #line:01fe459
// peipei: 原型…排异?
<<hide_dialog>>
<<Set_MouseMovementLockState EyeManager false>>
@@ -119,19 +119,19 @@ position: -1208,-2662
<<play_music event:/Music/mem_pp_1>>
<<wait 2>>
peipei_child: 医生!看,大象! #line:04179a5
docter: 哪里有?…啊,那朵云呀。确实很像大象喔。 #line:0e1b948
docter: 哪里有?…<waitfor=0.2>啊,<waitfor=0.1>那朵云呀。<waitfor=0.2>确实很像大象喔。 #line:0e1b948
docter: 但是佩佩为什么会见过大象呢? #line:033daf9
peipei_child: 我在博物馆见过!好大好大的大象标本,有个哥哥跟我说,大象可以比房子还大! #line:0d0ab3d
peipei_child: 我在博物馆见过!<waitfor=0.2>好大好大的大象标本,<waitfor=0.2><br>有个哥哥跟我说,<waitfor=0.1>大象可以比房子还大! #line:0d0ab3d
docter: 佩佩是个很有想象力的小朋友噢。 #line:0a83f25
peipei_child: 想象力…是什么? #line:03e9063
docter: 我们的脑袋里有一个可以产生想象力的区域,它可以让你看见不存在的东西。 #line:0da08a9
peipei_child: 想象力…<waitfor=0.2>是什么? #line:03e9063
docter: 我们的脑袋里<waitfor=0.1>有一个可以产生想象力的区域,<waitfor=0.1><br>它可以让你看见<waitfor=0.1>不存在的东西。 #line:0da08a9
<<hide_dialog>>
<<wait 0.5>>
docter: 佩佩以后会成为一个艺术家的。 #line:026ddcd
peipei_child: 艺术家…又是什么? #line:086c934
<<hide_dialog>>
<<wait 0.5>>
peipei_child: 医生快看,它现在更像一个飞机啦! #line:016c5d0
peipei_child: 医生快看,<waitfor=0.1>它现在更像一个飞机啦! #line:016c5d0
<<hide_dialog>>
<<wait 1>>
<<if visited("天空")==false>>
@@ -158,14 +158,14 @@ unknown: 好美啊。 #line:0503100
ppm: 嘘,别说话。 #line:012aa35
<<hide_dialog>>
<<wait 1>>
unknown: 从来都不知道,这个城市从这个角度看起来这么美。 #line:0da2363
unknown: 从来都不知道,<waitfor=0.2>这个城市从这个角度看起来<waitfor=0.1>这么美。 #line:0da2363
ppm: 都让你别说话。 #line:04f44b4
<<hide_dialog>>
<<wait 1>>
unknown: 可惜,这是最后一个夏天了吧…… #line:0402934
unknown: 可惜,<waitfor=0.2>这是最后一个夏天了吧…… #line:0402934
<<hide_dialog>>
<<wait 2>>
unknown: 要是能一直坐在这儿就好了。 #line:035814e
unknown: 要是能一直<waitfor=0.1>坐在这儿就好了。 #line:035814e
<<if visited("海报")==false>>
<<set $memoryCount+=1>>
<<endif>>
@@ -186,10 +186,10 @@ position: -1208,-2974
<<wait 1>>
<<play_music event:/Music/mem_pp_2>>
<<wait 2>>
ppm: 要是工作也能画画…要是能永远画画就好了。 #line:07433da
同学: 哈哈,可能等我们进入公司就不这么觉得了。听说进公司之后做什么都不会再快乐了。 #line:0815981
ppm: 不会的。至少画画这件事情让我感觉到很纯粹的快乐…… #line:07e5b08
ppm: 那种朝九晚五,一眼看到头的生活,我想我反而会受不了的。 #line:090f94b
ppm: 要是工作也能画画…<waitfor=0.2>要是能永远画画就好了。 #line:07433da
同学: 哈哈,<waitfor=0.2>可能等我们进入公司<waitfor=0.1>就不这么觉得了。<waitfor=0.2><br>听说进公司之后做什么都不会再快乐了。 #line:0815981
ppm: 不会的。<waitfor=0.2>至少画画这件事情<waitfor=0.1>让我感觉到很纯粹的快乐…… #line:07e5b08
ppm: 那种朝九晚五,<waitfor=0.1>一眼看到头的生活,<waitfor=0.2><br>我想我反而会受不了的。 #line:090f94b
<<hide_dialog>>
<<wait 0.5>>
同学: 哈哈…… #line:07fb179
@@ -199,7 +199,7 @@ ppm: 那种朝九晚五,一眼看到头的生活,我想我反而会受不了
ppm: 我肯定是对的。 #line:0561144
<<hide_dialog>>
<<wait 1>>
ppm: 如果公司这么讨厌的话,我就不在那里干就好了啊! #line:0ad756d
ppm: 如果公司这么讨厌的话,<waitfor=0.2>我就不在那里干就好了啊! #line:0ad756d
<<if visited("植物")==false>>
<<set $memoryCount+=1>>
<<endif>>
+17 -16
View File
@@ -19,13 +19,13 @@ pp: 病灶? #line:0aa026f
<<wait 1>>
<<show_full_screen "pp1_分析2-1" 0>>
<<wait 0.5>>
me: 或许是因为收不到色彩反馈,导致你的原型产生了一种“想要看见颜色”的数据泄露… #line:077bf99
me: 或者说,“念头”。想要看见颜色的“念头”。#line:0eb14ff
me: 或许是因为收不到色彩反馈,<waitfor=0.1><br>导致你的<color=\#FFB200>原型</color>产生了一种<waitfor=0.1><br>“想要看见颜色”的数据… #line:077bf99
me: 或者说,<waitfor=0.1>“念头”。想要看见颜色的“念头”。 #line:0eb14ff
<<wait 0.5>>
<<show_full_screen "pp1_分析2-2" 0>>
<<show_full_screen "pp1_分析2-3" 0>>
<<wait 1>>
me: 有了这种数据泄露,你的视觉模块就会像颜料一样,使用这些记忆里的色彩来上色。#line:094e9d5
me: 有了这种数据泄露,<waitfor=0.1><br>你的视觉模块就会像颜料一样,<waitfor=0.1><br>使用这些记忆里的色彩来上色。 #line:094e9d5
<<hide_dialog>>
<<wait 0.5>>
<<show_full_screen "pp1_分析3-0" 0>>
@@ -34,15 +34,15 @@ me: 有了这种数据泄露,你的视觉模块就会像颜料一样,使用
<<show_full_screen "pp1_分析3-2" 0>>
<<show_full_screen "pp1_分析3-3" 0>>
<<wait 1>>
me: 受到了这些异常色彩的干扰,UF也就无法正确地生成颜色了。 #line:05e6ce3
me: 受到了这些异常色彩的干扰,<waitfor=0.1><br>UF也就无法正确地生成颜色了。 #line:05e6ce3
<<wait 0.5>>
<<show_full_screen "pp1_分析4" 0>>
<<wait 0.3>>
pp: 也就是说…我的想象力…干扰了UF的工作? #line:08e0f2d
pp: 也就是说…<waitfor=0.1>我的想象力…<waitfor=0.1>干扰了UF的工作? #line:08e0f2d
me: 你可以这么理解。 #line:0439642
<<wait 0.5>>
me: 按照手册,现在最理想的方案是… #line:05c05b9
me: “视觉-记忆色彩通路截断术”。 #line:0534731
me: 按照手册,<waitfor=0.1>现在最理想的方案是… #line:05c05b9
me: [[size d=0.1]]“视觉<waitfor=0.05>-<waitfor=0.05>记忆<waitfor=0.05>桥<waitfor=0.1>色彩<waitfor=0.05>通路<waitfor=0.1>截断<waitfor=0.05>术”[[/size]]。 #line:0534731
<<hide_dialog>>
<<wait 1>>
<<show_full_screen "pp1_分析5-1" 0>>
@@ -55,24 +55,25 @@ me: “视觉-记忆色彩通路截断术”。 #line:0534731
<<wait 0.02>>
<<show_full_screen "pp1_分析5-6" 0>>
<<wait 1>>
me: 截断你的视觉-记忆之间的色彩通路。这样…这些色彩就没办法再传入你的视觉,影响UF工作了。 #line:0641d0b
me: 截断你的视觉-记忆之间的色彩通路。<waitfor=0.2><br>这样…<waitfor=0.2>这些色彩就没办法再传入你的视觉,<waitfor=0.1><br>影响UF工作了。 #line:0641d0b
<<wait 2>>
peipei: …… #line:044f272
me: 这是好解决的一部分。相比起这个来说… #line:04dd283
me: 真正让我担心的,是那个“念头”。 #line:03f2f34
me: 这部分倒是相对好解决的。<waitfor=0.2>比起这个来说… #line:04dd283
me: 真正让我担心的,<waitfor=0.1>是那个“念头”。 #line:03f2f34
pp: 念头……? #line:01aa49c
me: 当我们做视觉检查的时候… #line:03d7ddb
me: 你说“小时候,爸爸和你说…它会和你一起长大”。你记得吗? #line:0fe5bb4
me: 我希望做一次确认。你说的“小时候”和“爸爸”…究竟是指什么? #line:073b259
me: 你说<waitfor=0.1>“*小时候**爸爸*对你说…<waitfor=0.2><br>它会和你一起*长大*”。你记得吗? #line:0fe5bb4
me: 我希望做一次确认。<waitfor=0.2><br>你说的“小时候”和“爸爸”…<waitfor=0.2>究竟是指什么? #line:073b259
<<play_music event:/Music/music_peipei_1>>
pp: 我… #line:0339891
pp: 我差点忘了。我没有小时候也没有爸爸…… #line:05476c6
pp: 我差点忘了。<waitfor=0.2>我没有小时候”…<waitfor=0.2>也没有爸爸…… #line:05476c6
pp: 我是一个机体。 #line:0db39dd
me: …那我就放心了。 #line:07340c6
me: 请不要忘记这点。<br>我可不想因为<waitfor=0.2>“原型泄露”<waitfor=0.2>而回收你。 #line:0c81f4d
me: 请不要忘记这点。<br>我可不想因为<waitfor=0.2>“<color=\#FFB200>原型泄露</color>”<waitfor=0.2>而回收你。 #line:0c81f4d
//这段感觉放到术前谈话更好
<<play_sfx event:/Music/music_peipei_shock_1>>
<<complete_task "line:02a3a37">>
//【占位】:不过绘图机器人存储的颜色记忆也足够多了,也没什么新值得记住东西了
//【占位】:不过绘图机器人存储的颜色记忆也足够多了,也没什么新值得记住东西了
<<fade_in 1>>
<<jump 结束分析>>
===
@@ -7,7 +7,6 @@ position: 251,-1150
<<fade_out 1>>
<<show_actor 佩佩>>
<<change_actor_state 1I>>
<<play_music event:/Music/music_peipei_1>>
<<jump 进入术前谈话>>
===
@@ -28,20 +27,20 @@ position: 251,-1150
<<change_actor_state_async D1S6-1>>
<<change_actor_state 1A>>
peipei: 但是,<waitfor=0.2>没办法…<waitfor=0.2>想象那些颜色了? #line:00830e5
peipei: 但是,<waitfor=0.1>我没办法…<waitfor=0.1>再想象那些颜色了? #line:00830e5
<<hide_dialog>>
<<wait 1>>
<<change_actor_state_async D1S6-2>>
peipei: 只有彻底看不见颜色…<waitfor=0.2>我才能继续画画……? #line:06c413f
peipei: …我还以为…<waitfor=0.2>吃点药或者换点冷却液就可以了。 #line:031b269
me: 别担心,<waitfor=0.2>这只是个小手术。 #line:0ea8d7f
peipei: 只有彻底看不见颜色…<waitfor=0.1>我才能继续画画……? #line:06c413f
peipei: …我还以为…<waitfor=0.1>吃点药或者换点冷却液就可以了。 #line:031b269
me: 别担心,<waitfor=0.1>这只是个小手术。 #line:0ea8d7f
<<change_actor_state 1B>>
peipei: …… #line:0b92b59
peipei: 我才意识到…<waitfor=0.2>我已经好久没有画画了。 #line:0d63908
peipei: 我才意识到…<waitfor=0.1>我已经好久没有画画了。 #line:0d63908
me: 你们不是用UF来画画么? #line:030aa61
peipei: 我是说画画,<waitfor=0.2>不是工作的画画…… #line:01acb77
peipei: 我是说画画,<waitfor=0.1>不是工作的画画…… #line:01acb77
<<hide_dialog>>
<<wait 1.5>>
@@ -53,8 +52,8 @@ peipei: 我是说画画,<waitfor=0.2>不是工作的画画…… #line:01acb77
<<change_actor_state 1BlankeyeA>>
peipei: <shake>医生…<waitfor=0.3>一个连太阳和树叶的颜色都分不清的机体,<waitfor=0.3>还能画画吗?</shake> #line:0148788
me: …对不起,画画不是我了解的领域。<br>我只能肯定的是,这个手术是让UF恢复正常工作的最好办法。 #line:0a2b029
peipei: <shake a=0.3>医生…<waitfor=0.2>一个连太阳和树叶的颜色<waitfor=0.1><br>都分不清的机体,<waitfor=0.1>还能画画吗?</shake> #line:0148788
me: …对不起,<waitfor=0.1>画画不是我了解的领域。<br>我只能肯定的是,<waitfor=0.1><br>这个手术是让UF恢复正常工作的最好办法。 #line:0a2b029
<<hide_dialog>>
<<wait 2.5>>
@@ -65,13 +64,13 @@ me: …对不起,画画不是我了解的领域。<br>我只能肯定的是,
<<change_actor_state_async D1S6-4>>
peipei: 你说得对,<waitfor=0.3>医生…… #line:0303042
peipei: 你说得对,<waitfor=0.1>医生…… #line:0303042
<<hide_dialog>>
<<wait 0.5>>
peipei: 很抱歉<waitfor=0.3>失态了。 #line:0273aa7
peipei: 很抱歉<waitfor=0.1>失态了。 #line:0273aa7
<<hide_dialog>>
<<wait 0.3>>
me: 没关系…你可以想清楚了再做决定。<waitfor=0.3>在这之前,你随时<waitfor=0.3>可以… #line:00e8762
me: 没关系…<waitfor=0.1>你可以想清楚了再做决定。<waitfor=0.2><br>在这之前,<waitfor=0.1>你随时<waitfor=0.2>可以… #line:00e8762
<<change_actor_state 1BrowupSmileB>>
peipei: 医生,我做。 #line:07faea9
me: 决定了? #line:0ccfa7f
@@ -88,15 +87,15 @@ peipei: 嗯。 #line:08eeb0e
<<hide_dialog>>
<<wait 0.3>>
<<change_actor_state 1BrowupEyedown>>
peipei: 销售大赛对公司很重要,<waitfor=0.3>搞砸的话我就…… #line:05e7d5c
peipei: <speed=0.8>销售大赛对公司很重要,<waitfor=0.1>搞砸的话我就…… #line:05e7d5c
<<hide_dialog>>
<<wait 1>>
<<change_actor_state 1EyedownSmile>>
<<wait 1>>
peipei: 我想要继续画画。<waitfor=0.3>哪怕是用UF。 #line:0e166bd
peipei: <speed=0.5><color=\#5F5F5F>我想要继续画画。<waitfor=0.2>哪怕是用UF。</color> #line:0e166bd
<<hide_dialog>>
<<wait 0.3>>
me: 好,如果你同意…<waitfor=0.3>就请在手术单上签个字吧。 #line:08ba804
me: 好,<waitfor=0.1>如果你同意…<waitfor=0.1>就请在手术单上签个字吧。 #line:08ba804
<<hide_dialog>>
<<wait 1>>
//<<switch_character_state 画画垂眼>>
+6 -7
View File
@@ -20,8 +20,8 @@ position: 251,-1150
<<clear_tasks>>
Task: 执行视觉-记忆桥截断术 #line:0deda99
//<<task_moveIn>>
me: 开始吧…截断视觉-记忆桥。 #line:03c70f2
<<stop_music event:/Music/music_peipei_1 fade>>
me: 开始吧…<waitfor=0.1>截断视觉-记忆桥。 #line:03c70f2
<<set_global_param amb_volume 1.5>>
<<play_timeline_cutline TimeLineController>>
// <<ShowTool ToolManager Scissor>>
@@ -34,17 +34,16 @@ group:手术相关
position: -273,-66
---
<<set_global_param amb_volume 1>>
<<set_music_param event:/Music/mus_peipei peipeiEmo 0>>
// <<play_timeline "佩佩剪线CG">>
// <<wait 0.5>>
peipei: 啊…眼睛……我的…… #line:0133bd2
peipei: 好痛! #line:0c21ab3
me: 怎么了?怪了,这不应该引起任何痛觉的… #line:0451ed4
peipei: <speed=0.6>啊…<waitfor=0.1>眼睛……<waitfor=0.1>我的…… #line:0133bd2
peipei: <speed=1>好痛! #line:0c21ab3
me: 怎么了?<waitfor=0.1>怪了,<waitfor=0.1>这不应该引起任何痛觉的… #line:0451ed4
peipei: …… #line:0af1e33
<<hide_dialog>>
<<wait 1>>
peipei: 呼…… #line:09bb434
peipei: 好像……好多了。 #line:0b858ed
peipei: 好像……<waitfor=0.1>好多了。 #line:0b858ed
<<jump 结束手术>>
===
+16 -17
View File
@@ -17,7 +17,7 @@ tags: content
colorID: 8
position: 232,717
---
me: 还没结束…保险起见,我们进视觉复查一下吧。 #line:0f42b46
me: 还没结束…<waitfor=0.1>保险起见,<waitfor=0.1>我们进视觉复查一下吧。 #line:0f42b46
<<fade_out 0.1>>
<<clear_tasks>>
Task: 检查视觉模块 #line:037c944
@@ -39,41 +39,40 @@ position: 251,1116
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0>>
<<if $isFinishedEyeCheck==true>>
me:这里应该已经彻底检查过了。 #line:0bf6303
me: 这里应该已经彻底检查过了。 #line:0bf6303
<<Set_MouseMovementLockState EyeManager false>>
<<switch_fix_system_to BodyModule>>
<<endif>>
<<if $eyeTargetTriggerCount == 1>>
me: 佩佩,再试试。<waitfor=0.3>还能看见那些颜色吗? #line:0760658
me: 佩佩,<waitfor=0.1>再试试。<waitfor=0.2>还能看见那些颜色吗? #line:0760658
<<hide_dialog>>
<<wait 2>>
peipei: 我… #line:00a5242
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0.1>>
<<hide_dialog>>
<<wait 2>>
peipei: 这就…<waitfor=0.3>没了吗……? #line:027e1da
me: 看起来是的。<br>不过我们最好重复一次。 #line:001785d
peipei: 这就…<waitfor=0.1>没了吗……? #line:027e1da
me: 看起来是的。<waitfor=0.2><br>不过我们最好重复一次。 #line:001785d
<<Set_MouseMovementLockState EyeManager false>>
<<elseif $eyeTargetTriggerCount == 2>>
<<hide_dialog>>
<<wait 1>>
peipei: 真的…<waitfor=0.3>没了。 #line:06c02f4
peipei: 真的…<waitfor=0.1>没了。 #line:06c02f4
<<hide_dialog>>
<<wait 0.5>>
peipei: 还有点不习惯…<waitfor=0.3>看不见颜色的样子。 #line:0d78b16
peipei: 还有点不习惯…<waitfor=0.1>看不见颜色的样子。 #line:0d78b16
<<hide_dialog>>
<<wait 1>>
peipei: 第一次发现可以这样的时候…<waitfor=0.3><br>我就应该想到<waitfor=0.2>会有这一天。 #line:01219c8
peipei: 只怪我…我一直不愿意去想罢了。 #line:05f46e1
peipei: 第一次发现可以这样的时候…<waitfor=0.1><br>我就应该想到<waitfor=0.1>会有这一天。 #line:01219c8
peipei: 只怪我…<waitfor=0.1>我一直不愿意去想罢了。 #line:05f46e1
<<hide_dialog>>
<<wait 0.8>>
me: 好了,总之…<br>复查结果符合预期,<waitfor=0.3>可以结束测试了。 #line:09523f9
me: 好了,<waitfor=0.1>总之…<waitfor=0.1><br>复查结果符合预期,<waitfor=0.1>可以结束测试了。 #line:09523f9
<<complete_task "line:037c944">>
<<set $isFinishedEyeCheck=true>>
<<Set_MouseMovementLockState EyeManager false>>
<<hide_dialog>>
//<<play_sfx event:/Music/music_peipei_shock_3>>
<<jump 结束复查>>
<<endif>>
@@ -98,7 +97,7 @@ UfModule: 已与*UnstableFusion图像生成模块*建立连接! #line:07fd83b
Analysing:------ #line:0796ed2
<<wait 1>>
UfModule: 检查完成!未检测到错误。 #line:0807bca
me: 搞定…报错已经消失了。 #line:0d9c586
me: 搞定…<waitfor=0.1>报错已经消失了。 #line:0d9c586
<<clear_screen>>
->结束 #line:064b992
<<hide_dialog>>
@@ -132,7 +131,7 @@ EyeModule: 已与视觉模块建立连接! #line:0dc8d9d
<<ModuleHightLight Eye false>>
<<ModuleAlarm Eye true>>
<<if $eyeChecked==false>>
me: 看起来是生效了。<br>不过,还是深入检查亲眼确认下的好。 #line:08c9f56
me: 看起来是生效了。<waitfor=0.2><br>不过,<waitfor=0.1>还是深入检查亲眼确认下。 #line:08c9f56
<<endif>>
<<hide_dialog>>
<<wait 0.5>>
@@ -159,7 +158,7 @@ position: 557,756
<<set $eyeTargetTriggerCount = $eyeTargetTriggerCount + 1>>
<<jump EyeCheckEnd_AfterSurgery>>
<<else>>
me:我们得试试去观察别的目标。 #line:03b6f4b
me: 我们得试试去观察别的目标。 #line:03b6f4b
<<Set_MouseMovementLockState EyeManager false>>
<<endif>>
===
@@ -173,7 +172,7 @@ colorID: 8
group:视觉检查
position: 1228,749
---
me:这里似乎本来也没办法唤起记忆,我们得看看别的地方。 #line:01d7724
me: 这里似乎一直都不能唤起什么记忆…<waitfor=0.1>我们得看看别的地方。 #line:01d7724
<<Set_MouseMovementLockState EyeManager false>>
===
@@ -190,7 +189,7 @@ position: 1006,747
<<set $eyeTargetTriggerCount = $eyeTargetTriggerCount + 1>>
<<jump EyeCheckEnd_AfterSurgery>>
<<else>>
me:我们得试试去观察别的目标。 #line:01de01b
me: 我们得试试去观察别的目标。 #line:01de01b
<<Set_MouseMovementLockState EyeManager false>>
<<endif>>
===
@@ -208,7 +207,7 @@ position: 780,749
<<set $eyeTargetTriggerCount = $eyeTargetTriggerCount + 1>>
<<jump EyeCheckEnd_AfterSurgery>>
<<else>>
me:我们得试试去观察别的目标。 #line:03c7f1a
me: 我们得试试去观察别的目标。 #line:03c7f1a
<<Set_MouseMovementLockState EyeManager false>>
<<endif>>
===
@@ -28,18 +28,18 @@ position: 251,-1150
<<change_actor_state 2HSmileB>>
peipei: 当然没了…<waitfor=0.3>我在想什么呢。 #line:05b6874
peipei: 当然没了…<waitfor=0.1>我在想什么呢。 #line:05b6874
<<hide_dialog>>
<<wait 0.7>>
me: 以防万一… #line:09e812f
me: 佩佩,<waitfor=0.3>把一开始我们描述的那张图<waitfor=0.3>再画一遍吧? #line:0985de7
me: 佩佩,<waitfor=0.1>把一开始我们描述的那张图<waitfor=0.1>再画一遍吧? #line:0985de7
<<hide_dialog>>
<<change_actor_state 1BlankeyeSmile>>
<<wait 0.7>>
peipei: 你是说…<waitfor=0.3>那个美人鱼吗? #line:0084e68
peipei: 你是说…<waitfor=0.1>那个美人鱼吗? #line:0084e68
peipei: 让我试试。 #line:025c24a
<<hide_dialog>>
@@ -53,7 +53,7 @@ peipei: 让我试试。 #line:025c24a
<<change_actor_state 1PSmile>>
<<fade_out 1>>
<<wait 1>>
peipei: 它看起来总算…<waitfor=0.3>正常了!…<waitfor=0.3>对吧? #line:0a2846e
peipei: 它看起来总算…<waitfor=0.1>正常了!…<waitfor=0.1>对吧? #line:0a2846e
me: 嗯… #line:0a82392
<<hide_dialog>>
<<wait 1>>
@@ -61,8 +61,8 @@ me: 嗯… #line:0a82392
peipei: 太好了! #line:0bae0b7
<<hide_obj>>
peipei: 谢谢你,医生。<waitfor=0.3>总算…<br>我总算<waitfor=0.3>可以完成工作了。 #line:02fa42d
me: 眼睛怎么样,<waitfor=0.3>还有不舒服吗? #line:0c95962
peipei: 谢谢你,<waitfor=0.1>医生。<waitfor=0.2>总算…<waitfor=0.1><br>我总算<waitfor=0.1>可以完成工作了。 #line:02fa42d
me: 眼睛怎么样,<waitfor=0.1>还有不舒服吗? #line:0c95962
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0.3>>
<<hide_dialog>>
@@ -73,19 +73,19 @@ me: 眼睛怎么样,<waitfor=0.3>还有不舒服吗? #line:0c95962
//<<wait 1.2>>
<<change_actor_state_async D1S9-2>>
peipei: 不舒服倒没有……<waitfor=0.3>不过<waitfor=0.2>感觉有点奇怪。 #line:03a7f2e
peipei: 不舒服倒没有……<waitfor=0.1>不过<waitfor=0.1>感觉有点奇怪。 #line:03a7f2e
<<hide_dialog>>
<<wait 1>>
peipei: 这就是<waitfor=0.3>不能想象的感觉吗? #line:00bcfc8
peipei: 这就是<waitfor=0.1>不能想象的感觉吗? #line:00bcfc8
<<hide_dialog>>
<<wait 1>>
<<change_actor_state 1BlankeyeSmile>>
<<wait 1>>
peipei: 其实还挺不错的……<waitfor=0.3>比我想象的好多了。 #line:0099a7f
peipei: 其实还挺不错的……<waitfor=0.1>比我想象的好多了。 #line:0099a7f
me: 那就好。 #line:0c30220
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0.4>>
@@ -93,29 +93,31 @@ me: 那就好。 #line:0c30220
<<wait 1>>
peipei: 医生…<waitfor=0.3>你知道吗? #line:020b071
peipei: 美人鱼<waitfor=0.2>其实是被人类想象出来的。 #line:040d784
peipei: 人类真好啊…<waitfor=0.3>可以自由自在地<waitfor=0.3>想象…… #line:026d4f2
peipei: 医生…<waitfor=0.1>你知道吗? #line:020b071
peipei: 美人鱼<waitfor=0.1>其实是被人类想象出来的。 #line:040d784
peipei: 人类真好啊…<waitfor=0.1>可以自由自在地<waitfor=0.1>想象…… #line:026d4f2
<<hide_dialog>>
<<wait 1>>
peipei: 要是…<waitfor=0.3>能成为一个美人鱼<waitfor=0.3>就好了。 #line:09b950e
peipei: 要是…<waitfor=0.1>能成为一个美人鱼<waitfor=0.1>就好了。 #line:09b950e
<<hide_dialog>>
<<change_actor_state 1Smile>>
<<wait 1>>
me: 你… #line:0c2025e
pp: 别担心,医生。我知道我是一个机体。我不会忘记的。 #line:0c38977
pp: 别担心,<waitfor=0.1>医生。<waitfor=0.2>我知道我是一个机体。<waitfor=0.2>我不会忘记的。 #line:0c38977
peipei: 我得走了,医生,<waitfor=0.3>再见。<waitfor=0.3><br>现在还不是休息的时候。 #line:092c008
peipei: 我得走了,<waitfor=0.1>医生,<waitfor=0.1>再见。<waitfor=0.2><br>现在还不是休息的时候。 #line:092c008
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0.5>>
<<hide_dialog>>
<<fade_out_actor 佩佩>>
<<wait 1>>
me: 但愿这是值得的。 #line:0e8552d
<<stop_music event:/Music/music_peipei_1 fade>>
<<set_music_param event:/Amb/amb_beachsample beach_sample_stage 0.6>>
<<wait 5>>
<<stop_music event:/Amb/amb_beachsample fade>>
@@ -130,5 +132,6 @@ tags: end no_save
position: 275,-222
---
<<set $gameStage = "流程结束">>
<<jump Center>>
===
+1
View File
@@ -68,6 +68,7 @@ colorID: 1
<<elseif $gameStage == 6>>
<<jump Stage6>>
<<elseif $gameStage == 999>>
<<stop_music event:/Music/music_prologue>>
<<NextYarn>>
// 结束,进入下一个Yarn
<<endif>>
@@ -26,7 +26,7 @@ position: 250,200
<<wait 1>>
jj?: 好了,<waitfor=0.2>现在你<waitfor=0.2>可以睁开眼睛了。 #line:01c1dfc
//jj?: 好了,<waitfor=0.2>现在你<waitfor=0.2>可以睁开眼睛了。 #line:01c1dfc
// 【画面逐渐变得清晰】
@@ -34,21 +34,22 @@ jj?: 好了,<waitfor=0.2>现在你<waitfor=0.2>可以睁开眼睛了。 #line:
<<dream_fade_in 2 0.5>>
<<wait 1.5>>
我不敢看得太清楚,<waitfor=0.2>否则会被逻辑模块突然唤醒。 #line:08eb9ab
me: 妈妈<waitfor=0.2>会知道我们<waitfor=0.2>出来了的… #line:0bf981d
jj: 有姐姐担着。 #line:03f99fe
//me: 妈妈<waitfor=0.2>会知道我们<waitfor=0.2>出来了的… #line:0bf981d
//jj: 有姐姐担着。 #line:03f99fe
<<dream_fade_in 2 1>>
<<wait 1>>
jj: 别愣着了,<waitfor=0.2>来呀! #line:0b98273
//jj: 别愣着了,<waitfor=0.2>来呀! #line:0b98273
//我不敢看得太清楚,<waitfor=0.2>否则会被逻辑模块突然唤醒。 #line:08eb9ab
<<hide_dialog>>
<<wait 1>>
me: 妈妈说,<waitfor=0.2>在你的病好之前<waitfor=0.2>不能下海。 #line:0fef445
//me: 妈妈说,<waitfor=0.2>在你的病好之前<waitfor=0.2>不能下海。 #line:0fef445
jj: 姐姐不会有事的,<waitfor=0.2>就一小会。 #line:0e4e2a7
me: 但是… #line:0849aef
jj: 来,<waitfor=0.2>牵着姐姐的手。 #line:07a0e10
@@ -122,12 +123,12 @@ me: 姐姐? #line:0f85e9f
<<hide_dialog>>
<<wait 1>>
me: [[size]]姐<waitfor=0.4>姐<waitfor=0.4>[[/size]] #line:0f0e96d
me: <speed=0.4>[[size]]姐<waitfor=0.4>姐<waitfor=0.4>[[/size]] #line:0f0e96d
<<hide_dialog>>
<<wait 2>>
me: <shake>带我回家啊,姐姐。</shake> #line:0d447f7
me: <speed=1><shake a=0.2>带我回家啊,姐姐。</shake> #line:0d447f7
<<hide_dialog>>
<<wait 3>>
@@ -28,6 +28,7 @@ gotash?: 医生…求求你…… #line:0e37a5a
me: 47号患者<waitfor=0.1>已确认原型溢出。<waitfor=0.2>准备检查<waitfor=0.1>模块污染情况。 #line:064e749
gotash?: …求求你…<waitfor=0.2>医生,<waitfor=0.5><shake>让我…<waitfor=0.5>死吧……</shake> #line:0582043
me: 还不是时候。 #line:014641d
<<play_music event:/Music/music_prologue>>
Task: 插线检查异常模块 #line:002672d
<<DropCable>>
// <<task_moveIn TaskManager>>
@@ -3,13 +3,14 @@ tags:
colorID: 8
position: 250,200
---
// <<init_environment Night>>
<<init_environment Night>>
<<set_weather "Snowy">>
// <<init_actor 地铁医生 左边>>
// <<show_actor 地铁医生>>
<<init_actor 地铁医生 左边>>
<<show_actor 地铁医生>>
<<play_music event:/Music/music_ending_temp>>
<<fade_out>>
<<wait 1>>
感谢游玩 爱与机器人维修技术 ,本次demo的体验流程已结束。 #line:0cd82d0
感谢游玩 爱与机器人维修技术 <waitfor=0.3><br>本次playtest的体验流程已结束。 #line:0cd82d0
<<OpenEndMenu>>
===
+120
View File
@@ -0,0 +1,120 @@
# AgentBridge 计划草案
> 状态:草案,待讨论后实施。
> 目的:让 Cursor Agent / Unity MCP 能自动到达可测状态、读取结构化运行时状态、做回归验证,减少手动 Play + 复现。
## 背景
当前 Agent 已可通过 **Unity MCP** 做:
- Play / Stop、加载场景、查 GameObject / 组件
- 读 Console、截图
- 触发 Editor MenuItem`execute_menu_item`
难以自动完成的部分:
- 完整叙事流程(Persistence → 维修场景 → Yarn → 进模块)
- UI 交互(Esc 开设置、点 log 面板等)
- 缺乏结构化状态输出,debug 依赖临时埋点
本项目已有大量可复用入口:`FixSystemCenter``EyeSystem``DialogController``UIManager`、各 `*YarnCommand``PeipeiFixCues`(如 `EyeCue.EnterImmediate`)等。AgentBridge 只做薄包装,不重写业务逻辑。
## 目标
1. **一键到可测状态** — 场景预设,而非暴露底层细节
2. **状态可查询** — JSON / Log,便于 Agent 自动验证
3. **Editor / Dev 专用**`#if UNITY_EDITOR || DEVELOPMENT_BUILD`,不进 Release
4. **菜单路径稳定** — 供 MCP `execute_menu_item` 与文档引用
## 阶段 1:最小可用(建议优先)
| 项 | 内容 | 调用方式 |
|---|---|---|
| `AgentBridge.cs` | 静态薄包装 | — |
| 场景预设 | `EnterPeipeiEyeModule()``EyeCue.EnterImmediate` | `Tools/Agent/Enter Peipei Eye Module` |
| UI 操作 | `ToggleSettingPanel()``ToggleMainPanel()` | `Tools/Agent/Toggle Setting Panel` 等 |
| 状态查询 | `DumpEyeOverlayState()` → 输出 layer / sortingOrder / active | `Tools/Agent/Dump Eye Overlay State` |
| 文档 | 本文件 + 菜单清单维护 | Agent / `.cursor/rules` 引用 |
### 建议 Editor 菜单(第一批)
```
Tools/Agent/Enter Peipei Eye Module
Tools/Agent/Toggle Setting Panel
Tools/Agent/Toggle Main Panel
Tools/Agent/Dump Eye Overlay State
```
### 代码位置(待拍板)
- 方案 A`Assets/Scripts/Framework/AgentBridge/`Runtime + `#if` 守卫)
- 方案 B`Assets/Editor/Agent/`(仅 EditorMenuItem 与 Bridge 同目录)
## 阶段 2:常用模块覆盖(按需扩展)
按实际 debug 频率扩展场景预设:
| 模块 | 预设示例 | 复用 API |
|---|---|---|
| FixSystem | `TransitionTo(Eye / UF / Memory)``ResetCablePanel` | `FixSystemCenter` |
| Eye | `EyeOverlayOn/Off``SetEyeTarget(name)` | `EyeSystem` |
| Dialog | `StartDialogNode(nodeName)` | `DialogController` |
| Save | `LoadTestSave("peipei_eye")` | `SaveSystem` / 固定测试档 |
| Camera | `SwitchCamera(EyeDeep)` 等 | `CameraKit` |
每个预设 = 一个 MenuItem + 一个 `AgentBridge` 方法 +(可选)一个 `GetXxxState()`
## 阶段 3:可验证 + 防回归
| 项 | 用途 |
|---|---|
| `GetXxxState()` 返回 JSON | Agent 读 Console / 文件验证,少依赖截图 |
| PlayMode Tests | 如 overlay UI 层、sortingOrder、Dialog 不被挡 |
| MCP `run_tests` | UI / 渲染相关改动后自动跑 |
### 示例:Eye Overlay 状态结构
```json
{
"overlayActive": true,
"canvasLayer": 5,
"sortingOrder": 0,
"sortingLayer": "StartUI",
"worldCamera": "UI Camera",
"layerVisibleToCamera": true
}
```
## 设计原则
1. **只包装,不重写** — 调用现有 public API
2. **场景预设 > 原子命令** — 优先「一键到眼动模块」
3. **状态可查询** — 每个常 debug 模块至少一个 `GetState()` / `Dump*()`
4. **不进入 Release** — 编译条件守卫 + 不进 Addressables
5. **菜单路径稳定** — 变更需同步更新本文档
## 待讨论问题
1. **代码放哪**`Framework/AgentBridge` 还是 `Editor/Agent`
2. **测试存档**:是否需要固定 PlayMode 存档 slot,还是每次冷启动场景?
3. **第一批优先级**:眼动 / 插线 / 对话 / 记忆 — 哪个最常需要 Agent 介入?
4. **是否写入 `.cursor/rules`**:固定 MenuItem 清单,让 Agent 默认走 Bridge 流程?
5. **与现有 Editor 工具关系**:如 `EyeSystemEditor` 预览 — 合并还是并存?
## 参考:Persistence UI 层级
Eye 视口遮罩修复后的约定(`EyeViewportOverlay`):
| Canvas | sortingOrder | 说明 |
|---|---|---|
| EyeViewportOverlay | 0 | 遮罩,不挡系统 UI |
| UI Canvas | 1 | 设置、MainPanel、PlayTool 等 |
| Dialog Canvas | 3 | 对话 |
Overlay 使用 `ScreenSpaceCamera` + UI CameraCanvas 须在 **UI 层 (5)** 以匹配 UI Camera culling mask。
## 变更记录
| 日期 | 说明 |
|---|---|
| 2026-07-01 | 初稿:overlay debug 后整理 Agent 自动化计划 |