Handbuch Scroll-Listen entfernt. Handbuch offen und tabs eingefügt. Upgrades eingefügt. "Garage" eingefügt. Anbindung eines echten Gameplaymanager möglich (theoretisch)
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 60d65fef87fee664897bb6e753c6a9ef
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eacac133dcae5324cab9ad3f7d46cb3e
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.4 MiB |
@@ -0,0 +1,172 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -1872797991219544693
|
||||||
|
second: Bases_0
|
||||||
|
- first:
|
||||||
|
213: -7679180612708447945
|
||||||
|
second: Bases_1
|
||||||
|
- first:
|
||||||
|
213: -5240326301574108534
|
||||||
|
second: Bases_2
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 4096
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Base_Physical
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 850
|
||||||
|
y: 1590
|
||||||
|
width: 1370
|
||||||
|
height: 1380
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 07cb3e07499b619448006c939839bfbd
|
||||||
|
internalID: -543501159
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Base_Energy
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 850
|
||||||
|
y: 105
|
||||||
|
width: 1370
|
||||||
|
height: 1370
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 2a6160587432cac4d877a5e073a326e5
|
||||||
|
internalID: -16298893
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 43b9e63d7e1ff904d982a45b7bfb1a6a
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable:
|
||||||
|
Base_Energy: -16298893
|
||||||
|
Base_Physical: -543501159
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.0 MiB |
@@ -0,0 +1,170 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d0335f66971840b4197a437d197408ac
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 8217568148613480246
|
||||||
|
second: Book_Open_0
|
||||||
|
- first:
|
||||||
|
213: -7825608814508983070
|
||||||
|
second: Book_Open_1
|
||||||
|
- first:
|
||||||
|
213: -5171294035707683193
|
||||||
|
second: Book_Open_2
|
||||||
|
- first:
|
||||||
|
213: -3581394590333099349
|
||||||
|
second: Book_Open_3
|
||||||
|
- first:
|
||||||
|
213: 1947435604017804808
|
||||||
|
second: Book_Open_4
|
||||||
|
- first:
|
||||||
|
213: -5803366474818405020
|
||||||
|
second: Book_Open_5
|
||||||
|
- first:
|
||||||
|
213: -3028101258590221373
|
||||||
|
second: Book_Open_6
|
||||||
|
- first:
|
||||||
|
213: -3514956896288037776
|
||||||
|
second: Book_Open_7
|
||||||
|
- first:
|
||||||
|
213: 3877349617089540900
|
||||||
|
second: Book_Open_8
|
||||||
|
- first:
|
||||||
|
213: 6062180046783919782
|
||||||
|
second: Book_Open_9
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 4096
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Book_Open
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 85
|
||||||
|
y: 425
|
||||||
|
width: 2780
|
||||||
|
height: 1875
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 59fb76cfce581b842ae994a3dc4058d0
|
||||||
|
internalID: -859127054
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: dcfe40104b4580148bbab86241a707b8
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable:
|
||||||
|
Book_Open: -859127054
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.9 MiB |
@@ -0,0 +1,325 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2595589f33aff2742afc6c18fa79deaa
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 5656954610777813324
|
||||||
|
second: Sticker_0
|
||||||
|
- first:
|
||||||
|
213: 6616506971803290257
|
||||||
|
second: Sticker_1
|
||||||
|
- first:
|
||||||
|
213: -6652201895273594294
|
||||||
|
second: Sticker_2
|
||||||
|
- first:
|
||||||
|
213: 4866872948790221758
|
||||||
|
second: Sticker_3
|
||||||
|
- first:
|
||||||
|
213: -86272938267427638
|
||||||
|
second: Sticker_4
|
||||||
|
- first:
|
||||||
|
213: 4112071875864167587
|
||||||
|
second: Sticker_5
|
||||||
|
- first:
|
||||||
|
213: 1889917552993484824
|
||||||
|
second: Sticker_6
|
||||||
|
- first:
|
||||||
|
213: -3794195255884983014
|
||||||
|
second: Sticker_7
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 4096
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Open_Build
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 575
|
||||||
|
y: 1817
|
||||||
|
width: 277
|
||||||
|
height: 880
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 9ea93f40e913bc240acee6abdc4f23b8
|
||||||
|
internalID: -77313810
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Open_Stats
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1022
|
||||||
|
y: 1794
|
||||||
|
width: 328
|
||||||
|
height: 883
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 038395b8d0262fb47a997fbcde23f2ca
|
||||||
|
internalID: -1174779509
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Open_Upgrades
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1462
|
||||||
|
y: 1788
|
||||||
|
width: 301
|
||||||
|
height: 909
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: a48ebeab6f30350449b19663895e3572
|
||||||
|
internalID: -587414040
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Open_Index
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1865
|
||||||
|
y: 1781
|
||||||
|
width: 317
|
||||||
|
height: 937
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 7e7f4ef41559b094292cf3902b64ef18
|
||||||
|
internalID: 1824088194
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Closed_Index
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 970
|
||||||
|
y: 1329
|
||||||
|
width: 936
|
||||||
|
height: 320
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 04794301365a9a34d8f3aea3ce719b4b
|
||||||
|
internalID: -1870177106
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Closed_Upgrades
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 993
|
||||||
|
y: 926
|
||||||
|
width: 909
|
||||||
|
height: 302
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 05afc3cc7342cac4397319b6bf3a0d36
|
||||||
|
internalID: -1526235341
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Closed_Stats
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1015
|
||||||
|
y: 484
|
||||||
|
width: 882
|
||||||
|
height: 333
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 70454e9823db5234fbd4636bd85a45b2
|
||||||
|
internalID: -700172689
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Closed_Build
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 998
|
||||||
|
y: 37
|
||||||
|
width: 879
|
||||||
|
height: 282
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 169ebeed29e5fdb43b1625b173065c10
|
||||||
|
internalID: 1514734327
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 78d7b363deb783e4b94ca7a44900684b
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable:
|
||||||
|
Closed_Build: 1514734327
|
||||||
|
Closed_Index: -1870177106
|
||||||
|
Closed_Stats: -700172689
|
||||||
|
Closed_Upgrades: -1526235341
|
||||||
|
Open_Build: -77313810
|
||||||
|
Open_Index: 1824088194
|
||||||
|
Open_Stats: -1174779509
|
||||||
|
Open_Upgrades: -587414040
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3dd117b6ca4b7b446ab5648d755abef7
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: ammo_0_Gewehr
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: ammo_0
|
||||||
|
displayName: Gewehr
|
||||||
|
category: 0
|
||||||
|
menuGroup: 0
|
||||||
|
use: 0
|
||||||
|
energyCost: 50
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 20 \xB7 2 Sch\xFCsse/s"
|
||||||
|
description: "Gewehr: Schaden 20 \xB7 2 Sch\xFCsse/s. Munition: Kugeln. Baufl\xE4che:
|
||||||
|
Mauer. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 6005720031823437216, guid: cb948f7d9fa2f3749b14ffacdbdcf00d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 1
|
||||||
|
ammoPerShot: 1
|
||||||
|
energyPerSecond: 1
|
||||||
|
damagePerHit: 20
|
||||||
|
attacksPerSecond: 2
|
||||||
|
range: 5
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 1
|
||||||
|
targets: 1
|
||||||
|
rotation: 0
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 0
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 0
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 38
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 75
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 125
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 5
|
||||||
|
sourceBalanceScore: 3
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: ammo_1_Minigun
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: ammo_1
|
||||||
|
displayName: Minigun
|
||||||
|
category: 0
|
||||||
|
menuGroup: 0
|
||||||
|
use: 0
|
||||||
|
energyCost: 80
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 5 \xB7 8 Sch\xFCsse/s"
|
||||||
|
description: "Minigun: Schaden 5 \xB7 8 Sch\xFCsse/s. Munition: Kugeln. Baufl\xE4che:
|
||||||
|
Mauer. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 6005720031823437216, guid: cb948f7d9fa2f3749b14ffacdbdcf00d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 1
|
||||||
|
ammoPerShot: 1
|
||||||
|
energyPerSecond: 1
|
||||||
|
damagePerHit: 5
|
||||||
|
attacksPerSecond: 8
|
||||||
|
range: 3.5
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 1
|
||||||
|
targets: 1
|
||||||
|
rotation: 0
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 0
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 0
|
||||||
|
magazineCapacity: 96
|
||||||
|
initialAmmo: 96
|
||||||
|
refillPerSecond: 12
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 60
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 120
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 200
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 8
|
||||||
|
sourceBalanceScore: 2
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: ammo_2_Sniper
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: ammo_2
|
||||||
|
displayName: Sniper
|
||||||
|
category: 0
|
||||||
|
menuGroup: 0
|
||||||
|
use: 0
|
||||||
|
energyCost: 70
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 60 \xB7 0,35 Sch\xFCsse/s"
|
||||||
|
description: "Sniper: Schaden 60 \xB7 0,35 Sch\xFCsse/s. Munition: Kugeln. Baufl\xE4che:
|
||||||
|
Mauer. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 6005720031823437216, guid: cb948f7d9fa2f3749b14ffacdbdcf00d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 1
|
||||||
|
ammoPerShot: 1
|
||||||
|
energyPerSecond: 1
|
||||||
|
damagePerHit: 60
|
||||||
|
attacksPerSecond: 0.35
|
||||||
|
range: 7
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 1
|
||||||
|
targets: 3
|
||||||
|
rotation: 2
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 0
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 0
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 52
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 105
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 175
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 7
|
||||||
|
sourceBalanceScore: 4
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: ammo_3_Granatenwerfer
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: ammo_3
|
||||||
|
displayName: Granatenwerfer
|
||||||
|
category: 0
|
||||||
|
menuGroup: 0
|
||||||
|
use: 0
|
||||||
|
energyCost: 100
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 40 \xB7 0,7 Sch\xFCsse/s"
|
||||||
|
description: "Granatenwerfer: Schaden 40 \xB7 0,7 Sch\xFCsse/s. Munition: Sprengstoff.
|
||||||
|
Baufl\xE4che: Mauer. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 6005720031823437216, guid: cb948f7d9fa2f3749b14ffacdbdcf00d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 2
|
||||||
|
ammoPerShot: 1
|
||||||
|
energyPerSecond: 3
|
||||||
|
damagePerHit: 40
|
||||||
|
attacksPerSecond: 0.7
|
||||||
|
range: 2
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 2
|
||||||
|
targets: 2
|
||||||
|
rotation: 0
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 0
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 0
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 75
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 150
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 250
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 10
|
||||||
|
sourceBalanceScore: 3
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: ammo_4_Howitzer
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: ammo_4
|
||||||
|
displayName: Howitzer
|
||||||
|
category: 0
|
||||||
|
menuGroup: 0
|
||||||
|
use: 0
|
||||||
|
energyCost: 130
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 40 \xB7 0,25 Sch\xFCsse/s"
|
||||||
|
description: "Howitzer: Schaden 40 \xB7 0,25 Sch\xFCsse/s. Munition: Sprengstoff
|
||||||
|
+ \xD6l. Baufl\xE4che: Mauer. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 6005720031823437216, guid: cb948f7d9fa2f3749b14ffacdbdcf00d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 4
|
||||||
|
ammoPerShot: 1
|
||||||
|
energyPerSecond: 6
|
||||||
|
damagePerHit: 40
|
||||||
|
attacksPerSecond: 0.25
|
||||||
|
range: 5
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 3
|
||||||
|
targets: 4
|
||||||
|
rotation: 2
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 1.2
|
||||||
|
effect: 0
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 0
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 98
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 195
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 325
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 13
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: ammo_5_Flammenwerfer
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: ammo_5
|
||||||
|
displayName: Flammenwerfer
|
||||||
|
category: 0
|
||||||
|
menuGroup: 0
|
||||||
|
use: 0
|
||||||
|
energyCost: 20
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 8/s \xB7 Kontinuierlich"
|
||||||
|
description: "Flammenwerfer: Schaden 8/s \xB7 Kontinuierlich. Dauerverbrauch statt
|
||||||
|
unendlicher Feuerrate. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -543501159, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 6005720031823437216, guid: cb948f7d9fa2f3749b14ffacdbdcf00d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 3
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 0
|
||||||
|
damagePerHit: 0
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 1
|
||||||
|
continuousDamagePerSecond: 8
|
||||||
|
ammoPerSecond: 2
|
||||||
|
continuousAttack: 1
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 2
|
||||||
|
targets: 2
|
||||||
|
rotation: 1
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 0
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 0
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 1
|
||||||
|
unitsPerShot: 0
|
||||||
|
unitsPerFiringSecond: 2
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 15
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 30
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 50
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 2
|
||||||
|
sourceBalanceScore: 3
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: energy_0_Laser Gewehr
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: energy_0
|
||||||
|
displayName: Laser Gewehr
|
||||||
|
category: 1
|
||||||
|
menuGroup: 1
|
||||||
|
use: 0
|
||||||
|
energyCost: 85
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 40 \xB7 2 Sch\xFCsse/s"
|
||||||
|
description: "Laser Gewehr: Schaden 40 \xB7 2 Sch\xFCsse/s. Baufl\xE4che: Mauer.
|
||||||
|
Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 2743134360449186016, guid: a2ef118a6f124d4429c56b3f72e9310d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 5
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 3
|
||||||
|
damagePerHit: 40
|
||||||
|
attacksPerSecond: 2
|
||||||
|
range: 5
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 1
|
||||||
|
targets: 1
|
||||||
|
rotation: 0
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 0
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 1
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 64
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 128
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 212
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 8.5
|
||||||
|
sourceBalanceScore: 2
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: energy_1_Bouncer
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: energy_1
|
||||||
|
displayName: Bouncer
|
||||||
|
category: 1
|
||||||
|
menuGroup: 1
|
||||||
|
use: 0
|
||||||
|
energyCost: 100
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 8 \xB7 2 Sch\xFCsse/s"
|
||||||
|
description: "Bouncer: Schaden 8 \xB7 2 Sch\xFCsse/s. Baufl\xE4che: Mauer. Werte
|
||||||
|
vorl\xE4ufig."
|
||||||
|
icon: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 2743134360449186016, guid: a2ef118a6f124d4429c56b3f72e9310d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 5
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 3
|
||||||
|
damagePerHit: 8
|
||||||
|
attacksPerSecond: 2
|
||||||
|
range: 3.5
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 1
|
||||||
|
targets: 1
|
||||||
|
rotation: 0
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 1
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 3
|
||||||
|
supply:
|
||||||
|
kind: 1
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 75
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 150
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 250
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 10
|
||||||
|
sourceBalanceScore: -1
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: energy_2_Pusher
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: energy_2
|
||||||
|
displayName: Pusher
|
||||||
|
category: 1
|
||||||
|
menuGroup: 1
|
||||||
|
use: 0
|
||||||
|
energyCost: 60
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 8 \xB7 4 Sch\xFCsse/s"
|
||||||
|
description: "Pusher: Schaden 8 \xB7 4 Sch\xFCsse/s. Baufl\xE4che: Mauer. Werte
|
||||||
|
vorl\xE4ufig."
|
||||||
|
icon: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 2743134360449186016, guid: a2ef118a6f124d4429c56b3f72e9310d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 5
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 3
|
||||||
|
damagePerHit: 8
|
||||||
|
attacksPerSecond: 4
|
||||||
|
range: 3.5
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 2
|
||||||
|
targets: 2
|
||||||
|
rotation: 1
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 2
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0.5
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 1
|
||||||
|
magazineCapacity: 48
|
||||||
|
initialAmmo: 48
|
||||||
|
refillPerSecond: 6
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 45
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 90
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 150
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 6
|
||||||
|
sourceBalanceScore: 2
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: energy_3_Knocker
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: energy_3
|
||||||
|
displayName: Knocker
|
||||||
|
category: 1
|
||||||
|
menuGroup: 1
|
||||||
|
use: 0
|
||||||
|
energyCost: 80
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 8 \xB7 0,7 Sch\xFCsse/s"
|
||||||
|
description: "Knocker: Schaden 8 \xB7 0,7 Sch\xFCsse/s. Baufl\xE4che: Mauer. Werte
|
||||||
|
vorl\xE4ufig."
|
||||||
|
icon: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 2743134360449186016, guid: a2ef118a6f124d4429c56b3f72e9310d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 5
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 3
|
||||||
|
damagePerHit: 8
|
||||||
|
attacksPerSecond: 0.7
|
||||||
|
range: 3.5
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 2
|
||||||
|
targets: 2
|
||||||
|
rotation: 1
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 3
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 2
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0.3
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 1
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 60
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 120
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 200
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 8
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: energy_4_Laser-Beam
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: energy_4
|
||||||
|
displayName: Laser-Beam
|
||||||
|
category: 1
|
||||||
|
menuGroup: 1
|
||||||
|
use: 0
|
||||||
|
energyCost: 200
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 40/s \xB7 Kontinuierlich"
|
||||||
|
description: "Laser-Beam: Schaden 40/s \xB7 Kontinuierlich. Dauerverbrauch statt
|
||||||
|
unendlicher Feuerrate. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 2743134360449186016, guid: a2ef118a6f124d4429c56b3f72e9310d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 5
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 12
|
||||||
|
damagePerHit: 0
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 8
|
||||||
|
continuousDamagePerSecond: 40
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 1
|
||||||
|
unlimitedRange: 1
|
||||||
|
attackShape: 1
|
||||||
|
targets: 1
|
||||||
|
rotation: 0
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 4
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 3
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 1
|
||||||
|
magazineCapacity: 144
|
||||||
|
initialAmmo: 144
|
||||||
|
refillPerSecond: 18
|
||||||
|
consumption: 1
|
||||||
|
unitsPerShot: 0
|
||||||
|
unitsPerFiringSecond: 12
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 150
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 300
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 500
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 20
|
||||||
|
sourceBalanceScore: 4
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: energy_5_Laser Shotgun
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: energy_5
|
||||||
|
displayName: Laser Shotgun
|
||||||
|
category: 1
|
||||||
|
menuGroup: 1
|
||||||
|
use: 0
|
||||||
|
energyCost: 90
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Schaden 20 \xB7 0,7 Sch\xFCsse/s"
|
||||||
|
description: "Laser Shotgun: Schaden 20 \xB7 0,7 Sch\xFCsse/s. Baufl\xE4che: Mauer.
|
||||||
|
Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
previewSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
baseSprite: {fileID: -16298893, guid: e5b69ac5c61ad9b45bf96d69b7ab3b7a, type: 3}
|
||||||
|
basePrefab: {fileID: 2743134360449186016, guid: a2ef118a6f124d4429c56b3f72e9310d, type: 3}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 5
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 3
|
||||||
|
damagePerHit: 20
|
||||||
|
attacksPerSecond: 0.7
|
||||||
|
range: 2
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 2
|
||||||
|
targets: 2
|
||||||
|
rotation: 1
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 4
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: 1
|
||||||
|
magazineCapacity: 30
|
||||||
|
initialAmmo: 30
|
||||||
|
refillPerSecond: 5
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 68
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 135
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 225
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Schaden +20 %
|
||||||
|
damageMultiplier: 1.2
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 9
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 90818978b1589c84eb9e5939588c396f
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: special_0_Caltrops
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: special_0
|
||||||
|
displayName: Caltrops
|
||||||
|
category: 2
|
||||||
|
menuGroup: 3
|
||||||
|
use: 1
|
||||||
|
energyCost: 20
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Bodenfalle \xB7 5 Kontakte"
|
||||||
|
description: "Caltrops: Bodenfalle \xB7 5 Kontakte. Baufl\xE4che: Innenfeld. Werte
|
||||||
|
vorl\xE4ufig."
|
||||||
|
icon: {fileID: 0}
|
||||||
|
previewSprite: {fileID: 0}
|
||||||
|
baseSprite: {fileID: 0}
|
||||||
|
basePrefab: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 1
|
||||||
|
baseShape: 1
|
||||||
|
baseRadius: 0.71
|
||||||
|
baseSize: {x: 1, y: 1}
|
||||||
|
placementRadius: 0.71
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 0
|
||||||
|
maxPerType: 3
|
||||||
|
deploymentCooldown: 60
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 5
|
||||||
|
combat:
|
||||||
|
ammunition: 0
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 0
|
||||||
|
damagePerHit: 8
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 0
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 4
|
||||||
|
targets: 2
|
||||||
|
rotation: 3
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 10
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: -1
|
||||||
|
magazineCapacity: 60
|
||||||
|
initialAmmo: 60
|
||||||
|
refillPerSecond: 10
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 0
|
||||||
|
upgrades: []
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 2
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen. Annahme:
|
||||||
|
f\xFCnf Kontakte bis Verbrauch; nicht gezielt angreifbar.\nVersorgung v3: vorl\xE4ufiges
|
||||||
|
Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten). Alle physischen
|
||||||
|
Waffen teilen Physical, Energiewaffen EnergyCells. supply ist die Quelle f\xFCr
|
||||||
|
Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond sind Altwerte
|
||||||
|
und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen werden."
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: special_1_Generator
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: special_1
|
||||||
|
displayName: Generator
|
||||||
|
category: 2
|
||||||
|
menuGroup: 2
|
||||||
|
use: 0
|
||||||
|
energyCost: 100
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Erzeugt Energie \xB7 Kapazit\xE4t +100"
|
||||||
|
description: "Generator: Erzeugt Energie \xB7 Kapazit\xE4t +100. Baufl\xE4che:
|
||||||
|
Mauer. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: 0}
|
||||||
|
previewSprite: {fileID: 0}
|
||||||
|
baseSprite: {fileID: 0}
|
||||||
|
basePrefab: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 2
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 0
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 0
|
||||||
|
damagePerHit: 0
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 0
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 0
|
||||||
|
targets: 0
|
||||||
|
rotation: 3
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 5
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 5
|
||||||
|
energyCapacityBonus: 100
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: -1
|
||||||
|
magazineCapacity: 60
|
||||||
|
initialAmmo: 60
|
||||||
|
refillPerSecond: 10
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 75
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 150
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 250
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 10
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: special_2_Sauger
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: special_2
|
||||||
|
displayName: Sauger
|
||||||
|
category: 2
|
||||||
|
menuGroup: 2
|
||||||
|
use: 0
|
||||||
|
energyCost: 40
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: Sammelt Leichen
|
||||||
|
description: "Sauger: Sammelt Leichen. Baufl\xE4che: Mauer. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: 0}
|
||||||
|
previewSprite: {fileID: 0}
|
||||||
|
baseSprite: {fileID: 0}
|
||||||
|
basePrefab: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 0
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 1
|
||||||
|
maxPerType: 2
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 0
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 1
|
||||||
|
damagePerHit: 0
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 3.5
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 3
|
||||||
|
targets: 2
|
||||||
|
rotation: 3
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 1.2
|
||||||
|
effect: 6
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 1
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: -1
|
||||||
|
magazineCapacity: 60
|
||||||
|
initialAmmo: 60
|
||||||
|
refillPerSecond: 10
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 30
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 60
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 100
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 4
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: special_3_Spiegel
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: special_3
|
||||||
|
displayName: Spiegel
|
||||||
|
category: 2
|
||||||
|
menuGroup: 2
|
||||||
|
use: 0
|
||||||
|
energyCost: 10
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: Reflektiert Strahlen
|
||||||
|
description: "Spiegel: Reflektiert Strahlen. Baufl\xE4che: Innenfeld. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: 0}
|
||||||
|
previewSprite: {fileID: 0}
|
||||||
|
baseSprite: {fileID: 0}
|
||||||
|
basePrefab: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 1
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.25
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.45
|
||||||
|
allowPlayerRotation: 1
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 0
|
||||||
|
maxPerType: 3
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 0
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 0
|
||||||
|
damagePerHit: 0
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 0
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 0
|
||||||
|
targets: 0
|
||||||
|
rotation: 2
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 7
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: -1
|
||||||
|
magazineCapacity: 60
|
||||||
|
initialAmmo: 60
|
||||||
|
refillPerSecond: 10
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 1
|
||||||
|
destroyableByDamage: 1
|
||||||
|
maxHealth: 80
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 1
|
||||||
|
upgrades:
|
||||||
|
- title: Stufe 1
|
||||||
|
energyCost: 8
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 2
|
||||||
|
energyCost: 15
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
- title: Stufe 3
|
||||||
|
energyCost: 25
|
||||||
|
entrailsCost: 0
|
||||||
|
description: Wirkung +20 %
|
||||||
|
damageMultiplier: 1
|
||||||
|
fireRateMultiplier: 1
|
||||||
|
rangeMultiplier: 1
|
||||||
|
effectMultiplier: 1.2
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 1
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen. Annahme:
|
||||||
|
Spiegel im Innenfeld, zerst\xF6rbar, h\xF6chstens drei.\nVersorgung v3: vorl\xE4ufiges
|
||||||
|
Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten). Alle physischen
|
||||||
|
Waffen teilen Physical, Energiewaffen EnergyCells. supply ist die Quelle f\xFCr
|
||||||
|
Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond sind Altwerte
|
||||||
|
und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen werden."
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: special_4_Reparaturtrupp
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: special_4
|
||||||
|
displayName: Reparaturtrupp
|
||||||
|
category: 2
|
||||||
|
menuGroup: 3
|
||||||
|
use: 3
|
||||||
|
energyCost: 40
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: Repariert Schleusen
|
||||||
|
description: "Reparaturtrupp: Repariert Schleusen. Baufl\xE4che: Schleuse. Werte
|
||||||
|
vorl\xE4ufig."
|
||||||
|
icon: {fileID: 0}
|
||||||
|
previewSprite: {fileID: 0}
|
||||||
|
baseSprite: {fileID: 0}
|
||||||
|
basePrefab: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 2
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 0.6
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 0
|
||||||
|
maxPerType: 1
|
||||||
|
deploymentCooldown: 0
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 0
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 0
|
||||||
|
damagePerHit: 0
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 0
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 0
|
||||||
|
targets: 5
|
||||||
|
rotation: 3
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 8
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 2
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: -1
|
||||||
|
magazineCapacity: 60
|
||||||
|
initialAmmo: 60
|
||||||
|
refillPerSecond: 10
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 1
|
||||||
|
destroyableByDamage: 1
|
||||||
|
maxHealth: 60
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 0
|
||||||
|
upgrades: []
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 4
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen. Annahme:
|
||||||
|
Trupp an Schleuse einsetzen; ein aktiver Trupp.\nVersorgung v3: vorl\xE4ufiges
|
||||||
|
Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten). Alle physischen
|
||||||
|
Waffen teilen Physical, Energiewaffen EnergyCells. supply ist die Quelle f\xFCr
|
||||||
|
Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond sind Altwerte
|
||||||
|
und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen werden."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5bce420e3add86a428fc173ab05ca513
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: special_5_Bombardement
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: special_5
|
||||||
|
displayName: Bombardement
|
||||||
|
category: 2
|
||||||
|
menuGroup: 3
|
||||||
|
use: 2
|
||||||
|
energyCost: 200
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Fl\xE4chenangriff \xB7 120 s Cooldown"
|
||||||
|
description: "Bombardement: Fl\xE4chenangriff \xB7 120 s Cooldown. Baufl\xE4che:
|
||||||
|
Innenfeld. Werte vorl\xE4ufig."
|
||||||
|
icon: {fileID: 0}
|
||||||
|
previewSprite: {fileID: 0}
|
||||||
|
baseSprite: {fileID: 0}
|
||||||
|
basePrefab: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 1
|
||||||
|
baseShape: 0
|
||||||
|
baseRadius: 0.36
|
||||||
|
baseSize: {x: 0.5, y: 0.5}
|
||||||
|
placementRadius: 1.5
|
||||||
|
allowPlayerRotation: 0
|
||||||
|
blocksMovement: 0
|
||||||
|
requirePathValidation: 0
|
||||||
|
countsTowardWallLimit: 0
|
||||||
|
maxPerType: 0
|
||||||
|
deploymentCooldown: 120
|
||||||
|
lifetimeSeconds: 0
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 0
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 0
|
||||||
|
damagePerHit: 60
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 8
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 1
|
||||||
|
attackShape: 3
|
||||||
|
targets: 4
|
||||||
|
rotation: 3
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 1.5
|
||||||
|
effect: 9
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: -1
|
||||||
|
magazineCapacity: 60
|
||||||
|
initialAmmo: 60
|
||||||
|
refillPerSecond: 10
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 0
|
||||||
|
destroyableByDamage: 0
|
||||||
|
maxHealth: 0
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 0
|
||||||
|
upgrades: []
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 20
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6895b095a772c33448f315c36d30673f
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
||||||
|
m_Name: special_6_Barrikade
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
||||||
|
id: special_6
|
||||||
|
displayName: Barrikade
|
||||||
|
category: 2
|
||||||
|
menuGroup: 3
|
||||||
|
use: 1
|
||||||
|
energyCost: 30
|
||||||
|
entrailsCost: 0
|
||||||
|
summary: "Blockiert Wege \xB7 30 s"
|
||||||
|
description: "Barrikade: Blockiert Wege \xB7 30 s. Baufl\xE4che: Innenfeld. Werte
|
||||||
|
vorl\xE4ufig."
|
||||||
|
icon: {fileID: 0}
|
||||||
|
previewSprite: {fileID: 0}
|
||||||
|
baseSprite: {fileID: 0}
|
||||||
|
basePrefab: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
region: 1
|
||||||
|
baseShape: 1
|
||||||
|
baseRadius: 1.59
|
||||||
|
baseSize: {x: 3, y: 1}
|
||||||
|
placementRadius: 1.59
|
||||||
|
allowPlayerRotation: 1
|
||||||
|
blocksMovement: 1
|
||||||
|
requirePathValidation: 1
|
||||||
|
countsTowardWallLimit: 0
|
||||||
|
maxPerType: 2
|
||||||
|
deploymentCooldown: 180
|
||||||
|
lifetimeSeconds: 30
|
||||||
|
contactUses: 0
|
||||||
|
combat:
|
||||||
|
ammunition: 0
|
||||||
|
ammoPerShot: 0
|
||||||
|
energyPerSecond: 0
|
||||||
|
damagePerHit: 0
|
||||||
|
attacksPerSecond: 0
|
||||||
|
range: 0
|
||||||
|
continuousDamagePerSecond: 0
|
||||||
|
ammoPerSecond: 0
|
||||||
|
continuousAttack: 0
|
||||||
|
unlimitedRange: 0
|
||||||
|
attackShape: 4
|
||||||
|
targets: 0
|
||||||
|
rotation: 2
|
||||||
|
coneAngle: 45
|
||||||
|
areaRadius: 0
|
||||||
|
effect: 11
|
||||||
|
effectStrength: 0
|
||||||
|
effectDuration: 0
|
||||||
|
attackCooldown: 0
|
||||||
|
knockbackDistance: 0
|
||||||
|
energyGeneratedPerSecond: 0
|
||||||
|
energyCapacityBonus: 0
|
||||||
|
repairHealthPerSecond: 0
|
||||||
|
corpsesCollectedPerSecond: 0
|
||||||
|
slowFraction: 0
|
||||||
|
reflectionDamageMultiplier: 1
|
||||||
|
ricochetCount: 0
|
||||||
|
supply:
|
||||||
|
kind: -1
|
||||||
|
magazineCapacity: 60
|
||||||
|
initialAmmo: 60
|
||||||
|
refillPerSecond: 10
|
||||||
|
consumption: 0
|
||||||
|
unitsPerShot: 1
|
||||||
|
unitsPerFiringSecond: 0
|
||||||
|
targetableByEnemies: 1
|
||||||
|
destroyableByDamage: 1
|
||||||
|
maxHealth: 150
|
||||||
|
removeOnFloorLoss: 1
|
||||||
|
upgradeable: 0
|
||||||
|
upgrades: []
|
||||||
|
provisional: 1
|
||||||
|
dataVersion: 3
|
||||||
|
sourceCostRating: 3
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige Gameplaywerte. Screenshot: Kosten als Verh\xE4ltnis;
|
||||||
|
energyCost = Verh\xE4ltnis \xD7 10. High/Mid/Low wurden f\xFCr den Prototyp in
|
||||||
|
Zahlen \xFCbersetzt. Echte Prefabs fehlen. IDs beibehalten. Tabelle liefert keine
|
||||||
|
Upgrade-Stufen, Basisgr\xF6\xDFen, Mengenlimits oder Schadenszahlen. Annahme:
|
||||||
|
30 Sekunden Lebensdauer und 150 HP; realer Pathfinder muss freie Wege pr\xFCfen.\nVersorgung
|
||||||
|
v3: vorl\xE4ufiges Magazin f\xFCr ca. 12 Sekunden Dauerfeuer (mindestens 30 Einheiten).
|
||||||
|
Alle physischen Waffen teilen Physical, Energiewaffen EnergyCells. supply ist
|
||||||
|
die Quelle f\xFCr Magazinkosten; combat.ammoPerShot/ammoPerSecond/energyPerSecond
|
||||||
|
sind Altwerte und d\xFCrfen nicht zus\xE4tzlich aus demselben Magazin abgezogen
|
||||||
|
werden."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 222edc44569ca5e418baf77baa55a2e1
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3b2f2cb54db2a6f4eb7bef2f83d9345b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
%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: d97d07f7d8008a1438cb14fe4a1b425a, type: 3}
|
||||||
|
m_Name: enemy_0
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookEnemyEntry
|
||||||
|
id: enemy_0
|
||||||
|
displayName: Normalo
|
||||||
|
icon: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
description: "Standardgegner ohne Sonderf\xE4higkeit."
|
||||||
|
maxHealth: 80
|
||||||
|
damage: 8
|
||||||
|
speed: 1
|
||||||
|
attacksPerSecond: 1
|
||||||
|
spawnWeight: 5
|
||||||
|
dropRange: {x: 4, y: 6}
|
||||||
|
spawnGroup: {x: 1, y: 1}
|
||||||
|
trait: 0
|
||||||
|
invulnerableSeconds: 0
|
||||||
|
vulnerableSeconds: 0
|
||||||
|
corpseHeal: 0
|
||||||
|
corpseBuffMultiplier: 1
|
||||||
|
energyChargeThreshold: 0
|
||||||
|
explosionRadius: 0
|
||||||
|
provisional: 1
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige numerische Werte aus qualitativen Tabellenbewertungen.
|
||||||
|
Dropbereiche und Gruppen/Unverwundbarkeitszeiten stammen aus Screenshot. Explosion
|
||||||
|
muss Team kl\xE4ren."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5af7638752ffaa449b9e1dcaf4673ae1
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
%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: d97d07f7d8008a1438cb14fe4a1b425a, type: 3}
|
||||||
|
m_Name: enemy_1
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookEnemyEntry
|
||||||
|
id: enemy_1
|
||||||
|
displayName: Zwerg
|
||||||
|
icon: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
description: "Erscheint in Gruppen von 3\u201310."
|
||||||
|
maxHealth: 25
|
||||||
|
damage: 3
|
||||||
|
speed: 1
|
||||||
|
attacksPerSecond: 1
|
||||||
|
spawnWeight: 3
|
||||||
|
dropRange: {x: 1, y: 2}
|
||||||
|
spawnGroup: {x: 3, y: 10}
|
||||||
|
trait: 1
|
||||||
|
invulnerableSeconds: 0
|
||||||
|
vulnerableSeconds: 0
|
||||||
|
corpseHeal: 0
|
||||||
|
corpseBuffMultiplier: 1
|
||||||
|
energyChargeThreshold: 0
|
||||||
|
explosionRadius: 0
|
||||||
|
provisional: 1
|
||||||
|
sourceBalanceScore: -4
|
||||||
|
designNotes: "Vorl\xE4ufige numerische Werte aus qualitativen Tabellenbewertungen.
|
||||||
|
Dropbereiche und Gruppen/Unverwundbarkeitszeiten stammen aus Screenshot. Explosion
|
||||||
|
muss Team kl\xE4ren."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f34c7abc0d87422498952d5c5f817f8f
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
%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: d97d07f7d8008a1438cb14fe4a1b425a, type: 3}
|
||||||
|
m_Name: enemy_2
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookEnemyEntry
|
||||||
|
id: enemy_2
|
||||||
|
displayName: Whack-a-moles
|
||||||
|
icon: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
description: Wechselt zwischen drei Sekunden unverwundbar und drei Sekunden verwundbar.
|
||||||
|
maxHealth: 80
|
||||||
|
damage: 15
|
||||||
|
speed: 1.6
|
||||||
|
attacksPerSecond: 1
|
||||||
|
spawnWeight: 1
|
||||||
|
dropRange: {x: 10, y: 12}
|
||||||
|
spawnGroup: {x: 1, y: 1}
|
||||||
|
trait: 2
|
||||||
|
invulnerableSeconds: 3
|
||||||
|
vulnerableSeconds: 3
|
||||||
|
corpseHeal: 0
|
||||||
|
corpseBuffMultiplier: 1
|
||||||
|
energyChargeThreshold: 0
|
||||||
|
explosionRadius: 0
|
||||||
|
provisional: 1
|
||||||
|
sourceBalanceScore: -1
|
||||||
|
designNotes: "Vorl\xE4ufige numerische Werte aus qualitativen Tabellenbewertungen.
|
||||||
|
Dropbereiche und Gruppen/Unverwundbarkeitszeiten stammen aus Screenshot. Explosion
|
||||||
|
muss Team kl\xE4ren."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c70997587fca71f4483c74c7ad934bb5
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
%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: d97d07f7d8008a1438cb14fe4a1b425a, type: 3}
|
||||||
|
m_Name: enemy_3
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookEnemyEntry
|
||||||
|
id: enemy_3
|
||||||
|
displayName: Cannibale
|
||||||
|
icon: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
description: "Frisst Leichen und regeneriert sich; wird dadurch st\xE4rker."
|
||||||
|
maxHealth: 150
|
||||||
|
damage: 15
|
||||||
|
speed: 0.65
|
||||||
|
attacksPerSecond: 1
|
||||||
|
spawnWeight: 0.5
|
||||||
|
dropRange: {x: 30, y: 40}
|
||||||
|
spawnGroup: {x: 1, y: 1}
|
||||||
|
trait: 3
|
||||||
|
invulnerableSeconds: 0
|
||||||
|
vulnerableSeconds: 0
|
||||||
|
corpseHeal: 20
|
||||||
|
corpseBuffMultiplier: 1.15
|
||||||
|
energyChargeThreshold: 0
|
||||||
|
explosionRadius: 0
|
||||||
|
provisional: 1
|
||||||
|
sourceBalanceScore: -2
|
||||||
|
designNotes: "Vorl\xE4ufige numerische Werte aus qualitativen Tabellenbewertungen.
|
||||||
|
Dropbereiche und Gruppen/Unverwundbarkeitszeiten stammen aus Screenshot. Explosion
|
||||||
|
muss Team kl\xE4ren."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cd169b2fbf083e249ab8e1402b2473a8
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
%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: d97d07f7d8008a1438cb14fe4a1b425a, type: 3}
|
||||||
|
m_Name: enemy_4
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookEnemyEntry
|
||||||
|
id: enemy_4
|
||||||
|
displayName: Hangry
|
||||||
|
icon: {fileID: 0}
|
||||||
|
gameplayPrefab: {fileID: 0}
|
||||||
|
description: Wird durch Energie aufgeladen und platzt beim Erreichen der Schwelle.
|
||||||
|
maxHealth: 300
|
||||||
|
damage: 15
|
||||||
|
speed: 0.4
|
||||||
|
attacksPerSecond: 1
|
||||||
|
spawnWeight: 1
|
||||||
|
dropRange: {x: 15, y: 17}
|
||||||
|
spawnGroup: {x: 1, y: 1}
|
||||||
|
trait: 4
|
||||||
|
invulnerableSeconds: 0
|
||||||
|
vulnerableSeconds: 0
|
||||||
|
corpseHeal: 0
|
||||||
|
corpseBuffMultiplier: 1
|
||||||
|
energyChargeThreshold: 100
|
||||||
|
explosionRadius: 1
|
||||||
|
provisional: 1
|
||||||
|
sourceBalanceScore: 0
|
||||||
|
designNotes: "Vorl\xE4ufige numerische Werte aus qualitativen Tabellenbewertungen.
|
||||||
|
Dropbereiche und Gruppen/Unverwundbarkeitszeiten stammen aus Screenshot. Explosion
|
||||||
|
muss Team kl\xE4ren."
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 46de2efa49357eb4f9e679f520ff8c06
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: ammo_0_Gewehr
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: ammo_0
|
|
||||||
displayName: Gewehr
|
|
||||||
category: 0
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 100
|
|
||||||
summary: "Schaden: 20 \xB7 Sch\xFCsse/s: 2"
|
|
||||||
description: "Gewehr \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: ammo_1_Minigun
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: ammo_1
|
|
||||||
displayName: Minigun
|
|
||||||
category: 0
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 125
|
|
||||||
summary: "Schaden: 20 \xB7 Sch\xFCsse/s: 2"
|
|
||||||
description: "Minigun \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: ammo_2_Sniper
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: ammo_2
|
|
||||||
displayName: Sniper
|
|
||||||
category: 0
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 150
|
|
||||||
summary: "Schaden: 20 \xB7 Sch\xFCsse/s: 2"
|
|
||||||
description: "Sniper \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: ammo_3_Granatenwerfer
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: ammo_3
|
|
||||||
displayName: Granatenwerfer
|
|
||||||
category: 0
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 175
|
|
||||||
summary: "Schaden: 20 \xB7 Sch\xFCsse/s: 2"
|
|
||||||
description: "Granatenwerfer \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze
|
|
||||||
Erkl\xE4rung der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken:
|
|
||||||
zur\xFCck zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: ammo_4_Howitzer
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: ammo_4
|
|
||||||
displayName: Howitzer
|
|
||||||
category: 0
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 200
|
|
||||||
summary: "Schaden: 20 \xB7 Sch\xFCsse/s: 2"
|
|
||||||
description: "Howitzer \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: ammo_5_Flammenwerfer
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: ammo_5
|
|
||||||
displayName: Flammenwerfer
|
|
||||||
category: 0
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 225
|
|
||||||
summary: "Schaden: 20 \xB7 Sch\xFCsse/s: 2"
|
|
||||||
description: "Flammenwerfer \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze
|
|
||||||
Erkl\xE4rung der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken:
|
|
||||||
zur\xFCck zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: energy_0_Laser-Piercer
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: energy_0
|
|
||||||
displayName: Laser-Piercer
|
|
||||||
category: 1
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 100
|
|
||||||
summary: 'Energieverbrauch: 5/s'
|
|
||||||
description: "Laser-Piercer \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze
|
|
||||||
Erkl\xE4rung der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken:
|
|
||||||
zur\xFCck zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: energy_1_Bouncer
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: energy_1
|
|
||||||
displayName: Bouncer
|
|
||||||
category: 1
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 125
|
|
||||||
summary: 'Energieverbrauch: 5/s'
|
|
||||||
description: "Bouncer \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: energy_2_Pusher
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: energy_2
|
|
||||||
displayName: Pusher
|
|
||||||
category: 1
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 150
|
|
||||||
summary: 'Energieverbrauch: 5/s'
|
|
||||||
description: "Pusher \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: energy_3_Knocker
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: energy_3
|
|
||||||
displayName: Knocker
|
|
||||||
category: 1
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 175
|
|
||||||
summary: 'Energieverbrauch: 5/s'
|
|
||||||
description: "Knocker \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: energy_4_Laser-Beam
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: energy_4
|
|
||||||
displayName: Laser-Beam
|
|
||||||
category: 1
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 200
|
|
||||||
summary: 'Energieverbrauch: 5/s'
|
|
||||||
description: "Laser-Beam \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze
|
|
||||||
Erkl\xE4rung der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken:
|
|
||||||
zur\xFCck zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: special_0_Falle
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: special_0
|
|
||||||
displayName: Falle
|
|
||||||
category: 2
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 100
|
|
||||||
summary: "Falle \xB7 Testwirkung"
|
|
||||||
description: "Falle \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: special_1_Generator
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: special_1
|
|
||||||
displayName: Generator
|
|
||||||
category: 2
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 125
|
|
||||||
summary: "Energieerzeugung \xB7 Testwert: 5/s"
|
|
||||||
description: "Generator \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: special_2_Staubsauger
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: special_2
|
|
||||||
displayName: Staubsauger
|
|
||||||
category: 2
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 150
|
|
||||||
summary: "Sammelfunktion \xB7 Testeintrag"
|
|
||||||
description: "Staubsauger \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze
|
|
||||||
Erkl\xE4rung der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken:
|
|
||||||
zur\xFCck zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
%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: 84e7b6df881a39543ae3e00951e9b29b, type: 3}
|
|
||||||
m_Name: special_3_Spiegel
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::DepthsOfGreed.HandbookUI.HandbookTowerEntry
|
|
||||||
id: special_3
|
|
||||||
displayName: Spiegel
|
|
||||||
category: 2
|
|
||||||
icon: {fileID: 0}
|
|
||||||
energyCost: 175
|
|
||||||
summary: "Umlenkung \xB7 Testeintrag"
|
|
||||||
description: "Spiegel \u2013 Testeintrag\n\nHier steht sp\xE4ter eine kurze Erkl\xE4rung
|
|
||||||
der Funktion. Kosten und Werte sind vorl\xE4ufige Testdaten.\n\nKlicken: zur\xFCck
|
|
||||||
zur Baukarte"
|
|
||||||
baseRadius: 0.36
|
|
||||||
placementRadius: 0.6
|
|
||||||
@@ -24,7 +24,17 @@ MonoBehaviour:
|
|||||||
- {fileID: 11400000, guid: 3a0f3dd8fa1e07d429d1c051f42e0ce0, type: 2}
|
- {fileID: 11400000, guid: 3a0f3dd8fa1e07d429d1c051f42e0ce0, type: 2}
|
||||||
- {fileID: 11400000, guid: 80f5ef3666340d04dae2ae0ceec5de26, type: 2}
|
- {fileID: 11400000, guid: 80f5ef3666340d04dae2ae0ceec5de26, type: 2}
|
||||||
- {fileID: 11400000, guid: 5a62ac2b7c837de4a9f763d41fdd38e9, type: 2}
|
- {fileID: 11400000, guid: 5a62ac2b7c837de4a9f763d41fdd38e9, type: 2}
|
||||||
- {fileID: 11400000, guid: 01e335e099448ed4ca02c2539a4f99fa, type: 2}
|
- {fileID: 11400000, guid: 90818978b1589c84eb9e5939588c396f, type: 2}
|
||||||
- {fileID: 11400000, guid: ce8a2204c4237ad4fa94909ed3419ce6, type: 2}
|
- {fileID: 11400000, guid: ce8a2204c4237ad4fa94909ed3419ce6, type: 2}
|
||||||
- {fileID: 11400000, guid: dd6c4a8cfd2d58143b128a4dacd160aa, type: 2}
|
- {fileID: 11400000, guid: dd6c4a8cfd2d58143b128a4dacd160aa, type: 2}
|
||||||
- {fileID: 11400000, guid: 723dece8d841c834e8460b406dd43178, type: 2}
|
- {fileID: 11400000, guid: 723dece8d841c834e8460b406dd43178, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 5bce420e3add86a428fc173ab05ca513, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 6895b095a772c33448f315c36d30673f, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 01e335e099448ed4ca02c2539a4f99fa, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 222edc44569ca5e418baf77baa55a2e1, type: 2}
|
||||||
|
enemies:
|
||||||
|
- {fileID: 11400000, guid: 5af7638752ffaa449b9e1dcaf4673ae1, type: 2}
|
||||||
|
- {fileID: 11400000, guid: f34c7abc0d87422498952d5c5f817f8f, type: 2}
|
||||||
|
- {fileID: 11400000, guid: c70997587fca71f4483c74c7ad934bb5, type: 2}
|
||||||
|
- {fileID: 11400000, guid: cd169b2fbf083e249ab8e1402b2473a8, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 46de2efa49357eb4f9e679f520ff8c06, type: 2}
|
||||||
|
|||||||
+47268
-3838
File diff suppressed because it is too large
Load Diff
@@ -1,103 +1,48 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
namespace DepthsOfGreed.HandbookUI
|
namespace DepthsOfGreed.HandbookUI
|
||||||
{
|
{
|
||||||
public sealed class BuildMenuController : MonoBehaviour
|
public sealed class BuildMenuController : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
[SerializeField] private Button[] categoryButtons;
|
||||||
|
[SerializeField] private TowerCardView[] cardSlots;
|
||||||
public TestPlacementController Placement { get; set; }
|
public TestPlacementController Placement { get; set; }
|
||||||
private readonly List<TowerCardView> cards = new List<TowerCardView>();
|
private readonly List<HandbookTowerEntry>[] groups = { new List<HandbookTowerEntry>(), new List<HandbookTowerEntry>(), new List<HandbookTowerEntry>(), new List<HandbookTowerEntry>() };
|
||||||
private Button[] categories;
|
private int selected = -1;
|
||||||
private int selectedCategory = -1;
|
|
||||||
private TowerCardView revealed;
|
private TowerCardView revealed;
|
||||||
private HandbookTowerEntry[][] entries;
|
public int SelectedCategory => selected;
|
||||||
|
|
||||||
public void Initialize(HandbookTowerCatalog catalog)
|
public void Initialize(HandbookTowerCatalog catalog)
|
||||||
{
|
{
|
||||||
categories = new[] {
|
foreach (var card in cardSlots) card.Initialize(this);
|
||||||
transform.Find("LeftPage/CategoryBar/Category_Ammo").GetComponent<Button>(),
|
foreach (var group in groups) group.Clear();
|
||||||
transform.Find("LeftPage/CategoryBar/Category_Energy").GetComponent<Button>(),
|
if (catalog.towers != null) foreach (var entry in catalog.towers) if (entry) groups[(int)entry.menuGroup].Add(entry);
|
||||||
transform.Find("LeftPage/CategoryBar/Category_Special").GetComponent<Button>()
|
for (int i = 0; i < categoryButtons.Length; i++) { int n = i; categoryButtons[i].onClick.AddListener(() => SelectCategory(n)); }
|
||||||
};
|
|
||||||
var left = transform.Find("LeftPage/Cards_Left");
|
|
||||||
var right = transform.Find("RightPage/Cards_Right");
|
|
||||||
int count = Mathf.Max(left.childCount, right.childCount);
|
|
||||||
for (int i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
if (i < left.childCount) AddCard(left.GetChild(i));
|
|
||||||
if (i < right.childCount) AddCard(right.GetChild(i));
|
|
||||||
}
|
|
||||||
var groups = new[] { new List<HandbookTowerEntry>(), new List<HandbookTowerEntry>(), new List<HandbookTowerEntry>() };
|
|
||||||
if (catalog && catalog.towers != null)
|
|
||||||
foreach (var entry in catalog.towers)
|
|
||||||
if (entry) groups[(int)entry.category].Add(entry);
|
|
||||||
entries = new[] { groups[0].ToArray(), groups[1].ToArray(), groups[2].ToArray() };
|
|
||||||
foreach (var group in groups)
|
|
||||||
if (group.Count > cards.Count)
|
|
||||||
Debug.LogWarning("Handbuch: Mehr Turmtypen als Kartenplätze in einer Kategorie.", this);
|
|
||||||
for (int i = 0; i < categories.Length; i++)
|
|
||||||
{
|
|
||||||
int index = i;
|
|
||||||
categories[i].onClick.AddListener(() => SelectCategory(index));
|
|
||||||
}
|
|
||||||
SelectCategory(0);
|
SelectCategory(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddCard(Transform card)
|
|
||||||
{
|
|
||||||
var view = card.gameObject.AddComponent<TowerCardView>();
|
|
||||||
view.Initialize(this);
|
|
||||||
cards.Add(view);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SelectCategory(int index)
|
public void SelectCategory(int index)
|
||||||
{
|
{
|
||||||
if (index == selectedCategory) return;
|
if (index < 0 || index >= groups.Length || index == selected) return;
|
||||||
selectedCategory = index;
|
selected = index; ResetCards(); Bind();
|
||||||
revealed = null;
|
for (int i = 0; i < categoryButtons.Length; i++)
|
||||||
for (int i = 0; i < cards.Count; i++)
|
|
||||||
{
|
{
|
||||||
cards[i].SetBack(false, true);
|
categoryButtons[i].image.color = Color.white; var colors = categoryButtons[i].colors;
|
||||||
bool visible = i < entries[index].Length;
|
colors.normalColor = i == index ? new Color(1, 0.76f, 0.35f) : new Color(0.87f, 0.84f, 0.75f);
|
||||||
cards[i].gameObject.SetActive(visible);
|
colors.highlightedColor = i == index ? new Color(1, 0.86f, 0.55f) : new Color(0.97f, 0.94f, 0.85f);
|
||||||
if (visible) cards[i].Bind(entries[index][i]);
|
colors.selectedColor = colors.normalColor; categoryButtons[i].colors = colors;
|
||||||
}
|
|
||||||
for (int i = 0; i < categories.Length; i++)
|
|
||||||
{
|
|
||||||
var colors = categories[i].colors;
|
|
||||||
colors.normalColor = i == index ? new Color(1f, 0.72f, 0.2f) : new Color(0.82f, 0.82f, 0.82f);
|
|
||||||
colors.highlightedColor = i == index ? new Color(1f, 0.82f, 0.4f) : Color.white;
|
|
||||||
colors.selectedColor = colors.normalColor;
|
|
||||||
colors.pressedColor = new Color(0.7f, 0.7f, 0.7f);
|
|
||||||
categories[i].colors = colors;
|
|
||||||
categories[i].image.color = Color.white;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void Bind()
|
||||||
|
{
|
||||||
|
if (groups[selected].Count > cardSlots.Length) Debug.LogError("Handbuch: Mehr Einträge als vorbereitete Baukarten; weitere Slots im Inspector ergänzen.", this);
|
||||||
|
for (int i = 0; i < cardSlots.Length; i++) { bool visible = i < groups[selected].Count; cardSlots[i].gameObject.SetActive(visible); if (visible) cardSlots[i].Bind(groups[selected][i]); }
|
||||||
|
}
|
||||||
public void ToggleCard(TowerCardView card)
|
public void ToggleCard(TowerCardView card)
|
||||||
{
|
{
|
||||||
if (revealed == card)
|
if (revealed == card) { card.SetBack(false); revealed = null; return; }
|
||||||
{
|
if (revealed) revealed.SetBack(false); revealed = card; card.SetBack(true);
|
||||||
card.SetBack(false);
|
|
||||||
revealed = null;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (revealed) revealed.SetBack(false);
|
|
||||||
revealed = card;
|
|
||||||
card.SetBack(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ResetCards()
|
|
||||||
{
|
|
||||||
revealed = null;
|
|
||||||
foreach (var card in cards) card.SetBack(false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ResetForClose()
|
|
||||||
{
|
|
||||||
ResetCards();
|
|
||||||
SelectCategory(0);
|
|
||||||
}
|
}
|
||||||
|
public void ResetCards() { revealed = null; foreach (var card in cardSlots) card.SetBack(false, true); }
|
||||||
|
public void ResetForClose() { ResetCards(); selected = -1; SelectCategory(0); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using DepthsOfGreed.HandbookUI;
|
||||||
|
[InitializeOnLoad]
|
||||||
|
public static class HandbookInspectorValidation
|
||||||
|
{
|
||||||
|
static HandbookInspectorValidation(){if(SessionState.GetBool("InspectorValidation",false))EditorApplication.playModeStateChanged+=Ready;}
|
||||||
|
public static void Validate()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var scene=EditorSceneManager.OpenScene("Assets/Scenes/Tim_Test_UI.unity");
|
||||||
|
var main=UnityEngine.Object.FindFirstObjectByType<HandbookController>(FindObjectsInactive.Include);var root=main.transform;
|
||||||
|
if(!root.Find("GeneralFeedback")||!root.Find("OpenBook/ActiveTabLayer"))throw new Exception("Missing permanent UI.");
|
||||||
|
if(root.GetComponentsInChildren<ScrollRect>(true).Length>0)throw new Exception("Scroll views remain in handbook.");
|
||||||
|
var index=UnityEngine.Object.FindFirstObjectByType<HandbookIndexController>(FindObjectsInactive.Include);var iso=new SerializedObject(index);
|
||||||
|
if(iso.FindProperty("entryButtons").arraySize!=24||iso.FindProperty("filterButtons").arraySize!=5)throw new Exception("Index inspector references invalid");
|
||||||
|
var build=UnityEngine.Object.FindFirstObjectByType<BuildMenuController>(FindObjectsInactive.Include);if(new SerializedObject(build).FindProperty("categoryButtons").arraySize!=4)throw new Exception("Four build categories missing");
|
||||||
|
foreach(var sceneRoot in scene.GetRootGameObjects())foreach(var tr in sceneRoot.GetComponentsInChildren<Transform>(true))if(GameObjectUtility.GetMonoBehavioursWithMissingScriptCount(tr.gameObject)>0)throw new Exception("Missing script: "+tr.name);
|
||||||
|
var authorCount=root.GetComponentsInChildren<RectTransform>(true).Count(r=>!r.name.StartsWith("TMP"));SessionState.SetInt("InspectorRectCount",authorCount);
|
||||||
|
SessionState.SetBool("InspectorValidation",true);EditorApplication.playModeStateChanged+=Ready;EditorApplication.EnterPlaymode();
|
||||||
|
}catch(Exception e){Debug.LogException(e);EditorApplication.Exit(1);}
|
||||||
|
}
|
||||||
|
private static void Ready(PlayModeStateChange state)
|
||||||
|
{
|
||||||
|
if(state!=PlayModeStateChange.EnteredPlayMode)return;SessionState.SetBool("InspectorValidation",false);EditorApplication.playModeStateChanged-=Ready;EditorApplication.delayCall+=Run;
|
||||||
|
}
|
||||||
|
private static void Run()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var c=UnityEngine.Object.FindFirstObjectByType<HandbookController>();c.Open(0);var root=c.transform;
|
||||||
|
if(root.GetComponentsInChildren<RectTransform>(true).Count(r=>!r.name.StartsWith("TMP"))!=SessionState.GetInt("InspectorRectCount",0))throw new Exception("UI generated at runtime");
|
||||||
|
var menu=UnityEngine.Object.FindFirstObjectByType<BuildMenuController>();int[] expected={6,6,3,4};for(int i=0;i<4;i++){menu.SelectCategory(i);if(menu.GetComponentsInChildren<TowerCardView>().Length!=expected[i])throw new Exception("Category count incorrect: "+i);}
|
||||||
|
var p=root.GetComponent<TestPlacementController>();var catalog=AssetDatabase.LoadAssetAtPath<HandbookTowerCatalog>("Assets/HandbookData/TestTurmkatalog.asset");var gun=catalog.towers.First(t=>t.id=="ammo_0");var energy=catalog.towers.First(t=>t.id=="energy_0");
|
||||||
|
if(!p.Backend.ExecuteBuild(new BuildRequest(gun,new Vector3(3.5f,0,0))).Allowed||!p.Backend.ExecuteBuild(new BuildRequest(energy,new Vector3(0,3.5f,0))).Allowed)throw new Exception("Base placement failed");
|
||||||
|
var obj=p.Backend.BuiltObjects[0].instance;var renderer=obj.GetComponent<SpriteRenderer>();if(!renderer || !renderer.sprite || (gun.baseSprite && renderer.sprite!=gun.baseSprite) || renderer.bounds.size.x>0.8f)throw new Exception("Base sprite or placeholder scaling incorrect");
|
||||||
|
int before=p.Backend.Energy;if(!p.Backend.ExecuteUpgrade(p.Backend.BuiltObjects[0].instanceId).Allowed||p.Backend.Energy>=before)throw new Exception("Upgrade failed");
|
||||||
|
c.Open(2);var upgrades=UnityEngine.Object.FindFirstObjectByType<HandbookUpgradesController>();if(upgrades.VisibleUpgradeCount!=2)throw new Exception("Upgrade listing failed");
|
||||||
|
c.Open(3);var index=UnityEngine.Object.FindFirstObjectByType<HandbookIndexController>();if(index.VisibleEntryCount!=24)throw new Exception("All entries not displayed");int[] counts={24,12,3,4,5};for(int i=0;i<5;i++){index.SelectFilter(i);if(index.VisibleEntryCount!=counts[i])throw new Exception("Index filter count incorrect");}
|
||||||
|
index.SelectEntry(0);if(!index.SelectedEnemy)throw new Exception("Enemy detail missing");c.Open(0);c.Open(3);if(index.SelectedEnemy||index.SelectedEntry)throw new Exception("Index selection not reset");
|
||||||
|
c.Close();Debug.Log("INSPECTOR_RUNTIME_VALIDATION_OK: no runtime UI generation, sprites, 4 build categories, 5 index filters, bases, placement and upgrades passed.");EditorApplication.Exit(0);
|
||||||
|
}catch(Exception e){Debug.LogException(e);EditorApplication.Exit(1);}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d29615975ab3eb04e88d9ffe0715404f
|
||||||
@@ -1,242 +0,0 @@
|
|||||||
using System;
|
|
||||||
using UnityEditor;
|
|
||||||
using UnityEditor.SceneManagement;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
[InitializeOnLoad]
|
|
||||||
public static class HandbookSceneValidation
|
|
||||||
{
|
|
||||||
public static void ConfigureFeedbackAndValidate()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var scene = EditorSceneManager.OpenScene("Assets/Scenes/Tim_Test_UI.unity");
|
|
||||||
var controller = UnityEngine.Object.FindFirstObjectByType<DepthsOfGreed.HandbookUI.HandbookController>(FindObjectsInactive.Include);
|
|
||||||
var serialized = new SerializedObject(controller);
|
|
||||||
serialized.FindProperty("successfulPlacementDelay").floatValue = 0.5f;
|
|
||||||
serialized.ApplyModifiedPropertiesWithoutUndo();
|
|
||||||
EditorSceneManager.SaveScene(scene);
|
|
||||||
Validate();
|
|
||||||
}
|
|
||||||
catch (Exception e) { Debug.LogException(e); EditorApplication.Exit(1); }
|
|
||||||
}
|
|
||||||
public static void SetupAndValidate()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const string dataFolder = "Assets/HandbookData";
|
|
||||||
const string towerFolder = dataFolder + "/TestTowers";
|
|
||||||
if (!AssetDatabase.IsValidFolder(dataFolder)) AssetDatabase.CreateFolder("Assets", "HandbookData");
|
|
||||||
if (!AssetDatabase.IsValidFolder(towerFolder)) AssetDatabase.CreateFolder(dataFolder, "TestTowers");
|
|
||||||
var names = new[] {
|
|
||||||
new[] { "Gewehr", "Minigun", "Sniper", "Granatenwerfer", "Howitzer", "Flammenwerfer" },
|
|
||||||
new[] { "Laser-Piercer", "Bouncer", "Pusher", "Knocker", "Laser-Beam" },
|
|
||||||
new[] { "Falle", "Generator", "Staubsauger", "Spiegel" }
|
|
||||||
};
|
|
||||||
var prefixes = new[] { "ammo", "energy", "special" };
|
|
||||||
var entries = new System.Collections.Generic.List<DepthsOfGreed.HandbookUI.HandbookTowerEntry>();
|
|
||||||
for (int category = 0; category < names.Length; category++)
|
|
||||||
for (int i = 0; i < names[category].Length; i++)
|
|
||||||
{
|
|
||||||
string path = towerFolder + "/" + prefixes[category] + "_" + i + "_" + names[category][i] + ".asset";
|
|
||||||
var entry = AssetDatabase.LoadAssetAtPath<DepthsOfGreed.HandbookUI.HandbookTowerEntry>(path);
|
|
||||||
if (!entry)
|
|
||||||
{
|
|
||||||
entry = ScriptableObject.CreateInstance<DepthsOfGreed.HandbookUI.HandbookTowerEntry>();
|
|
||||||
entry.id = prefixes[category] + "_" + i;
|
|
||||||
entry.displayName = names[category][i];
|
|
||||||
entry.category = (DepthsOfGreed.HandbookUI.HandbookTowerCategory)category;
|
|
||||||
entry.energyCost = 100 + i * 25;
|
|
||||||
entry.summary = category == 0 ? "Schaden: 20 · Schüsse/s: 2" : category == 1 ? "Energieverbrauch: 5/s" :
|
|
||||||
new[] { "Falle · Testwirkung", "Energieerzeugung · Testwert: 5/s", "Sammelfunktion · Testeintrag", "Umlenkung · Testeintrag" }[i];
|
|
||||||
entry.description = entry.displayName + " – Testeintrag\n\nHier steht später eine kurze Erklärung der Funktion. Kosten und Werte sind vorläufige Testdaten.\n\nKlicken: zurück zur Baukarte";
|
|
||||||
AssetDatabase.CreateAsset(entry, path);
|
|
||||||
}
|
|
||||||
entries.Add(entry);
|
|
||||||
}
|
|
||||||
const string catalogPath = dataFolder + "/TestTurmkatalog.asset";
|
|
||||||
var catalog = AssetDatabase.LoadAssetAtPath<DepthsOfGreed.HandbookUI.HandbookTowerCatalog>(catalogPath);
|
|
||||||
if (!catalog)
|
|
||||||
{
|
|
||||||
catalog = ScriptableObject.CreateInstance<DepthsOfGreed.HandbookUI.HandbookTowerCatalog>();
|
|
||||||
catalog.towers = entries.ToArray();
|
|
||||||
AssetDatabase.CreateAsset(catalog, catalogPath);
|
|
||||||
}
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
var scene = EditorSceneManager.OpenScene("Assets/Scenes/Tim_Test_UI.unity");
|
|
||||||
catalog = AssetDatabase.LoadAssetAtPath<DepthsOfGreed.HandbookUI.HandbookTowerCatalog>(catalogPath);
|
|
||||||
if (!catalog) throw new Exception("Catalog asset could not be loaded after scene switch.");
|
|
||||||
var controller = UnityEngine.Object.FindFirstObjectByType<DepthsOfGreed.HandbookUI.HandbookController>(FindObjectsInactive.Include);
|
|
||||||
var serialized = new SerializedObject(controller);
|
|
||||||
serialized.FindProperty("towerCatalog").objectReferenceValue = catalog;
|
|
||||||
serialized.FindProperty("successfulPlacementDelay").floatValue = 1f;
|
|
||||||
serialized.ApplyModifiedPropertiesWithoutUndo();
|
|
||||||
EditorSceneManager.SaveScene(scene);
|
|
||||||
Debug.Log("HANDBOOK_DATA_SETUP_OK: 15 editable tower assets and catalog connected; delay set to 1 second.");
|
|
||||||
Validate();
|
|
||||||
}
|
|
||||||
catch (Exception exception) { Debug.LogException(exception); EditorApplication.Exit(1); }
|
|
||||||
}
|
|
||||||
static HandbookSceneValidation()
|
|
||||||
{
|
|
||||||
if (SessionState.GetBool("HandbookValidationPending", false))
|
|
||||||
EditorApplication.playModeStateChanged += CheckPlayMode;
|
|
||||||
}
|
|
||||||
public static void Validate()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var scene = EditorSceneManager.OpenScene("Assets/Scenes/Tim_Test_UI.unity");
|
|
||||||
var controllers = UnityEngine.Object.FindObjectsByType<DepthsOfGreed.HandbookUI.HandbookController>(FindObjectsInactive.Include, FindObjectsSortMode.None);
|
|
||||||
if (controllers.Length != 1) throw new Exception("Expected exactly one handbook controller.");
|
|
||||||
var serialized = new SerializedObject(controllers[0]);
|
|
||||||
foreach (var field in new[] { "closedBook", "openBook", "bookButton", "closeButton", "closedTabsRoot", "openTabsRoot", "towerCatalog", "testTowerPrefab" })
|
|
||||||
if (!serialized.FindProperty(field).objectReferenceValue) throw new Exception("Missing reference: " + field);
|
|
||||||
foreach (var field in new[] { "closedTabs", "openTabs", "pages" })
|
|
||||||
{
|
|
||||||
var array = serialized.FindProperty(field);
|
|
||||||
if (array.arraySize != 4) throw new Exception("Invalid array: " + field);
|
|
||||||
for (int i = 0; i < array.arraySize; i++)
|
|
||||||
if (!array.GetArrayElementAtIndex(i).objectReferenceValue) throw new Exception("Missing array reference: " + field);
|
|
||||||
}
|
|
||||||
foreach (var root in scene.GetRootGameObjects())
|
|
||||||
foreach (var transform in root.GetComponentsInChildren<Transform>(true))
|
|
||||||
if (GameObjectUtility.GetMonoBehavioursWithMissingScriptCount(transform.gameObject) != 0)
|
|
||||||
throw new Exception("Missing script on " + transform.name);
|
|
||||||
Debug.Log("HANDBOOK_SCENE_VALIDATION_OK: Scene loaded; all controller references resolved; no missing scripts.");
|
|
||||||
EditorApplication.playModeStateChanged += CheckPlayMode;
|
|
||||||
SessionState.SetBool("HandbookValidationPending", true);
|
|
||||||
EditorApplication.EnterPlaymode();
|
|
||||||
}
|
|
||||||
catch (Exception exception)
|
|
||||||
{
|
|
||||||
Debug.LogException(exception);
|
|
||||||
EditorApplication.Exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void CheckPlayMode(PlayModeStateChange state)
|
|
||||||
{
|
|
||||||
if (state != PlayModeStateChange.EnteredPlayMode) return;
|
|
||||||
SessionState.SetBool("HandbookValidationPending", false);
|
|
||||||
EditorApplication.playModeStateChanged -= CheckPlayMode;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var controller = UnityEngine.Object.FindFirstObjectByType<DepthsOfGreed.HandbookUI.HandbookController>();
|
|
||||||
controller.Open(0);
|
|
||||||
var menu = UnityEngine.Object.FindFirstObjectByType<DepthsOfGreed.HandbookUI.BuildMenuController>();
|
|
||||||
if (!menu) throw new Exception("Build menu did not initialize.");
|
|
||||||
foreach (var pair in new[] { (0, 6), (1, 5), (2, 4) })
|
|
||||||
{
|
|
||||||
menu.SelectCategory(pair.Item1);
|
|
||||||
var cards = menu.GetComponentsInChildren<DepthsOfGreed.HandbookUI.TowerCardView>();
|
|
||||||
if (cards.Length != pair.Item2) throw new Exception("Wrong category card count.");
|
|
||||||
foreach (var card in cards)
|
|
||||||
if (card.Entry == null || !card.transform.Find("Front").gameObject.activeSelf || card.transform.Find("Back").gameObject.activeSelf)
|
|
||||||
throw new Exception("Invalid initial card state.");
|
|
||||||
}
|
|
||||||
menu.SelectCategory(0);
|
|
||||||
var first = menu.GetComponentsInChildren<DepthsOfGreed.HandbookUI.TowerCardView>()[0];
|
|
||||||
menu.ToggleCard(first);
|
|
||||||
double deadline = EditorApplication.timeSinceStartup + 0.6;
|
|
||||||
EditorApplication.CallbackFunction check = null;
|
|
||||||
check = () => {
|
|
||||||
if (EditorApplication.timeSinceStartup < deadline) return;
|
|
||||||
EditorApplication.update -= check;
|
|
||||||
try {
|
|
||||||
if (!first.transform.Find("Back").gameObject.activeSelf) throw new Exception("Card flip did not complete.");
|
|
||||||
menu.SelectCategory(1);
|
|
||||||
if (first.transform.Find("Back").gameObject.activeSelf) throw new Exception("Category did not reset card.");
|
|
||||||
controller.Close();
|
|
||||||
controller.Open(0);
|
|
||||||
if (menu.GetComponentsInChildren<DepthsOfGreed.HandbookUI.TowerCardView>().Length != 6)
|
|
||||||
throw new Exception("Closing did not restore the default build category.");
|
|
||||||
controller.Close();
|
|
||||||
foreach (var card in menu.GetComponentsInChildren<DepthsOfGreed.HandbookUI.TowerCardView>(true))
|
|
||||||
if (card.transform.Find("Back").gameObject.activeSelf) throw new Exception("Book close did not reset cards.");
|
|
||||||
controller.Open(3);
|
|
||||||
var indexMenu = UnityEngine.Object.FindFirstObjectByType<DepthsOfGreed.HandbookUI.HandbookIndexController>();
|
|
||||||
if (!indexMenu || indexMenu.VisibleEntryCount != 15 || indexMenu.SelectedEntry != null)
|
|
||||||
throw new Exception("Index initialization failed.");
|
|
||||||
indexMenu.SelectEntry(0);
|
|
||||||
if (!indexMenu.SelectedEntry) throw new Exception("Index selection failed.");
|
|
||||||
indexMenu.ListScroll.verticalNormalizedPosition = 0f;
|
|
||||||
controller.Open(0);
|
|
||||||
controller.Open(3);
|
|
||||||
if (indexMenu.SelectedEntry != null || indexMenu.ListScroll.verticalNormalizedPosition < 0.99f)
|
|
||||||
throw new Exception("Index re-entry did not reset selection and scroll.");
|
|
||||||
indexMenu.SelectFilter(2);
|
|
||||||
if (indexMenu.VisibleEntryCount != 0 || indexMenu.SelectedEntry != null)
|
|
||||||
throw new Exception("Enemy filter failed.");
|
|
||||||
indexMenu.SelectFilter(1);
|
|
||||||
if (indexMenu.VisibleEntryCount != 15) throw new Exception("Tower filter failed.");
|
|
||||||
indexMenu.SelectEntry(1);
|
|
||||||
controller.Close();
|
|
||||||
controller.Open(3);
|
|
||||||
if (indexMenu.SelectedEntry != null || indexMenu.ListScroll.verticalNormalizedPosition < 0.99f)
|
|
||||||
throw new Exception("Reopening index did not reset selection and scroll.");
|
|
||||||
controller.Close();
|
|
||||||
var placement = controller.GetComponent<DepthsOfGreed.HandbookUI.TestPlacementController>();
|
|
||||||
var entry = first.Entry;
|
|
||||||
if (!placement.enabled) throw new Exception("Placement initialization failed.");
|
|
||||||
controller.Open(0);
|
|
||||||
var validScreen = (Vector2)Camera.main.WorldToScreenPoint(new Vector3(3.5f, 0, 0));
|
|
||||||
if (!placement.Begin(entry, validScreen) || !placement.IsDragging) throw new Exception("Drag did not begin.");
|
|
||||||
placement.Cancel();
|
|
||||||
if (placement.IsDragging || placement.TowerCount != 0) throw new Exception("Cancel created a tower.");
|
|
||||||
if (placement.TryPlaceAt(entry, Vector3.zero, out _)) throw new Exception("Center must be invalid.");
|
|
||||||
if (placement.TryPlaceAt(entry, new Vector3(3.1f, 0, 0), out _)) throw new Exception("Base crosses inner wall.");
|
|
||||||
if (placement.TryPlaceAt(entry, new Vector3(3.9f, 0, 0), out _)) throw new Exception("Base crosses outer wall.");
|
|
||||||
int initialEnergy = placement.Energy;
|
|
||||||
if (!placement.Begin(entry, validScreen)) throw new Exception("Second drag did not begin.");
|
|
||||||
placement.End(validScreen);
|
|
||||||
if (placement.TowerCount != 1 || placement.IsDragging) throw new Exception("Drag release failed.");
|
|
||||||
if (!placement.IsWaitingForReturn) throw new Exception("Successful placement did not start delay.");
|
|
||||||
for (int i = 1; i < 8; i++) {
|
|
||||||
float angle = i * Mathf.PI / 4f;
|
|
||||||
if (!placement.TryPlaceAt(entry, new Vector3(Mathf.Cos(angle) * 3.5f, Mathf.Sin(angle) * 3.5f, 0), out string reason))
|
|
||||||
throw new Exception("Valid placement failed: " + reason);
|
|
||||||
}
|
|
||||||
if (placement.TowerCount != 8 || placement.Energy != initialEnergy - entry.energyCost * 8)
|
|
||||||
throw new Exception("Wrong tower count or resource deduction.");
|
|
||||||
if (placement.TryPlaceAt(entry, new Vector3(3.5f, 0, 0), out _)) throw new Exception("Overlap allowed.");
|
|
||||||
float freeAngle = Mathf.PI / 8f;
|
|
||||||
if (placement.TryPlaceAt(entry, new Vector3(Mathf.Cos(freeAngle) * 3.5f, Mathf.Sin(freeAngle) * 3.5f, 0), out string limitReason) || limitReason != "Turmlimit erreicht")
|
|
||||||
throw new Exception("Tower limit failed.");
|
|
||||||
double delayDeadline = EditorApplication.timeSinceStartup + 1.5;
|
|
||||||
EditorApplication.CallbackFunction delayCheck = null;
|
|
||||||
delayCheck = () => {
|
|
||||||
if (EditorApplication.timeSinceStartup < delayDeadline) return;
|
|
||||||
EditorApplication.update -= delayCheck;
|
|
||||||
try {
|
|
||||||
if (placement.IsWaitingForReturn) throw new Exception("Book delay never expired.");
|
|
||||||
var group = menu.GetComponentInParent<CanvasGroup>();
|
|
||||||
if (!group.blocksRaycasts) throw new Exception("Book input not restored after delay.");
|
|
||||||
if (placement.Begin(entry, validScreen)) throw new Exception("Limit should prevent drag.");
|
|
||||||
var toast = controller.transform.Find("FeedbackBox") ?? controller.transform.Find("Feedbackbox");
|
|
||||||
var message = controller.transform.Find("FeedbackMessage").GetComponent<TMPro.TMP_Text>();
|
|
||||||
if (!toast || !toast.gameObject.activeSelf || message.text != "Turmlimit erreicht")
|
|
||||||
throw new Exception("Limit notice did not show background and message.");
|
|
||||||
double toastDeadline = EditorApplication.timeSinceStartup + 2.9;
|
|
||||||
EditorApplication.CallbackFunction toastCheck = null;
|
|
||||||
toastCheck = () => {
|
|
||||||
if (EditorApplication.timeSinceStartup < toastDeadline) return;
|
|
||||||
EditorApplication.update -= toastCheck;
|
|
||||||
try {
|
|
||||||
if (toast.gameObject.activeSelf || message.text != "") throw new Exception("Notice did not disappear.");
|
|
||||||
controller.Close();
|
|
||||||
Debug.Log("HANDBOOK_RUNTIME_VALIDATION_OK: Category reset, 0.5-second placement delay, limit notice background and automatic dismissal passed; existing placement checks passed.");
|
|
||||||
EditorApplication.Exit(0);
|
|
||||||
} catch (Exception e) { Debug.LogException(e); EditorApplication.Exit(1); }
|
|
||||||
};
|
|
||||||
EditorApplication.update += toastCheck;
|
|
||||||
} catch (Exception e) { Debug.LogException(e); EditorApplication.Exit(1); }
|
|
||||||
};
|
|
||||||
EditorApplication.update += delayCheck;
|
|
||||||
} catch (Exception e) { Debug.LogException(e); EditorApplication.Exit(1); }
|
|
||||||
};
|
|
||||||
EditorApplication.update += check;
|
|
||||||
}
|
|
||||||
catch (Exception e) { Debug.LogException(e); EditorApplication.Exit(1); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 79121ad9902be844f8f2b736dbf9adb5
|
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Rendering;
|
||||||
|
using UnityEngine.Rendering.Universal;
|
||||||
|
using DepthsOfGreed.HandbookUI;
|
||||||
|
|
||||||
|
[InitializeOnLoad]
|
||||||
|
public static class SupplyBasementValidation
|
||||||
|
{
|
||||||
|
static SupplyBasementValidation(){if(SessionState.GetBool("SupplyValidate",false))EditorApplication.playModeStateChanged+=Ready;}
|
||||||
|
public static void Validate()
|
||||||
|
{
|
||||||
|
EditorSceneManager.OpenScene("Assets/Scenes/Tim_Test_UI.unity");
|
||||||
|
SessionState.SetBool("SupplyValidate",true);EditorApplication.playModeStateChanged+=Ready;EditorApplication.EnterPlaymode();
|
||||||
|
}
|
||||||
|
static void Ready(PlayModeStateChange state)
|
||||||
|
{
|
||||||
|
if(state!=PlayModeStateChange.EnteredPlayMode)return;
|
||||||
|
SessionState.SetBool("SupplyValidate",false);EditorApplication.playModeStateChanged-=Ready;
|
||||||
|
double due=EditorApplication.timeSinceStartup+1;int stage=0;SupplyBasementController c=null;int count=0;long first=0;Vector3 bookScale=Vector3.one;
|
||||||
|
EditorApplication.CallbackFunction run=null;run=()=>
|
||||||
|
{
|
||||||
|
if(EditorApplication.timeSinceStartup<due)return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(stage==0)
|
||||||
|
{
|
||||||
|
c=UnityEngine.Object.FindFirstObjectByType<SupplyBasementController>();
|
||||||
|
Assert(c && c.connectionButtons.Length==8 && c.priorityButtons.Length==3,"Authored references");
|
||||||
|
Assert(!c.basementView.activeSelf && c.handbookRoot.activeSelf,"Starts on tower floor");
|
||||||
|
count=Count(c);bookScale=c.handbook.transform.Find("OpenBook").localScale;
|
||||||
|
var catalog=AssetDatabase.LoadAssetAtPath<HandbookTowerCatalog>("Assets/HandbookData/TestTurmkatalog.asset");
|
||||||
|
var result=c.placement.Backend.ExecuteBuild(new BuildRequest(catalog.towers.First(t=>t.id=="ammo_0"),new Vector3(3.5f,0,0)));
|
||||||
|
Assert(result.Allowed,"Test tower build");first=c.placement.Backend.BuiltObjects.Last().instanceId;
|
||||||
|
c.UseLift();c.UseLift();stage=1;due=EditorApplication.timeSinceStartup+1.7;
|
||||||
|
}
|
||||||
|
else if(stage==1)
|
||||||
|
{
|
||||||
|
Assert(c.IsInBasement && !c.IsTravelling && c.basementView.activeSelf && c.handbookVisibility.alpha==0,"Lift arrival");
|
||||||
|
Assert(c.handbookRoot.activeSelf && c.placement.isActiveAndEnabled,"Backend keeps updating in basement");
|
||||||
|
Assert(c.connectionButtons[0].interactable && c.IsConnectionEnabled(first),"Automatic connection");
|
||||||
|
c.ToggleConnection(0);Assert(!c.IsConnectionEnabled(first),"Disconnect");
|
||||||
|
c.ToggleConnection(0);Assert(c.IsConnectionEnabled(first),"Reconnect");
|
||||||
|
c.SetPriority(1);Assert(c.Priority==1,"Set priority");
|
||||||
|
c.SetPriority(1);Assert(c.Priority==-1,"Return to automatic priority");
|
||||||
|
// Force both travel directions independently of the loading pause.
|
||||||
|
var pause=typeof(SupplyBasementController).GetField("truckPauseUntil",System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic);
|
||||||
|
var truckPosition=c.truck.anchoredPosition;
|
||||||
|
pause.SetValue(c,0f);c.truck.anchoredPosition=new Vector2(10000,truckPosition.y);c.SendMessage("Update");
|
||||||
|
Assert(c.truck.localScale.x<0,"Truck faces left while driving left");
|
||||||
|
pause.SetValue(c,0f);c.truck.anchoredPosition=new Vector2(-10000,truckPosition.y);c.SendMessage("Update");
|
||||||
|
Assert(c.truck.localScale.x>0,"Truck faces right while driving right");
|
||||||
|
c.truck.anchoredPosition=truckPosition;
|
||||||
|
Assert(c.placement.Backend.BuiltObjects.Count==1,"No duplicate towers");
|
||||||
|
if (SystemInfo.graphicsDeviceType != GraphicsDeviceType.Null && Environment.GetCommandLineArgs().Contains("-captureSupplyPreview")) Capture(c);
|
||||||
|
Assert(Count(c)==count,"No generated room UI");
|
||||||
|
c.UseLift();stage=2;due=EditorApplication.timeSinceStartup+1.7;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert(!c.IsInBasement && !c.IsTravelling && c.handbookRoot.activeSelf && c.handbookVisibility.alpha==1,"Return to tower");
|
||||||
|
Assert(c.handbook.transform.Find("OpenBook").localScale==bookScale,"Book scale preserved");
|
||||||
|
Assert(c.placement.Backend.BuiltObjects.Count==1,"Tower retained across trip");
|
||||||
|
Assert(Count(c)==count,"No UI created on second trip");
|
||||||
|
Debug.Log("SUPPLY_BASEMENT_RUNTIME_OK: native hierarchy, auto connection, toggle, priority, two-way lift and preserved book layout.");
|
||||||
|
EditorApplication.update-=run;EditorApplication.Exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e){EditorApplication.update-=run;Debug.LogException(e);EditorApplication.Exit(1);}
|
||||||
|
};EditorApplication.update+=run;
|
||||||
|
}
|
||||||
|
static int Count(SupplyBasementController c)=>c.GetComponentInParent<Canvas>().GetComponentsInChildren<RectTransform>(true).Count(t=>!t.name.StartsWith("TMP"));
|
||||||
|
static void Assert(bool condition,string message){if(!condition)throw new Exception(message);}
|
||||||
|
static void Capture(SupplyBasementController c)
|
||||||
|
{
|
||||||
|
var camera=Camera.main;var canvas=c.GetComponentInParent<Canvas>();
|
||||||
|
var rt=new RenderTexture(1920,1080,24);rt.Create();camera.targetTexture=rt;camera.aspect=1920f/1080;
|
||||||
|
canvas.renderMode=RenderMode.ScreenSpaceCamera;canvas.worldCamera=camera;canvas.planeDistance=1;canvas.sortingOrder=200;
|
||||||
|
Canvas.ForceUpdateCanvases();RenderPipeline.SubmitRenderRequest(camera,new UniversalRenderPipeline.SingleCameraRequest{destination=rt});
|
||||||
|
var previous=RenderTexture.active;RenderTexture.active=rt;var tex=new Texture2D(1920,1080,TextureFormat.RGB24,false);tex.ReadPixels(new Rect(0,0,1920,1080),0,0);tex.Apply();RenderTexture.active=previous;
|
||||||
|
var folder=Path.Combine(Path.GetDirectoryName(Application.dataPath),"Temp","HandbookValidation");
|
||||||
|
Directory.CreateDirectory(folder);File.WriteAllBytes(Path.Combine(folder,"basement-preview.png"),tex.EncodeToPNG());
|
||||||
|
UnityEngine.Object.DestroyImmediate(tex);camera.targetTexture=null;rt.Release();UnityEngine.Object.DestroyImmediate(rt);canvas.renderMode=RenderMode.ScreenSpaceOverlay;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5351dea0200aeb346b62d793f21fde75
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using UnityEngine;
|
||||||
|
using DepthsOfGreed.HandbookUI;
|
||||||
|
|
||||||
|
[InitializeOnLoad]
|
||||||
|
public static class SupplyBindingValidation
|
||||||
|
{
|
||||||
|
static SupplyBindingValidation(){if(SessionState.GetBool("SupplyBindingTest",false))EditorApplication.playModeStateChanged+=Ready;}
|
||||||
|
public static void Validate(){EditorSceneManager.OpenScene("Assets/Scenes/Tim_Test_UI.unity");SessionState.SetBool("SupplyBindingTest",true);EditorApplication.playModeStateChanged+=Ready;EditorApplication.EnterPlaymode();}
|
||||||
|
static void Check(bool value,string message){if(!value)throw new Exception(message);}
|
||||||
|
static void Ready(PlayModeStateChange change)
|
||||||
|
{
|
||||||
|
if(change!=PlayModeStateChange.EnteredPlayMode)return;SessionState.SetBool("SupplyBindingTest",false);EditorApplication.playModeStateChanged-=Ready;
|
||||||
|
double due=EditorApplication.timeSinceStartup+1;int stage=0;SupplyBasementController c=null;SupplyContractTestBackend fake=null;
|
||||||
|
EditorApplication.CallbackFunction run=null;run=()=>
|
||||||
|
{
|
||||||
|
if(EditorApplication.timeSinceStartup<due)return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(stage==0)
|
||||||
|
{
|
||||||
|
c=UnityEngine.Object.FindFirstObjectByType<SupplyBasementController>();fake=new GameObject("TEST_ONLY_SupplyAdapter").AddComponent<SupplyContractTestBackend>();
|
||||||
|
var catalog=AssetDatabase.LoadAssetAtPath<HandbookTowerCatalog>("Assets/HandbookData/TestTurmkatalog.asset");
|
||||||
|
Check(catalog.towers.Count(t=>t.supply.kind!=SupplyKind.None)==12,"Twelve supplied weapons");
|
||||||
|
fake.state.towers=new[]{new TowerSupplyState{instanceId=987,type=catalog.towers.First(t=>t.id=="ammo_0"),magazine=17,magazineCapacity=40}};
|
||||||
|
fake.state.channels=new[]{new SupplyChannelState{kind=SupplyKind.Physical,storage=180,storageCapacity=300,buffer=23,bufferCapacity=50}};
|
||||||
|
fake.state.truck=new SupplyTruckState{phase=SupplyTruckPhase.Driving,from=SupplyStop.PhysicalTank,to=SupplyStop.Distributor,progress=.5f,cargoKind=SupplyKind.Physical,cargo=20,cargoCapacity=40};
|
||||||
|
c.BindSupplyBackend(fake);c.UseLift();stage=1;due=EditorApplication.timeSinceStartup+1.7;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Check(c.IsInBasement && c.HasSupplyBackend,"Adapter attached");
|
||||||
|
Check(c.connectionNames[0].text.Contains("987"),"Backend tower IDs, independent of prototype placement");
|
||||||
|
Check(c.storageAmounts[0].text=="180 / 300" && c.bufferAmounts[0].text=="23 / 50","Channel snapshots rendered");
|
||||||
|
Check(c.magazineAmounts[0].gameObject.activeSelf && c.magazineAmounts[0].text.Contains("17 / 40"),"Live magazine rendered");
|
||||||
|
Check(Mathf.Abs(c.truck.anchoredPosition.x-Mathf.Lerp(c.loadingPositions[0],c.unloadingPosition,.5f))<.1f,"Backend drives truck; preview suppressed");
|
||||||
|
c.ToggleConnection(0);Check(!fake.state.towers[0].connected && !c.IsConnectionEnabled(987),"Connection command accepted");
|
||||||
|
fake.reject=true;c.ToggleConnection(0);Check(!c.IsConnectionEnabled(987),"Rejected command does not change connection");
|
||||||
|
fake.reject=false;c.SetPriority(1);Check(fake.state.priority==SupplyKind.EnergyCells && c.Priority==1,"Priority command accepted");
|
||||||
|
fake.reject=true;c.SetPriority(2);Check(c.Priority==1,"Rejected priority remains authoritative");
|
||||||
|
fake.state.towers=Array.Empty<TowerSupplyState>();c.SendMessage("RefreshConnections");Check(!c.connectionButtons[0].interactable,"Removed tower frees slot");
|
||||||
|
Debug.Log("SUPPLY_BINDING_VALIDATION_OK: fields, live amounts, external tower IDs, commands, rejection, truck route and removal.");EditorApplication.update-=run;EditorApplication.Exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e){EditorApplication.update-=run;Debug.LogException(e);EditorApplication.Exit(1);}
|
||||||
|
};EditorApplication.update+=run;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0d55a01e5b6f36446890591cb0761214
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
namespace DepthsOfGreed.HandbookUI
|
||||||
|
{
|
||||||
|
public enum BuildUse { Structure, Trap, Ability, RepairCrew }
|
||||||
|
public enum BuildRegion { WallRing, Interior, Gate }
|
||||||
|
public enum BaseShape { Circle, Rectangle }
|
||||||
|
public enum AmmoKind { None, Bullets, Explosives, Oil, ExplosivesAndOil, Energy }
|
||||||
|
public enum AttackShape { None, Line, Cone, Area, Contact }
|
||||||
|
public enum TargetMode { None, Single, Area, PlayerSelectedTarget, PlayerSelectedArea, Walls }
|
||||||
|
public enum RotationMode { Free, Fixed, PlayerAimed, NotApplicable }
|
||||||
|
public enum SpecialEffect { None, Ricochet, PushBack, Slow, Piercing, EnergyGeneration, CorpseCollection, Reflection, Repair, Bombardment, ContactTrap, PathBlock }
|
||||||
|
[Serializable] public sealed class CombatDefinition
|
||||||
|
{
|
||||||
|
public AmmoKind ammunition;
|
||||||
|
[Min(0)] public float ammoPerShot, energyPerSecond, damagePerHit, attacksPerSecond, range;
|
||||||
|
[Tooltip("Used for continuous weapons instead of damagePerHit / ammoPerShot.")]
|
||||||
|
[Min(0)] public float continuousDamagePerSecond, ammoPerSecond;
|
||||||
|
public bool continuousAttack, unlimitedRange;
|
||||||
|
public AttackShape attackShape;
|
||||||
|
public TargetMode targets;
|
||||||
|
public RotationMode rotation;
|
||||||
|
[Range(0, 180)] public float coneAngle = 45;
|
||||||
|
[Min(0)] public float areaRadius;
|
||||||
|
public SpecialEffect effect;
|
||||||
|
[Min(0)] public float effectStrength, effectDuration, attackCooldown;
|
||||||
|
[Min(0)] public float knockbackDistance, energyGeneratedPerSecond, energyCapacityBonus, repairHealthPerSecond, corpsesCollectedPerSecond;
|
||||||
|
[Range(0, 1)] public float slowFraction;
|
||||||
|
[Min(0)] public float reflectionDamageMultiplier = 1;
|
||||||
|
[Min(0)] public int ricochetCount;
|
||||||
|
}
|
||||||
|
[Serializable] public sealed class UpgradeDefinition
|
||||||
|
{
|
||||||
|
public string title;
|
||||||
|
[Min(0)] public int energyCost, entrailsCost;
|
||||||
|
[TextArea] public string description;
|
||||||
|
[Min(0)] public float damageMultiplier = 1, fireRateMultiplier = 1, rangeMultiplier = 1, effectMultiplier = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c6a1c1f7e6144c84491522bd463af59d
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
namespace DepthsOfGreed.HandbookUI
|
||||||
|
{
|
||||||
|
public sealed class GeneralFeedbackController : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private RectTransform panel;
|
||||||
|
[SerializeField] private TMP_Text message;
|
||||||
|
private bool error;
|
||||||
|
private float until;
|
||||||
|
public void Initialize(RectTransform book, TMP_FontAsset font) { if (font) message.font = font; panel.gameObject.SetActive(false); }
|
||||||
|
public void ShowControls(string text) { error = false; until = 0; message.text = text; panel.gameObject.SetActive(true); }
|
||||||
|
public void ShowError(string text, bool bookOpen) { error = true; until = Time.unscaledTime + 3; message.text = text; panel.gameObject.SetActive(true); }
|
||||||
|
public void HideControls() { if (!error) panel.gameObject.SetActive(false); }
|
||||||
|
private void Update() { if (error && Time.unscaledTime > until) { panel.gameObject.SetActive(false); error = false; } }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cff0fbda783c6bf4da55a7f73449094f
|
||||||
@@ -19,15 +19,24 @@ namespace DepthsOfGreed.HandbookUI
|
|||||||
[SerializeField] private GameObject[] pages;
|
[SerializeField] private GameObject[] pages;
|
||||||
[SerializeField] private GameObject testTowerPrefab;
|
[SerializeField] private GameObject testTowerPrefab;
|
||||||
[SerializeField] private HandbookTowerCatalog towerCatalog;
|
[SerializeField] private HandbookTowerCatalog towerCatalog;
|
||||||
|
[Tooltip("Optional: component implementing IHandbookGameplay. Empty uses the prototype backend.")]
|
||||||
|
[SerializeField] private MonoBehaviour gameplayBackend;
|
||||||
[Tooltip("Wartezeit nach erfolgreichem Platzieren, bevor das Buch hochfährt.")]
|
[Tooltip("Wartezeit nach erfolgreichem Platzieren, bevor das Buch hochfährt.")]
|
||||||
[SerializeField, Min(0)] private float successfulPlacementDelay = 0.5f;
|
[SerializeField, Min(0)] private float successfulPlacementDelay = 0.5f;
|
||||||
[SerializeField] private float hoverDistance = 115f;
|
[Header("Tab movement (Build, Statistics, Upgrades, Index)")]
|
||||||
|
[Tooltip("Distance left per closed tab. -1 automatically uses its width. Rest position is the authored RectTransform position.")]
|
||||||
|
[SerializeField] private float[] closedTabRevealDistances = { -1f, -1f, -1f, -1f };
|
||||||
|
[Tooltip("Distance up per open tab. -1 automatically uses its height.")]
|
||||||
|
[SerializeField] private float[] openTabRevealDistances = { -1f, -1f, -1f, -1f };
|
||||||
|
[Tooltip("Overlap retained when an automatically sized tab is fully revealed.")]
|
||||||
|
[SerializeField, Min(0)] private float closedTabOverlap = 10f;
|
||||||
|
[SerializeField, Min(0)] private float openTabOverlap = 25f;
|
||||||
[SerializeField] private float animationSpeed = 14f;
|
[SerializeField] private float animationSpeed = 14f;
|
||||||
|
|
||||||
private readonly string[] titles = { "Bauen", "Statistik", "Upgrades", "Index" };
|
private readonly string[] titles = { "Bauen", "Statistik", "Upgrades", "Index" };
|
||||||
private Vector2[] closedPositions, openPositions;
|
private Vector2[] closedPositions, openPositions;
|
||||||
private TMP_Text[] closedLabels, openLabels;
|
private TMP_Text[] closedLabels, openLabels;
|
||||||
private RectTransform activeLayer;
|
[SerializeField] private RectTransform activeLayer;
|
||||||
private int selected, hoveredClosed = -1, hoveredOpen = -1;
|
private int selected, hoveredClosed = -1, hoveredOpen = -1;
|
||||||
private bool isOpen, bookHovered;
|
private bool isOpen, bookHovered;
|
||||||
private Vector3 bookScale;
|
private Vector3 bookScale;
|
||||||
@@ -48,27 +57,19 @@ namespace DepthsOfGreed.HandbookUI
|
|||||||
closedPositions = PrepareTabs(closedTabs, out closedLabels, false);
|
closedPositions = PrepareTabs(closedTabs, out closedLabels, false);
|
||||||
openPositions = PrepareTabs(openTabs, out openLabels, true);
|
openPositions = PrepareTabs(openTabs, out openLabels, true);
|
||||||
bookScale = bookButton.transform.localScale;
|
bookScale = bookButton.transform.localScale;
|
||||||
var layer = new GameObject("ActiveTabLayer", typeof(RectTransform));
|
|
||||||
activeLayer = layer.GetComponent<RectTransform>();
|
|
||||||
activeLayer.SetParent(openTabsRoot.parent, false);
|
|
||||||
activeLayer.anchorMin = openTabsRoot.anchorMin;
|
|
||||||
activeLayer.anchorMax = openTabsRoot.anchorMax;
|
|
||||||
activeLayer.pivot = openTabsRoot.pivot;
|
|
||||||
activeLayer.offsetMin = openTabsRoot.offsetMin;
|
|
||||||
activeLayer.offsetMax = openTabsRoot.offsetMax;
|
|
||||||
var background = openBook.transform.Find("Background");
|
|
||||||
if (background) activeLayer.SetSiblingIndex(background.GetSiblingIndex() + 1);
|
|
||||||
bookButton.onClick.AddListener(() => Open(0));
|
bookButton.onClick.AddListener(() => Open(0));
|
||||||
closeButton.onClick.AddListener(Close);
|
closeButton.onClick.AddListener(Close);
|
||||||
AddHover(bookButton.gameObject, () => bookHovered = true, () => bookHovered = false);
|
AddHover(bookButton.gameObject, () => bookHovered = true, () => bookHovered = false);
|
||||||
buildMenu = pages[0].AddComponent<BuildMenuController>();
|
buildMenu = pages[0].GetComponent<BuildMenuController>();
|
||||||
buildMenu.Initialize(towerCatalog);
|
buildMenu.Initialize(towerCatalog);
|
||||||
placement = gameObject.AddComponent<TestPlacementController>();
|
placement = gameObject.GetComponent<TestPlacementController>();
|
||||||
placement.Initialize(this, buildMenu, (RectTransform)openBook.transform, testTowerPrefab);
|
placement.Initialize(this, buildMenu, (RectTransform)openBook.transform, testTowerPrefab, gameplayBackend);
|
||||||
placement.SuccessfulPlacementDelay = successfulPlacementDelay;
|
placement.SuccessfulPlacementDelay = successfulPlacementDelay;
|
||||||
buildMenu.Placement = placement;
|
buildMenu.Placement = placement;
|
||||||
indexMenu = pages[3].AddComponent<HandbookIndexController>();
|
indexMenu = pages[3].GetComponent<HandbookIndexController>();
|
||||||
indexMenu.Initialize(towerCatalog);
|
indexMenu.Initialize(towerCatalog);
|
||||||
|
var upgrades = pages[2].GetComponent<HandbookUpgradesController>();
|
||||||
|
upgrades.Initialize(placement);
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,31 +80,9 @@ namespace DepthsOfGreed.HandbookUI
|
|||||||
for (int i = 0; i < tabs.Length; i++)
|
for (int i = 0; i < tabs.Length; i++)
|
||||||
{
|
{
|
||||||
int index = i;
|
int index = i;
|
||||||
if (!opened)
|
|
||||||
{
|
|
||||||
var marker = (RectTransform)tabs[i].transform;
|
|
||||||
marker.sizeDelta = new Vector2(marker.sizeDelta.x + 25f, marker.sizeDelta.y);
|
|
||||||
marker.anchoredPosition += Vector2.right * 25f;
|
|
||||||
}
|
|
||||||
positions[i] = ((RectTransform)tabs[i].transform).anchoredPosition;
|
positions[i] = ((RectTransform)tabs[i].transform).anchoredPosition;
|
||||||
labels[i] = tabs[i].GetComponentInChildren<TMP_Text>(true);
|
labels[i] = tabs[i].GetComponentInChildren<TMP_Text>(true);
|
||||||
if (labels[i])
|
if (labels[i]) labels[i].gameObject.SetActive(false);
|
||||||
{
|
|
||||||
var text = labels[i];
|
|
||||||
text.text = titles[i];
|
|
||||||
text.raycastTarget = false;
|
|
||||||
text.fontSize = opened ? 20 : 18;
|
|
||||||
text.enableAutoSizing = true;
|
|
||||||
text.fontSizeMin = 14;
|
|
||||||
text.fontSizeMax = opened ? 20 : 18;
|
|
||||||
text.alignment = TextAlignmentOptions.MidlineLeft;
|
|
||||||
var rect = text.rectTransform;
|
|
||||||
rect.anchorMin = Vector2.zero;
|
|
||||||
rect.anchorMax = Vector2.one;
|
|
||||||
rect.offsetMin = new Vector2(opened ? 65 : 48, 4);
|
|
||||||
rect.offsetMax = new Vector2(-6, -4);
|
|
||||||
text.gameObject.SetActive(false);
|
|
||||||
}
|
|
||||||
tabs[i].onClick.AddListener(() => Open(index));
|
tabs[i].onClick.AddListener(() => Open(index));
|
||||||
AddHover(tabs[i].gameObject,
|
AddHover(tabs[i].gameObject,
|
||||||
() => { if (opened) hoveredOpen = index; else hoveredClosed = index; },
|
() => { if (opened) hoveredOpen = index; else hoveredClosed = index; },
|
||||||
@@ -143,9 +122,7 @@ namespace DepthsOfGreed.HandbookUI
|
|||||||
rect.SetParent(i == selected ? activeLayer : openTabsRoot, false);
|
rect.SetParent(i == selected ? activeLayer : openTabsRoot, false);
|
||||||
}
|
}
|
||||||
if (index == 3 && !samePage && indexMenu) indexMenu.ResetForEntry();
|
if (index == 3 && !samePage && indexMenu) indexMenu.ResetForEntry();
|
||||||
if (samePage)
|
if (samePage && index == 3 && indexMenu) indexMenu.ResetForEntry();
|
||||||
foreach (var scroll in pages[index].GetComponentsInChildren<ScrollRect>(true))
|
|
||||||
scroll.verticalNormalizedPosition = 1f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
@@ -189,11 +166,18 @@ namespace DepthsOfGreed.HandbookUI
|
|||||||
bool show = i == hovered || i == active;
|
bool show = i == hovered || i == active;
|
||||||
var rect = (RectTransform)tabs[i].transform;
|
var rect = (RectTransform)tabs[i].transform;
|
||||||
// Reveal the full marker while retaining a small overlap with the page.
|
// Reveal the full marker while retaining a small overlap with the page.
|
||||||
float distance = Mathf.Clamp(hoverDistance, 0f, Mathf.Max(0f, positions[i].x - 10f));
|
bool opened = tabs == openTabs;
|
||||||
var target = positions[i] + (show ? Vector2.left * distance : Vector2.zero);
|
var distances = opened ? openTabRevealDistances : closedTabRevealDistances;
|
||||||
|
float configured = distances != null && i < distances.Length ? distances[i] : -1f;
|
||||||
|
float automatic = opened
|
||||||
|
? Mathf.Max(0f, -positions[i].y - openTabOverlap)
|
||||||
|
: Mathf.Max(0f, positions[i].x - closedTabOverlap);
|
||||||
|
float distance = configured >= 0f ? configured : automatic;
|
||||||
|
var target = positions[i] + (show ? (opened ? Vector2.up : Vector2.left) * distance : Vector2.zero);
|
||||||
rect.anchoredPosition = Vector2.Lerp(rect.anchoredPosition, target, blend);
|
rect.anchoredPosition = Vector2.Lerp(rect.anchoredPosition, target, blend);
|
||||||
if (labels[i]) labels[i].gameObject.SetActive(show);
|
if (labels[i]) labels[i].gameObject.SetActive(show);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
namespace DepthsOfGreed.HandbookUI
|
||||||
|
{
|
||||||
|
public static class HandbookCostText
|
||||||
|
{
|
||||||
|
public static string Format(int energy, int entrails)
|
||||||
|
{
|
||||||
|
string a = energy > 0 ? energy + " Energie" : "";
|
||||||
|
string b = entrails > 0 ? entrails + " Gedärme" : "";
|
||||||
|
return a.Length > 0 && b.Length > 0 ? a + " · " + b : a + b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 65b5d287df87fcc4690d572fdedb81f6
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
namespace DepthsOfGreed.HandbookUI
|
||||||
|
{
|
||||||
|
public enum EnemyTrait { None, GroupSpawn, AlternatingInvulnerability, CorpseConsumer, EnergyCharged }
|
||||||
|
[CreateAssetMenu(menuName = "Depths of Greed/Handbuch/Gegnertyp")]
|
||||||
|
public sealed class HandbookEnemyEntry : ScriptableObject
|
||||||
|
{
|
||||||
|
public string id, displayName;
|
||||||
|
public Sprite icon;
|
||||||
|
public GameObject gameplayPrefab;
|
||||||
|
[TextArea(3, 8)] public string description;
|
||||||
|
[Min(1)] public float maxHealth = 100;
|
||||||
|
[Min(0)] public float damage = 10, speed = 1, attacksPerSecond = 1, spawnWeight = 1;
|
||||||
|
public Vector2Int dropRange;
|
||||||
|
public Vector2Int spawnGroup = Vector2Int.one;
|
||||||
|
public EnemyTrait trait;
|
||||||
|
public float invulnerableSeconds, vulnerableSeconds, corpseHeal, corpseBuffMultiplier = 1;
|
||||||
|
public float energyChargeThreshold, explosionRadius;
|
||||||
|
public bool provisional = true;
|
||||||
|
public int sourceBalanceScore;
|
||||||
|
[TextArea(3, 10)] public string designNotes;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d97d07f7d8008a1438cb14fe4a1b425a
|
||||||
@@ -1,150 +1,69 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
namespace DepthsOfGreed.HandbookUI
|
namespace DepthsOfGreed.HandbookUI
|
||||||
{
|
{
|
||||||
public sealed class HandbookIndexController : MonoBehaviour
|
public sealed class HandbookIndexController : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
[SerializeField] private Button[] filterButtons, entryButtons;
|
||||||
|
[SerializeField] private TMP_Text[] entryNames;
|
||||||
|
[SerializeField] private Image[] entryIcons;
|
||||||
|
[SerializeField] private TMP_Text detailName, description, emptyMessage;
|
||||||
|
[SerializeField] private Image detailIcon;
|
||||||
|
[SerializeField] private Sprite placeholderIcon;
|
||||||
|
private sealed class Item { public HandbookTowerEntry tower; public HandbookEnemyEntry enemy; public string Name => tower ? tower.displayName : enemy.displayName; public Sprite Icon => tower ? tower.icon : enemy.icon; }
|
||||||
|
private readonly List<Item> all = new List<Item>(), filtered = new List<Item>();
|
||||||
public HandbookTowerEntry SelectedEntry { get; private set; }
|
public HandbookTowerEntry SelectedEntry { get; private set; }
|
||||||
public int VisibleEntryCount => currentFilter == 2 ? 0 : entries.Count;
|
public HandbookEnemyEntry SelectedEnemy { get; private set; }
|
||||||
public ScrollRect ListScroll => scroll;
|
public int VisibleEntryCount => filtered.Count;
|
||||||
private ScrollRect scroll;
|
private int filter = -1;
|
||||||
private Button[] filters;
|
|
||||||
private readonly List<HandbookTowerEntry> entries = new List<HandbookTowerEntry>();
|
|
||||||
private readonly List<Button> rows = new List<Button>();
|
|
||||||
private TMP_Text detailName, description, emptyMessage;
|
|
||||||
private Image detailIcon;
|
|
||||||
private Sprite placeholder;
|
|
||||||
private Color placeholderColor;
|
|
||||||
private int currentFilter;
|
|
||||||
|
|
||||||
public void Initialize(HandbookTowerCatalog catalog)
|
public void Initialize(HandbookTowerCatalog catalog)
|
||||||
{
|
{
|
||||||
scroll = transform.Find("IndexLeft/EntryScrollView").GetComponent<ScrollRect>();
|
if (catalog.towers != null) foreach (var t in catalog.towers) if (t) all.Add(new Item { tower = t });
|
||||||
filters = new[] {
|
if (catalog.enemies != null) foreach (var e in catalog.enemies) if (e) all.Add(new Item { enemy = e });
|
||||||
transform.Find("IndexLeft/FilterBar/Filter_All").GetComponent<Button>(),
|
for (int i = 0; i < filterButtons.Length; i++) { int n = i; filterButtons[i].onClick.AddListener(() => SelectFilter(n)); }
|
||||||
transform.Find("IndexLeft/FilterBar/Filter_Towers").GetComponent<Button>(),
|
for (int i = 0; i < entryButtons.Length; i++) { int n = i; entryButtons[i].onClick.AddListener(() => SelectEntry(n)); }
|
||||||
transform.Find("IndexLeft/FilterBar/Filter_Enemies").GetComponent<Button>()
|
|
||||||
};
|
|
||||||
detailName = transform.Find("IndexRight/DetailNameText").GetComponent<TMP_Text>();
|
|
||||||
description = transform.Find("IndexRight/DetailDescriptionText").GetComponent<TMP_Text>();
|
|
||||||
detailIcon = transform.Find("IndexRight/DetailIcon").GetComponent<Image>();
|
|
||||||
placeholder = detailIcon.sprite;
|
|
||||||
placeholderColor = detailIcon.color;
|
|
||||||
var template = scroll.content.GetChild(0).GetComponent<Button>();
|
|
||||||
if (catalog && catalog.towers != null)
|
|
||||||
foreach (var entry in catalog.towers)
|
|
||||||
{
|
|
||||||
if (!entry) continue;
|
|
||||||
int index = entries.Count;
|
|
||||||
entries.Add(entry);
|
|
||||||
var row = Instantiate(template, scroll.content);
|
|
||||||
row.name = "IndexEntry_" + entry.id;
|
|
||||||
row.gameObject.SetActive(true);
|
|
||||||
row.image.color = Color.white;
|
|
||||||
var label = row.transform.Find("NameText").GetComponent<TMP_Text>();
|
|
||||||
label.text = entry.displayName;
|
|
||||||
label.color = Color.black;
|
|
||||||
label.raycastTarget = false;
|
|
||||||
label.enableAutoSizing = true;
|
|
||||||
label.fontSizeMin = 16;
|
|
||||||
label.fontSizeMax = 24;
|
|
||||||
var icon = row.transform.Find("Icon").GetComponent<Image>();
|
|
||||||
if (entry.icon) { icon.sprite = entry.icon; icon.color = Color.white; }
|
|
||||||
icon.preserveAspect = true;
|
|
||||||
icon.raycastTarget = false;
|
|
||||||
row.onClick.RemoveAllListeners();
|
|
||||||
row.onClick.AddListener(() => SelectEntry(index));
|
|
||||||
rows.Add(row);
|
|
||||||
}
|
|
||||||
template.gameObject.SetActive(false);
|
|
||||||
var empty = new GameObject("EmptyListMessage", typeof(RectTransform), typeof(TextMeshProUGUI), typeof(LayoutElement));
|
|
||||||
empty.transform.SetParent(scroll.content, false);
|
|
||||||
emptyMessage = empty.GetComponent<TMP_Text>();
|
|
||||||
emptyMessage.font = description.font;
|
|
||||||
emptyMessage.fontSize = 22;
|
|
||||||
emptyMessage.color = new Color(0.3f, 0.3f, 0.3f);
|
|
||||||
emptyMessage.alignment = TextAlignmentOptions.MidlineLeft;
|
|
||||||
emptyMessage.raycastTarget = false;
|
|
||||||
empty.GetComponent<LayoutElement>().preferredHeight = 70;
|
|
||||||
for (int i = 0; i < filters.Length; i++)
|
|
||||||
{
|
|
||||||
int index = i;
|
|
||||||
filters[i].onClick.AddListener(() => SelectFilter(index));
|
|
||||||
}
|
|
||||||
ResetForEntry();
|
ResetForEntry();
|
||||||
}
|
}
|
||||||
|
public void ResetForEntry() { SelectFilter(0, true); }
|
||||||
public void ResetForEntry()
|
public void SelectFilter(int value, bool force = false)
|
||||||
{
|
{
|
||||||
SelectFilter(0, true);
|
if (value < 0 || value > 4 || (!force && value == filter)) return;
|
||||||
|
filter = value; filtered.Clear();
|
||||||
|
foreach (var item in all)
|
||||||
|
if (value == 0 || (value == 1 && item.tower && (int)item.tower.menuGroup < 2) || (value == 2 && item.tower && item.tower.menuGroup == BuildMenuGroup.Anlagen) || (value == 3 && item.tower && item.tower.menuGroup == BuildMenuGroup.Einsaetze) || (value == 4 && item.enemy)) filtered.Add(item);
|
||||||
|
ClearSelection(); Render();
|
||||||
|
for (int i = 0; i < filterButtons.Length; i++) { filterButtons[i].image.color = Color.white; var c = filterButtons[i].colors; c.normalColor = i == value ? new Color(1, 0.76f, 0.35f) : new Color(0.87f, 0.84f, 0.75f); c.selectedColor = c.normalColor; filterButtons[i].colors = c; }
|
||||||
}
|
}
|
||||||
|
private void Render()
|
||||||
public void SelectFilter(int index, bool force = false)
|
|
||||||
{
|
{
|
||||||
if (index < 0 || index > 2 || (!force && currentFilter == index)) return;
|
if (filtered.Count > entryButtons.Length) Debug.LogError("Index: Anzahl vorbereiteter Auswahlfelder erhöhen.", this);
|
||||||
currentFilter = index;
|
for (int i = 0; i < entryButtons.Length; i++)
|
||||||
foreach (var row in rows) row.gameObject.SetActive(index != 2);
|
|
||||||
bool empty = index == 2 || rows.Count == 0;
|
|
||||||
emptyMessage.gameObject.SetActive(empty);
|
|
||||||
emptyMessage.text = index == 2 ? "Noch keine Gegner-Einträge" : "Noch keine Einträge";
|
|
||||||
for (int i = 0; i < filters.Length; i++)
|
|
||||||
{
|
{
|
||||||
filters[i].image.color = Color.white;
|
entryButtons[i].gameObject.SetActive(i < filtered.Count);
|
||||||
var colors = filters[i].colors;
|
if (i >= filtered.Count) continue;
|
||||||
colors.normalColor = i == index ? new Color(1, 0.72f, 0.2f) : new Color(0.82f, 0.82f, 0.82f);
|
var item = filtered[i]; entryNames[i].text = item.Name; entryIcons[i].sprite = item.Icon ? item.Icon : placeholderIcon; entryIcons[i].color = item.Icon ? Color.white : Color.gray;
|
||||||
colors.highlightedColor = i == index ? new Color(1, 0.82f, 0.4f) : Color.white;
|
bool active = (item.tower && item.tower == SelectedEntry) || (item.enemy && item.enemy == SelectedEnemy);
|
||||||
colors.selectedColor = colors.normalColor;
|
entryButtons[i].image.color = active ? new Color(0.58f, 0.58f, 0.58f) : new Color(0.9f, 0.88f, 0.81f);
|
||||||
filters[i].colors = colors;
|
|
||||||
}
|
}
|
||||||
ClearSelection();
|
emptyMessage.gameObject.SetActive(filtered.Count == 0);
|
||||||
ResetScroll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SelectEntry(int index)
|
public void SelectEntry(int index)
|
||||||
{
|
{
|
||||||
if (currentFilter == 2 || index < 0 || index >= entries.Count) return;
|
if (index < 0 || index >= filtered.Count) return;
|
||||||
SelectedEntry = entries[index];
|
var item = filtered[index]; SelectedEntry = item.tower; SelectedEnemy = item.enemy;
|
||||||
detailName.text = SelectedEntry.displayName;
|
detailName.text = item.Name; detailIcon.gameObject.SetActive(true); detailIcon.sprite = item.Icon ? item.Icon : placeholderIcon; detailIcon.color = item.Icon ? Color.white : Color.gray;
|
||||||
description.text = SelectedEntry.description;
|
var text = new StringBuilder(item.tower ? item.tower.description : item.enemy.description);
|
||||||
detailIcon.gameObject.SetActive(true);
|
if (item.tower)
|
||||||
detailIcon.sprite = SelectedEntry.icon ? SelectedEntry.icon : placeholder;
|
|
||||||
detailIcon.color = SelectedEntry.icon ? Color.white : placeholderColor;
|
|
||||||
detailIcon.preserveAspect = true;
|
|
||||||
RefreshSelectionColors();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClearSelection()
|
|
||||||
{
|
|
||||||
SelectedEntry = null;
|
|
||||||
detailIcon.gameObject.SetActive(false);
|
|
||||||
detailName.text = "";
|
|
||||||
description.text = "Wähle links einen Eintrag aus.";
|
|
||||||
RefreshSelectionColors();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshSelectionColors()
|
|
||||||
{
|
|
||||||
for (int i = 0; i < rows.Count; i++)
|
|
||||||
{
|
{
|
||||||
bool selected = entries[i] == SelectedEntry;
|
var t = item.tower; text.Append("\n\nBaufläche: ").Append(t.region == BuildRegion.WallRing ? "Mauer" : t.region == BuildRegion.Interior ? "Innenfeld" : "Schleuse"); string price = HandbookCostText.Format(t.energyCost, t.entrailsCost); if (price.Length > 0) text.Append("\nKosten: ").Append(price);
|
||||||
var colors = rows[i].colors;
|
if (t.deploymentCooldown > 0) text.Append(" · Cooldown: ").Append(t.deploymentCooldown).Append(" s");
|
||||||
colors.normalColor = selected ? new Color(0.58f, 0.58f, 0.58f) : new Color(0.86f, 0.86f, 0.86f);
|
if (t.upgradeable) { text.Append("\n\nVerbesserungen:"); foreach (var u in t.upgrades) text.Append("\n").Append(u.title).Append(": ").Append(u.description).Append(HandbookCostText.Format(u.energyCost, u.entrailsCost) is string upgradePrice && upgradePrice.Length > 0 ? " (" + upgradePrice + ")" : ""); }
|
||||||
colors.highlightedColor = selected ? new Color(0.64f, 0.64f, 0.64f) : new Color(0.94f, 0.94f, 0.94f);
|
|
||||||
colors.selectedColor = colors.normalColor;
|
|
||||||
rows[i].colors = colors;
|
|
||||||
}
|
}
|
||||||
|
description.text = text.ToString(); Render();
|
||||||
}
|
}
|
||||||
|
public void ClearSelection() { SelectedEntry = null; SelectedEnemy = null; detailIcon.gameObject.SetActive(false); detailName.text = ""; description.text = "Wähle links einen Eintrag aus."; }
|
||||||
public void ResetScroll()
|
|
||||||
{
|
|
||||||
scroll.StopMovement();
|
|
||||||
Canvas.ForceUpdateCanvases();
|
|
||||||
LayoutRebuilder.ForceRebuildLayoutImmediate(scroll.content);
|
|
||||||
scroll.verticalNormalizedPosition = 1f;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
namespace DepthsOfGreed.HandbookUI
|
||||||
|
{
|
||||||
|
public enum PageFrameStyle { Flat, CurvedLeft, CurvedRight }
|
||||||
|
public sealed class HandbookPageSurface : MonoBehaviour
|
||||||
|
{
|
||||||
|
public PageFrameStyle frameStyle;
|
||||||
|
public Image frameImage;
|
||||||
|
public Sprite flatFrame, curvedLeftFrame, curvedRightFrame;
|
||||||
|
private void OnValidate()
|
||||||
|
{
|
||||||
|
if (!frameImage) return;
|
||||||
|
Sprite sprite = frameStyle == PageFrameStyle.CurvedLeft ? curvedLeftFrame : frameStyle == PageFrameStyle.CurvedRight ? curvedRightFrame : flatFrame;
|
||||||
|
if (sprite) frameImage.sprite = sprite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dea21c6ba39be2c48b1c70f82555a3ef
|
||||||
@@ -7,5 +7,6 @@ namespace DepthsOfGreed.HandbookUI
|
|||||||
{
|
{
|
||||||
[Tooltip("Die Reihenfolge innerhalb einer Kategorie bestimmt die Reihenfolge im Buch.")]
|
[Tooltip("Die Reihenfolge innerhalb einer Kategorie bestimmt die Reihenfolge im Buch.")]
|
||||||
public HandbookTowerEntry[] towers;
|
public HandbookTowerEntry[] towers;
|
||||||
|
public HandbookEnemyEntry[] enemies;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,28 +3,106 @@ using UnityEngine;
|
|||||||
namespace DepthsOfGreed.HandbookUI
|
namespace DepthsOfGreed.HandbookUI
|
||||||
{
|
{
|
||||||
public enum HandbookTowerCategory { Munition, Energie, Spezial }
|
public enum HandbookTowerCategory { Munition, Energie, Spezial }
|
||||||
|
public enum BuildMenuGroup { Physisch, Energie, Anlagen, Einsaetze }
|
||||||
|
|
||||||
[CreateAssetMenu(menuName = "Depths of Greed/Handbuch/Turmtyp", fileName = "NeuerTurmtyp")]
|
[CreateAssetMenu(menuName = "Depths of Greed/Handbuch/Turmtyp", fileName = "NeuerTurmtyp")]
|
||||||
public sealed class HandbookTowerEntry : ScriptableObject
|
public sealed class HandbookTowerEntry : ScriptableObject
|
||||||
{
|
{
|
||||||
[Tooltip("Stabile ID für die spätere Gameplay-Anbindung. Nach Zuordnung nicht ändern.")]
|
[Header("Name und Kategorie")]
|
||||||
|
[Tooltip("Stabile ID für die Gameplay-Anbindung. Nach Zuordnung nicht ändern.")]
|
||||||
public string id;
|
public string id;
|
||||||
public string displayName;
|
public string displayName;
|
||||||
public HandbookTowerCategory category;
|
[InspectorName("Waffentechnik / Basisfarbe")] public HandbookTowerCategory category;
|
||||||
public Sprite icon;
|
[InspectorName("Buchkategorie")] public BuildMenuGroup menuGroup;
|
||||||
|
public BuildUse use;
|
||||||
|
|
||||||
|
[Header("Kaufpreis")]
|
||||||
|
[Tooltip("Energie-Kaufpreis. 0 wird in der Preisanzeige ausgeblendet.")]
|
||||||
[Min(0)] public int energyCost;
|
[Min(0)] public int energyCost;
|
||||||
|
[Tooltip("Gedärme-Kaufpreis. 0 wird in der Preisanzeige ausgeblendet. Beide Ressourcen können gemeinsam erforderlich sein.")]
|
||||||
|
[Min(0)] public int entrailsCost;
|
||||||
|
|
||||||
|
[Header("Texte im Handbuch")]
|
||||||
public string summary;
|
public string summary;
|
||||||
[TextArea(3, 8)] public string description;
|
[TextArea(3, 8)] public string description;
|
||||||
[Tooltip("Kreis, der die gesamte Basis umschließt. Muss vollständig auf den Ring passen.")]
|
|
||||||
|
[Header("Grafiken und Prefabs")]
|
||||||
|
[Tooltip("Bild im Bau-, Index- und Upgrademenü.")]
|
||||||
|
public Sprite icon;
|
||||||
|
[Tooltip("Grafik, die während der Platzierung dem Mauszeiger folgt.")]
|
||||||
|
public Sprite previewSprite;
|
||||||
|
[Tooltip("Grafik des unbeweglichen Unterteils. Wird vom Platzierungsprototyp genutzt.")]
|
||||||
|
public Sprite baseSprite;
|
||||||
|
[Tooltip("Vorbereitetes Unterteil als GameObject. Noch nicht vom Platzierungsprototyp verwendet.")]
|
||||||
|
public GameObject basePrefab;
|
||||||
|
[Tooltip("Vollständiges Objekt für die spätere Gameplay-Anbindung.")]
|
||||||
|
public GameObject gameplayPrefab;
|
||||||
|
|
||||||
|
[Header("Platzierung und Platzbedarf")]
|
||||||
|
public BuildRegion region;
|
||||||
|
public BaseShape baseShape;
|
||||||
|
[Tooltip("Kreis, der die gesamte Basis umschließt. Muss vollständig in die Baufläche passen.")]
|
||||||
[Min(0.001f)] public float baseRadius = 0.36f;
|
[Min(0.001f)] public float baseRadius = 0.36f;
|
||||||
|
public Vector2 baseSize = new Vector2(0.5f, 0.5f);
|
||||||
[Tooltip("Abstandskreis: darf andere Abstandskreise nicht überlappen.")]
|
[Tooltip("Abstandskreis: darf andere Abstandskreise nicht überlappen.")]
|
||||||
[Min(0.001f)] public float placementRadius = 0.6f;
|
[Min(0.001f)] public float placementRadius = 0.6f;
|
||||||
|
public bool allowPlayerRotation;
|
||||||
|
public bool blocksMovement, requirePathValidation;
|
||||||
|
|
||||||
|
[Header("Mengenlimits und Einsatzdauer")]
|
||||||
|
public bool countsTowardWallLimit = true;
|
||||||
|
[Tooltip("0 = kein zusätzliches Limit für diesen Typ.")]
|
||||||
|
[Min(0)] public int maxPerType;
|
||||||
|
[Min(0)] public float deploymentCooldown, lifetimeSeconds;
|
||||||
|
[Min(0)] public int contactUses;
|
||||||
|
|
||||||
|
[Header("Kampf, Verbrauch und Sonderfunktion")]
|
||||||
|
public CombatDefinition combat = new CombatDefinition();
|
||||||
|
|
||||||
|
[Header("Kellerversorgung und Turmmagazin")]
|
||||||
|
public TowerSupplyDefinition supply = new TowerSupplyDefinition();
|
||||||
|
|
||||||
|
[Header("Angreifbarkeit und Haltbarkeit")]
|
||||||
|
public bool targetableByEnemies, destroyableByDamage;
|
||||||
|
[Min(0)] public float maxHealth;
|
||||||
|
public bool removeOnFloorLoss = true;
|
||||||
|
|
||||||
|
[Header("Verbesserungen")]
|
||||||
|
public bool upgradeable = true;
|
||||||
|
public UpgradeDefinition[] upgrades = new UpgradeDefinition[0];
|
||||||
|
|
||||||
|
[Header("Vorläufige Werte und Designnotizen")]
|
||||||
|
public bool provisional = true;
|
||||||
|
[HideInInspector] public int dataVersion;
|
||||||
|
public float sourceCostRating;
|
||||||
|
public int sourceBalanceScore;
|
||||||
|
[TextArea(3, 12)] public string designNotes;
|
||||||
|
|
||||||
|
public CombatDefinition CreateCombatSnapshot(int level)
|
||||||
|
{
|
||||||
|
var result = JsonUtility.FromJson<CombatDefinition>(JsonUtility.ToJson(combat));
|
||||||
|
for (int i = 0; i < Mathf.Min(Mathf.Max(0, level), upgrades.Length); i++)
|
||||||
|
{
|
||||||
|
var u = upgrades[i]; result.damagePerHit *= u.damageMultiplier; result.continuousDamagePerSecond *= u.damageMultiplier; result.attacksPerSecond *= u.fireRateMultiplier; result.range *= u.rangeMultiplier;
|
||||||
|
result.effectStrength *= u.effectMultiplier; result.knockbackDistance *= u.effectMultiplier;
|
||||||
|
result.energyGeneratedPerSecond *= u.effectMultiplier; result.energyCapacityBonus *= u.effectMultiplier;
|
||||||
|
result.repairHealthPerSecond *= u.effectMultiplier; result.corpsesCollectedPerSecond *= u.effectMultiplier;
|
||||||
|
result.slowFraction = Mathf.Clamp01(result.slowFraction * u.effectMultiplier);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private void OnValidate()
|
private void OnValidate()
|
||||||
{
|
{
|
||||||
baseRadius = Mathf.Max(0.001f, baseRadius);
|
baseRadius = Mathf.Max(0.001f, baseRadius);
|
||||||
placementRadius = Mathf.Max(baseRadius, placementRadius);
|
placementRadius = Mathf.Max(baseRadius, placementRadius);
|
||||||
energyCost = Mathf.Max(0, energyCost);
|
energyCost = Mathf.Max(0, energyCost);
|
||||||
|
entrailsCost = Mathf.Max(0, entrailsCost);
|
||||||
|
baseSize = new Vector2(Mathf.Max(0.01f, baseSize.x), Mathf.Max(0.01f, baseSize.y));
|
||||||
|
if (use == BuildUse.Ability) countsTowardWallLimit = false;
|
||||||
|
if (category == HandbookTowerCategory.Munition) menuGroup = BuildMenuGroup.Physisch;
|
||||||
|
else if (category == HandbookTowerCategory.Energie) menuGroup = BuildMenuGroup.Energie;
|
||||||
|
else if ((int)menuGroup < 2) menuGroup = use == BuildUse.Structure ? BuildMenuGroup.Anlagen : BuildMenuGroup.Einsaetze;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
namespace DepthsOfGreed.HandbookUI
|
||||||
|
{
|
||||||
|
public sealed class HandbookUpgradesController : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private Button[] rows, buyButtons, mapMarkers;
|
||||||
|
[SerializeField] private TMP_Text[] names, effects, buyLabels, markerLabels;
|
||||||
|
[SerializeField] private Image[] icons;
|
||||||
|
[SerializeField] private TMP_Text resources, emptyMessage;
|
||||||
|
[SerializeField] private float mapWorldExtent = 170;
|
||||||
|
private TestPlacementController placement;
|
||||||
|
private IHandbookGameplay backend;
|
||||||
|
private readonly List<BuiltObjectSnapshot> sorted = new List<BuiltObjectSnapshot>();
|
||||||
|
private long selected, hovered;
|
||||||
|
public int VisibleUpgradeCount => sorted.Count;
|
||||||
|
public void Initialize(TestPlacementController p)
|
||||||
|
{
|
||||||
|
placement = p; backend = p.Backend;
|
||||||
|
for (int i = 0; i < rows.Length; i++)
|
||||||
|
{
|
||||||
|
int n = i; rows[i].onClick.AddListener(() => { if (n < sorted.Count) { selected = sorted[n].instanceId; Highlights(); } });
|
||||||
|
buyButtons[i].onClick.AddListener(() => { if (n < sorted.Count) { selected = sorted[n].instanceId; backend.ExecuteUpgrade(selected); } });
|
||||||
|
var trigger = rows[i].GetComponent<EventTrigger>();
|
||||||
|
var enter = new EventTrigger.Entry { eventID = EventTriggerType.PointerEnter }; enter.callback.AddListener(_ => { hovered = n < sorted.Count ? sorted[n].instanceId : 0; Highlights(); }); trigger.triggers.Add(enter);
|
||||||
|
var exit = new EventTrigger.Entry { eventID = EventTriggerType.PointerExit }; exit.callback.AddListener(_ => { hovered = 0; Highlights(); }); trigger.triggers.Add(exit);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < mapMarkers.Length; i++) { int n = i; mapMarkers[i].onClick.AddListener(() => { if (n < backend.BuiltObjects.Count) { selected = backend.BuiltObjects[n].instanceId; Highlights(); } }); }
|
||||||
|
backend.StateChanged += Rebuild; Rebuild();
|
||||||
|
}
|
||||||
|
private void OnEnable() { if (backend != null) { selected = hovered = 0; Rebuild(); } }
|
||||||
|
private void Rebuild()
|
||||||
|
{
|
||||||
|
resources.text = "Energie: " + backend.Energy + " · Gedärme: " + backend.Entrails;
|
||||||
|
sorted.Clear(); foreach (var obj in backend.BuiltObjects) if (obj.type.upgradeable) sorted.Add(obj);
|
||||||
|
sorted.Sort((a, b) => { int c = string.CompareOrdinal(a.type.id, b.type.id); return c != 0 ? c : a.instanceId.CompareTo(b.instanceId); });
|
||||||
|
if (sorted.Count > rows.Length || backend.BuiltObjects.Count > mapMarkers.Length) Debug.LogError("Upgrades: Vorbereitete Karten-/Markeranzahl erhöhen.", this);
|
||||||
|
emptyMessage.gameObject.SetActive(sorted.Count == 0);
|
||||||
|
for (int i = 0; i < rows.Length; i++)
|
||||||
|
{
|
||||||
|
rows[i].gameObject.SetActive(i < sorted.Count); if (i >= sorted.Count) continue;
|
||||||
|
var obj = sorted[i]; names[i].text = obj.type.displayName + " #" + obj.instanceId + " · Stufe " + obj.upgradeLevel;
|
||||||
|
icons[i].sprite = obj.type.icon; icons[i].gameObject.SetActive(obj.type.icon);
|
||||||
|
bool max = obj.upgradeLevel >= obj.type.upgrades.Length;
|
||||||
|
effects[i].text = max ? "Maximal verbessert" : obj.type.upgrades[obj.upgradeLevel].description;
|
||||||
|
buyLabels[i].text = max ? "Maximum" : HandbookCostText.Format(obj.type.upgrades[obj.upgradeLevel].energyCost, obj.type.upgrades[obj.upgradeLevel].entrailsCost) is string price && price.Length > 0 ? price : "Verbessern";
|
||||||
|
buyButtons[i].interactable = !max && backend.CheckUpgrade(obj.instanceId).Allowed;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < mapMarkers.Length; i++)
|
||||||
|
{
|
||||||
|
mapMarkers[i].gameObject.SetActive(i < backend.BuiltObjects.Count); if (i >= backend.BuiltObjects.Count) continue;
|
||||||
|
var obj = backend.BuiltObjects[i]; markerLabels[i].text = obj.instanceId.ToString(); ((RectTransform)mapMarkers[i].transform).anchoredPosition = (Vector2)(obj.position - placement.AreaCenter) / placement.AreaRadius * mapWorldExtent;
|
||||||
|
}
|
||||||
|
Highlights();
|
||||||
|
}
|
||||||
|
private void Highlights()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mapMarkers.Length && i < backend.BuiltObjects.Count; i++) { long id = backend.BuiltObjects[i].instanceId; mapMarkers[i].image.color = id == selected ? new Color(1, 0.7f, 0.1f) : id == hovered ? Color.white : new Color(0.35f, 0.35f, 0.35f); mapMarkers[i].transform.localScale = Vector3.one * (id == selected || id == hovered ? 1.25f : 1); }
|
||||||
|
for (int i = 0; i < rows.Length && i < sorted.Count; i++) rows[i].image.color = sorted[i].instanceId == selected ? new Color(0.7f, 0.7f, 0.68f) : new Color(0.9f, 0.88f, 0.81f);
|
||||||
|
}
|
||||||
|
private void OnDestroy() { if (backend != null) backend.StateChanged -= Rebuild; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0a278a7e05a0f534aad20b7c849e8934
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user