diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index 6b1d7a9b5..49c5e196b 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -1123,105 +1123,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1333170161 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1333170163} - - component: {fileID: 1333170162} - m_Layer: 0 - m_Name: RoomDressing - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1333170162 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1333170161} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4ef612b567d6f6746bc03f764274740e, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Client::ProjectM.Client.RoomDressingConfig - Enabled: 1 - CountPerRoom: 26 - ScaleMin: 0.85 - ScaleMax: 1.35 - Meadow: - - {fileID: 3757109599224033816, guid: 60467653c9024a94cbe4863e1b401660, type: 3} - - {fileID: 1557974530457926728, guid: d74b9ad70f26c1c41805b672a71665b0, type: 3} - - {fileID: 5214937767286086917, guid: f4c1ab01cce3344498755643a1be1e5a, type: 3} - - {fileID: 2186473713617367126, guid: d6538b1be0012ec49affc54b4b0b8f19, type: 3} - - {fileID: 1074864049481174882, guid: 8e2a923736393f34d9d8dc6a0d5baf44, type: 3} - - {fileID: 1511162409591480987, guid: 207b689f475fbcc48bf39ca3fecca461, type: 3} - - {fileID: 7158316201231779819, guid: 5a94592405aec68418c8c69881c5a3b0, type: 3} - - {fileID: 5376390175986146221, guid: a6953db8e1209e74b8141f1e9847b94b, type: 3} - - {fileID: 1118155114131449006, guid: e1b4f5f50eebd6441919aab5ea3b042f, type: 3} - - {fileID: 8596010870747751422, guid: f3f0fef6f816f4641856a0db4dfbb905, type: 3} - - {fileID: 1346982405202136, guid: 09a3b44b8937d6245b39d930062109c6, type: 3} - - {fileID: 1325243728563266, guid: 720c6591b996f3b45b844519425924b9, type: 3} - Arid: - - {fileID: 2343585175475211231, guid: 82b24fde941b791499b3e3df77f33994, type: 3} - - {fileID: 5355830441712902000, guid: f7e55accb0f3ef74ebf6f2b0423ca2b7, type: 3} - - {fileID: 6243260667707658037, guid: c6b3f3875f0986d49a0c47cbd022b0bf, type: 3} - - {fileID: 1897731639152372492, guid: 72469d6301a36f541917475d91c3d003, type: 3} - - {fileID: 7399423978015975178, guid: 2b71e23fcf27f6147b0e6b05477f129e, type: 3} - - {fileID: 8429375587787154361, guid: 1701b13a21c3cee4abfdc7cf68253a01, type: 3} - - {fileID: 8812702112283937109, guid: 99d003c03fa874f4dafda35e5d1ecde5, type: 3} - - {fileID: 530501058922827164, guid: 595d7bac85c68234abd41625ae3db0cd, type: 3} - - {fileID: 6850435770556105135, guid: 66d4f7c006b77084da3929add6d06f24, type: 3} - - {fileID: 8217716403657413284, guid: 9df62898e2ddbbd4b9df38751d895ba0, type: 3} - - {fileID: 9189062589720884796, guid: 2f1d23f56aee799459168baa6c36053c, type: 3} - - {fileID: 7897640328251657048, guid: 041cd6c93207bec4b9bef2390aa9047f, type: 3} - - {fileID: 4168235972698704609, guid: a29bb4ac881c18d4dbfda67c2ff21091, type: 3} - - {fileID: 2660068605479700378, guid: 5609edadd6d8f3744b3f17d21a3a507f, type: 3} - Cavern: - - {fileID: 5376390175986146221, guid: a6953db8e1209e74b8141f1e9847b94b, type: 3} - - {fileID: 1118155114131449006, guid: e1b4f5f50eebd6441919aab5ea3b042f, type: 3} - - {fileID: 1548467455464118, guid: a66fcd4b0c95c3c4f8a2e3ec71b821fd, type: 3} - - {fileID: 1219693987300432, guid: 2802a8bdb7ea3354a8b0be8bfb9e7ac9, type: 3} - - {fileID: 1956064514463986, guid: b200516e65de5a142a3bbadb73cd77e4, type: 3} - - {fileID: 1976401696516608, guid: 7aec7d7b6b4e5f24f832c33028ee90d9, type: 3} - - {fileID: 1218948445974146, guid: 7f4082e70edb70e4b83b1d67eb74deb5, type: 3} - - {fileID: 1296379715616498, guid: 23aa7813617e5be4983e5df6b139f5ea, type: 3} - - {fileID: 1475996404134592, guid: c4be778793f575b42b8d942b78462284, type: 3} - - {fileID: 1159367070492942, guid: ac42f59b9c44c274b9612f7df5333cf3, type: 3} - - {fileID: 1804667845376260, guid: 4005b9a03d8625b4990b7a567bf6faa1, type: 3} - Blight: - - {fileID: 1804667845376260, guid: 4005b9a03d8625b4990b7a567bf6faa1, type: 3} - - {fileID: 1361614101361290, guid: d3b497db883149045a9c1218adca475a, type: 3} - - {fileID: 1364780636854694, guid: d6f6b930859540e44aa1b08dc38756a3, type: 3} - - {fileID: 1272498397077028, guid: 66e7fae4a94b7534da72db0198a0f740, type: 3} - - {fileID: 1490281888066316, guid: df92770844ac44c4ab92f00167bffc4c, type: 3} - - {fileID: 1154308530469040, guid: 2c1b8ba858adad2478af52d208187ae6, type: 3} - - {fileID: 1436310706135902, guid: d490d5805a8f22c449470acc5c2bbf6f, type: 3} - - {fileID: 1552408322253738, guid: c104bd949dbb87644ab3fe86ab934293, type: 3} - - {fileID: 6243260667707658037, guid: c6b3f3875f0986d49a0c47cbd022b0bf, type: 3} - - {fileID: 4168235972698704609, guid: a29bb4ac881c18d4dbfda67c2ff21091, type: 3} ---- !u!4 &1333170163 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1333170161} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1501947282 GameObject: m_ObjectHideFlags: 0 @@ -1696,5 +1597,4 @@ SceneRoots: - {fileID: 70737666} - {fileID: 1276835916} - {fileID: 1007206783} - - {fileID: 1333170163} - {fileID: 1643709738} diff --git a/Assets/_Project/Prefabs/EnemySpit.prefab b/Assets/_Project/Prefabs/EnemySpit.prefab deleted file mode 100644 index 878d2b77e..000000000 --- a/Assets/_Project/Prefabs/EnemySpit.prefab +++ /dev/null @@ -1,180 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &803404312977859260 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 544753127400808733} - - component: {fileID: 8071270979468917903} - - component: {fileID: 4362678855125273864} - m_Layer: 0 - m_Name: Model - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &544753127400808733 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 803404312977859260} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.4, z: 0} - m_LocalScale: {x: 1.3, y: 1.3, z: 1.3} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3572766465862231365} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8071270979468917903 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 803404312977859260} - m_Mesh: {fileID: 4300000, guid: a52e2d101bf32694d9012060774e97fd, type: 3} ---- !u!23 &4362678855125273864 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 803404312977859260} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 71e41e43b459a244abaf5acca76b89ee, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_MaskInteraction: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &3885353946372160549 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3572766465862231365} - - component: {fileID: 9053853372340598254} - - component: {fileID: 6834786618115927220} - - component: {fileID: 6800460489587750746} - m_Layer: 0 - m_Name: EnemySpit - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3572766465862231365 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 544753127400808733} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &9053853372340598254 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c16549610bfe4458aa9389201d072bb6, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.Entities.Hybrid::Unity.Entities.Hybrid.Baking.LinkedEntityGroupAuthoring ---- !u!114 &6834786618115927220 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7c79d771cedb4794bf100ce60df5f764, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.NetCode.Authoring.Hybrid::Unity.NetCode.GhostAuthoringComponent - HasOwner: 0 - SupportAutoCommandTarget: 1 - TrackInterpolationDelay: 0 - GhostGroup: 0 - UsePreSerialization: 0 - UseSingleBaseline: 0 - RollbackPredictedSpawnedGhostState: 0 - RollbackPredictionOnStructuralChanges: 1 - DefaultGhostMode: 0 - SupportedGhostModes: 3 - OptimizationMode: 0 - Importance: 1 - MaxSendRate: 0 - prefabId: ---- !u!114 &6800460489587750746 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ff79c8fbcacb8c34faad37d59836b5ac, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.EnemyProjectileAuthoring - Speed: 11 - Damage: 8 - Range: 16 diff --git a/Assets/_Project/Prefabs/EnemySpit.prefab.meta b/Assets/_Project/Prefabs/EnemySpit.prefab.meta deleted file mode 100644 index 5939614e6..000000000 --- a/Assets/_Project/Prefabs/EnemySpit.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 8a13ef653e5266741b0896084f74038f -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/_Project/Prefabs/Pylon.prefab b/Assets/_Project/Prefabs/Pylon.prefab deleted file mode 100644 index 17a6d0d49..000000000 --- a/Assets/_Project/Prefabs/Pylon.prefab +++ /dev/null @@ -1,201 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &366348267144353778 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5779750859554542924} - - component: {fileID: 7170592853470682160} - - component: {fileID: 738253848842457672} - m_Layer: 0 - m_Name: Model - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5779750859554542924 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 366348267144353778} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1.4, y: 3, z: 1.4} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3572766465862231365} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7170592853470682160 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 366348267144353778} - m_Mesh: {fileID: 4300000, guid: a52e2d101bf32694d9012060774e97fd, type: 3} ---- !u!23 &738253848842457672 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 366348267144353778} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 53c360a5b4f92c04caad3273e9bb5bef, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_MaskInteraction: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &3885353946372160549 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3572766465862231365} - - component: {fileID: 9053853372340598254} - - component: {fileID: 6834786618115927220} - - component: {fileID: 7685488391646220227} - - component: {fileID: 1225369404710843925} - m_Layer: 9 - m_Name: Pylon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3572766465862231365 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 5779750859554542924} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &9053853372340598254 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c16549610bfe4458aa9389201d072bb6, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.Entities.Hybrid::Unity.Entities.Hybrid.Baking.LinkedEntityGroupAuthoring ---- !u!114 &6834786618115927220 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7c79d771cedb4794bf100ce60df5f764, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.NetCode.Authoring.Hybrid::Unity.NetCode.GhostAuthoringComponent - HasOwner: 0 - SupportAutoCommandTarget: 1 - TrackInterpolationDelay: 0 - GhostGroup: 0 - UsePreSerialization: 0 - UseSingleBaseline: 0 - RollbackPredictedSpawnedGhostState: 0 - RollbackPredictionOnStructuralChanges: 1 - DefaultGhostMode: 0 - SupportedGhostModes: 3 - OptimizationMode: 0 - Importance: 1 - MaxSendRate: 0 - prefabId: ---- !u!114 &7685488391646220227 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3f03349205fb1fe43bf6aaff14fce0b7, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.StructureAuthoring - Kind: 6 - MaxHp: 150 ---- !u!65 &1225369404710843925 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 1.6, y: 2, z: 1.6} - m_Center: {x: 0, y: 1, z: 0} diff --git a/Assets/_Project/Prefabs/Pylon.prefab.meta b/Assets/_Project/Prefabs/Pylon.prefab.meta deleted file mode 100644 index 8eef5bec2..000000000 --- a/Assets/_Project/Prefabs/Pylon.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 7d0637ef90f120a4c9e2ba637dfc00af -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/_Project/Prefabs/Storage.prefab b/Assets/_Project/Prefabs/Storage.prefab deleted file mode 100644 index f926cd936..000000000 --- a/Assets/_Project/Prefabs/Storage.prefab +++ /dev/null @@ -1,360 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &3885353946372160549 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3572766465862231365} - - component: {fileID: 9053853372340598254} - - component: {fileID: 6834786618115927220} - - component: {fileID: 1499754650316338861} - m_Layer: 0 - m_Name: Storage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3572766465862231365 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7754515490259982108} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &9053853372340598254 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c16549610bfe4458aa9389201d072bb6, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.Entities.Hybrid::Unity.Entities.Hybrid.Baking.LinkedEntityGroupAuthoring ---- !u!114 &6834786618115927220 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7c79d771cedb4794bf100ce60df5f764, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.NetCode.Authoring.Hybrid::Unity.NetCode.GhostAuthoringComponent - HasOwner: 0 - SupportAutoCommandTarget: 1 - TrackInterpolationDelay: 0 - GhostGroup: 0 - UsePreSerialization: 0 - UseSingleBaseline: 0 - RollbackPredictedSpawnedGhostState: 0 - RollbackPredictionOnStructuralChanges: 1 - DefaultGhostMode: 0 - SupportedGhostModes: 3 - OptimizationMode: 0 - Importance: 1 - MaxSendRate: 0 - prefabId: ---- !u!114 &1499754650316338861 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8cc6285a9b8958a47a61a07550b7f792, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.SharedStorageContainerAuthoring - InteractRadius: 2 ---- !u!1 &4342778333059441971 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8611665802642757146} - - component: {fileID: 6598987389968571053} - - component: {fileID: 1872235609085155134} - m_Layer: 0 - m_Name: SM_Prop_Chest_01_Latch - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8611665802642757146 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4342778333059441971} - serializedVersion: 2 - m_LocalRotation: {x: -0.027002363, y: 0, z: -0, w: 0.9996354} - m_LocalPosition: {x: -4.3326118e-10, y: 0.055391826, z: 0.53040093} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6847878535001934851} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6598987389968571053 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4342778333059441971} - m_Mesh: {fileID: 4300004, guid: 2b3d40ab397966c46866a5ae4769602b, type: 3} ---- !u!23 &1872235609085155134 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4342778333059441971} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 71e41e43b459a244abaf5acca76b89ee, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_MaskInteraction: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &4346114154671337569 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6847878535001934851} - - component: {fileID: 5242650844534680107} - - component: {fileID: 1017291060828274944} - m_Layer: 0 - m_Name: SM_Prop_Chest_01_Lid - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6847878535001934851 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4346114154671337569} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 4.3326118e-10, y: 0.32239768, z: -0.25041196} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8611665802642757146} - m_Father: {fileID: 7754515490259982108} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5242650844534680107 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4346114154671337569} - m_Mesh: {fileID: 4300002, guid: 2b3d40ab397966c46866a5ae4769602b, type: 3} ---- !u!23 &1017291060828274944 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4346114154671337569} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 71e41e43b459a244abaf5acca76b89ee, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_MaskInteraction: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &4577827258028593592 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7754515490259982108} - - component: {fileID: 5772852026247014718} - - component: {fileID: 8850822068282186422} - m_Layer: 0 - m_Name: Model - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7754515490259982108 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4577827258028593592} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 6847878535001934851} - m_Father: {fileID: 3572766465862231365} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5772852026247014718 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4577827258028593592} - m_Mesh: {fileID: 4300000, guid: 2b3d40ab397966c46866a5ae4769602b, type: 3} ---- !u!23 &8850822068282186422 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4577827258028593592} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 71e41e43b459a244abaf5acca76b89ee, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_MaskInteraction: 0 - m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/_Project/Prefabs/Storage.prefab.meta b/Assets/_Project/Prefabs/Storage.prefab.meta deleted file mode 100644 index 30040404e..000000000 --- a/Assets/_Project/Prefabs/Storage.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 6636e906a2ac46345889f5517658be67 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/_Project/Prefabs/Wall.prefab b/Assets/_Project/Prefabs/Wall.prefab deleted file mode 100644 index 292654088..000000000 --- a/Assets/_Project/Prefabs/Wall.prefab +++ /dev/null @@ -1,202 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &551144932704427983 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7825746404949508119} - - component: {fileID: 4477892480858664848} - - component: {fileID: 4489297219945009455} - m_Layer: 0 - m_Name: Model - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7825746404949508119 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 551144932704427983} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3572766465862231365} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &4477892480858664848 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 551144932704427983} - m_Mesh: {fileID: 4754861833707048916, guid: d5f5c8f8a3300c249a861a444f85e05d, type: 3} ---- !u!23 &4489297219945009455 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 551144932704427983} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 2a95f9ff80948c643a57b9e94a98eb3f, type: 2} - - {fileID: 2100000, guid: 53c360a5b4f92c04caad3273e9bb5bef, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_MaskInteraction: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &3885353946372160549 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3572766465862231365} - - component: {fileID: 9053853372340598254} - - component: {fileID: 6834786618115927220} - - component: {fileID: 8793146551006314905} - - component: {fileID: 7779358222264100756} - m_Layer: 9 - m_Name: Wall - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3572766465862231365 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7825746404949508119} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &9053853372340598254 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c16549610bfe4458aa9389201d072bb6, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.Entities.Hybrid::Unity.Entities.Hybrid.Baking.LinkedEntityGroupAuthoring ---- !u!114 &6834786618115927220 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7c79d771cedb4794bf100ce60df5f764, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.NetCode.Authoring.Hybrid::Unity.NetCode.GhostAuthoringComponent - HasOwner: 0 - SupportAutoCommandTarget: 1 - TrackInterpolationDelay: 0 - GhostGroup: 0 - UsePreSerialization: 0 - UseSingleBaseline: 0 - RollbackPredictedSpawnedGhostState: 0 - RollbackPredictionOnStructuralChanges: 1 - DefaultGhostMode: 0 - SupportedGhostModes: 3 - OptimizationMode: 0 - Importance: 1 - MaxSendRate: 0 - prefabId: ---- !u!114 &8793146551006314905 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3f03349205fb1fe43bf6aaff14fce0b7, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.StructureAuthoring - Kind: 5 - MaxHp: 150 ---- !u!65 &7779358222264100756 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3885353946372160549} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 0.58636487, y: 0.600076, z: 0.9781774} - m_Center: {x: 0, y: 0, z: 0.083845735} diff --git a/Assets/_Project/Prefabs/Wall.prefab.meta b/Assets/_Project/Prefabs/Wall.prefab.meta deleted file mode 100644 index a566ad1a8..000000000 --- a/Assets/_Project/Prefabs/Wall.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 1e321aea244cc484f99c1cdd68cb01c4 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/_Project/Scripts/Client/Debug/ClassSwitchHotkeySystem.cs b/Assets/_Project/Scripts/Client/Debug/ClassSwitchHotkeySystem.cs index af0e1280e..ef2c9805c 100644 --- a/Assets/_Project/Scripts/Client/Debug/ClassSwitchHotkeySystem.cs +++ b/Assets/_Project/Scripts/Client/Debug/ClassSwitchHotkeySystem.cs @@ -6,8 +6,8 @@ using UnityEngine.InputSystem; namespace ProjectM.Client { /// - /// EDITOR-ONLY dev hotkey to switch the local player's class while playtesting: F1 = Warrior, - /// F2 = Ranger. The 's Class buttons only live in the DevSandbox scene, so this + /// EDITOR-ONLY dev hotkey to switch the local player's class while playtesting: F1 = Bathynaut, + /// F2 = Harpooner. The 's Class buttons only live in the DevSandbox scene, so this /// keybind makes the swap reachable in the real menu -> Game flow too (no scene wiring needed). It enqueues the /// SAME authoritative (DebugOp.SetClass) the overlay buttons /// do, via — the server strips/re-seeds the class traits, swaps the Fire @@ -24,9 +24,9 @@ namespace ProjectM.Client return; if (kb.f1Key.wasPressedThisFrame) - DebugCommandSendSystem.SetWarrior(); + DebugCommandSendSystem.SetBathynaut(); else if (kb.f2Key.wasPressedThisFrame) - DebugCommandSendSystem.SetRanger(); + DebugCommandSendSystem.SetHarpooner(); } } } diff --git a/Assets/_Project/Scripts/Client/Debug/DebugCommandSendSystem.cs b/Assets/_Project/Scripts/Client/Debug/DebugCommandSendSystem.cs index a1c78d432..fb78291e1 100644 --- a/Assets/_Project/Scripts/Client/Debug/DebugCommandSendSystem.cs +++ b/Assets/_Project/Scripts/Client/Debug/DebugCommandSendSystem.cs @@ -39,8 +39,8 @@ namespace ProjectM.Client public static void SetTuning(byte knob, float value) => Send(DebugOp.SetTuning, knob, Mathf.RoundToInt(value * 1000f)); /// Swap the sender's class to (a byte); server-authoritative (class-switch dev tool). public static void SetClass(byte classId) => Send(DebugOp.SetClass, classId); - public static void SetWarrior() => SetClass(ClassTraits.WarriorClass); - public static void SetRanger() => SetClass(ClassTraits.RangerClass); + public static void SetBathynaut() => SetClass(ClassTraits.BathynautFrame); + public static void SetHarpooner() => SetClass(ClassTraits.HarpoonerFrame); /// GYM: spawn enemy KIND (a byte) near the sender, count times. public static void SpawnEnemy(byte kind, int count = 1) => Send(DebugOp.SpawnEnemy, kind, count); diff --git a/Assets/_Project/Scripts/Client/Debug/DebugOverlay.cs b/Assets/_Project/Scripts/Client/Debug/DebugOverlay.cs index 0e1313f22..7d7262cfb 100644 --- a/Assets/_Project/Scripts/Client/Debug/DebugOverlay.cs +++ b/Assets/_Project/Scripts/Client/Debug/DebugOverlay.cs @@ -69,8 +69,8 @@ namespace ProjectM.Client GUILayout.Space(6); GUILayout.Label("- Class (F1/F2) -"); GUILayout.BeginHorizontal(); - if (GUILayout.Button("Warrior")) DebugCommandSendSystem.SetWarrior(); - if (GUILayout.Button("Ranger")) DebugCommandSendSystem.SetRanger(); + if (GUILayout.Button("Bathynaut")) DebugCommandSendSystem.SetBathynaut(); + if (GUILayout.Button("Harpooner")) DebugCommandSendSystem.SetHarpooner(); GUILayout.EndHorizontal(); GUILayout.Space(6); diff --git a/Assets/_Project/Scripts/Client/UI/HowToPlayPanel.cs b/Assets/_Project/Scripts/Client/UI/HowToPlayPanel.cs index 33e29832d..243ae8358 100644 --- a/Assets/_Project/Scripts/Client/UI/HowToPlayPanel.cs +++ b/Assets/_Project/Scripts/Client/UI/HowToPlayPanel.cs @@ -68,8 +68,8 @@ namespace ProjectM.Client switch (idx) { case 0: // Controls (chosen class) - bool ranger = WorldLauncher.SelectedClass == (byte)FrameKind.Ranger; - Head(c, ranger ? "CLASS: Ranger (ranged anchor)" : "CLASS: Warrior (melee anchor)"); + bool ranger = WorldLauncher.SelectedClass == (byte)FrameKind.Harpooner; + Head(c, ranger ? "CLASS: Harpooner (ranged anchor)" : "CLASS: Bathynaut (melee anchor)"); Body(c, "Move — WASD / Left Stick"); Body(c, "Aim — Mouse cursor / Right Stick"); Body(c, "Attack — LMB / X (3-hit melee combo — the finisher hits hard)"); diff --git a/Assets/_Project/Scripts/Client/UI/MainMenuController.cs b/Assets/_Project/Scripts/Client/UI/MainMenuController.cs index 0870df5d4..0868c90a1 100644 --- a/Assets/_Project/Scripts/Client/UI/MainMenuController.cs +++ b/Assets/_Project/Scripts/Client/UI/MainMenuController.cs @@ -78,8 +78,8 @@ namespace ProjectM.Client void BuildMain(VisualElement root) { _mainPanel = MenuUi.FullScreenRoot(true); - var card = MenuUi.Card("PROJECT M"); - card.Add(MenuUi.Caption("Frontier colony — co-op")); + var card = MenuUi.Card("LANTERN"); + card.Add(MenuUi.Caption("Light is territory — co-op descent")); // Why the last session ended (connection watchdog / bad join address) — shown once, then cleared. if (!string.IsNullOrEmpty(SessionEnd.Reason)) { @@ -91,7 +91,7 @@ namespace ProjectM.Client card.Add(reason); } - // Slice 2: class picker -> sets WorldLauncher.SelectedClass for the next session (Warrior melee / Ranger ranged). + // Slice 2: class picker -> sets WorldLauncher.SelectedClass for the next session (Bathynaut melee / Harpooner ranged). _classLabel = new Label(ClassName(WorldLauncher.SelectedClass)); _classLabel.style.unityTextAlign = TextAnchor.MiddleCenter; _classLabel.style.marginTop = 6; _classLabel.style.marginBottom = 2; @@ -99,8 +99,8 @@ namespace ProjectM.Client var classRow = new VisualElement(); classRow.style.flexDirection = FlexDirection.Row; classRow.style.justifyContent = Justify.Center; - classRow.Add(MenuUi.Button("Warrior", () => SelectClass((byte)FrameKind.Warrior))); - classRow.Add(MenuUi.Button("Ranger", () => SelectClass((byte)FrameKind.Ranger))); + classRow.Add(MenuUi.Button("Bathynaut", () => SelectClass((byte)FrameKind.Bathynaut))); + classRow.Add(MenuUi.Button("Harpooner", () => SelectClass((byte)FrameKind.Harpooner))); card.Add(classRow); card.Add(MenuUi.Button("Single Player", () => Launch(SessionMode.Single, false))); @@ -118,18 +118,9 @@ namespace ProjectM.Client card.Add(MenuUi.Button("Settings", ShowSettings)); card.Add(MenuUi.Button("How to Play", ShowHowToPlay)); - // Re-arm the first-run coach-marks (clears the client-local completed-step mask). The next session - // replays them; the How-to-Play card stays available regardless. - Button replayBtn = null; - replayBtn = MenuUi.Button("Replay Tutorial", () => - { - var s = SettingsService.Current; - s.OnboardingMask = 0; - s.TutorialHints = 1; - SettingsService.Save(s); - if (replayBtn != null) replayBtn.text = "Tutorial armed ✓"; - }); - card.Add(replayBtn); + // 2026-08-07 audit purge: the "Replay Tutorial" button re-armed first-run coach-marks whose system + // DR-051 deleted — it wrote OnboardingMask/TutorialHints that nothing reads. Removed rather than left + // as a button that visibly does nothing. The How-to-Play card above is the real reference. card.Add(MenuUi.Button("Quit", Quit)); @@ -149,7 +140,7 @@ namespace ProjectM.Client if (_classLabel != null) _classLabel.text = ClassName(classId); } - static string ClassName(byte classId) => classId == (byte)FrameKind.Ranger ? "CLASS: Ranger (ranged)" : "CLASS: Warrior (melee)"; + static string ClassName(byte classId) => classId == (byte)FrameKind.Harpooner ? "CLASS: Harpooner (ranged)" : "CLASS: Bathynaut (melee)"; void ShowSettings() { diff --git a/Assets/_Project/Scripts/Client/UI/SettingsScreen.cs b/Assets/_Project/Scripts/Client/UI/SettingsScreen.cs index 0f9850c65..59c8525b3 100644 --- a/Assets/_Project/Scripts/Client/UI/SettingsScreen.cs +++ b/Assets/_Project/Scripts/Client/UI/SettingsScreen.cs @@ -59,22 +59,9 @@ namespace ProjectM.Client card.Add(VolumeRow("Music", working.Music, v => { working.Music = v; GameVolume.Music = v; })); card.Add(VolumeRow("SFX", working.Sfx, v => { working.Sfx = v; GameVolume.Sfx = v; })); - // ---------------- Onboarding ---------------- - card.Add(MenuUi.Caption("— ONBOARDING —")); - string[] onoff = { "Off", "On" }; - card.Add(CycleRow("Tutorial Hints", - () => onoff[Mathf.Clamp(working.TutorialHints, 0, 1)], - dir => working.TutorialHints = Wrap(working.TutorialHints + dir, 2))); - - // DEV: forces the first-run coach-marks to replay fresh on every launch (wipes the completed-step mask at - // each boot — see SettingsService.Boot). Off = normal once-only first-run behaviour. - #if UNITY_EDITOR // D7: dev-only onboarding replay toggle — hidden from the public demo Settings so a player can't lock themselves into permanent tutorial - -card.Add(CycleRow("Force Each Launch (Dev)", - () => onoff[Mathf.Clamp(working.ForceOnboardingEachLaunch, 0, 1)], - dir => working.ForceOnboardingEachLaunch = Wrap(working.ForceOnboardingEachLaunch + dir, 2))); -#endif - + // 2026-08-07 audit purge: the ONBOARDING section (Tutorial Hints + the dev Force-Each-Launch toggle) + // drove coach-marks DR-051 deleted. The settings still round-trip the fields so an existing settings + // file loads unchanged — they just no longer pretend to be a control. // ---------------- Buttons ---------------- var apply = MenuUi.Button("Apply", () => SettingsService.SaveAndApply(working)); diff --git a/Assets/_Project/Scripts/Client/UI/WorldLauncher.cs b/Assets/_Project/Scripts/Client/UI/WorldLauncher.cs index 470f5ec95..b4cddc748 100644 --- a/Assets/_Project/Scripts/Client/UI/WorldLauncher.cs +++ b/Assets/_Project/Scripts/Client/UI/WorldLauncher.cs @@ -29,7 +29,7 @@ namespace ProjectM.Client public static bool Busy { get; private set; } /// Slice 2: the frame chosen in the menu (a FrameKind byte), seeded into the client world at session start. - public static byte SelectedClass = (byte)FrameKind.Warrior; + public static byte SelectedClass = (byte)FrameKind.Bathynaut; /// The mode of the most recently started session — the HUD's outcome banner branches on it /// (single: PLAY AGAIN restarts; co-op: the honest exit is a clean teardown for everyone). diff --git a/Assets/_Project/Scripts/Server/Connection/GoInGameServerSystem.cs b/Assets/_Project/Scripts/Server/Connection/GoInGameServerSystem.cs index 7530417ca..684d7406e 100644 --- a/Assets/_Project/Scripts/Server/Connection/GoInGameServerSystem.cs +++ b/Assets/_Project/Scripts/Server/Connection/GoInGameServerSystem.cs @@ -72,7 +72,7 @@ namespace ProjectM.Server // Slice 2 -> LANTERN: seed the chosen frame on the just-instantiated player. The 4-socket Spark // loadout IS the ability model (the legacy single-AbilityRef path is deleted); the DRG-asymmetry // traits ride permanent StatModifiers (CharacterStatsRef stays Default -> deltas replicate via the - // OwnerSendType.All buffer). 0 -> Warrior/Bathynaut. + // OwnerSendType.All buffer). 0 -> Bathynaut/Bathynaut. byte classId = ClassTraits.Normalize(goReq.ValueRO.ClassId); ClassTraits.AppendSeeds(classId, player, ecb); // Expedition redesign: the server-only class anchor the meta systems key on (born-correct meta diff --git a/Assets/_Project/Scripts/Simulation/Combat/ClassSelectRequest.cs b/Assets/_Project/Scripts/Simulation/Combat/ClassSelectRequest.cs index 3687723a1..6ff7b3667 100644 --- a/Assets/_Project/Scripts/Simulation/Combat/ClassSelectRequest.cs +++ b/Assets/_Project/Scripts/Simulation/Combat/ClassSelectRequest.cs @@ -10,7 +10,7 @@ namespace ProjectM.Simulation /// public struct ClassSelectRequest : IRpcCommand { - /// Requested class id (0/unknown → Warrior via ClassTraits.Normalize). + /// Requested class id (0/unknown → Bathynaut via ClassTraits.Normalize). public byte ClassId; } } diff --git a/Assets/_Project/Scripts/Simulation/Combat/ClassSelection.cs b/Assets/_Project/Scripts/Simulation/Combat/ClassSelection.cs index 9970aa5c1..c05973d67 100644 --- a/Assets/_Project/Scripts/Simulation/Combat/ClassSelection.cs +++ b/Assets/_Project/Scripts/Simulation/Combat/ClassSelection.cs @@ -7,7 +7,7 @@ namespace ProjectM.Simulation /// singleton by the menu / WorldLauncher before going in-game. picks it up /// (GoInGameClientSystem) so the server seeds the right class at spawn. NOT replicated — it is client-local /// intent; the class travels to the server via the RPC, then back to all clients via the seeded StatModifiers + - /// the replicated AbilityRef. 0 = unset (the server defaults to Warrior). + /// the replicated AbilityRef. 0 = unset (the server defaults to Bathynaut). /// public struct ClassSelection : IComponentData { diff --git a/Assets/_Project/Scripts/Simulation/Combat/ClassSwapUtil.cs b/Assets/_Project/Scripts/Simulation/Combat/ClassSwapUtil.cs index 4d4d3f9fa..e1a8d1b34 100644 --- a/Assets/_Project/Scripts/Simulation/Combat/ClassSwapUtil.cs +++ b/Assets/_Project/Scripts/Simulation/Combat/ClassSwapUtil.cs @@ -26,7 +26,7 @@ namespace ProjectM.Simulation /// Heal/down-clamp a LIVING player's Current to the new class's full max (blob base folded with the /// just-reseeded , like StatRecomputeSystem). Doubles as the down-clamp when the new - /// class's max is lower (Warrior +30 HP vs Ranger -15%). No-op on a corpse (Current<=0) — respawn refills. + /// class's max is lower (Bathynaut +30 HP vs Harpooner -15%). No-op on a corpse (Current<=0) — respawn refills. public static void HealClamp(ref Health health, float baseMaxHealth, DynamicBuffer mods) { if (health.Current > 0f) diff --git a/Assets/_Project/Scripts/Simulation/Combat/ClassTraits.cs b/Assets/_Project/Scripts/Simulation/Combat/ClassTraits.cs index 0f3e51224..6238f863f 100644 --- a/Assets/_Project/Scripts/Simulation/Combat/ClassTraits.cs +++ b/Assets/_Project/Scripts/Simulation/Combat/ClassTraits.cs @@ -11,11 +11,11 @@ namespace ProjectM.Simulation /// /// Trait deltas seed onto the character (no per-class blob row needed — the /// deltas ride the replicated StatModifier buffer, OwnerSendType.All, so the owning client folds the correct - /// EffectiveCharacterStats). The DRG-asymmetry (operator-locked): Warrior = melee bruiser (tankier, - /// slower, harder + longer-reach melee via MeleeDamage/MeleeRange); Ranger = ranged anchor (faster, - /// squishier, longer projectile range + a wider auto-target assist — the co-op synergy hook the Warrior's - /// knockback feeds). The Warrior's Fire = the aim-directed cone (); the - /// Ranger's Fire = the default projectile (). + /// EffectiveCharacterStats). The DRG-asymmetry (operator-locked): Bathynaut = melee bruiser (tankier, + /// slower, harder + longer-reach melee via MeleeDamage/MeleeRange); Harpooner = ranged anchor (faster, + /// squishier, longer projectile range + a wider auto-target assist — the co-op synergy hook the Bathynaut's + /// knockback feeds). The Bathynaut's Fire = the aim-directed cone (); the + /// Harpooner's Fire = the default projectile (). /// /// /// swaps an already-spawned player's class IN PLACE (strip the old class seeds, re-seed @@ -26,28 +26,28 @@ namespace ProjectM.Simulation /// public static class ClassTraits { - public const byte WarriorClass = (byte)FrameKind.Warrior; - public const byte RangerClass = (byte)FrameKind.Ranger; + public const byte BathynautFrame = (byte)FrameKind.Bathynaut; + public const byte HarpoonerFrame = (byte)FrameKind.Harpooner; /// How many trait modifiers a class seeds (each on a distinct SourceId at ClassSourceId + i). public const int ClassSeedCount = 4; - /// Normalize a wire ClassId to a known class (0 / unknown -> Warrior). - public static byte Normalize(byte classId) => classId == RangerClass ? RangerClass : WarriorClass; + /// Normalize a wire ClassId to a known class (0 / unknown -> Bathynaut). + public static byte Normalize(byte classId) => classId == HarpoonerFrame ? HarpoonerFrame : BathynautFrame; - /// The Fire-slot ability id for a class (Warrior = cone, Ranger = the default projectile). + /// The Fire-slot ability id for a class (Bathynaut = cone, Harpooner = the default projectile). - /// The class a Fire-slot ability id implies — the exact inverse of (Ranger + /// The class a Fire-slot ability id implies — the exact inverse of (Harpooner /// iff Primary). Lets the CLIENT derive the local class from the replicated (tracks /// the dev class-switch, unlike the menu's ClassSelection static; PlayerClass itself is server-only). - /// Default 4-socket Spark loadout per frame (Harpooner = the Ranger slot, line-and-iron; Bathynaut = - /// the Warrior slot, anchor-and-crash). Tunable; drives the gym's per-frame default sockets (Build Spec step 5). + /// Default 4-socket Spark loadout per frame (Harpooner = the Harpooner slot, line-and-iron; Bathynaut = + /// the Bathynaut slot, anchor-and-crash). Tunable; drives the gym's per-frame default sockets (Build Spec step 5). public static void FrameLoadout(byte classId, out byte s0, out byte s1, out byte s2, out byte s3) { - if (classId == RangerClass) // Harpooner: reel primary + mobility + skillshots + if (classId == HarpoonerFrame) // Harpooner: reel primary + mobility + skillshots { s0 = (byte)AbilityId.HookPull; s1 = (byte)AbilityId.Blink; s2 = (byte)AbilityId.DecoyWisp; s3 = (byte)AbilityId.LightZone; } @@ -70,7 +70,7 @@ namespace ProjectM.Simulation static void Seeds(byte classId, Span seeds) { uint src = Tuning.ClassSourceId; - if (classId == RangerClass) + if (classId == HarpoonerFrame) { seeds[0] = new StatModifier { Target = (byte)StatTarget.MoveSpeed, Op = (byte)ModOp.PercentMult, Value = 0.15f, SourceId = src }; seeds[1] = new StatModifier { Target = (byte)StatTarget.MaxHealth, Op = (byte)ModOp.PercentMult, Value = -0.15f, SourceId = src + 1u }; diff --git a/Assets/_Project/Scripts/Simulation/Combat/StatIds.cs b/Assets/_Project/Scripts/Simulation/Combat/StatIds.cs index 0d9356f80..55584147c 100644 --- a/Assets/_Project/Scripts/Simulation/Combat/StatIds.cs +++ b/Assets/_Project/Scripts/Simulation/Combat/StatIds.cs @@ -7,7 +7,7 @@ namespace ProjectM.Simulation Primary = 1, FastLight = 2, SlowHeavy = 3, - WarriorCone = 4, // Slice 2: the Warrior's aim-directed short-range cone secondary (Fire slot) + WarriorCone = 4, // Slice 2: the Bathynaut's aim-directed short-range cone secondary (Fire slot) // LANTERN Phase 1 Sparks (the gym's first socketables): DecoyWisp = 5, // Aoe/spawn: a decoy ghost that draws aggro HookPull = 6, // Projectile + pull: the Harpooner reel (yanks the hit target in) @@ -23,8 +23,8 @@ namespace ProjectM.Simulation { None = 0, Default = 1, - Warrior = 2, // Bathynaut-lineage melee-anchor bruiser (tankier, slower, longer/harder melee) - Ranger = 3, // Harpooner-lineage ranged-anchor (squishier, faster, longer projectile range; weaker melee) + Bathynaut = 2, // Bathynaut-lineage melee-anchor bruiser (tankier, slower, longer/harder melee) + Harpooner = 3, // Harpooner-lineage ranged-anchor (squishier, faster, longer projectile range; weaker melee) } /// @@ -42,8 +42,8 @@ namespace ProjectM.Simulation MoveSpeed = 6, TurnRate = 7, MaxHealth = 8, - MeleeDamage = 9, // Slice 2: melee combo + Warrior cone damage axis (folded onto TuningConfig.MeleeDamage) - MeleeRange = 10, // Slice 2: melee reach axis (Warrior longer, Ranger shorter) + MeleeDamage = 9, // Slice 2: melee combo + Bathynaut cone damage axis (folded onto TuningConfig.MeleeDamage) + MeleeRange = 10, // Slice 2: melee reach axis (Bathynaut longer, Harpooner shorter) } /// How a combines into the effective stat. diff --git a/Assets/_Project/Scripts/Simulation/Connection/GoInGameRequest.cs b/Assets/_Project/Scripts/Simulation/Connection/GoInGameRequest.cs index d8b8a03c7..0666e7bba 100644 --- a/Assets/_Project/Scripts/Simulation/Connection/GoInGameRequest.cs +++ b/Assets/_Project/Scripts/Simulation/Connection/GoInGameRequest.cs @@ -7,5 +7,5 @@ namespace ProjectM.Simulation /// NetworkStreamInGame to the connection (enabling snapshot/command flow) and spawns the /// client's player ghost. Lives in Simulation so both worlds see the type for RPC source-gen. /// - public struct GoInGameRequest : IRpcCommand { public byte ClassId; } // Slice 2: per-player class (FrameKind byte; 0 -> server defaults to Warrior) + public struct GoInGameRequest : IRpcCommand { public byte ClassId; } // Slice 2: per-player class (FrameKind byte; 0 -> server defaults to Bathynaut) } diff --git a/Assets/_Project/Scripts/Simulation/Debug/DebugCommandRequest.cs b/Assets/_Project/Scripts/Simulation/Debug/DebugCommandRequest.cs index 0a5d8ade6..dd5df892d 100644 --- a/Assets/_Project/Scripts/Simulation/Debug/DebugCommandRequest.cs +++ b/Assets/_Project/Scripts/Simulation/Debug/DebugCommandRequest.cs @@ -59,9 +59,9 @@ namespace ProjectM.Simulation /// Set the ArgA to ArgB/1000f (live dash/Charger feel-tuning; MC-0). public const byte SetTuning = 12; - /// Swap the sender's class to ArgA (a byte: Warrior=2 / Ranger=3). + /// Swap the sender's class to ArgA (a byte: Bathynaut=2 / Harpooner=3). /// Strips the old class trait seeds, re-seeds the new ones, swaps the Fire ability, and heals a living - /// player to the new class's max. Editor-only dev tool (class-switch); 0 / unknown -> Warrior. + /// player to the new class's max. Editor-only dev tool (class-switch); 0 / unknown -> Bathynaut. public const byte SetClass = 13; /// GYM (editor): spawn ArgA near the sender, ArgB times (default 1). Reads the baked GymEnemyRoster. diff --git a/Assets/_Project/Scripts/Simulation/Persistence/SaveData.cs b/Assets/_Project/Scripts/Simulation/Persistence/SaveData.cs index 3a5f203cc..0f773f96b 100644 --- a/Assets/_Project/Scripts/Simulation/Persistence/SaveData.cs +++ b/Assets/_Project/Scripts/Simulation/Persistence/SaveData.cs @@ -11,7 +11,7 @@ namespace ProjectM.Simulation } /// One persisted per-class PERMANENT meta-upgrade tier (v6). ClassId = the normalized FrameKind - /// (Warrior=2/Ranger=3); UpgradeId = the append-only meta-catalog key (unknown ids round-trip preserved and are + /// (Bathynaut=2/Harpooner=3); UpgradeId = the append-only meta-catalog key (unknown ids round-trip preserved and are /// skipped live); Tier clamps to the catalog's MaxTier at seed/shop/spend, never at rest. [Serializable] public struct MetaUpgradeSave diff --git a/Assets/_Project/Scripts/Simulation/Tuning.cs b/Assets/_Project/Scripts/Simulation/Tuning.cs index 80804e24e..fbca8aa6c 100644 --- a/Assets/_Project/Scripts/Simulation/Tuning.cs +++ b/Assets/_Project/Scripts/Simulation/Tuning.cs @@ -237,7 +237,7 @@ namespace ProjectM.Simulation /// Base for per-slot equipment SourceIds; slot i tags its mods with EquipSourceIdBase + i. public const uint EquipSourceIdBase = 0x00E91000u; - /// Slice 2: base SourceId for a class's permanent trait StatModifiers (Warrior/Ranger seeds). + /// Slice 2: base SourceId for a class's permanent trait StatModifiers (Bathynaut/Harpooner seeds). /// DISJOINT from equipment/upgrade/debug ranges; class traits are NEVER stripped (permanent per session). public const uint ClassSourceId = 0x00C1A550u; } diff --git a/Assets/_Project/Subscenes/Gameplay.unity b/Assets/_Project/Subscenes/Gameplay.unity index 28882a7e0..2516dbcda 100644 --- a/Assets/_Project/Subscenes/Gameplay.unity +++ b/Assets/_Project/Subscenes/Gameplay.unity @@ -2401,54 +2401,6 @@ Transform: - {fileID: 1683222666} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &380046993 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 380046995} - - component: {fileID: 380046994} - m_Layer: 0 - m_Name: StructureCatalog - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &380046994 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 380046993} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 40093ed42072f5a4889f5f62f510aa27, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.StructureCatalogAuthoring - WallPrefab: {fileID: 3885353946372160549, guid: 1e321aea244cc484f99c1cdd68cb01c4, type: 3} - WallCostBiomass: 4 - PylonPrefab: {fileID: 3885353946372160549, guid: 7d0637ef90f120a4c9e2ba637dfc00af, type: 3} - PylonCostOre: 2 ---- !u!4 &380046995 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 380046993} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &383191086 GameObject: m_ObjectHideFlags: 0 @@ -2536,6 +2488,11 @@ MonoBehaviour: - {fileID: 11400000, guid: b594c2953f8304189b91ca8c96a9d0c4, type: 2} - {fileID: 11400000, guid: 601a090742e5341cc9ee1f25d215136b, type: 2} - {fileID: 11400000, guid: 4cf5f3ead961b1242b0e3c79de96fa44, type: 2} + - {fileID: 11400000, guid: c1e799ca78899bc4d97be9399233606c, type: 2} + - {fileID: 11400000, guid: f57d643df7f809b40b9804bb9f8afa60, type: 2} + - {fileID: 11400000, guid: 5e9c506bc3657b44ab7869c037a9e9ca, type: 2} + - {fileID: 11400000, guid: f39412c52281a3e4590f77e94c9911e7, type: 2} + - {fileID: 11400000, guid: 66b9bc054810f3a4a808dd88aa2d539f, type: 2} Characters: - {fileID: 11400000, guid: e675b529048144a41a2054c729180bce, type: 2} --- !u!4 &409538539 @@ -4309,59 +4266,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 4.0118155, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &722706768 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 722706770} - - component: {fileID: 722706769} - m_Layer: 0 - m_Name: ItemDatabase - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &722706769 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 722706768} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5ee44dc3bc9f3164592195d4068be8d1, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.ItemDatabaseAuthoring - Items: - - {fileID: 11400000, guid: 938a882b6fbd50d4c9a051ddabc5829b, type: 2} - - {fileID: 11400000, guid: b37686ead19d68d45b84e031bfe99f59, type: 2} - - {fileID: 11400000, guid: a2a0e6d3ae0218d458d2b5305891ce89, type: 2} - - {fileID: 11400000, guid: 441dbd6676662a2459607f3b75ee821b, type: 2} - - {fileID: 11400000, guid: 4ed399a329eb6d847921aef05bde213d, type: 2} - - {fileID: 11400000, guid: c09dc2c47feaa784486e21a3b7e4cb10, type: 2} - - {fileID: 11400000, guid: b69a26c8de798624b82e6799f8130291, type: 2} - - {fileID: 11400000, guid: 31ec40cfc6e81ef4ab9bbce57a40621e, type: 2} ---- !u!4 &722706770 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 722706768} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &746604218 GameObject: m_ObjectHideFlags: 0 @@ -8576,51 +8480,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 4.156388, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &1427126582 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1427126584} - - component: {fileID: 1427126583} - m_Layer: 0 - m_Name: BoonCatalog - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1427126583 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1427126582} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 075a570afb8ef9541b6307280b53f4e7, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.BoonCatalogAuthoring - Rows: [] ---- !u!4 &1427126584 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1427126582} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1428056924 GameObject: m_ObjectHideFlags: 0 @@ -9409,51 +9268,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 3.2950234, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &1518140826 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1518140828} - - component: {fileID: 1518140827} - m_Layer: 0 - m_Name: MetaCatalog - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1518140827 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1518140826} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f007f7870c0afd4e93ea5b86fd21c8b, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.MetaCatalogAuthoring - Rows: [] ---- !u!4 &1518140828 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1518140826} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1529835794 GameObject: m_ObjectHideFlags: 0 @@ -11394,52 +11208,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 3.8984706, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &1871304248 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1871304250} - - component: {fileID: 1871304249} - m_Layer: 0 - m_Name: SpitterProjectileConfig - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1871304249 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1871304248} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4ce5223c5fd56694c81991e1bb1232de, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.SpitterProjectilePrefabAuthoring - ProjectilePrefab: {fileID: 3885353946372160549, guid: 8a13ef653e5266741b0896084f74038f, type: 3} - MaxLiveProjectiles: 24 ---- !u!4 &1871304250 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1871304248} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1897463016 GameObject: m_ObjectHideFlags: 0 @@ -11652,52 +11420,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 3.0690043, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &1930969065 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1930969067} - - component: {fileID: 1930969066} - m_Layer: 0 - m_Name: StorageSpawner - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1930969066 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1930969065} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 968b8c85b6f69ae438e56cb1f19a2450, type: 3} - m_Name: - m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.StorageSpawnerAuthoring - ContainerPrefab: {fileID: 3885353946372160549, guid: 6636e906a2ac46345889f5517658be67, type: 3} - Cell: {x: 19, y: 19} ---- !u!4 &1930969067 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1930969065} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1936047021 GameObject: m_ObjectHideFlags: 0 @@ -12982,20 +12704,14 @@ SceneRoots: - {fileID: 409538539} - {fileID: 1435545288} - {fileID: 874705788} - - {fileID: 1930969067} - {fileID: 1301940441} - {fileID: 2038854532} - {fileID: 17637047} - {fileID: 1192434518} - - {fileID: 380046995} - {fileID: 175286058} - {fileID: 1698085403} - {fileID: 450973138} - {fileID: 379192464} - - {fileID: 722706770} - {fileID: 1957070224} - - {fileID: 1871304250} - - {fileID: 1427126584} - - {fileID: 1518140828} - {fileID: 125166252} - {fileID: 1106173031} diff --git a/Assets/_Project/Tests/EditMode/ClassTraitsTests.cs b/Assets/_Project/Tests/EditMode/ClassTraitsTests.cs index ed87e7f88..adcb47b36 100644 --- a/Assets/_Project/Tests/EditMode/ClassTraitsTests.cs +++ b/Assets/_Project/Tests/EditMode/ClassTraitsTests.cs @@ -7,7 +7,7 @@ namespace ProjectM.Tests { /// /// Slice 2 — the pure class mapping: which Fire ability each class gets, and that the DRG-asymmetric trait - /// seeds fold the right direction (Warrior = melee bruiser / tankier / slower; Ranger = ranged / faster / + /// seeds fold the right direction (Bathynaut = melee bruiser / tankier / slower; Harpooner = ranged / faster / /// squishier + a wider auto-assist co-op hook), all on the reserved range. /// public class ClassTraitsTests @@ -27,21 +27,21 @@ namespace ProjectM.Tests [Test] public void Normalize_DefaultsToWarrior() { - Assert.AreEqual(ClassTraits.WarriorClass, ClassTraits.Normalize(0)); - Assert.AreEqual(ClassTraits.WarriorClass, ClassTraits.Normalize(99)); - Assert.AreEqual(ClassTraits.RangerClass, ClassTraits.Normalize(ClassTraits.RangerClass)); + Assert.AreEqual(ClassTraits.BathynautFrame, ClassTraits.Normalize(0)); + Assert.AreEqual(ClassTraits.BathynautFrame, ClassTraits.Normalize(99)); + Assert.AreEqual(ClassTraits.HarpoonerFrame, ClassTraits.Normalize(ClassTraits.HarpoonerFrame)); } [Test] public void Warrior_Seeds_Buff_Melee_And_Tankiness_And_Slow() { using var world = new World("ClassTraitsWarrior"); - var mods = SeededBuffer(world, ClassTraits.WarriorClass); - Assert.AreEqual(4, mods.Length, "Warrior seeds 4 trait modifiers."); - Assert.Greater(StatMath.Apply(10f, StatTarget.MeleeDamage, mods), 10f, "Warrior hits harder in melee."); - Assert.Greater(StatMath.Apply(2.6f, StatTarget.MeleeRange, mods), 2.6f, "Warrior reaches further in melee."); - Assert.Less(StatMath.Apply(5f, StatTarget.MoveSpeed, mods), 5f, "Warrior moves slower."); - Assert.Greater(StatMath.Apply(100f, StatTarget.MaxHealth, mods), 100f, "Warrior is tankier."); + var mods = SeededBuffer(world, ClassTraits.BathynautFrame); + Assert.AreEqual(4, mods.Length, "Bathynaut seeds 4 trait modifiers."); + Assert.Greater(StatMath.Apply(10f, StatTarget.MeleeDamage, mods), 10f, "Bathynaut hits harder in melee."); + Assert.Greater(StatMath.Apply(2.6f, StatTarget.MeleeRange, mods), 2.6f, "Bathynaut reaches further in melee."); + Assert.Less(StatMath.Apply(5f, StatTarget.MoveSpeed, mods), 5f, "Bathynaut moves slower."); + Assert.Greater(StatMath.Apply(100f, StatTarget.MaxHealth, mods), 100f, "Bathynaut is tankier."); for (int i = 0; i < mods.Length; i++) Assert.GreaterOrEqual(mods[i].SourceId, Tuning.ClassSourceId, "class seeds use the reserved SourceId range."); } @@ -50,13 +50,13 @@ namespace ProjectM.Tests public void Ranger_Seeds_Buff_Range_Speed_Assist_And_Leave_Melee_Weak() { using var world = new World("ClassTraitsRanger"); - var mods = SeededBuffer(world, ClassTraits.RangerClass); - Assert.AreEqual(4, mods.Length, "Ranger seeds 4 trait modifiers."); - Assert.Greater(StatMath.Apply(5f, StatTarget.MoveSpeed, mods), 5f, "Ranger moves faster."); - Assert.Less(StatMath.Apply(100f, StatTarget.MaxHealth, mods), 100f, "Ranger is squishier."); - Assert.Greater(StatMath.Apply(20f, StatTarget.Range, mods), 20f, "Ranger has longer projectile range."); - Assert.Greater(StatMath.Apply(0f, StatTarget.AutoTargetRange, mods), 0f, "Ranger has a wider auto-assist (the co-op hook)."); - Assert.AreEqual(10f, StatMath.Apply(10f, StatTarget.MeleeDamage, mods), 0.001f, "Ranger melee is unbuffed (weaker than the Warrior)."); + var mods = SeededBuffer(world, ClassTraits.HarpoonerFrame); + Assert.AreEqual(4, mods.Length, "Harpooner seeds 4 trait modifiers."); + Assert.Greater(StatMath.Apply(5f, StatTarget.MoveSpeed, mods), 5f, "Harpooner moves faster."); + Assert.Less(StatMath.Apply(100f, StatTarget.MaxHealth, mods), 100f, "Harpooner is squishier."); + Assert.Greater(StatMath.Apply(20f, StatTarget.Range, mods), 20f, "Harpooner has longer projectile range."); + Assert.Greater(StatMath.Apply(0f, StatTarget.AutoTargetRange, mods), 0f, "Harpooner has a wider auto-assist (the co-op hook)."); + Assert.AreEqual(10f, StatMath.Apply(10f, StatTarget.MeleeDamage, mods), 0.001f, "Harpooner melee is unbuffed (weaker than the Bathynaut)."); } static int CountClassSeeds(DynamicBuffer mods) @@ -77,7 +77,7 @@ namespace ProjectM.Tests [Test] public void AppendSeeds_EmitsExactlyClassSeedCount_AllInClassRange() { - foreach (var classId in new[] { ClassTraits.WarriorClass, ClassTraits.RangerClass }) + foreach (var classId in new[] { ClassTraits.BathynautFrame, ClassTraits.HarpoonerFrame }) { using var world = new World("ClassTraitsCount"); var em = world.EntityManager; @@ -99,24 +99,24 @@ namespace ProjectM.Tests var e = em.CreateEntity(); em.AddBuffer(e); - // Seed Warrior, swap to Ranger, then back to Warrior. - ClassTraits.Reapply(ClassTraits.WarriorClass, em.GetBuffer(e)); - Assert.AreEqual(ClassTraits.ClassSeedCount, CountClassSeeds(em.GetBuffer(e)), "Warrior seeds the class-seed count."); + // Seed Bathynaut, swap to Harpooner, then back to Bathynaut. + ClassTraits.Reapply(ClassTraits.BathynautFrame, em.GetBuffer(e)); + Assert.AreEqual(ClassTraits.ClassSeedCount, CountClassSeeds(em.GetBuffer(e)), "Bathynaut seeds the class-seed count."); - ClassTraits.Reapply(ClassTraits.RangerClass, em.GetBuffer(e)); - Assert.AreEqual(ClassTraits.ClassSeedCount, CountClassSeeds(em.GetBuffer(e)), "Ranger leaves exactly the class-seed count (old seeds stripped)."); - Assert.Greater(StatMath.Apply(5f, StatTarget.MoveSpeed, em.GetBuffer(e)), 5f, "Ranger moves faster after the swap."); + ClassTraits.Reapply(ClassTraits.HarpoonerFrame, em.GetBuffer(e)); + Assert.AreEqual(ClassTraits.ClassSeedCount, CountClassSeeds(em.GetBuffer(e)), "Harpooner leaves exactly the class-seed count (old seeds stripped)."); + Assert.Greater(StatMath.Apply(5f, StatTarget.MoveSpeed, em.GetBuffer(e)), 5f, "Harpooner moves faster after the swap."); - ClassTraits.Reapply(ClassTraits.WarriorClass, em.GetBuffer(e)); + ClassTraits.Reapply(ClassTraits.BathynautFrame, em.GetBuffer(e)); var back = em.GetBuffer(e); - Assert.AreEqual(ClassTraits.ClassSeedCount, CountClassSeeds(back), "Warrior again: no accumulation across swaps."); + Assert.AreEqual(ClassTraits.ClassSeedCount, CountClassSeeds(back), "Bathynaut again: no accumulation across swaps."); - // Value-equality vs a fresh-spawned Warrior buffer (the ECB overload) — catches same-target PercentMult + // Value-equality vs a fresh-spawned Bathynaut buffer (the ECB overload) — catches same-target PercentMult // doubling or a strip-order regression that a count-only assert would miss. using var refWorld = new World("ClassTraitsWarriorRef"); - var fresh = SeededBuffer(refWorld, ClassTraits.WarriorClass); - Assert.AreEqual(StatMath.Apply(100f, StatTarget.MaxHealth, fresh), StatMath.Apply(100f, StatTarget.MaxHealth, back), 1e-4f, "MaxHealth folds identically to a fresh Warrior."); - Assert.AreEqual(StatMath.Apply(5f, StatTarget.MoveSpeed, fresh), StatMath.Apply(5f, StatTarget.MoveSpeed, back), 1e-4f, "MoveSpeed folds identically to a fresh Warrior."); + var fresh = SeededBuffer(refWorld, ClassTraits.BathynautFrame); + Assert.AreEqual(StatMath.Apply(100f, StatTarget.MaxHealth, fresh), StatMath.Apply(100f, StatTarget.MaxHealth, back), 1e-4f, "MaxHealth folds identically to a fresh Bathynaut."); + Assert.AreEqual(StatMath.Apply(5f, StatTarget.MoveSpeed, fresh), StatMath.Apply(5f, StatTarget.MoveSpeed, back), 1e-4f, "MoveSpeed folds identically to a fresh Bathynaut."); } [Test] @@ -133,7 +133,7 @@ namespace ProjectM.Tests seed.Add(new StatModifier { Target = (byte)StatTarget.Damage, Op = (byte)ModOp.PercentAdd, Value = 0.25f, SourceId = 0x00DEB061u }); seed.Add(new StatModifier { Target = (byte)StatTarget.MaxHealth, Op = (byte)ModOp.Flat, Value = 10f, SourceId = boundary }); - ClassTraits.Reapply(ClassTraits.RangerClass, em.GetBuffer(e)); + ClassTraits.Reapply(ClassTraits.HarpoonerFrame, em.GetBuffer(e)); var after = em.GetBuffer(e); Assert.AreEqual(ClassTraits.ClassSeedCount, CountClassSeeds(after), "exactly the class-seed count of class seeds present.");