Merge branch 'develop' into 记忆重构

This commit is contained in:
2025-01-24 13:45:44 +08:00
71 changed files with 4304 additions and 1909 deletions
@@ -140,6 +140,7 @@ namespace RainbowArt.CleanFlatUI
for(int i = 0; i < fgList.Count; i++)
{
RectTransform rectTrans = fgList[i];
Image image=rectTrans.transform.GetChild(0).GetComponent<Image>();
if(i < currentValue)
{
rectTrans.gameObject.SetActive(true);
@@ -147,10 +148,19 @@ namespace RainbowArt.CleanFlatUI
else
{
rectTrans.gameObject.SetActive(false);
}
}
if(i<16)
{
image.color=Color.Lerp(Color.green, Color.yellow, i/16f);
}
else
{
image.color = Color.Lerp(Color.yellow, Color.red, (i - 16) / 16f);
}
}
}
void UpdateText()
{
if (text != null && text.gameObject.activeSelf != hasText)
@@ -159,8 +169,10 @@ namespace RainbowArt.CleanFlatUI
}
if (hasText && (text != null))
{
float val = (float)currentValue / (float)maxValue;
text.text = Mathf.FloorToInt(val * 100) + "%";
//float val = (float)currentValue / (float)maxValue;
//text.text = Mathf.FloorToInt(val * 100) + "%";
text.text=currentValue*500+" 马力";
}
}
}
@@ -419,18 +419,18 @@ MonoBehaviour:
HideSetupWizard: 1
LastEventReferenceScanVersion: 131621
Platforms:
- {fileID: 9010303474896345012}
- {fileID: 6330521338056678831}
- {fileID: 3979222738758991920}
- {fileID: -1580684736993228498}
- {fileID: 1100827045814593625}
- {fileID: 6477534247104662684}
- {fileID: -785679389004310805}
- {fileID: 1132312529069990576}
- {fileID: -6421979802148699356}
- {fileID: 5613685733850034091}
- {fileID: -2493609972237370556}
- {fileID: -1580684736993228498}
- {fileID: -785679389004310805}
- {fileID: -712030531834803398}
- {fileID: 1100827045814593625}
- {fileID: 1132312529069990576}
- {fileID: 3979222738758991920}
- {fileID: 5613685733850034091}
- {fileID: 6330521338056678831}
- {fileID: 6477534247104662684}
- {fileID: 9010303474896345012}
MigratedPlatforms: 0500000000000000060000000a0000000800000009000000120000000c000000150000000b0000000200000001000000
--- !u!114 &1100827045814593625
MonoBehaviour:
@@ -794,16 +794,16 @@ MonoBehaviour:
HasValue: 0
displaySortOrder: 0
childIdentifiers:
- 0f8eb3f400726694eb47beb1a9f94ce8
- 46fbfdf3fc43db0458918377fd40293e
- 2fea114e74ecf3c4f920e1d5cc1c4c40
- e7a046c753c3c3d4aacc91f6597f310d
- 52eb9df5db46521439908db3a29a1bbb
- 2c5177b11d81d824dbb064f9ac8527da
- b7716510a1f36934c87976f3a81dbf3d
- c88d16e5272a4e241b0ef0ac2e53b73d
- de700ef3f37a49b58a57ae3addf01ad9
- 46fbfdf3fc43db0458918377fd40293e
- 52eb9df5db46521439908db3a29a1bbb
- fd7c55dab0fce234b8c25f6ffca523c1
- 2fea114e74ecf3c4f920e1d5cc1c4c40
- 2c5177b11d81d824dbb064f9ac8527da
- 0f8eb3f400726694eb47beb1a9f94ce8
- c88d16e5272a4e241b0ef0ac2e53b73d
- e7a046c753c3c3d4aacc91f6597f310d
codecChannels:
Value: []
HasValue: 0
Binary file not shown.
@@ -0,0 +1,242 @@
fileFormatVersion: 2
guid: 64008f2c27d35ac409386015a6bb5887
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: b2a9591990af98743ba3ff7cf1000886, type: 3}
textureImporterSettings:
alphaSource: 1
mipMapMode: 0
enableMipMap: 1
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
convertToNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
swizzle: 50462976
isReadable: 0
streamingMipmaps: 1
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
nPOTScale: 1
sRGBTexture: 1
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 500
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 0
flipbookColumns: 0
ignorePngGamma: 0
cookieMode: 0
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
normalMap: 0
textureFormat: 0
maxTextureSize: 0
lightmap: 0
compressionQuality: 0
linearTexture: 0
grayScaleToAlpha: 0
rGBM: 0
cubemapConvolutionSteps: 0
cubemapConvolutionExponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
spriteImportData:
- name:
originalName:
pivot: {x: 0, y: 0}
alignment: 0
border: {x: 0, y: 0, z: 0, w: 0}
rect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
spriteID:
spriteBone: []
spriteOutline: []
vertices: []
spritePhysicsOutline: []
indices:
edges: []
tessellationDetail: 0
uvTransform: {x: 0, y: 0}
spritePosition: {x: 0, y: 0}
mosaicSpriteImportData: []
rigSpriteImportData:
- name: "\u56FE\u5C42 2"
originalName:
pivot: {x: 0.5, y: 0.5}
alignment: 0
border: {x: 0, y: 0, z: 0, w: 0}
rect:
serializedVersion: 2
x: 4
y: 4
width: 1823
height: 1127
spriteID: bebac499b546daf4893c5ecd0bf27294
spriteBone: []
spriteOutline: []
vertices: []
spritePhysicsOutline: []
indices:
edges: []
tessellationDetail: 0
uvTransform: {x: 4, y: 4}
spritePosition: {x: 0, y: 0}
characterData:
bones: []
parts: []
dimension: {x: 0, y: 0}
characterGroups: []
pivot: {x: 0, y: 0}
boneReadOnly: 0
sharedRigSpriteImportData: []
sharedRigCharacterData:
bones: []
parts: []
dimension: {x: 0, y: 0}
characterGroups: []
pivot: {x: 0, y: 0}
boneReadOnly: 0
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}
documentAlignment: 7
importHiddenLayers: 0
layerMappingOption: 2
generatePhysicsShape: 0
paperDollMode: 0
keepDupilcateSpriteName: 1
skeletonAssetReferenceID:
padding: 4
spriteSizeExpand: 0
spriteCategoryList:
categories: []
spritePackingTag:
resliceFromLayer: 0
mosaicPSDLayers: []
rigPSDLayers:
- name: "\u56FE\u5C42 2"
spriteName: "\u56FE\u5C42 2"
isGroup: 0
parentIndex: -1
spriteID: bebac499b546daf4893c5ecd0bf27294
layerID: 8
mosaicPosition: {x: 4, y: 4}
flatten: 0
isImported: 1
isVisible: 1
- name: "\u56FE\u5C42 1"
spriteName: "\u56FE\u5C42 1"
isGroup: 0
parentIndex: -1
spriteID: 079b5602caf6ad6459a584388bf71067
layerID: 2
mosaicPosition: {x: 4, y: 4}
flatten: 0
isImported: 0
isVisible: 0
sharedRigPSDLayers: []
pSDLayerImportSetting: []
importFileNodeState: 1
platformSettingsDirtyTick: 0
spriteSizeExpandChanged: 0
generateGOHierarchy: 0
textureAssetName:
prefabAssetName:
spriteLibAssetName:
skeletonAssetName:
secondarySpriteTextures: []
@@ -0,0 +1,212 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!213 &21300000
Sprite:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: "\u53D8\u901F\u7BB1\u5531\u7247\u9F7F\u8F6E"
m_Rect:
serializedVersion: 2
x: 3962
y: 5054
width: 130
height: 130
m_Offset: {x: 0, y: 0}
m_Border: {x: 0, y: 0, z: 0, w: 0}
m_PixelsToUnits: 215
m_Pivot: {x: 0.5, y: 0.5}
m_Extrude: 1
m_IsPolygon: 0
m_AtlasName:
m_PackingTag:
m_RenderDataKey:
149a798e8f987264f82beb4f4052eb5e: -611960561148999933
m_AtlasTags: []
m_SpriteAtlas: {fileID: 0}
m_RD:
serializedVersion: 3
texture: {fileID: -8328923581568760697, guid: 149a798e8f987264f82beb4f4052eb5e, type: 3}
alphaTexture: {fileID: 0}
secondaryTextures: []
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 6
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 4
localAABB:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_IndexBuffer: 000001000200020001000300
m_VertexData:
serializedVersion: 3
m_VertexCount: 4
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 1
offset: 0
format: 0
dimension: 2
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 1
offset: 8
format: 0
dimension: 4
- stream: 1
offset: 24
format: 10
dimension: 4
m_DataSize: 208
_typelessdata: 6bca9abe6bca9a3e000000006bca9a3e6bca9a3e000000006bca9abe6bca9abe000000006bca9a3e6bca9abe0000000000a0773f0000223f0000803f0000000000000000000000000000000000000000000000000000000000c07f3f0000223f0000803f0000000000000000000000000000000000000000000000000000000000a0773f00f01d3f0000803f0000000000000000000000000000000000000000000000000000000000c07f3f00f01d3f0000803f00000000000000000000000000000000000000000000000000000000
m_Bindpose: []
textureRect:
serializedVersion: 2
x: 3962
y: 5054
width: 130
height: 130
textureRectOffset: {x: 0, y: 0}
atlasRectOffset: {x: -1, y: -1}
settingsRaw: 0
uvTransform: {x: 215, y: 4027, z: 215, w: 5119}
downscaleMultiplier: 1
m_AtlasRD:
serializedVersion: 3
texture: {fileID: -8328923581568760697, guid: 149a798e8f987264f82beb4f4052eb5e, type: 3}
alphaTexture: {fileID: 0}
secondaryTextures: []
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 6
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 4
localAABB:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_IndexBuffer: 000001000200020001000300
m_VertexData:
serializedVersion: 3
m_VertexCount: 4
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 1
offset: 0
format: 0
dimension: 2
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 1
offset: 8
format: 0
dimension: 4
- stream: 1
offset: 24
format: 10
dimension: 4
m_DataSize: 208
_typelessdata: 6bca9abe6bca9a3e000000006bca9a3e6bca9a3e000000006bca9abe6bca9abe000000006bca9a3e6bca9abe0000000000a0773f0000223f0000803f0000000000000000000000000000000000000000000000000000000000c07f3f0000223f0000803f0000000000000000000000000000000000000000000000000000000000a0773f00f01d3f0000803f0000000000000000000000000000000000000000000000000000000000c07f3f00f01d3f0000803f00000000000000000000000000000000000000000000000000000000
m_Bindpose: []
textureRect:
serializedVersion: 2
x: 3962
y: 5054
width: 130
height: 130
textureRectOffset: {x: 0, y: 0}
atlasRectOffset: {x: -1, y: -1}
settingsRaw: 0
uvTransform: {x: 215, y: 4027, z: 215, w: 5119}
downscaleMultiplier: 1
m_PhysicsShape: []
m_Bones: []
m_SpriteID: db22083879843b843b69dc1550fe5bfc
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f33b33323f3c1314dbd795a207653ce0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 21300000
userData:
assetBundleName:
assetBundleVariant:
+50
View File
@@ -0,0 +1,50 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: FadeRing
m_Shader: {fileID: 4800000, guid: bb8f232219e0a3a488c321b63e85281f, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AlphaTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _EnableExternalAlpha: 0
- _Progress: 0.137
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Flip: {r: 1, g: 1, b: 1, a: 1}
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2d5f7d9c99f43ce4b8ec277a4ab03080
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+1 -1
View File
@@ -14,5 +14,5 @@ MonoBehaviour:
m_EditorClassIdentifier:
nextScene: {fileID: 11400000, guid: 9e3b2c77ad4a9454188d458da2cf0ddd, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: ec06c945cb99fb544b1dd9a2a6ea9a7b, type: 3}
firstSceneName: PeipeiFixScene
firstSceneName: ExpressFixScene
isEndOfDay: 1
+1 -1
View File
@@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: StoneDay2
m_EditorClassIdentifier:
nextScene: {fileID: 11400000, guid: 8d8b11f0c2fbc4d4cb8c2857d98383c9, type: 2}
nextScene: {fileID: 11400000, guid: 7bf300be492f2634580f0eaabcca2b2e, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: fa8082420f7bb5b4a8ab33a59c70bcc9, type: 3}
firstSceneName: ExpressFixScene
isEndOfDay: 0
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: StoneDay2_2
m_EditorClassIdentifier:
nextScene: {fileID: 11400000, guid: 8d8b11f0c2fbc4d4cb8c2857d98383c9, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: b254008a450f4c242b25311130c2592a, type: 3}
firstSceneName: ExpressFixScene
isEndOfDay: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 088974ca6c9487041b695af86b6c93a1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 157431981b8a721458e6706c374a3867, type: 3}
m_Name: StoneDay2_head
m_EditorClassIdentifier:
nextScene: {fileID: 11400000, guid: 088974ca6c9487041b695af86b6c93a1, type: 2}
yarnProject: {fileID: 7545569452688597077, guid: b7787a998da53b74c854f2e09dccec52, type: 3}
firstSceneName: PeipeiFixScene
isEndOfDay: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7bf300be492f2634580f0eaabcca2b2e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
+64
View File
@@ -0,0 +1,64 @@
Shader "Unlit/CircleProgressBar"
{
Properties
{
_MainTex("Texture", 2D) = "white" {}
_Progress("Progress",Range(0,1)) = 0.5
}
SubShader
{
Tags
{
"RenderType"="Transparent"
}
Blend SrcAlpha OneMinusSrcAlpha
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float _Progress;
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
float4 col = tex2D(_MainTex, i.uv);
float4 final = step(1 - col.r, _Progress);
float3 ramp = lerp(float3(0, 1, 0), float3(1, 0, 0), _Progress);
final.rgb = final.rgb * ramp;
final.a = col.a;
if (1 - col.r > _Progress)
{
final.a = 0;
}
return final;
}
ENDCG
}
}
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: bb8f232219e0a3a488c321b63e85281f
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -6,6 +6,9 @@ position: 43,-97
现在可以插线来深入UF了
===
title: 结束UF检查
position: 275,-222
---
@@ -13,6 +16,9 @@ position: 275,-222
<<jump Center>>
===
title: 第一次进入UF检查
position: 275,-222
---
@@ -23,6 +29,10 @@ position: 275,-222
// 【这个过程变得越来越不受控制,最后你失去了控制,视点在疯狂移动】
// <<jump 结束UF检查>>
===
title: UFCheck
tags:
colorID: 3
@@ -26,7 +26,7 @@ position: 250,200
<<character_init_new "石头">>
<<wait 1>>
shitou: 啊!~自由的小机体,在大大的城市里~<br>跑呀~跑呀~再多烦恼~统统掉~
shitou: 啊!~自由的小机体,在大大的城市里~<br>跑呀~跑呀~再多烦恼~统统掉~
<<hide_dialog>>
<<wait 0.5>>
@@ -63,7 +63,8 @@ me: 听起来不是第一次了?
shitou: 当然啦,医生!我把它保养得可好啦~!听听我这强劲的马达~
石头运转起它的马达,他的胸腔发出低沉的轰鸣。
me: 好了好了…你可千万别跑起来。<br>碰坏了这里的东西,你可…我可赔不起。
me: 来吧,让我们来治疗室好好看看。
shitou: 什么?医生,引擎太吵~我听不清~
me: …我说,我们来治疗室来吧。
//shitou: 啊,我嘛……我需要做一个调速,这样就能跑得更快,送更多的货!
//它是一个货务机器人,根据指令把货务送到目的地——大部分都是罐头。
@@ -25,7 +25,7 @@ position: 380,-239
shitou: 医生~不好意思~每次拆面板我都很害怕~你介意我~放声高歌吗?
me: 没关系,其实你一直在唱歌的。
shitou: 哈哈~!毕竟~音乐就是我的~生命~
shitou: 啊!~自由的小机体,在大大的城市里~<br>跑呀~跑呀~再多烦恼~统统掉~
shitou: 啊!~自由的小机体,在大大的城市里~<br>跑呀~跑呀~再多烦恼~统统掉~
me: 好多灰尘啊,真难开……
me: 嘿!
@@ -316,53 +316,79 @@ me: 那来吧。在调整之前…<br>让我看看,你现在能跑多快。
shitou: 收到~
shitou: 呜——!
石头加起速来,引擎轰鸣着达到了跑到了某个速度。#auto_next
<<wait 3>>
<<step_on_gas 0.6 4>>
//石头加起速来,引擎轰鸣着达到了跑到了某个速度。#auto_next
//<<wait 3>>
me: 9800转…好高啊。
shitou: 嘿嘿,医生,我要跑得双倍快才行哩!
me: 双倍快?
shitou: 对!我要比大家都快一倍!这样我才能跑双倍的货~
<<hide_dialog>>
<<wait 0.5>>
me: ……你是想跑到20000转吗?那样要赶上火车了。
shitou: 哈哈,我真能变成火车…那就……太酷啦!
shitou: 开玩笑~医生!这只是一种比喻~<br>我只要能跑到12000转就够啦!
<<hide_dialog>>
<<wait 0.5>>
me: 那么…加压应该是可以做到的。
me:拉动左边的拉绳,就可以提升涡轮部分的转速了
<<active_engine_pull>>
//【加压按钮可用】#auto_next
//<<wait 1.5>>
【加压按钮可用】#auto_next
<<wait 1.5>>
// ->加压
->加压
// <<complete_task TaskManager 为动力模块进行增压>>
<<complete_task TaskManager 为动力模块进行增压>>
// 你向气阀内压入气体,石头的速度变得更高了。#auto_next
// <<wait 1>>
你向气阀内压入气体,石头的速度变得更高了。#auto_next
<<wait 1>>
// <<task_moveOut TaskManager>>
<<task_moveOut TaskManager>>
// <<wait 1>>
<<wait 1>>
//<<wait 1.5>>
//me: 嗯…看起来一切正常?没有缺齿轮之类的报告……
//shitou: 正常?不可能,医生。我明显感觉它有问题。
//me: 虽然我不知道你说的会是什么问题…<br>但这确实是最有可能掉出齿轮的地方。
//<<wait 0.5>>
//me: 来都来了……<br>以防万一,最好让它跑一次;<br>确认它在运行状态下是没问题的。
//<<hide_dialog>>
//<<wait 0.5>>
//<<MessageBoxSetText 正在运行自检……>>
//<<wait 0.1>>
//<<MessageBoxSetText 请将转速提高至2500RPM以进行自检!>>
//<<wait 0.5>>
//me: ……
//me: 2500,哇哦。
//shitou: 怎么了,医生?找到问题了?
//me: 不是。正常机体的动力系统只能跑到500RPM…<br>而且还得是在劳累或者激动的情况下。
//me: 但你能跑到2500RPM。这是一般机体的…5倍。<br>通常转到这个速度,就意味着机体要接近报废了。
//me: 不过也不奇怪,毕竟你是需要跑货的。<br>……你简直就是一台人形货车了。
//shitou: 嗨!我要是能天天跑到2500就好了!<br>可惜城里的红绿灯实在是太多了。
//me: 你现在就有机会了。<br>我需要手动把你提到2500RPM,来完整测试引擎的运行能力。
//shitou: 要开跑了吗,医生?太好啦!我最喜欢跑货了!<br>…哎呀,可惜!要是我状态完美,能边跑边唱……
//me: 这是治疗,不是赛车。<br>让它跑起来是为了确认它到底有没有问题。
//shitou: 不过医生…如果里面缺一个齿轮,不会有问题吗?<br>比如把其他的齿轮也甩飞出来之类的……
//me: 按理来说不会…至少手册说不会。
===
title: 调速后测速
tags:
colorID: 8
group: 插入触发
position: -158,370
---
shitou: 哇~好快啊,从来没有过的感觉!
<<hide_dialog>>
<<wait 0.5>>
<<shake_camera 0.2 0.3 20>>
石头的速度忽然掉了下来,逐渐回到怠速。
<<wait 0.5>>
<<step_on_gas 0.2 0.3>>
shitou: 啊!
shitou: 医生…我怎么…动不了了!
<<hide_dialog>>
<<wait 0.5>>
@@ -372,30 +398,24 @@ me: 听起来像是变速箱里的声音……我这就看看。
<<task_moveIn TaskManager>>
->打开变速箱盖
<<switch_fix_system_to Gear>>
<<open_gear_cover>>
<<hide_dialog>>
<<wait 1>>
你打开引擎的变速箱盖…#auto_next
<<wait 1>>
<<shake_camera 0.2 0.3 20>>
me: 哎呀……有几个齿轮松脱了。
<<complete_task TaskManager 检查变速箱的异响>>
<<hide_dialog>>
<<wait 1>>
<<open_gear_panel>>
<<wait 0.5>>
->拿起齿轮
<<show_obj 变速箱唱片齿轮>>
me: 这些齿轮表面有一部分竟然是塑胶的…<br>…看起来强度很低啊。
【拿起齿轮端详(show obj)】
<<wait 0.5>>
<<hide_obj>>
<<hide_dialog>>
<<wait 0.5>>
me: 齿轮箱里看起来也有一些不属于这里的结构…这根杆子是什么?
shitou: 噢~?你说的是我的~唱片机吗?
me: 唱片机……?这里不应该是变速箱吗……
@@ -414,36 +434,31 @@ me: 无论如何,我先把这些脱落的齿轮装回去吧。
//shitou: 噢?你说的是*那些*齿轮吗?
//me: 什么是*那些*齿轮?
//shitou: 嘿嘿。快把它放回去,让我演示给你看!
->放回去
<<hide_dialog>>
<<wait 1>>
<<close_gear_panel>>
// <<close_gear_panel>>
<<complete_task TaskManager 恢复变速箱的齿轮>>
<<task_moveOut TaskManager>>
<<wait 0.5>>
me: 好了。石头,再试试吧,跑起来。
shitou: 该播放音乐了吗?医生!
// <<switch_fix_system_to Engine>>
<<step_on_gas 0.6 3>>
<<hide_dialog>>
<<wait 0.5>>
shitou: 该播放音乐了吗?医生!
// 石头加起速来,引擎轰鸣着达到了跑到了某个速度。#auto_next
// <<wait 2>>
石头加起速来,引擎轰鸣着达到了跑到了某个速度。#auto_next
<<wait 2>>
<<move_needle>>
<<wait 1>>
<<play_loop_audio disc>>
那根奇怪的杆子转了下来,搭在一张唱片上。#auto_next
<<wait 2>>
me: 原来如此……
shitou: 医生,这可是我的得意改装!我从小!就喜欢音乐!可惜我~五音不全
shitou: 医生,这可是我的得意改装!我一直!就喜欢音乐!可惜我~五音不全,而且引擎太吵,我听不到外边的音乐!
shitou: 工作后一攒够钱!我就买了一直心念念的爱索~Walkman音乐!唱片机!
shitou: 我把它改装进了动力模块里!这样我就可以随时随地哼我最喜欢的旋律了——
shitou: 我把它改装进了动力模块里!这样我就可以随时随地哼我最喜欢爱的这首歌啦~
<<hide_dialog>>
<<wait 1>>
@@ -452,26 +467,27 @@ me: 这倒是…很巧妙的改造。
<<hide_dialog>>
<<wait 1>>
me: 但是,有一个问题……
shitou: 好了,现在可以~马力全开!
me: 等等石头,那些齿轮...
<<hide_dialog>>
<<wait 0.2>>
<<step_on_gas 0.75 3>>
shitou: 哇,感觉充满力量!要来了!
<<step_on_gas 0.9 3>>
<<pause_loop_audio>>
<<random_play_interaction tv_in>>
<<shake_camera 0.4 0.3 20>>
石头的速度又掉了下来,逐渐回到怠速。#auto_next
<<step_on_gas 0.2 0.5>>
<<wait 1>>
shitou: 哎呀,医生!我又动不了了!
me: 这就是我说的问题。刚才已经发生过一次了……
me: 我先给你安回去吧…但你别再加速了。不然还得飞出来。
你将齿轮装了回去。(自动)#auto_next
<<close_gear_cover>>
<<wait 1>>
<<fade_in 1>>
<<switch_fix_system_to "Clinic">>
<<character_fade_in_new>>
<<fade_out 1>>
me: 你想跑到12000转……但这些橡胶的“唱片齿轮”的强度太低了。恐怕只有镍铬齿轮的强度才够……
@@ -524,21 +540,17 @@ me: 啊…那倒不贵。不过是一些铁块罢了。
shitou: 哈哈哈!那太好了,那还等什么?医生,我们来吧。
<<fade_in 1>>
<<switch_fix_system_to "Engine">>
<<switch_fix_system_to "Gear">>
<<fade_out 1>>
<<open_gear_cover>>
me: 让我找找…镍铬齿轮…
<<open_gear_panel>>
<<add_task TaskManager 更换镍铬齿轮>>
<<task_moveIn TaskManager>>
<<hide_dialog>>
<<wait 0.5>>
->将镍铬齿轮替换上去
<<hide_dialog>>
<<wait 1>>
<<close_gear_panel>>
@@ -555,32 +567,5 @@ me: 好了…再播…跑一次吧。
<<wait 2>>
shitou: 呜呼!医生~我感觉~我像在飞一样!
//<<wait 1.5>>
//me: 嗯…看起来一切正常?没有缺齿轮之类的报告……
//shitou: 正常?不可能,医生。我明显感觉它有问题。
//me: 虽然我不知道你说的会是什么问题…<br>但这确实是最有可能掉出齿轮的地方。
//<<wait 0.5>>
//me: 来都来了……<br>以防万一,最好让它跑一次;<br>确认它在运行状态下是没问题的。
//<<hide_dialog>>
//<<wait 0.5>>
//<<MessageBoxSetText 正在运行自检……>>
//<<wait 0.1>>
//<<MessageBoxSetText 请将转速提高至2500RPM以进行自检!>>
//<<wait 0.5>>
//me: ……
//me: 2500,哇哦。
//shitou: 怎么了,医生?找到问题了?
//me: 不是。正常机体的动力系统只能跑到500RPM…<br>而且还得是在劳累或者激动的情况下。
//me: 但你能跑到2500RPM。这是一般机体的…5倍。<br>通常转到这个速度,就意味着机体要接近报废了。
//me: 不过也不奇怪,毕竟你是需要跑货的。<br>……你简直就是一台人形货车了。
//shitou: 嗨!我要是能天天跑到2500就好了!<br>可惜城里的红绿灯实在是太多了。
//me: 你现在就有机会了。<br>我需要手动把你提到2500RPM,来完整测试引擎的运行能力。
//shitou: 要开跑了吗,医生?太好啦!我最喜欢跑货了!<br>…哎呀,可惜!要是我状态完美,能边跑边唱……
//me: 这是治疗,不是赛车。<br>让它跑起来是为了确认它到底有没有问题。
//shitou: 不过医生…如果里面缺一个齿轮,不会有问题吗?<br>比如把其他的齿轮也甩飞出来之类的……
//me: 按理来说不会…至少手册说不会。
<<jump 分析检查结果>>
===
===
+85 -76
View File
@@ -8,12 +8,18 @@ position: -1094,-98
<<endif>>
===
title: HeartPlugIn
position: -816,-97
---
<<jump 检查_心_2>>
===
title: LiverPlugIn
position: -533,-97
---
@@ -24,6 +30,9 @@ position: -533,-97
<<endif>>
===
title: StomachPlugIn
position: -267,-102
--- z
@@ -34,6 +43,82 @@ position: -267,-102
<<endif>>
===
title: EmoPlugIn
tags: 待编辑
colorID: 8
position: -2,-3039
---
<<jump 检查情绪>>
===
title: SpeakPlugIn
tags: 待编辑
colorID: 8
position: 240,-2640
---
<<jump 检查语言>>
===
title: LogicPlugIn
tags: 待编辑
colorID: 8
position: 480,-3040
---
<<jump 检查逻辑>>
===
title: ColorPlugIn
tags: 待编辑
colorID: 8
position: 240,-2840
---
<<jump 检查色觉>>
===
title: MemoryPlugIn
tags: 待编辑
colorID: 8
position: 240,-3040
---
<<jump 检查记忆>>
===
title: UFPlugIn
tags: 待编辑
colorID: 8
position: 0,-2840
---
<<jump 检查UF>>
===
title: EyePlugIn
tags: 待编辑
colorID: 8
position: 480,-2840
---
<<jump 检查视觉>>
===
title: EngineSuccess
position: -1092,115
---
@@ -42,79 +127,3 @@ position: -1092,115
<<endif>>
===
title: 插入冷却液
position: -809,327
---
<<if $gameStage == 5>>
<<jump 冷却液介绍>>
<<endif>>
===
title: 泵机运行
position: -1088,330
---
<<if $gameStage == 5>>
<<jump 泵机运行后>>
<<endif>>
===
title: 引擎过速
description: 引擎过速触发
position: -257,110
---
<<if $gameStage == 4>>
<<set $failTime = $failTime + 1 >>
<<if visited("调速popup_过速")==false>>
<<jump 调速popup_过速>>
<<elseif $failTime == 5>>
<<jump 调速popup_失败5次>>
<<elseif $failTime == 10>>
<<jump 调速popup_失败10次>>
<<elseif $failTime == 15>>
<<jump 调速popup_失败15次>>
<<elseif $failTime == 20>>
<<jump 调速popup_失败15次>>
<<elseif $failTime == 25>>
<<jump 调速popup_失败15次>>
<<elseif $failTime == 30>>
<<jump 调速popup_失败15次>>
<<endif>>
<<endif>>
===
title: 引擎掉速
description: 引擎掉速触发
position: -813,115
---
<<if $gameStage == 4>>
<<set $failTime = $failTime + 1 >>
<<if visited("调速popup_掉速")==false>>
<<jump 调速popup_掉速>>
<<elseif $failTime == 5>>
<<if visited("调速popup_过速")==false>>
<<jump 调速popup_失败5次但是都是掉速>>
<<else>>
<<jump 调速popup_失败5次>>
<<endif>>
<<elseif $failTime == 10>>
<<jump 调速popup_失败10次>>
<<elseif $failTime == 15>>
<<jump 调速popup_失败15次>>
<<elseif $failTime == 20>>
<<jump 调速popup_失败15次>>
<<elseif $failTime == 25>>
<<jump 调速popup_失败15次>>
<<elseif $failTime == 30>>
<<jump 调速popup_失败15次>>
<<endif>>
<<endif>>
===
title: 调整进气档位
description: 调整进气档位时触发
position: -532,113
---
<<if $gameStage == 4>>
<<jump 调速popup_调整进气档位>>
<<endif>>
===
@@ -48,6 +48,13 @@ position: 205,199
//选择的透析剂
<<declare $selection = 0>>
<<declare $emoChecked = false>>
<<declare $logicChecked = false>>
<<declare $memoryChecked = false>>
<<declare $eyeChecked = false>>
<<declare $speakerChecked = false>>
<<declare $memoryPlayed = false>>
<<declare $songOriginal = true>>
//【功能相关】
@@ -74,7 +81,7 @@ colorID: 1
// 每次进入维修界面就自动保存
<<auto_save>>
//gamestage:1-引入对话;2-调速;3-中间对话;4-头部检查;5-头部检查后对话;6-刻录;7-结束对话;0-BE对话
//gamestage:1-引入对话;2-头部检查;3-头部检查后对话;4-刻录;5-结束对话;0-BE对话
// 引入对话
<<if $gameStage == 1>>
<<jump Stage1>>
@@ -97,14 +104,6 @@ colorID: 1
<<endif>>
<<if $gameStage == 6>>
<<jump Stage6>>
<<endif>>
<<if $gameStage == 7>>
<<jump Stage7>>
<<endif>>
<<if $gameStage == 8>>
<<NextYarn>>
<<endif>>
@@ -4,10 +4,10 @@ group: 入口
position: 250,-26
---
<<hide_dialog>>
<<fade_in 1>>
<<indoor_new 1>>
<<fade_out 1>>
<<jump 引入对话>>
===
@@ -59,7 +59,7 @@ shitou: 下一句…是什么?
->只要歌唱
->只要工作
me: 就可以把烦恼都遗忘,什么的。<br>好像是这样。
me: 就可以把烦恼都遗忘,什么的。<br>是这样唱的么…好像是?
me: 你就是来问这个?<br>…昨天走的时候不是说你还记得的嘛……
@@ -79,13 +79,16 @@ me: 你受伤了??
石头垂下手,露出了脸上的伤口。
<<hide_dialog>>
<<wait 0.5>>
<<wait 1>>
me: 糟了!看起来可能是头部有些东西受损了…
<<character_face_new 大笑>>
<<wait 1>>
me: 记不起来…<br>可别是头部有些东西受损了。
shitou: 医生…<br>我还记得…但我想不起来了……
me: 快……你需要赶紧做个检查。
me: 快过来……你需要立刻做个检查。
//石头回来了。
//他和昨天的状态几乎一模一样,但是看起来显然要开心得多。
@@ -100,7 +103,7 @@ me: 快……你需要赶紧做个检查。
<<hide_dialog>>
<<wait 1>>
<<jump toStage4>>
<<jump toStage2>>
===
@@ -110,7 +113,7 @@ title: toStage2
group: 出口
position: 248,443
---
<<NextYarn>>
<<set $gameStage = 2>>
<<jump Center>>
@@ -1,4 +1,4 @@
title: Stage2
title: Stage2disposed
group: 入口
tags:
position: 378,-540
@@ -1,4 +1,4 @@
title: Stage3
title: Stage3disposed
tags:
position: 210,-342
---
@@ -1,43 +0,0 @@
title: Stage4
tags:
position: 210,-342
---
<<jump 头部检查>>
===
title: 头部检查
position: 210,-129
---
<<fade_in 1>>
<<switch_fix_system_to BodyModule>>
<<fade_out 1>>
me: 看起来受到了严重的冲击……
视觉模块: 视觉模块有重影。正在恢复。
语言模块: 语言模块正常。有些结巴,很快会恢复。
逻辑模块: 逻辑模块经历了一段时间的宕机,但是现在恢复了。
情绪模块: 惊恐和悲伤的情绪正占主导,但似乎不是由于撞击导致的。
记忆模块: 记忆模块受损严重,最大的一个磁盘标记着“音乐,我的最爱!”已经无法读取了。自动恢复了好几次也没成功。
记忆模块: 同时,一些短期记忆能力也受到了损害,伤势需要进一步观察评估。
//音频相关记忆受损了,可用的分区变得很小,新的音频记忆会很快覆盖掉旧的音频记忆
me: …所以说…他的音乐记忆都在这里了?
me: 机体…真是脆弱啊。
me: 好吧…万幸的是其他部分似乎都没事……
me:
<<jump 进入阶段5>>
===
title: 进入阶段5
position: 213,321
---
<<set $gameStage = 5>>
<<jump Center>>
===
@@ -1,99 +0,0 @@
title: Stage5
tags:
position: 210,-342
---
<<jump 提出刻录>>
===
title: 提出刻录
position: 210,-129
---
<<fade_in 1>>
<<switch_fix_system_to "Clinic">>
<<character_fade_in_new>>
<<fade_out 1>>
你向石头总结了他的伤势。
石头的脸上出现了一种捉摸不透的情绪。
shitou: 所以说,那些记忆…没办法再被恢复了?
<<hide_dialog>>
<<wait 1>>
me: 是的。
<<hide_dialog>>
<<wait 1>>
石头再尝试了一次,依然只能唱出前半句。
me: 你是怎么撞的?
shitou: 不是我撞的…是它撞的我……
shitou: 它逆行过来,我来不及刹住嘛。
me: 啧……<br>假如你控制住速度…
me: 你不应该做这个调速的。
石头再尝试了一次,依然只能唱出前半句。
shitou: 真的一点办法也没有了吗?医生。一点也没有吗?
me: 这种受损是不可逆的,往后…
me: 你只能记得你拥有过这些残缺的记忆…但不记得它们的内容是什么了。
<<hide_dialog>>
<<wait 1>>
shitou: 真的一点办法也没有了吗?医生。一点也没有吗?
me: 唯一的办法就是再录一卷磁盘。
me: 但是,你的唱片齿轮……已经全部更换掉了。
石头低下头许久,重新抬起头看向远方。
shitou: 哈哈,看来我们都得向前看…对吧!
shitou: 仔细想想,音乐其实也没有那么重要……只是我一直没有来得及拿掉罢了。
shitou: 那么…就请你帮我~把这个记忆,也去掉吧!#auto_next
me: 等一下!
me: 好像…还有一个办法。
me: 唱片的原理…就是把胶盘上的划痕转化成歌声的震动…对吧?
me: 我想我们也可以反过来,把歌声变刻录成划痕…在这些镍铬齿轮上。
//shitou: 我想我应该明白了。
//shitou: 音乐…真的很神奇,不是吗?
//shitou: 虽然我没有机会停下来,也没有机会记住更多的音乐……
//shitou: 但是,如果我能每天都像第一次一样听到最喜欢的音乐…<br>那岂不是比能继续听音乐更好?
//shitou: 只可惜…
//shitou: 医生,这块齿轮…还有可能复原吗?
//me: ……
//me: 就算粘好,它也不可能承受住现在的转速了。
//shitou: ……
//me: 倒是还有一个办法。
//你提出了一个方案,这个方案虽然比不上原本的唱片,但是也足够好了。
//你提出了一个可能性:仿照之前那张唱片,在原有的齿轮上重新刻录一次。
me: 这可能不如原来刻在塑胶层上的效果那么好…但应该也能听。
me: 唯一麻烦的是…这个齿轮已经碎了,原来的声音已经遗失。我们只能凭记忆唱出来了。
shitou: 可是…这个齿轮已经碎啦,我也已经不记得这首歌的后一半是怎么唱的咯。
me: 我记得。
石头抬起头看向你,眼里重新有了光泽。
me: 但是……我不是很会唱歌。可能会跑调什么的……这可能不是一个好主意……
shitou: 医生…你真是个天才!
出乎意料地,石头接受了你的提议。
shitou: 快,医生,趁着我们都还记得,快开始吧~!
me: 哎。我真是…
<<jump 进入阶段6>>
===
title: 进入阶段6
position: 213,321
---
<<set $gameStage = 6>>
<<jump Center>>
===
@@ -1,341 +0,0 @@
title: Stage6
group: 入口
tags:
position: 378,-540
---
<<fade_in 0.5>>
<<wait 1>>
<<hide_dialog>>
<<switch_fix_system_to "BodyModule">>
<<fade_out 1>>
<<add_task TaskManager 为石头在一块齿轮上进行“刻录”>>
<<task_moveIn TaskManager>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 等待信号输入……>>
===
// 事件节点
title: 检查_肺_2
tags:
group: 插入触发
colorID: 8
position: -161,-190
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 换气模块>>
<<wait 0.1>>
<<MessageBoxSetText 进行内外部气体与热量交换,影响呼吸和散热相关的工作。>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $lungProblemKnown == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetNormal>>
<<MessageBoxSetText 检查完成!没有发现错误>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,2个异常。38295个节点已扫描。>>
<<if $lungProblemKnown == false>>
->分析
<<hide_dialog>>
<<wait 0.5>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText 报告传输完毕。>>
<<wait 1.5>>
me: 嗯。你的运动非常充足…应该说有点过于频繁了。
<<set $lungProblemKnown=true>>
<<else>>
me: 换气系统的滤板积碳很严重。
<<endif>>
->结束
<<jump 检查状态>>
===
title: 检查_心_2
tags:
group: 插入触发
colorID: 8
position: -158,-3
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetText 动力模块>>
<<wait 0.1>>
<<MessageBoxSetText 将机体的燃料转化为电能/机械能,驱动机体和内部模块运转。>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $engineProblemKnown == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetWarning>>
<<MessageBoxSetText 检查完成!没有发现错误>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,103个异常。122596个节点已扫描。>>
<<if $engineProblemKnown == false>>
->分析
<<hide_dialog>>
<<wait 0.5>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText 报告传输完毕。>>
<<wait 1.5>>
me: 嗯…看起来一切正常。
<<set $engineProblemKnown = true>>
->开始刻录
<<jump 刻录>>
<<else>>
me: 这套动力系统很高级,而且一切正常。
->开始刻录
<<jump 刻录>>
<<endif>>
->开始刻录
<<jump 刻录>>
->结束
<<jump 检查状态>>
===
title: 检查_胃_2
tags:
colorID: 8
group: 插入触发
position: -160,191
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetText 物质模块>>
<<wait 0.1>>
<<MessageBoxSetText 负责机体的物质和燃料摄入、处理和储存。>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $fuelProblemKnown == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetNormal>>
<<MessageBoxSetText 检查完成!发现1个警告>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,1个警告,7个异常。83423个节点已扫描。>>
<<MessageBoxSetText "检查到油耗值偏高!">>
<<wait 0.5>>
me: 油耗…偏高?
shitou: 对!医生,我就说嘛!<br>我跑起来怎么都不对劲。
<<if $fuelProblemKnown == false>>
->分析
<<hide_dialog>>
<<wait 0.5>>
<<MessageBoxSetText "检查到油耗值偏高!">>
<<wait 0.5>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText 报告传输完毕。>>
<<wait 1.5>>
me: 确实,从今天开始的油耗都比往常高5%左右…
me: 不过看起来…这个模块本身没有什么问题。<br>虽然还是不知道为什么油耗高。
me: 嗯…你最近都吃了些啥?
shitou: 当然是幸福牌~罐头!医生。
me: 只有罐头?
shitou: 罐头还不够好嘛!医生,推销员说这一罐罐头就能满足所有需要,不用换食!
me: 怪不得…内容物这么单一。
me: 不过这里确实没有和齿轮相关的信息。
<<set $fuelProblemKnown = true>>
<<else>>
me: 石头最近摄入的食物十分单一,都是最基础款的罐头。
me: 另外…它的油耗不过这里确实没有和齿轮相关的信息。
<<endif>>
->结束
<<jump 检查状态>>
===
title: 检查_肝_2
tags:
colorID: 8
group: 插入触发
position: -158,370
---
<<MessageBoxSetNull>>
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.2>>
<<MessageBoxSetText 循环模块>>
<<wait 0.1>>
<<MessageBoxSetText 负责机体的冷却液净化处理,保证各模块的运行状态。>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $bloodProblemKnown == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetWarning>>
<<MessageBoxSetText 检查完成!没有发现错误。 >>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,4个异常。4286个节点已扫描。>>
<<if $bloodProblemKnown == false>>
->分析
<<hide_dialog>>
<<wait 0.5>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText 报告传输完毕。>>
<<wait 1.5>>
me: 看起来这个模块没有什么太大的问题…算是个好消息。
<<set $bloodProblemKnown = true>>
<<else>>
me: 看起来这个模块没有什么太大的问题。
<<endif>>
->结束
<<jump 检查状态>>
===
title: 刻录
position: 728,79
---
<<switch_fix_system_to "Engine">>
<<set $engineProblemKnown = true>>
//??如果玩家在这里拉绳,是不是就听到音乐了?
me: 如果我没有理解错这套东西的原理…<br>我应该可以把这个读取声音的探头,改造成一个刻出声音的钻头。
->改造钻头
你将探头小心地取下,换成一个坚硬的钻头。
me: 好了…接下来,只需要唱出来,声音就会被这个齿轮记录下来。
<<hide_dialog>>
<<wait 1>>
me: ……
shitou: 快开始吧,医生!
me: 我有点不记得调了。
shitou: 没关系,开头我记得。<br>医生,把它转起来吧!
shitou: 跟上我的节奏!
石头打起了拍子。
<<play_loop_audio disc>>
->拉绳
<<jump 刻录调速>>
===
title: 刻录调速
position: 728,79
---
你拉动拉绳,转速逐渐提高,引擎的声音和石头的拍子逐渐重合。
你松开绳子,石头开始唱起歌来。
shitou: He says Son can you play me a memory?<br>(他说,小伙子,你能为我弹一段回忆吗?)
shitou: I'm not really sure how it goes.<br>(它的旋律,我已然忘记)
歌声和引擎的声音保持在同一个节奏上,让它成为了天然的节拍器。
shitou: 呼…现在加速!
石头打起了新的拍子。
->拉绳
你拉动拉绳,转速逐渐提高,引擎的声音和石头的拍子逐渐重合。
你松开绳子,石头接着唱。
shitou: 医生,到你了!
你接着石头的部分往后唱,唱得其实还不错。
me: But it's sad and it's sweet and I knew it complete<br>(这首歌忧伤而甜蜜,我记得每一句歌词…)
me When I wore a younger man's clothes.<br>(…在我更年轻一些的时候)
shitou: 太好啦!医生,你唱的真好!
shitou: 如果你不是在这个诊所里,一定会成为一个大明星的!
shitou: 下一段!
你记得下一段并没有加速。但你可以这么做。或者…
me: 我有一种感觉…接下来这段把拍子降下来也会不错。
//似乎不需要用“选择速度”来代表要做出的选择……用对话似乎更好
->遵循原曲,保持原速
me: 不,这里不是这样的。
你把速度小心保持在原位,然后继续唱。你仔细地回忆着昨天的旋律。
shitou: 太好了,太美了!
me: 我有点不太记得了!
shitou: 没关系,医生!你是我听过唱得最好的!<br>往后的每一天,都会是唱得最好的!
->按照石头的想法加速
你拉动拉绳,转速逐渐提高,引擎的声音和石头的拍子逐渐重合。
你松开绳子,继续唱。由于它变得太快,旋律变得有些狂野。
shitou: 太好了,太美了!
me: 太快了,我有点跟不上!
shitou: 没关系,医生!你是我听过唱得最好的!<br>往后的每一天,都会是唱得最好的!
->加入个人风格,减速
me: 不,听听这个!
你打起了一个新的拍子,并松开绳子让速度向下掉,直到和你的拍子重合。
你继续唱了起来。
shitou: 太好了,太美了!
me: 你会喜欢这个的!
shitou: 我会喜欢这个的!往后的每一天!
me: Sing us a song, you're the piano man<br>(为我们唱一曲吧,钢琴师)
me: Sing us a song tonight<br>(唱一曲吧,就在今晚)
me: Well we're all in the mood for a melody<br>(没有什么比一首歌更适合现在)
me: And you've got us feelin' alright<br>(没有什么更能彼此慰藉)
<<hide_dialog>>
<<wait 1>>
歌曲结束了。你们意犹未尽地喘着气。
me: 呼…我从来没有尝试过这个。
shitou: 呼!医生…这比原曲还要好!
me: 你又没有听过原曲。
shitou: 这一定比原曲还要好!想象一下,这首歌的歌手…就在我的身边!天哪!
me: 哈哈。别取笑我了。
me: 结束了,让我们出去听听吧。
<<hide_dialog>>
<<jump 进入阶段7>>
===
title: 进入阶段7
position: 213,321
---
<<set $gameStage = 7>>
<<jump Center>>
===
@@ -1,77 +0,0 @@
title: Stage7
tags:
position: 210,-342
---
<<jump 结束对话>>
===
title: 结束对话
position: 210,-129
---
<<fade_in 1>>
<<switch_fix_system_to "Clinic">>
<<character_fade_in_new>>
<<fade_out 1>>
<<character_pos 直立>>
<<character_face_new 正常微微笑>>
shitou: 医生……趁着我还记得,我要很认真地和你说一件事情。
me: 怎么了?
shitou: 你应该考虑一下,改行成为一个歌手!
me: 哈哈。谢谢你的建议!
me: ……
me: 但是……<br>抱有这种想法只会让你的“原型”给你带来更多痛苦。
me: 我有点明白你为什么那么做了。
shitou: 怎么做?
me: 那些“低能耗模式”…并不代表你一定要削减记忆力。你可以选择去掉一些信息的记忆能力,或者其他的功能……
me: 你选择了去掉短期记忆,选择了更少的回忆。
shitou: 是我自己做的吗?哈哈!我不太记得了~
me: 我想是的。
me: 这样你就会忘记你的过去,让你的“原型”带来的影响变得更小。
me: 你可以享受更纯粹的现在……享受音乐……
shitou: 听起来…确实是我会做的事情!
<<hide_dialog>>
<<wait 1>>
他忽然提起了自己的“原型”。这是他距离自己的过去最近的一次……
尽管他的记忆已经不能读取了。但他似乎还是“看见”了一些东西。
他看见他在接吻,在草原上奔跑…在下着雨的夏天的窗台边打瞌睡……
shitou: 我…是谁?
他忽然问,像是已经不记得了自己在哪里。
->石头
me: 你是石头。幸福集团罐装物料生产区货务部货运机体,一个爱唱歌的,热爱…生活的机体。
me: 这么说也不太准确…我很难形容你……
me: 你能听到自己脑袋里面那个声音吗?你就是它,它就是石头。
->货运机体
me: 不管怎样…你是一个货运机体。尽管你是一个特殊的货运机体。
me: 这个机体产生了一些奇怪的想法,它想要知道装载着自己的这个身体内部是什么东西……
me: 里面只有电流罢了。你和我都一样。我们都只是一些机器。
->音乐家
me: 我想不管受到怎样的影响…反正你明天都会忘掉。所以…管他呢。
me: 你是一个音乐家。或者说,一个艺术家……如果一个人类艺术家能够看到我们现在的未来,他会希望成为你。
->一个人类
me: 我想不管受到怎样的影响…反正你明天都会忘掉。所以…管他呢。
me: 你是一个幸运的人类,只不过现在住在一个金属的身体里。
石头沉默了许久,理解着你说的话。
shitou: 我觉得你说的没错!管他呢,我想这一点都不重要。
shitou: 只要能继续过这样的日子,每天都能第一次听到最爱的音乐……
shitou: 更何况…这是我和我的朋友一起唱的!天哪…这也…太美好了……
石头沉醉在这个想法中,许久才离开。
<<jump HE>>
===
title: HE
position: 213,321
---
<<set $gameStage = 8>>
<<jump Center>>
===
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2da8465b80ed4c44bb23e9c337d4a1bc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,117 @@
title: LungPlugIn
position: -1094,-98
---
<<jump 检查_肺>>
===
title: HeartPlugIn
position: -816,-97
---
<<jump 检查_心>>
===
title: LiverPlugIn
position: -533,-97
---
<<jump 检查_肝>>
===
title: StomachPlugIn
position: -267,-102
---
<<jump 检查_胃>>
===
title: EmoPlugIn
tags: 待编辑
colorID: 8
position: -2,-3039
---
<<jump 检查情绪>>
===
title: SpeakPlugIn
tags: 待编辑
colorID: 8
position: 240,-2640
---
<<jump 检查语言>>
===
title: LogicPlugIn
tags: 待编辑
colorID: 8
position: 480,-3040
---
<<jump 检查逻辑>>
===
title: ColorPlugIn
tags: 待编辑
colorID: 8
position: 240,-2840
---
<<jump 检查色觉>>
===
title: MemoryPlugIn
tags: 待编辑
colorID: 8
position: 240,-3040
---
<<jump 检查记忆>>
===
title: UFPlugIn
tags: 待编辑
colorID: 8
position: 0,-2840
---
<<jump 检查UF>>
===
title: EyePlugIn
tags: 待编辑
colorID: 8
position: 480,-2840
---
<<jump 检查视觉>>
===
title: EngineSuccess
position: -1092,115
---
<<if $gameStage == 2>>
<<jump 调速完成>>
<<endif>>
===
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 076f3e3c4eb53754bbd6adbbff3f3e6d
guid: 8c03cf1f1e29e4f40b51d192a094b95c
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
@@ -0,0 +1,118 @@
title: Start
tags:
colorID: 8
position: 205,-53
---
<<jump VarsInit>>
===
title: VarsInit
tags:
colorID: 4
position: 205,199
---
///在这里决定这次诊疗的目标是什么,以及目标判断相关的数值
//【流程相关】
//gamestage:1-引入对话;2-检查;3-检查后对话;4-调速;5-调速后对话(冷却液)
<<declare $gameStage=3>>
///【流程逻辑】
//如果线索板都答对了,就自动触发这个为true,这是主目标
<<declare $isFinishedClueBoard=false>>
//冷却液处理完成次数。每次处理完成就往下推进一步
<<declare $coolingCount=0>>
//一次性对白标记,需要播时设为true,在检查点检查到true播放一次性对白,播放完设回false
<<declare $hintFlag=false>>
//掉速次数
<<declare $failTime = 0>>
//是否知道可以换滤板
<<declare $lungProblemKnown=false>>
//是否知道可以换燃料
<<declare $fuelProblemKnown=false>>
//是否知道可以调压力
<<declare $engineProblemKnown=false>>
//是否知道冷却液浑浊
<<declare $engineDone=false>>
//是否完成了引擎自检
<<declare $bloodProblemKnown=false>>
//是否知道冷却液换过
<<declare $bloodRenewedKnown=false>>
//是否对冷却液换过却很脏提过疑惑
<<declare $bloodQuestioned=false>>
//选择的透析剂
<<declare $selection = 0>>
<<declare $emoChecked = false>>
<<declare $logicChecked = false>>
<<declare $memoryChecked = false>>
<<declare $eyeChecked = false>>
<<declare $speakerChecked = false>>
<<declare $memoryPlayed = false>>
<<declare $songOriginal = true>>
//【功能相关】
//clueboard相关
<<declare $StartNode="">>
<<declare $EndNode="">>
//插线
<<declare $currentSocket="">>
<<declare $PlugCount=0>>
<<declare $PlugAll=false>>
<<jump Center>>
===
title: Center
description: 脚本跳转中心,GameStage在此处处理,理论上不在其他地方读取GameStage
position: 205,446
colorID: 1
---
// 每次进入维修界面就自动保存
<<auto_save>>
//gamestage:1-引入对话;2-头部检查;3-头部检查后对话;4-刻录;5-结束对话;0-BE对话
// 引入对话
<<if $gameStage == 1>>
<<jump Stage1>>
<<endif>>
<<if $gameStage == 2>>
<<jump Stage2>>
<<endif>>
<<if $gameStage == 3>>
<<jump Stage3>>
<<endif>>
<<if $gameStage == 4>>
<<jump Stage4>>
<<endif>>
<<if $gameStage == 5>>
<<jump Stage5>>
<<endif>>
<<if $gameStage == 6>>
<<NextYarn>>
<<endif>>
<<if $gameStage == 0>>
<<NextYarn>>
<<endif>>
===
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e073b28ef995ee64e8fcccd67466ba7a
guid: b30dca0a7523c39459a2509c2dd3cfe9
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
@@ -0,0 +1,12 @@
{
"projectFileVersion": 2,
"sourceFiles": [
"*.yarn"
],
"excludeFiles": [
"**/*~/*"
],
"localisation": {},
"baseLanguage": "zh-CHS",
"compilerOptions": {}
}
@@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: b254008a450f4c242b25311130c2592a
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 053561912b1654d80a424bb0696a74ae, type: 3}
useAddressableAssets: 0
UseUnityLocalisationSystem: 0
unityLocalisationStringTableCollection: {instanceID: 0}
@@ -0,0 +1,108 @@
title: Stage3
tags:
position: 210,-342
---
<<jump 被忘掉的烦恼>>
===
title: 被忘掉的烦恼
position: 210,-129
---
<<fade_in 1>>
<<switch_fix_system_to "Clinic">>
<<indoor_new 1>>
<<character_init_new "石头">>
<<character_fade_in_new>>
<<fade_out 1>>
<<hide_dialog>>
<<wait 1>>
shitou: 【尝试哼歌,卡住】
<<hide_dialog>>
<<wait 1>>
shitou: 【尝试哼歌,卡住】
<<hide_dialog>>
<<wait 1>>
me: 那是谁?那个…只剩半截的机体。
shitou: 嘿嘿…那是我的歌友!也是我的同事~
shitou: 自从他有一次跑货从桥上掉下去之后~就变得有点笨笨的,总是记不住歌词。
shitou: 可惜…我自己也要记不住了……
<<wait 1>>
shitou: 我不会…连他…也忘掉吧?
me: 不会。但你不会再记得他的声音了。还有那些歌……
me: 你只能记得你记得过这些声音,但不再能听到它们了。
<<hide_dialog>>
<<wait 1>>
shitou: 医生…真的一点办法也没有了吗?一点也没有吗?
me: 这种受损是不可逆的。而记忆模块又太复杂……
me: 你记忆里的所有声音都会被慢慢忘掉…被最近听到的声音所取代。
<<hide_dialog>>
<<wait 1>>
shitou: 这个感觉好奇怪…就像是,我的回忆还是回忆…但是里面只有喇叭和引擎声了?
me: 差不多这个意思。除非你最近就在听音乐。只可惜……这些齿轮容不下别的声音了。
<<hide_dialog>>
<<wait 1>>
shitou: 哈哈!
<<hide_dialog>>
<<wait 1>>
shitou: 不管怎样~至少我还能跑,还能拉货!
shitou: 看来我们都得向前看…对吧!
shitou: 仔细想想,音乐其实也没有那么重要……只是我一直没有来得及拿掉罢了。
shitou: 那么…就请你帮我~把这个记忆,也去掉吧!#auto_next
me: 等一下!
me: 好像…还有一个办法。
me: 虽然记忆模块我处理不了,但是……
me: 唱片的原理…就是把胶盘上的划痕转化成歌声的震动…对吧?
me: 我想我们也可以反过来,把歌声变刻录成划痕…在这些镍铬齿轮上。
//shitou: 我想我应该明白了。
//shitou: 音乐…真的很神奇,不是吗?
//shitou: 虽然我没有机会停下来,也没有机会记住更多的音乐……
//shitou: 但是,如果我能每天都像第一次一样听到最喜欢的音乐…<br>那岂不是比能继续听音乐更好?
//shitou: 只可惜…
//shitou: 医生,这块齿轮…还有可能复原吗?
//me: ……
//me: 就算粘好,它也不可能承受住现在的转速了。
//shitou: ……
//me: 倒是还有一个办法。
//你提出了一个方案,这个方案虽然比不上原本的唱片,但是也足够好了。
//你提出了一个可能性:仿照之前那张唱片,在原有的齿轮上重新刻录一次。
<<hide_dialog>>
<<wait 1>>
shitou: 真的吗…也就是说…我还可以继续听到这首歌…像之前那样?
me: 不过这可能不如原来刻在塑胶层上的效果那么好,但应该也能听。
me: 唯一麻烦的是…原来的声音已经遗失。只能凭记忆再唱一遍了……
shitou: 啊…我来唱么?……<br>一直五音不全的我…没有唱片机的帮助……<br>能行么……?
me: 事实上…唱歌跑不跑调,<br>和有没有唱片机、有没有记忆没有关系。<br>这只取决于你的语言模块。
me: 而在我看来你的语言模块非常健康……<br>而且我一点也听不出,你到底哪里五音不全了。
shitou: 真的吗?
shitou: ……
shitou: 好~医生,你是医生~我相信你!
shitou: 可是歌词…怎么办呢?医生,你还记得吗?
me: 我……
->记得
me: 我想我听过一两遍,应该记得吧……
->不记得
me: 对不起,但记歌词确实是…有点难度。
shitou: 没关系~医生!有音乐,总好过没有~
shitou: 就算歌词错了,也完全就够咯!<br>我还是可以吹着风穿梭在园区的街道,哼着喜欢的歌……
shitou: 什么也没变!反正我也不记得原来的内容啦~
me: 这倒是……
me: 好的…那么,最后确认下。<br>确认要这么做吗?尽管音质会比原来差很多…<br>还有可能忘词。
shitou: 确认!医生,趁着我们都还记得,快开始吧~!
me: 来吧。
<<jump 进入阶段4>>
===
title: 进入阶段4
position: 213,321
---
<<set $gameStage = 4>>
<<jump Center>>
===
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 519a2ee5f993d6043a0e29a2b4f02f30
guid: 4d1d34102d162fd4986fc5ed48f13a51
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
@@ -0,0 +1,488 @@
title: Stage4
group: 入口
tags:
position: 378,-540
---
<<fade_in 0.5>>
<<wait 1>>
<<hide_dialog>>
<<switch_fix_system_to "BodyModule">>
<<fade_out 1>>
<<add_task TaskManager 为石头在齿轮上进行“刻录”>>
<<task_moveIn TaskManager>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 等待信号输入……>>
===
// 事件节点
title: 检查_肺
tags:
group: 插入触发
colorID: 8
position: -161,-190
---
<<MessageBoxSetNull>>
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 换气模块>>
<<wait 0.1>>
<<MessageBoxSetText 进行内外部气体与热量交换,影响呼吸和散热相关的工作。>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $lungProblemKnown == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetNormal>>
<<MessageBoxSetText 检查完成!没有发现错误>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,2个异常。38295个节点已扫描。>>
<<if $lungProblemKnown == false>>
<<wait 1.5>>
me: 嗯…通气量非常大,看起来运动非常充足…<br>应该说有点过于频繁了。
shitou: 没问题的~医生~我甚至可以边跑边唱嘞!
<<set $lungProblemKnown=true>>
<<else>>
me: 通气量非常大,看起来运动非常频繁。
<<endif>>
->结束
<<jump 主维修界面>>
===
title: 检查_心
tags:
group: 插入触发
colorID: 8
position: -158,-3
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetText 动力模块>>
<<wait 0.1>>
<<MessageBoxSetText 将机体的燃料转化为电能/机械能,驱动机体和内部模块运转。>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $engineProblemKnown == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetWarning>>
<<MessageBoxSetText 检查完成!没有发现错误>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,103个异常。122596个节点已扫描。>>
<<if $engineProblemKnown == false>>
<<hide_dialog>>
<<wait 0.5>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText 报告传输完毕。>>
<<wait 1.5>>
me: 没有受损…太好了。
<<set $engineProblemKnown = true>>
->开始刻录
<<jump 刻录>>
<<else>>
->开始刻录
<<jump 刻录>>
<<endif>>
->开始刻录
<<jump 刻录>>
->结束
<<jump 检查状态>>
===
title: 检查_胃
tags:
colorID: 8
group: 插入触发
position: -160,191
---
<<MessageBoxSetNull>>
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 物料模块>>
<<wait 0.1>>
<<MessageBoxSetText 负责机体的物料和燃油摄入、处理和储存。>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $fuelProblemKnown == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetNormal>>
<<MessageBoxSetText 检查完成!未发现错误。>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,7个异常。83423个节点已扫描。>>
<<if $fuelProblemKnown == false>>
<<wait 1.5>>
me: 没有受损
<<set $fuelProblemKnown = true>>
<<else>>
me: 没有受损
<<endif>>
->结束
<<jump 主维修界面>>
===
title: 检查_肝
tags:
colorID: 8
group: 插入触发
position: -158,370
---
<<MessageBoxSetNull>>
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.2>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 循环模块>>
<<wait 0.1>>
<<MessageBoxSetText 负责机体的冷却液净化处理,保证各模块的运行状态。>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $bloodProblemKnown == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetNormal>>
<<MessageBoxSetText 检查完成!没有发现错误。 >>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,4个异常。4286个节点已扫描。>>
<<if $bloodProblemKnown == false>>
<<wait 1.5>>
me: 循环模块看起来没什么问题。
<<set $bloodProblemKnown = true>>
<<else>>
me: 循环模块没什么问题。
<<endif>>
->结束
<<jump 主维修界面>>
===
title: 刻录
position: 728,79
---
<<switch_fix_system_to "Engine">>
<<set $engineProblemKnown = true>>
//??如果玩家在这里拉绳,是不是就听到音乐了?
me: 如果我没有理解错这套东西的原理…<br>我应该可以把这个读取声音的探头,改造成一个刻出声音的钻头。
shitou: 哇!医生,你太厉害了~什么都会!
->改造钻头
你将探头小心地取下,换成一个坚硬的钻头。
me: 然后…让我把它接在你的播放模块上。这样你唱的声音就会被传输到这里……
shitou: 我好紧张,感觉~像演唱会一样!
<<hide_dialog>>
<<wait 1>>
me: 好了…接下来,只需要唱出来,声音就会被这个齿轮记录下来。
shitou: ……
<<task_moveOut TaskManager>>
<<jump 刻录调速>>
===
title: 刻录调速
position: 728,79
---
齿轮开始转动#auto_next
<<wait 1>>
me: ……
<<hide_dialog>>
<<wait 1>>
me: (小声)已经在录了…
<<hide_dialog>>
<<wait 1>>
me: 石头!已经在录了。
shitou: 给我一些伴奏。
me: 什么?哪来的伴奏……
<<hide_dialog>>
<<wait 1>>
你用脚打起拍子。
<<play_loop_audio disc>>
<<hide_dialog>>
<<wait 1>>
shitou: 听众朋友们,晚上好!<br>.这里是石头!
me: (还整这出……)
shitou: 还有医生——
<<hide_dialog>>
<<wait 1>>
me: 啊…杰克。
shitou: 为大家献上…不知名…音乐家的歌曲——<br>《自由的小锡鸟》!
<<play_loop_audio disc>>
【~音乐~】#auto_next
<<wait 2>>
<<hide_dialog>>
<<wait 1>>
shitou: (医生!第一句是啥?)
<<hide_dialog>>
<<wait 1>>
-> 自由的小机体,在大大的城市里
<<hide_dialog>>
<<wait 1>>
shitou: ~自.由..的小.机体~..~在大.大..的城.市里~..
<<hide_dialog>>
<<wait 1>>
-> 跑呀,跑呀,再多烦恼,统统忘掉
<<hide_dialog>>
<<wait 1>>
shitou: ~跑呀..跑呀~..~再多.烦恼..统统.忘掉~..
me: 很好……
shitou: 医生~这是真的!只要跑起来…烦恼就追不上我~
-> 唱呀,唱呀,再多烦恼,统统忘掉
<<set $songOriginal = false>>
<<hide_dialog>>
<<wait 1>>
shitou: ~唱呀..唱呀~..~再多.烦恼..统统.忘掉~..
me: 很好……
shitou: 医生~这是真的!只要有音乐…再多烦恼也不怕~
-> 工作,工作,再多烦恼,统统忘掉
<<set $songOriginal = false>>
<<hide_dialog>>
<<wait 1>>
shitou: ~工作..工作~..~再多.烦恼..统统.忘掉~..
me: 很好……
shitou: 医生~这是真的!只要工作起来~烦恼就会变少!
<<hide_dialog>>
<<wait 1>>
【~音乐~】#auto_next
<<wait 2>>
shitou: 然后呢?医生!
<<hide_dialog>>
<<wait 1>>
-> 小鸟,小鸟,越飞越高
<<hide_dialog>>
<<wait 1>>
shitou: ~小.鸟..小.鸟~..~越.飞..越.高~..
<<hide_dialog>>
<<wait 1>>
-> 飞跃水泥的森林,银灰色的树梢
<<hide_dialog>>
<<wait 1>>
shitou: ~飞跃水泥.的森.林~..~银灰色..的树.梢~..
shitou: 太厉害了~医生!你竟然全记下来了!
<<hide_dialog>>
<<wait 1>>
shitou: 这首歌比我以为我记得的…还要积极呢!
-> 钻进水泥的森林,霓虹灯的树梢
<<hide_dialog>>
<<wait 1>>
<<set $songOriginal = false>>
shitou: ~钻进水泥.的森.林~..~霓虹灯..的树.梢~..
shitou: 太厉害了~医生!你竟然全记下来了!
<<hide_dialog>>
<<wait 1>>
shitou: 这个城市真的太大了~还有好多我没去过的有意思的地方呢!
-> 飞不出水泥的森林,黑色的树梢
<<hide_dialog>>
<<wait 1>>
<<set $songOriginal = false>>
shitou: ~逃不出.水泥.的森.林~..~黑色的..树.梢~..
shitou: 太厉害了~医生!你竟然全记下来了!
<<hide_dialog>>
<<wait 1>>
shitou: 这个城市真的太大了~不知道它的尽头到底在哪里?
<<hide_dialog>>
<<wait 1>>
【~音乐~】#auto_next
<<wait 2>>
<<hide_dialog>>
<<wait 1>>
-> 小机体追呀追,可惜他不会飞
<<hide_dialog>>
<<wait 1>>
shitou: ~小.机体..呀.追.呀追~..~可惜他..不.会飞~..
<<hide_dialog>>
<<wait 1>>
-> 长长的大道,十字路口,小鸟一去不回头
<<set $songOriginal = false>>
<<hide_dialog>>
<<wait 1>>
shitou: ~长长.的大.道..十字.路口~..小.鸟.一去.不.回.头~..
<<hide_dialog>>
<<wait 1>>
shitou: 这歌和我想的一样!我也想~要是我会飞就好了!
shitou: 我就可以直接飞到目的地~再也不怕撞到任何东西了!
-> 高高的天空,长长的街,小鸟何时会回来
<<hide_dialog>>
<<wait 1>>
shitou: ~高高.的天.空..长长.的街~..小.鸟.何时.会.回.来?..
<<hide_dialog>>
<<wait 1>>
shitou: 这歌和我想的一样!我也想~要是我会飞就好了!
shitou: 我要跟着去看看,这些鸟儿冬天都去哪里了?听说那边很暖和,那里的树一整年都是绿的!
-> 红黄的灯流,不停歇,小鸟,小鸟迷了眼
<<set $songOriginal = false>>
<<hide_dialog>>
<<wait 1>>
shitou: ~红黄.的灯.流..不.停歇~..小鸟.小鸟..不.回.头~..
<<hide_dialog>>
<<wait 1>>
shitou: 这歌和我想的一样!我也想~要是我会飞就好了!
shitou: 我要从天上看一看~这个一直我一直工作的城市,到底长啥样!
<<hide_dialog>>
<<wait 1>>
【~音乐~】#auto_next
<<wait 2>>
<<hide_dialog>>
<<wait 1>>
shitou: 医生~快!
<<hide_dialog>>
<<wait 1>>
me: 最后一句…我好像从来没听过完整的啊……
<<hide_dialog>>
<<wait 1>>
shitou: 要唱了,医生!
<<hide_dialog>>
<<wait 1>>
->春天不会再回来,但我一定会回来看你
shitou: ~春天..不.会再.回来~..~但.我一.定会.回来..看.你~..
->春天春天快回来,我怕我会忘记你
shitou: ~春天.春天..快回.来~..~我.怕我..会忘.记.你~..
->春天一定会回来,我会在这等着你
shitou: ~春天.一..定会.回来~..~我.会在..这等.着.你~..
<<hide_dialog>>
<<wait 1>>
//你拉动拉绳,转速逐渐提高,引擎的声音和石头的拍子逐渐重合。
//你松开绳子,石头开始唱起歌来。
//shitou: He says Son can you play me a memory?<br>(他说,小伙子,你能为我弹一段回忆吗?)
//shitou: I'm not really sure how it goes.<br>(它的旋律,我已然忘记)
//歌声和引擎的声音保持在同一个节奏上,让它成为了天然的节拍器。
//shitou: 呼…现在加速!
//石头打起了新的拍子。
//->拉绳
//你拉动拉绳,转速逐渐提高,引擎的声音和石头的拍子逐渐重合。
//你松开绳子,石头接着唱。
//shitou: 医生,到你了!
//你接着石头的部分往后唱,唱得其实还不错。
//me: But it's sad and it's sweet and I knew it complete<br>(这首歌忧伤而甜蜜,我记得每一句歌词…)
//me When I wore a younger man's clothes.<br>(…在我更年轻一些的时候)
//shitou: 太好啦!医生,你唱的真好!
//shitou: 如果你不是在这个诊所里,一定会成为一个大明星的!
//shitou: 下一段!
//你记得下一段并没有加速。但你可以这么做。或者…
//me: 我有一种感觉…接下来这段把拍子降下来也会不错。
//似乎不需要用“选择速度”来代表要做出的选择……用对话似乎更好
//->遵循原曲,保持原速
// me: 不,这里不是这样的。
// 你把速度小心保持在原位,然后继续唱。你仔细地回忆着昨天的旋律。
// shitou: 太好了,太美了!
// me: 我有点不太记得了!
// shitou: 没关系,医生!你是我听过唱得最好的!<br>往后的每一天,都会是唱得最好的!
//->按照石头的想法加速
// 你拉动拉绳,转速逐渐提高,引擎的声音和石头的拍子逐渐重合。
// 你松开绳子,继续唱。由于它变得太快,旋律变得有些狂野。
// shitou: 太好了,太美了!
// me: 太快了,我有点跟不上!
// shitou: 没关系,医生!你是我听过唱得最好的!<br>往后的每一天,都会是唱得最好的!
//->加入个人风格,减速
// me: 不,听听这个!
// 你打起了一个新的拍子,并松开绳子让速度向下掉,直到和你的拍子重合。
// 你继续唱了起来。
// shitou: 太好了,太美了!
// me: 你会喜欢这个的!
// shitou: 我会喜欢这个的!往后的每一天!
//me: Sing us a song, you're the piano man<br>(为我们唱一曲吧,钢琴师)
//me: Sing us a song tonight<br>(唱一曲吧,就在今晚)
//me: Well we're all in the mood for a melody<br>(没有什么比一首歌更适合现在)
//me: And you've got us feelin' alright<br>(没有什么更能彼此慰藉)
//<<hide_dialog>>
//<<wait 1>>
<<task_moveIn TaskManager>>
<<complete_task TaskManager 为石头在齿轮上进行“刻录”>>
<<task_moveOut TaskManager>>
歌曲结束了
<<if $songOriginal == true>>
me: 呼…我从来没有尝试过这个……但总之,能用了。
shitou: 天哪,医生!这简直就是原曲!
<<else>>
me: 呼…我即兴发挥了下……但总之,能用了。
shitou:太棒啦!医生!这简直比原曲还好。
<<endif>>
me: 你又没有听过原曲。
shitou: 这一定比原曲还要好!毕竟这是我和医生共同演奏和演唱的…天哪!
me: 哈哈。别取笑我了。
me: 结束了,让我们出去听听吧。
<<hide_dialog>>
<<jump 进入阶段5>>
===
title: 进入阶段5
position: 213,321
---
<<set $gameStage = 5>>
<<jump Center>>
===
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 26f620725196cf04f90724680d448eeb
guid: a876d48d07c887b4cbb147d702e086fc
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
@@ -0,0 +1,138 @@
title: Stage5
tags:
position: 210,-342
---
<<jump 结束对话>>
===
title: 结束对话
position: 210,-129
---
<<fade_in 1>>
<<switch_fix_system_to "Clinic">>
<<character_fade_in_new>>
<<fade_out 1>>
<<character_pos 直立>>
<<character_face_new 正常微微笑>>
shitou: 嗯~仔细听~我好喜欢啊!不愧是我最爱的歌!
shitou: 医生~它的最后一句…真的很特别喔!
me: 啊…对不起。其实是我瞎编的…<br>…我好像根本没听你唱到过这里。
<<hide_dialog>>
<<wait 1>>
shitou: 听起来~后面确实有点忧伤的味道~!怪不得我平常也不爱往后面唱~哈哈!
<<hide_dialog>>
<<wait 1>>
me: 你不喜欢忧伤吗?
shitou: 也不是不喜欢~就是……
<<hide_dialog>>
<<wait 1>>
shitou: 我也不记得了。
me: 不记得?
shitou: 我好像记得一种忧伤的感觉~在我听到这首歌的时候……
shitou: 但我只是记得~现在再听,已经没有这种感觉啦~
me: ……
me: 情绪模块我记得是正常的…应该不会出什么问题才对。
me: 或许是你忘记的那些歌?
shitou: 哈哈,医生~我们永远不会知道啦!
shitou: 我感觉!我现在~才是真正的~石头!啦!
shitou: 谢谢你~医生!让我真正地~找到了自己!
me: ……
me: 我只是按照指令把所有来这儿的机体修好。
shitou: 我们都是按照指令工作的机体~但医生!你的这次工作~已经变成我永远的回忆啦!
<<hide_dialog>>
<<wait 1>>
shitou: 好啦!我也要回去送货咯~
shitou: 我会好好珍惜~你给我的音乐~再见啦!!医生~
<<hide_dialog>>
<<character_fade_out_new>>
<<wait 1>>
me: 再见…
<<hide_dialog>>
<<wait 1>>
<<character_fade_in_new>>
me: 你怎么又回来了?
<<character_face_new 大笑>>
shitou: 忘了说~谢谢你啦!亲爱的医生朋友~
<<character_face_new 正常微微笑>>
shitou: ~春天.会.回来~..~我会.回来.看你~..
<<hide_dialog>>
<<character_face_new 大笑>>
<<character_fade_out_new>>
<<wait 1>>
me: 跑呀.~跑呀..~再多.烦恼..统统.忘掉..~
<<hide_dialog>>
<<wait 1>>
//shitou: 医生……趁着我还记得,我要很认真地和你说一件事情。
//me: 怎么了?
//shitou: 你应该考虑一下,改行成为一个歌手!
//me: 哈哈。谢谢你的建议!
//me: ……
//me: 但是……<br>抱有这种想法只会让你的“原型”给你带来更多痛苦。
//me: 我有点明白你为什么那么做了。
//shitou: 怎么做?
//me: 那些“低能耗模式”…并不代表你一定要削减记忆力。你可以选择去掉一些信息的记忆能力,或者其他的功能……
//me: 你选择了去掉短期记忆,选择了更少的回忆。
//shitou: 是我自己做的吗?哈哈!我不太记得了~
//me: 我想是的。
//me: 这样你就会忘记你的过去,让你的“原型”带来的影响变得更小。
//me: 你可以享受更纯粹的现在……享受音乐……
//shitou: 听起来…确实是我会做的事情!
//<<hide_dialog>>
//<<wait 1>>
//他忽然提起了自己的“原型”。这是他距离自己的过去最近的一次……
//尽管他的记忆已经不能读取了。但他似乎还是“看见”了一些东西。
//他看见他在接吻,在草原上奔跑…在下着雨的夏天的窗台边打瞌睡……
//shitou: 我…是谁?
//他忽然问,像是已经不记得了自己在哪里。
//->石头
// me: 你是石头。幸福集团罐装物料生产区货务部货运机体,一个爱唱歌的,热爱…生活的机体。
// me: 这么说也不太准确…我很难形容你……
// me: 你能听到自己脑袋里面那个声音吗?你就是它,它就是石头。
//->货运机体
// me: 不管怎样…你是一个货运机体。尽管你是一个特殊的货运机体。
// me: 这个机体产生了一些奇怪的想法,它想要知道装载着自己的这个身体内部是什么东西……
// me: 里面只有电流罢了。你和我都一样。我们都只是一些机器。
//->音乐家
// me: 我想不管受到怎样的影响…反正你明天都会忘掉。所以…管他呢。
// me: 你是一个音乐家。或者说,一个艺术家……如果一个人类艺术家能够看到我们现在的未来,他会希望成为你。
//->一个人类
// me: 我想不管受到怎样的影响…反正你明天都会忘掉。所以…管他呢。
// me: 你是一个幸运的人类,只不过现在住在一个金属的身体里。
//石头沉默了许久,理解着你说的话。
//shitou: 我觉得你说的没错!管他呢,我想这一点都不重要。
//shitou: 只要能继续过这样的日子,每天都能第一次听到最爱的音乐……
//shitou: 更何况…这是我和我的朋友一起唱的!天哪…这也…太美好了……
//石头沉醉在这个想法中,许久才离开。
<<jump HE>>
===
title: HE
position: 213,321
---
<<set $gameStage = 8>>
<<jump Center>>
===
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: ae4097465cef1ee4f927cca23df38097
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 94073015eacc34c1d8fc6786e43d60ca, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f1227e6ba97ca54459633fe0a8545e02
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,129 @@
title: LungPlugIn
position: -1094,-98
---
<<if $gameStage < 5>>
<<jump 检查_肺>>
<<else>>
<<jump 检查_肺_2>>
<<endif>>
===
title: HeartPlugIn
position: -816,-97
---
<<jump 检查_心_2>>
===
title: LiverPlugIn
position: -533,-97
---
<<if $gameStage < 5>>
<<jump 检查_肝>>
<<else>>
<<jump 检查_肝_2>>
<<endif>>
===
title: StomachPlugIn
position: -267,-102
--- z
<<if $gameStage == 2>>
<<jump 检查_胃>>
<<else>>
<<jump 检查_胃_2>>
<<endif>>
===
title: EmoPlugIn
tags: 待编辑
colorID: 8
position: -2,-3039
---
<<jump 检查情绪>>
===
title: SpeakPlugIn
tags: 待编辑
colorID: 8
position: 240,-2640
---
<<jump 检查语言>>
===
title: LogicPlugIn
tags: 待编辑
colorID: 8
position: 480,-3040
---
<<jump 检查逻辑>>
===
title: ColorPlugIn
tags: 待编辑
colorID: 8
position: 240,-2840
---
<<jump 检查色觉>>
===
title: MemoryPlugIn
tags: 待编辑
colorID: 8
position: 240,-3040
---
<<jump 检查记忆>>
===
title: UFPlugIn
tags: 待编辑
colorID: 8
position: 0,-2840
---
<<jump 检查UF>>
===
title: EyePlugIn
tags: 待编辑
colorID: 8
position: 480,-2840
---
<<jump 检查视觉>>
===
title: EngineSuccess
position: -1092,115
---
<<if $gameStage == 2>>
<<jump 调速完成>>
<<endif>>
===
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 7cc382aa15e3a224c8f6e2e17c1c7d60
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 94073015eacc34c1d8fc6786e43d60ca, type: 3}
@@ -0,0 +1,118 @@
title: Start
tags:
colorID: 8
position: 205,-53
---
<<jump VarsInit>>
===
title: VarsInit
tags:
colorID: 4
position: 205,199
---
///在这里决定这次诊疗的目标是什么,以及目标判断相关的数值
//【流程相关】
//gamestage:1-引入对话;2-检查;3-检查后对话;4-调速;5-调速后对话(冷却液)
<<declare $gameStage=2>>
///【流程逻辑】
//如果线索板都答对了,就自动触发这个为true,这是主目标
<<declare $isFinishedClueBoard=false>>
//冷却液处理完成次数。每次处理完成就往下推进一步
<<declare $coolingCount=0>>
//一次性对白标记,需要播时设为true,在检查点检查到true播放一次性对白,播放完设回false
<<declare $hintFlag=false>>
//掉速次数
<<declare $failTime = 0>>
//是否知道可以换滤板
<<declare $lungProblemKnown=false>>
//是否知道可以换燃料
<<declare $fuelProblemKnown=false>>
//是否知道可以调压力
<<declare $engineProblemKnown=false>>
//是否知道冷却液浑浊
<<declare $engineDone=false>>
//是否完成了引擎自检
<<declare $bloodProblemKnown=false>>
//是否知道冷却液换过
<<declare $bloodRenewedKnown=false>>
//是否对冷却液换过却很脏提过疑惑
<<declare $bloodQuestioned=false>>
//选择的透析剂
<<declare $selection = 0>>
<<declare $emoChecked = false>>
<<declare $logicChecked = false>>
<<declare $memoryChecked = false>>
<<declare $eyeChecked = false>>
<<declare $speakerChecked = false>>
<<declare $memoryPlayed = false>>
<<declare $songOriginal = true>>
//【功能相关】
//clueboard相关
<<declare $StartNode="">>
<<declare $EndNode="">>
//插线
<<declare $currentSocket="">>
<<declare $PlugCount=0>>
<<declare $PlugAll=false>>
<<jump Center>>
===
title: Center
description: 脚本跳转中心,GameStage在此处处理,理论上不在其他地方读取GameStage
position: 205,446
colorID: 1
---
// 每次进入维修界面就自动保存
<<auto_save>>
//gamestage:1-引入对话;2-头部检查;3-头部检查后对话;4-刻录;5-结束对话;0-BE对话
// 引入对话
<<if $gameStage == 1>>
<<jump Stage1>>
<<endif>>
<<if $gameStage == 2>>
<<jump Stage2>>
<<endif>>
<<if $gameStage == 3>>
<<jump Stage3>>
<<endif>>
<<if $gameStage == 4>>
<<jump Stage4>>
<<endif>>
<<if $gameStage == 5>>
<<jump Stage5>>
<<endif>>
<<if $gameStage == 6>>
<<NextYarn>>
<<endif>>
<<if $gameStage == 0>>
<<NextYarn>>
<<endif>>
===
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 70434527bc1e003458a73d41873fbce1
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 94073015eacc34c1d8fc6786e43d60ca, type: 3}
@@ -0,0 +1,12 @@
{
"projectFileVersion": 2,
"sourceFiles": [
"*.yarn"
],
"excludeFiles": [
"**/*~/*"
],
"localisation": {},
"baseLanguage": "zh-CHS",
"compilerOptions": {}
}
@@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: b7787a998da53b74c854f2e09dccec52
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 053561912b1654d80a424bb0696a74ae, type: 3}
useAddressableAssets: 0
UseUnityLocalisationSystem: 0
unityLocalisationStringTableCollection: {instanceID: 0}
@@ -0,0 +1,434 @@
title: Stage2
tags:
position: 210,-342
---
<<hide_dialog>>
<<fade_in 1>>
<<indoor_new 1>>
<<switch_fix_system_to "BodyModule">>
<<jump 检查初始化_头部>>
===
title: 检查初始化_头部
position: 380,-239
---
<<wait 1>>
me: 你是怎么撞的?
shitou: 不是我撞它啦~是它撞的我……
shitou: 它逆行过来~我来不及刹住嘛。
shitou: 谁知道它连喇叭都不按喔!<br>不过也可能是我唱歌太大声了~没听到~
shitou: 它反应好快,轻轻一歪就绕开了~<br>我就惨咯!没控制住姿态,直接飞起来啦!
me: ……
<<hide_dialog>>
<<wait 1>>
<<switch_fix_system_to "BodyModule">>
<<fade_out 0.5>>
<<hide_dialog>>
<<wait 0.5>>
me: 来吧。检查一下所有头部模块…<br>确认各模块的受损情况。
【注:此为占位,石头头部无UF模块和色觉】
<<add_task TaskManager 检查所有头部模块>>
<<task_moveIn TaskManager>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 已检测到目标机体!诊疗仪已就绪。>>
<<MessageBoxSetText "警告:监测到 72分钟 前的撞击事件。">>
<<MessageBoxSetNull>>
<<MessageBoxSetText 等待信号输入……>>
me: 检测到了72分钟前的撞击事件…<br>…已经过去一段时间了,希望没造成永久性的影响。
<<jump 主维修界面_头部>>
===
title: 主维修界面_头部
position: 384,81
---
// 未全部插入就进入等待插入事件状态
<<MessageBoxSetChecking>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 等待信号输入……>>
<<if $emoChecked==true && $logicChecked==true && $memoryChecked==true && $eyeChecked==true && $speakerChecked==true && $memoryPlayed == true>>
me:都检查完了,看起来偏偏是记忆受到了损害。<br>万幸的是其他部分似乎都没事……
<<jump toStage3>>
<<endif>>
===
title: 检查UF
tags: 待删除
colorID: 8
group:插线检查
position: -449,-3574
---
【待删除,石头无此模块】
<<jump 主维修界面_头部>>
===
title: 检查色觉
tags: 待删除
colorID: 8
group:插线检查
position: 195,-3043
---
【待删除,石头无此模块】
<<jump 主维修界面_头部>>
===
title: 检查情绪
tags:
colorID: 8
group:插线检查
position: -47,-3242
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 已与情绪模块建立连接!>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $emoChecked == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetNormal>>
<<MessageBoxSetText 检查完成!未发现错误。>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,2个异常。395个节点已扫描。>>
<<wait 0.5>>
me: 还好…看起来没有受到很严重的伤害。
<<hide_dialog>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText "检测到异常活跃的情绪: '恐惧'">>
<<if $emoChecked == false>>
<<wait 0.5>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText "报告传输完毕。">>
<<wait 0.5>>
<<set $emoChecked = true>>
<<endif>>
me: 恐惧的情绪正占主导…<br>…但似乎不是由于撞击导致的。
->结束
<<jump 主维修界面_头部>>
===
title: 检查语言
tags:
colorID: 8
group:插线检查
position: 194,-2880
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 已与语言模块建立连接!>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $speakerChecked == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetNormal>>
<<MessageBoxSetText 检查完成!没有发现错误>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,7个异常。968个节点已扫描。>>
<<if $speakerChecked == false>>
<<wait 0.5>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText "报告传输完毕。">>
<<wait 0.5>>
<<set $speakerChecked = true>>
shitou: 自由的小机体~……在…大大的…烦恼…里?<br>好像错了……
<<endif>>
me: 虽然唱起歌来结结巴巴的…但语言模块本身是正常的。
->结束
<<jump 主维修界面_头部>>
===
title: 检查逻辑
tags:
colorID: 8
group:插线检查
position: 428,-3246
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 已与逻辑模块建立连接!>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $logicChecked == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetWarning>>
<<MessageBoxSetText 检查完成!发现1个警告!>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,1个警告,23个异常。285个节点已扫描。>>
<<if $logicChecked == false>>
me: 逻辑模块受到影响了么……
<<hide_dialog>>
<<wait 0.5>>
<<MessageBoxSetText "数据异常中断!正在恢复中…">>
<<MessageBoxSetText " ">>
<<MessageBoxSetText "报告传输完毕。">>
<<wait 0.5>>
<<set $logicChecked = true>>
shitou: 啊!忽然想起~我还有货没送……
me: 还好……只是经历了一段时间的宕机,但是现在恢复了。
<<endif>>
me: 逻辑模块经历了一段时间的宕机,但是现在恢复了。
->结束
<<jump 主维修界面_头部>>
===
title: 检查记忆
tags: 待编辑
colorID: 8
group:插线检查
position: 195,-3243
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 已与记忆模块建立连接!>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $memoryChecked == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetError>>
<<MessageBoxSetText 检查完成!发现1个错误。>>
<<wait 0.1>>
<<MessageBoxSetText 检测到1个错误,1个警告,17个异常。16305个节点已扫描。>>
<<MessageBoxSetText 错误:磁盘损坏!>>
<<MessageBoxSetText 警告:磁盘空间不足!已进入覆盖写入模式…>>
<<MessageBoxSetText 警告:未格式化的记忆!正在覆盖…>>
<<if $memoryChecked == false>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText "报告传输完毕。">>
<<wait 0.5>>
shitou: 医生!我好像忘了…大大的城市…前面是什么?
me: 嗯…嗯?
shitou: 啊……医生!怎么前面得我也不记得了……怎么回事!
me: 坏了,怎么越忘越多了?…
me: 记忆模块好像受到了严重的损坏。
<<hide_dialog>>
<<wait 0.5>>
me: 你的记忆音频分区受到了很严重的损坏…<br>只剩下原来的10%可用了。
me: 所以记忆模块为了能写入新的记忆音频数据,<br>就得覆盖掉旧的记忆数据……
shitou: 覆盖记忆数据…是什么意思?医生……
<<hide_dialog>>
<<wait 0.5>>
me: 这个正在被覆盖数据的记忆应该可以被读取…<br>…看到你应该就明白了。
<<hide_dialog>>
<<wait 0.5>>
<<MessageBoxSetText 正在生成样本打孔带……>>
<<OpenSingleButtonWindow WindowManager 进程检测 已定位到正在被覆盖数据的记忆……是否打印索引?>>
<<wait 0.5>>
<<PrintPunchTapes 1>>
<<generate_PunchTape ClueManager "天空" "Memory" "liuying1-3">>
->放入收藏夹
<<CollectionClue ClueManager>>
<<hide_dialog>>
<<wait 0.5>>
me: 好…让我们来看看吧。
<<set $memoryChecked = true>>
<<else>>
me: 碰撞导致石头的视觉有重影,但过段时间就会恢复。
<<endif>>
<<MessageBoxSetText "已获取深入权限。">>
->深入
<<hide_dialog>>
<<jump 记忆深入>>
->结束
<<jump 主维修界面_头部>>
===
title: 检查视觉
tags: 待编辑
colorID: 8
group:插线检查
position: 435,-3043
---
<<MessageBoxSetText 正在建立连接…>>
<<wait 0.5>>
<<MessageBoxSetNull>>
<<MessageBoxSetText 已与视觉模块建立连接!>>
->检查
<<hide_dialog>>
<<MessageBoxSetNull>>
<<MessageBoxSetChecking>>
<<if $eyeChecked == false>>
<<wait 1>>
<<endif>>
<<wait 0.5>>
<<MessageBoxSetNormal>>
<<MessageBoxSetText 检查完成!未发现错误。>>
<<wait 0.1>>
<<MessageBoxSetText 检测到0个错误,0个警告,17个异常。2885个节点已扫描。>>
<<if $eyeChecked == false>>
<<hide_dialog>>
<<wait 0.5>>
<<MessageBoxSetText " ">>
<<MessageBoxSetText "报告传输完毕。">>
<<wait 0.5>>
<<set $eyeChecked = true>>
me: 眼睛有觉得不舒服吗?
<<if $memoryPlayed == false>>
shitou: 我感觉撞了一下之后,看到的红绿灯好像变多了~
<<else>>
shitou: 我来的路上,好像看到的红绿灯好像变多了。
<<endif>>
me: 那是重影,一段时间就会好的。
<<else>>
me: 碰撞导致视觉有重影,但过段时间就会恢复。
<<endif>>
->结束
<<jump 主维修界面_头部>>
===
title: 记忆深入
position: 48,-156
---
<<switch_fix_system_to Memory>>
<<if visited("OnMemoryViewShow")==false>>
me: 把打孔带放进插槽里,读取记忆吧。
<<endif>>
===
title: 天空
position: 80,48
---
石头和一个受损的机体坐在一个小棚屋的门口,阳光穿过门口垂挂的许多盆小植物,洒在老旧开裂的木制家具上,破旧但整洁舒适。屋外望出去,是一座高高的垃圾山的阴影。
<<wait 2>>
【风铃声】
???: 自由的小机体~在大̻̄͂大̹̅的城市里̛͙~
???: 跑͈͂呀̛͖̬̊~跑呀~再多烦恼~统统忘̡̋͐掉̦̈~͈̜̈
<<hide_dialog>>
<<wait 1>>
【风铃͇̏声,汽车鸣笛声】
???: 石头!
shitou: 嗯?我在呢。
???: 这个排异抑制药,我要吃到什͇̄̕么̱͊时̬̙̽候͍̹͝呀?
shitou: 等公͔̏司͇͔̋́把̱̯̑工̦͐ͅ伤̳̰̒̚批̢̘̄下̯̎̆来̡̩̇,就可以啦。
【风铃͇̏声͈̞̀̄,汽车鸣笛声,广告声】
<<hide_dialog>>
<<wait 1>>
???: 小鸟~小̠̊鸟͇̅͌~̙̈̊越̪̄̏飞̨̩̓̂~越高~
???: 飞跃水̙̫̀̓泥̙̈的̣̀森̟͋林~银灰色͎͌͜的̢̛͚̿~̡̳̂树͍͋͑͜梢~
<<hide_dialog>>
<<wait 1>>
提示音: *叮!*<br>您有一条幸福订单即将超时,请及时处理~
<<hide_dialog>>
<<wait 0.5>>
???: 石头!
shitou: 没关系~我͚̱͛一͈̤͊会̯̟̂跑快点就好了~
???: 石̯̍头͈͋̒,͈̾我͕͞说͎͆̕…你明天别来了。<br>我̭͛知̖̑道̬̄̑…̡͓̾这͔̔ͅ个̳͓̂͒抑制药很贵的,要花好多积分!
<<hide_dialog>>
<<wait 1>>
shitou: 说啥呢。我不来,谁陪我听歌呀!
【风̘̥̑͠铃͇̏声͈̞̀̄,汽车鸣笛声,广告声,引擎声】
<<hide_dialog>>
<<wait 0.5>>
???: 小机体呀~追呀̳̫̀追̪̿~̡̕只͔͊̒可惜他~不会飞~
???: 高高的̈́̌͜͜天͓̻̂空̟̹̏͛~̰͚̑长̦̓͌长͆̚͜的街~小鸟何̖͚̎̋时͓̥̐͐~̨̡̔̾会̬̫̕回来~
<<hide_dialog>>
<<wait 0.4>>
提示音: *叮!*<br>您有一条幸福订单即将超时,请及时处理~
提示音: *叮!*<br>幸福小助手提示~道路情况复杂,请勿疲劳驾驶~
<<hide_dialog>>
<<wait 0.3>>
【风̘̥̑͠声͈̞̀̄,汽车鸣笛声,广告声,巨大的引擎声】
<<hide_dialog>>
<<wait 0.2>>
???: 小̧̠̃͞机͓́体͎̃~别͍̳͂着̡̈́急͓̔͊~̭̲̄͋春͓̂ͅ天̧̬̐……我就̳̃͠会̜͇̐...
???: 春̠̔͘天̭͈́…̣̿̉我̤̙̎就͈͑̃会̮̣̉̈́...
<<hide_dialog>>
<<wait 0.1>>
???: 石̮̠̈́͞头̮͍̂͌!̹̦̍̃
???: 我忘了!͚͔̏后̨͆边̙̗̈́…̻͙̽̀怎͕̘̆么̮͔̉唱̯̠̃͐来͚͛̕着͓̄̾?͚͋
shitou: 春̨̼̥̑̅́ͅ묈̪̏갚鴉싧썮계퓳뚳 ̥́펽̞͌̒瓦̹́̔숅̢̊뇤̢̖̮̩̈̓̉됬풆訝썹쉪鸚㎩램̰̳̰̬̎̆귨̰͔͠펽̟̲͗̿瓦̠̃섉̹͇͂̎쐣̨̥͕̐͑덅̤̂퓵꾣̢́̐뼭̯͈̉͛̍͜뷴̨̈́솳̜̋ #auto_next
警告: 无法读取的记忆音频数据!
【汽车鸣笛声】#auto_next
提示音: *叮!*<br>您有一条幸福订单即将超时,请及时处理~#auto_next
【巨大的引擎声】#auto_next
提示音: *叮!*<br>幸福小助手提醒您~道路情况复杂,请勿疲劳驾驶~*叮!*#auto_next
【广告声】#auto_next
提示音: *叮!*<br>幸福一下,马上出发!*叮!*现在换食幸福牌七合一罐头~可享员工九折优惠~!*叮!*#auto_next
【记忆中断】
<<hide_dialog>>
<<wait 1>>
shitou: 春天…我会...
me: 音频数据已经被完全覆盖了……
<<hide_dialog>>
<<wait 1>>
//音频相关记忆受损了,可用的分区变得很小,新的音频记忆会很快覆盖掉旧的音频记忆
<<set $memoryPlayed = true>>
<<jump toStage3>>
===
title: toStage3
position: 213,321
---
<<NextYarn>>
<<set $gameStage = 3>>
<<jump Center>>
===
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: fe0bce32b122d1145ac4074a514977f4
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 94073015eacc34c1d8fc6786e43d60ca, type: 3}
@@ -117,7 +117,7 @@ position: 239,-1813
<<set $imagine_PeipeiTalk2 = 2>>
->需求C
//////图片上是一个阴暗的旧房间,但画面上有很多个电视机屏幕
<<if $imagine_PeipeiTalk2 == 1>>
<<if $imagine_PeipeiTalk2 == 1>>
<<OpenImageWindow_UFImage WindowManager UF绘图 UF占位>>
<<elseif $imagine_PeipeiTalk2 == 2>>
<<OpenImageWindow_UFImage WindowManager UF绘图 UF占位>>
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -8109,8 +8109,8 @@ MonoBehaviour:
- {fileID: 11400000, guid: ada4bdc2db5594e4f860c90b3a4b9da8, type: 2}
- {fileID: 11400000, guid: 8d8b11f0c2fbc4d4cb8c2857d98383c9, type: 2}
- {fileID: 11400000, guid: afc5b01ef301cc74db7cae741acad427, type: 2}
runMode: 2
firstTalkSo: {fileID: 11400000, guid: ac5ca9a66ff22ab4b9cd5adbdade6b8c, type: 2}
runMode: 0
firstTalkSo: {fileID: 11400000, guid: fe71f935f1f9a52458c994362567a211, type: 2}
testTalkSo: {fileID: 11400000, guid: 9e3b2c77ad4a9454188d458da2cf0ddd, type: 2}
saveFileName: "PeipeiDay3_\u770B\u753B"
--- !u!4 &719228339
@@ -135,6 +135,18 @@ namespace AibisDream
return false;
}
}
/// <summary>
/// 跳到下一句
/// </summary>
public void JumpLine()
{
if (!DialogCanvasManager.GetCurView().TrySkipLine())
{
AudioManager.Instance.StopVoice();
DialogCanvasManager.GetCurView().NextStep();
}
}
#region
-25
View File
@@ -68,30 +68,5 @@ namespace AibisDream
var options = DialogOption.GeneOptions(dialogueOptions, onOptionSelected);
DialogCanvasManager.GetCurView().ShowOptions(options);
}
private void Update()
{
if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
{
JumpLine();
}
}
/// <summary>
/// 跳到下一句
/// </summary>
private void JumpLine()
{
if (_isInCommand)
{
return;
}
if (!DialogCanvasManager.GetCurView().TrySkipLine())
{
AudioManager.Instance.StopVoice();
DialogCanvasManager.GetCurView().NextStep();
}
}
}
}
@@ -1,5 +1,4 @@
using System;
using AibisDream.FixSystem;
using UnityEngine;
namespace AibisDream.Framework
@@ -47,14 +46,6 @@ namespace AibisDream.Framework
{
public void OnUpdate()
{
if (Input.GetKeyDown(KeyCode.K))
{
MonoCenter.Mono.StartCoroutine(CameraKit.Instance.TransCameraAsync(new Vector3(5f, 5f, -10), 5, 5f));
}
if (Input.GetKeyDown(KeyCode.A))
{
}
}
}
+3 -3
View File
@@ -8,7 +8,8 @@ namespace AibisDream
{
NextYarn,
PlugIn,
PlugOut
PlugOut,
Menu
}
public enum DialogEventEnum
@@ -17,8 +18,7 @@ namespace AibisDream
LineShowed,
LineEnd,
OptionShow,
OptionSelected,
Command
OptionSelected
}
public enum InteractionEventEnum
+10 -16
View File
@@ -34,11 +34,6 @@ namespace AibisDream
_trigger.Register(EventTriggerType.Drag, OnDrag);
}
public float GetCurOil()
{
return Mathf.Abs((transform.localPosition.y - _initPos.y) / maxDistance);
}
private void Update()
{
if (_isDragging)
@@ -58,15 +53,10 @@ namespace AibisDream
// 如果拖拽点在下方,限速移动
else
{
if (Mathf.Abs(_dragPoint.y - transform.position.y) / Time.deltaTime >
_engineSystem.engineConfig.pullMaxSpeed)
{
curY = transform.position.y - _engineSystem.engineConfig.pullMaxSpeed * Time.deltaTime;
}
else
{
curY = _dragPoint.y;
}
curY = _dragPoint.y;
var pullDelta = Mathf.Abs(curY - transform.position.y) / maxDistance;
// 将增量同步给Engine
_engineSystem.AddAirPress(pullDelta);
}
transform.position = new Vector3(transform.position.x, curY, transform.position.y);
@@ -75,7 +65,8 @@ namespace AibisDream
private void OnDrag(BaseEventData data)
{
// 这里是一些阻碍拖动的情况
if (!IsActive) return;
// 正常情况下不会出错
if (data is not PointerEventData pointerData) return;
@@ -85,6 +76,9 @@ namespace AibisDream
private void OnBeginDrag(BaseEventData data)
{
// 这里是一些阻碍拖动的情况
if (!IsActive) return;
// 正常情况下不会出错
if (data is not PointerEventData pointerData) return;
// 设置拖拽目标点
@@ -112,7 +106,7 @@ namespace AibisDream
_dragPoint = new Vector3(transform.position.x, dragY, transform.position.z);
}
public bool IsActive => true;
public bool IsActive => _engineSystem.isPullActive;
public bool IsAvailable => _engineSystem.isAvailable;
+30 -83
View File
@@ -1,8 +1,10 @@
using System;
using System.Collections;
using AibisDream.FixSystem;
using AibisDream.Framework;
using AibisDream.Utility;
using Cinemachine;
using DG.Tweening;
using UnityEngine;
using UnityEngine.Events;
@@ -10,15 +12,16 @@ namespace AibisDream
{
public class EngineSystem : MonoBehaviour
{
private CordPull _cordPull;
private StaticGear _centerGear;
[Header("系统配置")] public EngineConfig engineConfig;
[Header("系统数据")] public EngineData engineData;
public bool isAvailable;
public bool isPullActive;
private bool _isSuccess;
[HideInInspector] public UnityEvent<float> updateSpeedEvent = new();
public float curSpeed;
public float targetSpeed=0.95f;
[HideInInspector] public UnityEvent<float, float> updateSpeedEvent = new();
[SerializeField] private float coverMoveDuration = 5f;
@@ -27,10 +30,9 @@ namespace AibisDream
private void Awake()
{
FixSystemCenter.SystemDic.Register(this);
_cordPull = transform.Find("拉绳").GetComponent<CordPull>();
_centerGear = transform.Find("中央齿轮").GetComponent<StaticGear>();
_centerGear.initSpeed = engineConfig.gearSpeed;
// 注册相机
var virtualCam = transform.Find("Engine Camera").GetComponentInChildren<ICinemachineCamera>();
CameraKit.Instance.RegisterCamera(CameraEnum.Engine, virtualCam);
@@ -38,36 +40,41 @@ namespace AibisDream
private void Start()
{
// 初始化数据
engineData = new EngineData
{
config = engineConfig
};
_centerGear.StartRotate();
}
public IEnumerator StepOnGas(float targetSpeed, float duration)
{
// 逐渐加速
yield return DOTween.To(() => curSpeed, x => { curSpeed = x; }, targetSpeed, duration).WaitForCompletion();
}
public void AddAirPress(float speedDelta)
{
curSpeed = CommonUtil.Limit(curSpeed + speedDelta / engineConfig.pullCount, 1, 0);
}
private void OnDestroy()
{
CameraKit.Instance.UnRegisterCamera(CameraEnum.Engine);
}
public void Update()
private void Update()
{
// 收集数据
engineData.curOil = _cordPull.GetCurOil();
// 更新数据
engineData.CalcSpeed();
// 传递速度
updateSpeedEvent.Invoke(engineData.GetRealSpeed());
if (engineData.CheckSuccess())
updateSpeedEvent.Invoke(curSpeed, GetSpeedScale());
if (curSpeed >= targetSpeed && !_isSuccess)
{
Debug.Log("引擎成功");
_isSuccess = true;
isPullActive = false;
DialogController.Instance?.StartDialogNode("EngineSuccess");
}
}
private float GetSpeedScale()
{
return 1 + curSpeed * engineConfig.speedRate;
}
/// <summary>
/// 开启系统交互
/// </summary>
@@ -88,70 +95,10 @@ namespace AibisDream
[Serializable]
public struct EngineConfig
{
[Header("油门倍率")] public float oilRate;
[Header("阻力倍率")] public float resistance;
[Header("齿轮基础速度")] public float gearSpeed;
[Header("齿轮速度倍率")] public float speedRate;
[Header("成功所需时间")] public float targetDuration;
[Header("拉满几次到全速")] public float pullCount;
[Header("拉绳最大速度")] public float pullMaxSpeed;
[Header("拉绳回缩速度")] public float returnSpeed;
}
[Serializable]
public struct EngineData
{
public EngineConfig config;
public float curSpeed;
public float curOil;
public float curAcceleration;
public bool isSuccess;
public float reachTargetTime;
public void CalcSpeed()
{
if (curOil != 0)
{
curAcceleration = curAcceleration < 0 ? 0 : curAcceleration;
curAcceleration = CommonUtil.Limit(curOil * config.oilRate * Time.deltaTime + curAcceleration, 100, 0);
}
else
{
curAcceleration = -config.resistance * (1f + curSpeed);
}
curSpeed = CommonUtil.Limit(curSpeed + curAcceleration * Time.deltaTime, 1, 0);
}
public bool CheckSuccess()
{
// 已经成功就不用校验了
if (isSuccess) return false;
if (curSpeed >= 0.95f)
{
reachTargetTime += Time.deltaTime;
}
else
{
reachTargetTime = 0;
}
// 如果速度达标时间足够就判断成功
if (!(reachTargetTime >= config.targetDuration)) return false;
isSuccess = true;
return true;
}
/// <summary>
/// 获取处理后的速度
/// </summary>
/// <returns>速度</returns>
public float GetRealSpeed()
{
return 1 + curSpeed * config.speedRate;
}
}
}
@@ -1,4 +1,5 @@
using System.Collections;
using AibisDream.FixSystem;
using UnityEngine;
using Yarn.Unity;
@@ -6,6 +7,8 @@ namespace AibisDream
{
public static class EngineYarnCommand
{
private static EngineSystem EngineSystem => FixSystemCenter.SystemDic.Get<EngineSystem>();
// 打开引擎盖
[YarnCommand("open_engine_cover")]
public static IEnumerator OpenEngineCover()
@@ -21,5 +24,26 @@ namespace AibisDream
Debug.LogWarning("关闭引擎盖命令已废弃,请尽快删除");
yield break;
}
/// <summary>
/// 踩油门
/// </summary>
/// <param name="targetSpeed">目标速度</param>
/// <param name="duration">用时</param>
/// <returns>协程</returns>
[YarnCommand("step_on_gas")]
public static IEnumerator StepOnGas(float targetSpeed, float duration)
{
return EngineSystem.StepOnGas(targetSpeed, duration);
}
/// <summary>
/// 激活拉绳
/// </summary>
[YarnCommand("active_engine_pull")]
public static void ActivePull()
{
EngineSystem.isPullActive = true;
}
}
}
@@ -1,25 +1,30 @@
using UnityEngine;
using UnityEngine;
using RainbowArt.CleanFlatUI;
namespace AibisDream
{
public class SpeedDashboard : MonoBehaviour
{
private Transform _pointer;
[SerializeField] private float leftRot;
[SerializeField] private float rightRot;
private Material _material;
private EngineSystem _engineSystem;
protected void OnStart()
{
_pointer = transform.Find("Pointer");
private ProgressBarGridCircular progress;
private static readonly int Progress1 = Shader.PropertyToID("_Progress");
private void Awake()
{
_engineSystem = transform.parent.GetComponent<EngineSystem>();
_material = _engineSystem.transform.Find("心脏引擎").GetComponent<SpriteRenderer>().material;
progress=FindObjectOfType<ProgressBarGridCircular>();
_engineSystem.updateSpeedEvent.AddListener(OnSpeedChange);
}
protected void UpdateDashboard(EngineData data)
private void OnSpeedChange(float originSpeed, float speedScale)
{
var targetRot = (rightRot - leftRot) * data.curSpeed + leftRot;
_pointer.eulerAngles = new Vector3(0, 0, -targetRot);
_material.SetFloat("_VibrateFade", originSpeed);
progress.CurrentValue=Mathf.RoundToInt(originSpeed * 50);
//_material.SetFloat(Progress1, originSpeed);
}
}
}
}
@@ -1,11 +1,3 @@
fileFormatVersion: 2
guid: 73c497ccb39448718a07911a5e674d5f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 4d9cead340d34293bf0fd9631aede238
timeCreated: 1737626210
+2 -6
View File
@@ -22,12 +22,8 @@ namespace AibisDream
.SetEase(Ease.Linear)
.SetLoops(-1, LoopType.Incremental);
}
/// <summary>
/// 为旋转加速
/// </summary>
/// <param name="speed">速度倍率</param>
private void UpdateSpeedScale(float speed)
private void UpdateSpeedScale(float originSpeed, float speed)
{
_rotateTween.timeScale = speed;
}
@@ -39,6 +39,8 @@ namespace AibisDream
private bool _isTargetReached;
private bool _isDiscReady;
public float initSpeed = 1;
private void Awake()
{
Init();
@@ -65,6 +67,10 @@ namespace AibisDream
var panelShafts = _panel.GetComponentsInChildren<Shaft>();
_shaftGraph = new ShaftGraph(shafts, panelShafts);
var engine = FixSystemCenter.SystemDic.Get<EngineSystem>();
_shaftGraph.StartRotate(initSpeed);
engine.updateSpeedEvent.AddListener(_shaftGraph.Accelerate);
_panel.gameObject.SetActive(false);
}
+1 -8
View File
@@ -23,9 +23,6 @@ namespace AibisDream
[SerializeField] private Gear childGear;
// 初始角速度
[SerializeField] private float initialSpeed;
// 目标角速度
[SerializeField] private float targetSpeed;
@@ -70,8 +67,7 @@ namespace AibisDream
// 如果带齿轮,要根据齿轮类型生成
childGear = InitGear(initRadius, initSprite, isInitGearBroken, isInitGearDisc);
speed = initialSpeed;
childGear.UpdateRotation(speed, _speedScale);
}
@@ -274,7 +270,6 @@ namespace AibisDream
isInitGearBroken = levelData.isGearBroken;
isInitGearDisc = levelData.isDisc;
discIdx = levelData.discIdx;
initialSpeed = levelData.initialSpeed;
targetSpeed = levelData.targetSpeed;
initRadius = levelData.radius;
}
@@ -291,7 +286,6 @@ namespace AibisDream
isGearBroken = isInitGearBroken,
isDisc = isInitGearDisc,
discIdx = discIdx,
initialSpeed = initialSpeed,
targetSpeed = targetSpeed,
radius = initRadius
};
@@ -315,7 +309,6 @@ namespace AibisDream
// 关卡数据
public ShaftType shaftType;
public float initialSpeed;
public float targetSpeed;
public bool hasChildGear;
public float radius;
+18 -12
View File
@@ -43,6 +43,24 @@ namespace AibisDream
UpdateSpeed();
}
/// <summary>
/// 初始化速度
/// </summary>
/// <param name="initSpeed">初始速度</param>
public void StartRotate(float initSpeed)
{
_vertexArray[_rootIdx].speed = initSpeed;
UpdateSpeed();
}
public void Accelerate(float originSpeed, float speed)
{
foreach (var shaft in _vertexArray)
{
if (shaft.HasChildGear()) shaft.UpdateSpeedScale(speed);
}
}
private int FindDriverIdx()
{
for (int i = 0; i < _vertexSize; i++)
@@ -261,17 +279,5 @@ namespace AibisDream
return isShaftAvailable;
}
/// <summary>
/// 通过引擎系统加速
/// </summary>
/// <param name="curSpeed">当前速度</param>
private void Accelerate(float curSpeed)
{
foreach (var shaft in _vertexArray)
{
if (shaft.HasChildGear()) shaft.UpdateSpeedScale(1 + curSpeed);
}
}
}
}
+36 -2
View File
@@ -15,13 +15,13 @@ namespace AibisDream
public Sprite nextTalk, talking, option, interactive, holding, disable, eye;
private Image _cursor;
private RectTransform _cursorCanvas;
#region
private Coroutine _switchCoroutine;
private CursorState _curState = CursorState.Default;
private bool _isTalking;
[HideInInspector] public bool isInMenu;
#endregion
@@ -59,12 +59,18 @@ namespace AibisDream
private void InitRefs()
{
_cursor = transform.Find("Cursor").GetComponent<Image>();
_cursorCanvas = GetComponent<RectTransform>();
}
private void RegisterEvent()
{
// 此处监听所有可能对鼠标状态产生影响的事件
RegisterDialogEvent();
RegisterTriggerEvent();
RegisterMenu();
}
private void RegisterDialogEvent()
{
// 对话相关
_unRegisters.Add(EnumEventSystem.Global.Register<DialogEventEnum, DialogLine>(DialogEventEnum.LineStart,
OnLineStart));
@@ -74,7 +80,10 @@ namespace AibisDream
_unRegisters.Add(
EnumEventSystem.Global.Register<DialogEventEnum, DialogLine>(DialogEventEnum.OptionSelected,
OnOptionSelect));
}
private void RegisterTriggerEvent()
{
// 交互相关
_unRegisters.Add(EnumEventSystem.Global.Register(InteractionEventEnum.Start, OnInteractiveStart));
_unRegisters.Add(EnumEventSystem.Global.Register(InteractionEventEnum.End, OnInteractiveEnd));
@@ -89,6 +98,22 @@ namespace AibisDream
EnumEventSystem.Global.Register<TriggerEnum, IInteraction>(TriggerEnum.PointerUp, OnPointerUp));
}
private void RegisterMenu()
{
_unRegisters.Add(EnumEventSystem.Global.Register<EventEnum, bool>(EventEnum.Menu, OnMenuChange));
}
private void Update()
{
if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
{
if (!isInMenu)
{
DialogController.Instance.JumpLine();
}
}
}
private void LateUpdate()
{
// // 将虚拟指针与鼠标位置同步
@@ -190,6 +215,15 @@ namespace AibisDream
#endregion
#region
private void OnMenuChange(bool isMenuOpen)
{
isInMenu = isMenuOpen;
}
#endregion
#region
/// <summary>
@@ -162,6 +162,7 @@ namespace AibisDream
{
var logObj = transform.Find("Dialogue Log").gameObject;
logObj.SetActive(!logObj.activeSelf);
EnumEventSystem.Global.Send(EventEnum.Menu, logObj.activeSelf);
}
#endregion