1 files renamed
3 files deleted
44 files added
49 files modified
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: Glow_003 1 |
| | | m_Name: Glow_003_b |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: Glow_012 1 |
| | | m_Name: Glow_012_b |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: Glow_029_b |
| | | m_Name: Glow_029_02 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: ditu |
| | | m_Name: Glow_039 |
| | | m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: Object_0014 |
| | | m_Name: Object_004 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: Object_0029 |
| | | m_Name: Object_005 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: "\u7CBE\u70753" |
| | | m_Name: Object_006 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: "1920\u6C34\u66761" |
| | | m_Name: Object_009 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: 7e7ae91d-c194-4197-81f1-30d18678a08c |
| | | m_Name: Sequence_005_4X3 |
| | | m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: 42c3f028-4755-4977-8544-0365321b0312 |
| | | m_Name: Sequence_006_6X5 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: 218d2fa5-3080-44fd-8769-2dcbb57a589f |
| | | m_Name: Sequence_007_4X3 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: c8cd391b-30df-4811-9715-3b8cdf8c36c6 |
| | | m_Name: Sequence_008_6X4 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: ef115a70-dd8a-4420-9182-f650ae55c8da |
| | | m_Name: Sequence_009_3X2 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 0 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: Sequence_019_4X4_b |
| | | m_Name: Sequence_019_4X4_02 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: Sequence_022_4X4 1 |
| | | m_Name: Sequence_022_4X4_02 |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_Name: Sequence_024_9X8 1 |
| | | m_Name: Sequence_024_9X8_b |
| | | m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0} |
| | | m_ShaderKeywords: |
| | | m_LightmapFlags: 4 |
| | |
| | | m_IsTrigger: 1 |
| | | m_Enabled: 1 |
| | | serializedVersion: 2 |
| | | m_Radius: 0.2 |
| | | m_Radius: 0 |
| | | m_Center: {x: 0, y: 0, z: 0} |
| | | --- !u!1 &1261689212745562 |
| | | GameObject: |
| | |
| | | m_IsTrigger: 1 |
| | | m_Enabled: 1 |
| | | serializedVersion: 2 |
| | | m_Radius: 0.2 |
| | | m_Radius: 0 |
| | | m_Center: {x: 0, y: 0, z: 0} |
| | | --- !u!1001 &671268144671726192 |
| | | PrefabInstance: |
| | |
| | | m_IsTrigger: 1 |
| | | m_Enabled: 1 |
| | | serializedVersion: 2 |
| | | m_Radius: 0.2 |
| | | m_Radius: 0 |
| | | m_Center: {x: 0, y: 0, z: 0} |
| | | --- !u!1001 &671268144671726192 |
| | | PrefabInstance: |
| | |
| | | m_Modification: |
| | | m_TransformParent: {fileID: 8434816861478773449} |
| | | m_Modifications: |
| | | - target: {fileID: 1213450339260476, guid: 33eba0da32885b84ebf38245df0735fa, type: 3} |
| | | propertyPath: m_IsActive |
| | | value: 1 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1594767147126006, guid: 33eba0da32885b84ebf38245df0735fa, type: 3} |
| | | propertyPath: m_Name |
| | | value: Model |
| | |
| | | propertyPath: m_IsActive |
| | | value: 1 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1674156658475200, guid: 33eba0da32885b84ebf38245df0735fa, type: 3} |
| | | propertyPath: m_IsActive |
| | | value: 1 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1920189015369716, guid: 33eba0da32885b84ebf38245df0735fa, type: 3} |
| | | propertyPath: m_IsActive |
| | | value: 1 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1940922409561372, guid: 33eba0da32885b84ebf38245df0735fa, type: 3} |
| | | propertyPath: m_IsActive |
| | | value: 1 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 4258366756040210, guid: 33eba0da32885b84ebf38245df0735fa, type: 3} |
| | | propertyPath: m_LocalPosition.x |
| | | value: 0 |
| | |
| | | m_IsTrigger: 1 |
| | | m_Enabled: 1 |
| | | serializedVersion: 2 |
| | | m_Radius: 0.2 |
| | | m_Radius: 0 |
| | | m_Center: {x: 0, y: 0, z: 0} |
| | | --- !u!1001 &1417015450723705814 |
| | | PrefabInstance: |
| | |
| | | m_IsTrigger: 1 |
| | | m_Enabled: 1 |
| | | serializedVersion: 2 |
| | | m_Radius: 0.2 |
| | | m_Radius: 0 |
| | | m_Center: {x: 0, y: 0, z: 0} |
| | | --- !u!1001 &51849727615761245 |
| | | PrefabInstance: |
| | |
| | | m_IsTrigger: 1 |
| | | m_Enabled: 1 |
| | | serializedVersion: 2 |
| | | m_Radius: 0.2 |
| | | m_Radius: 0 |
| | | m_Center: {x: 0, y: 0, z: 0} |
| | | --- !u!1001 &51849727615761245 |
| | | PrefabInstance: |
| | |
| | | m_DefaultFloat: 0 |
| | | m_DefaultInt: 0 |
| | | m_DefaultBool: 0 |
| | | m_Controller: {fileID: 9100000} |
| | | m_Controller: {fileID: 0} |
| | | - m_Name: Die |
| | | m_Type: 4 |
| | | m_DefaultFloat: 0 |
| | | m_DefaultInt: 0 |
| | | m_DefaultBool: 0 |
| | | m_Controller: {fileID: 9100000} |
| | | m_Controller: {fileID: 0} |
| | | - m_Name: Attack |
| | | m_Type: 4 |
| | | m_DefaultFloat: 0 |
| | | m_DefaultInt: 0 |
| | | m_DefaultBool: 0 |
| | | m_Controller: {fileID: 9100000} |
| | | m_Controller: {fileID: 0} |
| | | m_AnimatorLayers: |
| | | - serializedVersion: 5 |
| | | m_Name: Base Layer |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 0caf6f9e89f9cdd48ba594423ba3178a |
| | | folderAsset: yes |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 7b1c99ecc56f1424cbbd65bc089ad715 |
| | | folderAsset: yes |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | %YAML 1.1 |
| | | %TAG !u! tag:unity3d.com,2011: |
| | | --- !u!1 &7131284347495473863 |
| | | GameObject: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | serializedVersion: 6 |
| | | m_Component: |
| | | - component: {fileID: 1369085180611037263} |
| | | - component: {fileID: 8833090956031970945} |
| | | - component: {fileID: 3703726531420749549} |
| | | m_Layer: 0 |
| | | m_Name: Targetter |
| | | m_TagString: Untagged |
| | | m_Icon: {fileID: 0} |
| | | m_NavMeshLayer: 0 |
| | | m_StaticEditorFlags: 0 |
| | | m_IsActive: 1 |
| | | --- !u!4 &1369085180611037263 |
| | | Transform: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 7131284347495473863} |
| | | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
| | | m_LocalPosition: {x: 0, y: 0.2, z: 0} |
| | | m_LocalScale: {x: 4.5, y: 5, z: 4.5} |
| | | m_Children: [] |
| | | m_Father: {fileID: 8434816861478773449} |
| | | m_RootOrder: 0 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | --- !u!135 &8833090956031970945 |
| | | SphereCollider: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 7131284347495473863} |
| | | m_Material: {fileID: 0} |
| | | m_IsTrigger: 1 |
| | | m_Enabled: 1 |
| | | serializedVersion: 2 |
| | | m_Radius: 0 |
| | | m_Center: {x: 0, y: 0, z: 0} |
| | | --- !u!114 &3703726531420749549 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 7131284347495473863} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: d0e4035901ee40bba7c0866d2c6338a1, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | turret: {fileID: 0} |
| | | searchEnemyFunc: 1 |
| | | turretXRotationRange: {x: 0, y: 359} |
| | | onlyYTurretRotation: 1 |
| | | searchRate: 0 |
| | | idleRotationSpeed: 1 |
| | | idleCorrectionTime: 0.2 |
| | | attachedCollider: {fileID: 8833090956031970945} |
| | | idleWaitTime: 2 |
| | | --- !u!1 &8434816860007424699 |
| | | GameObject: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | serializedVersion: 6 |
| | | m_Component: |
| | | - component: {fileID: 8434816860007424696} |
| | | m_Layer: 11 |
| | | m_Name: Targetable |
| | | m_TagString: Untagged |
| | | m_Icon: {fileID: 0} |
| | | m_NavMeshLayer: 0 |
| | | m_StaticEditorFlags: 0 |
| | | m_IsActive: 1 |
| | | --- !u!4 &8434816860007424696 |
| | | Transform: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816860007424699} |
| | | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
| | | m_LocalPosition: {x: 0, y: 0.5, z: 0} |
| | | m_LocalScale: {x: 1, y: 1, z: 1} |
| | | m_Children: [] |
| | | m_Father: {fileID: 8434816861478773449} |
| | | m_RootOrder: 1 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | --- !u!1 &8434816861478773448 |
| | | GameObject: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | serializedVersion: 6 |
| | | m_Component: |
| | | - component: {fileID: 8434816861478773449} |
| | | - component: {fileID: 8434816861478773452} |
| | | - component: {fileID: 8434816861478773455} |
| | | - component: {fileID: 8056910340826571656} |
| | | - component: {fileID: 8434816861478773555} |
| | | - component: {fileID: 6659287669452185599} |
| | | - component: {fileID: 8434816861478773554} |
| | | - component: {fileID: 2476106126470318335} |
| | | - component: {fileID: 652547545057790155} |
| | | - component: {fileID: 2034107896435957072} |
| | | m_Layer: 11 |
| | | m_Name: BubbleBomb |
| | | m_TagString: Untagged |
| | | m_Icon: {fileID: 0} |
| | | m_NavMeshLayer: 0 |
| | | m_StaticEditorFlags: 0 |
| | | m_IsActive: 1 |
| | | --- !u!4 &8434816861478773449 |
| | | Transform: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | 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_Children: |
| | | - {fileID: 1369085180611037263} |
| | | - {fileID: 8434816860007424696} |
| | | - {fileID: 822954139837810748} |
| | | - {fileID: 9210104854641884541} |
| | | m_Father: {fileID: 0} |
| | | m_RootOrder: 0 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | --- !u!195 &8434816861478773452 |
| | | NavMeshAgent: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | m_Enabled: 1 |
| | | m_AgentTypeID: 0 |
| | | m_Radius: 0.1 |
| | | m_Speed: 2 |
| | | m_Acceleration: 20 |
| | | avoidancePriority: 50 |
| | | m_AngularSpeed: 0 |
| | | m_StoppingDistance: 0.4 |
| | | m_AutoTraverseOffMeshLink: 1 |
| | | m_AutoBraking: 1 |
| | | m_AutoRepath: 1 |
| | | m_Height: 1 |
| | | m_BaseOffset: 0 |
| | | m_WalkableMask: 7 |
| | | m_ObstacleAvoidanceType: 0 |
| | | --- !u!114 &8434816861478773455 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: 4a4f7293b07e4698a4e3b652679f0c75, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | description: |
| | | projectile: {fileID: 0} |
| | | projectilePoints: [] |
| | | epicenter: {fileID: 8434816861478773449} |
| | | isMultiAttack: 0 |
| | | maxAttackNum: 1 |
| | | fireRate: 0 |
| | | bWoodAffector: 0 |
| | | randomAudioSource: {fileID: 0} |
| | | towerTargetter: {fileID: 3703726531420749549} |
| | | radiusEffectColor: {r: 0, g: 0, b: 0, a: 0} |
| | | --- !u!114 &8056910340826571656 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: a92cd5a2e6e04f84aa172ab3a5f342a1, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | configuration: |
| | | maxHealth: 60 |
| | | startingHealth: 60 |
| | | alignment: |
| | | unityObjectReference: {fileID: 11400000, guid: 9dc4735bf52f547d59ebe1007e9a0e7f, |
| | | type: 2} |
| | | targetTransform: {fileID: 8434816860007424696} |
| | | bElit: 0 |
| | | bBoss: 0 |
| | | poisonTex: {fileID: 0} |
| | | frozenTex: {fileID: 0} |
| | | commonTex: {fileID: 0} |
| | | PoisonParticle: {fileID: 0} |
| | | PoisonEndParticle: {fileID: 0} |
| | | SlowDownParticle: {fileID: 0} |
| | | FrostParticle: {fileID: 0} |
| | | appliedEffectOffset: {x: 0, y: 0, z: 0} |
| | | appliedEffectScale: 1 |
| | | healthBar: {fileID: 0} |
| | | spawnParticle: {fileID: 0} |
| | | bShowDebugNode: 0 |
| | | NormalEffect: {fileID: 5386092016719681635} |
| | | ExplodeEffect: {fileID: 1333670259778310432} |
| | | --- !u!54 &8434816861478773555 |
| | | Rigidbody: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | serializedVersion: 2 |
| | | m_Mass: 1 |
| | | m_Drag: 0 |
| | | m_AngularDrag: 0.05 |
| | | m_UseGravity: 0 |
| | | m_IsKinematic: 1 |
| | | m_Interpolate: 0 |
| | | m_Constraints: 0 |
| | | m_CollisionDetection: 0 |
| | | --- !u!136 &6659287669452185599 |
| | | CapsuleCollider: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | m_Material: {fileID: 0} |
| | | m_IsTrigger: 0 |
| | | m_Enabled: 1 |
| | | m_Radius: 2.2 |
| | | m_Height: 1 |
| | | m_Direction: 1 |
| | | m_Center: {x: 0, y: 0.4, z: 0} |
| | | --- !u!114 &8434816861478773554 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: 8cf1cc7cb7e6b49f893f609dd57fce01, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | damageableBehaviour: {fileID: 0} |
| | | damageScale: 1 |
| | | --- !u!114 &2476106126470318335 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: 7d012ff014d994436a27059a09e8ab64, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | homeBaseAttackChargeTime: 1 |
| | | --- !u!114 &652547545057790155 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: 59d007c1fe5e41c1888e4af3392f8676, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | initialPoolCapacity: 10 |
| | | --- !u!114 &2034107896435957072 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 8434816861478773448} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: fedeb0b3c5e104ea19d0d4599d22ab97, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | damage: 10 |
| | | damageMulti: 1 |
| | | towerName: |
| | | bSet: 0 |
| | | chanceToSpawnCollisionPrefab: 1 |
| | | collisionObj: {fileID: 0} |
| | | alignment: |
| | | unityObjectReference: {fileID: 11400000, guid: 9dc4735bf52f547d59ebe1007e9a0e7f, |
| | | type: 2} |
| | | --- !u!1001 &5861091491599655757 |
| | | PrefabInstance: |
| | | m_ObjectHideFlags: 0 |
| | | serializedVersion: 2 |
| | | m_Modification: |
| | | m_TransformParent: {fileID: 8434816861478773449} |
| | | m_Modifications: |
| | | - target: {fileID: 211218241868599864, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 2011413103471262510, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3003286573158039164, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_Name |
| | | value: Effect_ShuiBoss_Atk |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 5100670453587805948, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 5253684803858780405, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalPosition.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalPosition.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalPosition.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalRotation.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalRotation.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalRotation.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalRotation.w |
| | | value: 1 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_RootOrder |
| | | value: 2 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 7832518119722543244, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | m_RemovedComponents: [] |
| | | m_SourcePrefab: {fileID: 100100000, guid: 2174baf7c84209b48b5f059bc9b45f0a, type: 3} |
| | | --- !u!4 &822954139837810748 stripped |
| | | Transform: |
| | | m_CorrespondingSourceObject: {fileID: 6502493927850175345, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | m_PrefabInstance: {fileID: 5861091491599655757} |
| | | m_PrefabAsset: {fileID: 0} |
| | | --- !u!198 &5386092016719681635 stripped |
| | | ParticleSystem: |
| | | m_CorrespondingSourceObject: {fileID: 2011413103471262510, guid: 2174baf7c84209b48b5f059bc9b45f0a, |
| | | type: 3} |
| | | m_PrefabInstance: {fileID: 5861091491599655757} |
| | | m_PrefabAsset: {fileID: 0} |
| | | --- !u!1001 &6091048980364245149 |
| | | PrefabInstance: |
| | | m_ObjectHideFlags: 0 |
| | | serializedVersion: 2 |
| | | m_Modification: |
| | | m_TransformParent: {fileID: 8434816861478773449} |
| | | m_Modifications: |
| | | - target: {fileID: 2286521056855946055, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 2370081798993619891, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3068511617495723435, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalPosition.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalPosition.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalPosition.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalRotation.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalRotation.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalRotation.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalRotation.w |
| | | value: 1 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_RootOrder |
| | | value: 3 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 3653789310721185227, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 5045692736981395901, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 5682223977695237745, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: m_Name |
| | | value: Effect_ShuiBoss_Hit |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 7849420514037070550, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 8489956598537573869, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 8586965635893210643, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | propertyPath: playOnAwake |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | m_RemovedComponents: [] |
| | | m_SourcePrefab: {fileID: 100100000, guid: 09e6fd34dc3085b41aedc00dd8d5f361, type: 3} |
| | | --- !u!4 &9210104854641884541 stripped |
| | | Transform: |
| | | m_CorrespondingSourceObject: {fileID: 3122997129545123296, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | m_PrefabInstance: {fileID: 6091048980364245149} |
| | | m_PrefabAsset: {fileID: 0} |
| | | --- !u!198 &1333670259778310432 stripped |
| | | ParticleSystem: |
| | | m_CorrespondingSourceObject: {fileID: 5045692736981395901, guid: 09e6fd34dc3085b41aedc00dd8d5f361, |
| | | type: 3} |
| | | m_PrefabInstance: {fileID: 6091048980364245149} |
| | | m_PrefabAsset: {fileID: 0} |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 164953adef233e743be6963f59bb2817 |
| | | PrefabImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: c77c525281f9ff840b7bdf51d5cc46f7 |
| | | folderAsset: yes |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 88edaaebfaa2b764b95a13f5d1284d33 |
| | | folderAsset: yes |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 1545c05cf9b6e194e91c1a00cd218918 |
| | | folderAsset: yes |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
File was renamed from Assets/Resources/UI/Endless/Boss/2.png.meta |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 688fc2c2e4b8b224fa4bb8fe8c8b46ca |
| | | guid: 9c78752966bdbec4f9a34991cfc6b500 |
| | | TextureImporter: |
| | | internalIDToNameTable: [] |
| | | externalObjects: {} |
| | |
| | | buildTarget: Android |
| | | maxTextureSize: 2048 |
| | | resizeAlgorithm: 0 |
| | | textureFormat: -1 |
| | | textureFormat: 4 |
| | | textureCompression: 1 |
| | | compressionQuality: 50 |
| | | crunchedCompression: 0 |
| | | allowsAlphaSplitting: 0 |
| | | overridden: 0 |
| | | overridden: 1 |
| | | androidETC2FallbackOverride: 0 |
| | | forceMaximumCompressionQuality_BC6H_BC7: 0 |
| | | spriteSheet: |
| | |
| | | - {fileID: 1474449435} |
| | | - {fileID: 654889359} |
| | | m_Father: {fileID: 849284131} |
| | | m_RootOrder: 1 |
| | | m_RootOrder: 2 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | m_AnchorMin: {x: 0.5, y: 0.5} |
| | | m_AnchorMax: {x: 0.5, y: 0.5} |
| | |
| | | - component: {fileID: 114868873} |
| | | - component: {fileID: 114868872} |
| | | - component: {fileID: 114868875} |
| | | - component: {fileID: 114868876} |
| | | m_Layer: 5 |
| | | m_Name: Boss |
| | | m_TagString: Untagged |
| | |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | BossAnimator: {fileID: 114868872} |
| | | Title: {fileID: 1232635866} |
| | | --- !u!114 &114868876 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 114868870} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: 178f167d46a275f46b252d07f0809e45, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | --- !u!1 &122104235 |
| | | GameObject: |
| | | m_ObjectHideFlags: 0 |
| | |
| | | - {fileID: 2031820231} |
| | | - {fileID: 1525511251} |
| | | m_Father: {fileID: 849284131} |
| | | m_RootOrder: 0 |
| | | m_RootOrder: 1 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | m_AnchorMin: {x: 0.5, y: 0.5} |
| | | m_AnchorMax: {x: 0.5, y: 0.5} |
| | |
| | | m_LocalPosition: {x: 0, y: 0, z: 0} |
| | | m_LocalScale: {x: 0, y: 0, z: 0} |
| | | m_Children: |
| | | - {fileID: 1232635865} |
| | | - {fileID: 306286610} |
| | | - {fileID: 19764330} |
| | | - {fileID: 1730636813} |
| | |
| | | - {fileID: 1108718555} |
| | | - {fileID: 1387193656} |
| | | m_Father: {fileID: 849284131} |
| | | m_RootOrder: 3 |
| | | m_RootOrder: 4 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | m_AnchorMin: {x: 0.5, y: 0.5} |
| | | m_AnchorMax: {x: 0.5, y: 0.5} |
| | |
| | | m_Father: {fileID: 1164797329} |
| | | m_RootOrder: 0 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | --- !u!1 &1232635864 |
| | | GameObject: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | serializedVersion: 6 |
| | | m_Component: |
| | | - component: {fileID: 1232635865} |
| | | - component: {fileID: 1232635867} |
| | | - component: {fileID: 1232635866} |
| | | m_Layer: 5 |
| | | m_Name: BubbleBombTitle |
| | | m_TagString: Untagged |
| | | m_Icon: {fileID: 0} |
| | | m_NavMeshLayer: 0 |
| | | m_StaticEditorFlags: 0 |
| | | m_IsActive: 1 |
| | | --- !u!224 &1232635865 |
| | | RectTransform: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 1232635864} |
| | | 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_Children: [] |
| | | m_Father: {fileID: 849284131} |
| | | m_RootOrder: 0 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | m_AnchorMin: {x: 0.5, y: 0.5} |
| | | m_AnchorMax: {x: 0.5, y: 0.5} |
| | | m_AnchoredPosition: {x: 0, y: 121} |
| | | m_SizeDelta: {x: 476, y: 114} |
| | | m_Pivot: {x: 0.5, y: 0.5} |
| | | --- !u!114 &1232635866 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 1232635864} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | m_Material: {fileID: 0} |
| | | m_Color: {r: 1, g: 1, b: 1, a: 1} |
| | | m_RaycastTarget: 1 |
| | | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} |
| | | m_Maskable: 1 |
| | | m_OnCullStateChanged: |
| | | m_PersistentCalls: |
| | | m_Calls: [] |
| | | m_Sprite: {fileID: 21300000, guid: 9c78752966bdbec4f9a34991cfc6b500, type: 3} |
| | | m_Type: 0 |
| | | m_PreserveAspect: 0 |
| | | m_FillCenter: 1 |
| | | m_FillMethod: 4 |
| | | m_FillAmount: 1 |
| | | m_FillClockwise: 1 |
| | | m_FillOrigin: 0 |
| | | m_UseSpriteMesh: 0 |
| | | m_PixelsPerUnitMultiplier: 1 |
| | | --- !u!222 &1232635867 |
| | | CanvasRenderer: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 1232635864} |
| | | m_CullTransparentMesh: 0 |
| | | --- !u!1 &1242417025 |
| | | GameObject: |
| | | m_ObjectHideFlags: 0 |
| | |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 1447220349} |
| | | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
| | | m_LocalPosition: {x: 0, y: 0, z: 0} |
| | | m_LocalScale: {x: 58, y: 28, z: 0} |
| | | m_LocalPosition: {x: 0, y: -5, z: 0} |
| | | m_LocalScale: {x: 58.6, y: 29, z: 1} |
| | | m_Children: [] |
| | | m_Father: {fileID: 654889359} |
| | | m_RootOrder: 0 |
| | |
| | | m_SortingLayerID: 0 |
| | | m_SortingLayer: 0 |
| | | m_SortingOrder: 0 |
| | | m_Sprite: {fileID: 21300000, guid: c9633b2aaeee7e540b04803cb6e9cd45, type: 3} |
| | | m_Sprite: {fileID: 21300000, guid: 2dac89ddb9ecb5640ade8b7a19e262b8, type: 3} |
| | | m_MaskAlphaCutoff: 0.2 |
| | | m_FrontSortingLayerID: 0 |
| | | m_BackSortingLayerID: 0 |
| | |
| | | m_Script: {fileID: 11500000, guid: 003fa822c2d516a488dcbbed96c8d9ab, type: 3} |
| | | m_Name: |
| | | m_EditorClassIdentifier: |
| | | buyButtonScaler: 1.9 |
| | | placementTilePrefab: {fileID: 114496876178851720, guid: 8ce97201eea4a404b86d7d0906b89847, |
| | | type: 3} |
| | | placementTilePrefabMobile: {fileID: 114496876178851720, guid: 18a440af7ac5d46c8af359534286c4bf, |
| | |
| | | m_LocalScale: {x: 1, y: 1, z: 1} |
| | | m_Children: [] |
| | | m_Father: {fileID: 849284131} |
| | | m_RootOrder: 2 |
| | | m_RootOrder: 3 |
| | | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
| | | m_AnchorMin: {x: 0.5, y: 0.5} |
| | | m_AnchorMax: {x: 0.5, y: 0.5} |
| | |
| | | { |
| | | public class GameUtils |
| | | { |
| | | private static int id { get; set; } = 0; |
| | | |
| | | /// <summary> |
| | | /// 获取一个唯一id |
| | | /// </summary> |
| | | public static int GetId() |
| | | { |
| | | return id++; |
| | | } |
| | | |
| | | public static int[] GetIntArray(JsonData jsData) |
| | | { |
| | | int[] tmp = new int[jsData.Count]; |
| | |
| | | |
| | | namespace Core.Utilities |
| | | { |
| | | /// <summary> |
| | | /// A timer data model. Consumed/process by the TimedBehaviour |
| | | /// 塔防游戏的基础Timer包装类,设置一个time时间后要引发的操作,然后每一轮Tick这个Timer,触发后Tick返回true |
| | | /// 由调用层进行相应的操作。 |
| | | /// </summary> |
| | | public class Timer |
| | | { |
| | | /// <summary> |
| | | /// Event fired on elapsing |
| | | /// </summary> |
| | | readonly Action m_Callback; |
| | | /// <summary> |
| | | /// A timer data model. Consumed/process by the TimedBehaviour |
| | | /// 塔防游戏的基础Timer包装类,设置一个time时间后要引发的操作,然后每一轮Tick这个Timer,触发后Tick返回true |
| | | /// 由调用层进行相应的操作。 |
| | | /// </summary> |
| | | public class Timer |
| | | { |
| | | /// <summary> |
| | | /// Event fired on elapsing |
| | | /// </summary> |
| | | readonly Action m_Callback; |
| | | |
| | | /// <summary> |
| | | /// The time |
| | | /// </summary> |
| | | float m_Time, m_CurrentTime; |
| | | /// <summary> |
| | | /// The time |
| | | /// </summary> |
| | | float m_Time, m_CurrentTime; |
| | | |
| | | protected static int TIMER_IDSTART = 0; |
| | | protected static int TIMER_IDSTART = 0; |
| | | |
| | | protected int mTimerID = 0; |
| | | protected int mTimerID = 0; |
| | | |
| | | /// <summary> |
| | | /// Normalized progress of the timer |
| | | /// </summary> |
| | | public float normalizedProgress |
| | | { |
| | | get { return Mathf.Clamp(m_CurrentTime / m_Time, 0f, 1f); } |
| | | } |
| | | /// <summary> |
| | | /// Normalized progress of the timer |
| | | /// </summary> |
| | | public float normalizedProgress |
| | | { |
| | | get { return Mathf.Clamp(m_CurrentTime / m_Time, 0f, 1f); } |
| | | } |
| | | |
| | | public float currentTime |
| | | public float currentTime |
| | | { |
| | | get { return this.m_CurrentTime; } |
| | | } |
| | | |
| | | public int timerID |
| | | public int timerID |
| | | { |
| | | get { return this.mTimerID; } |
| | | get { return this.mTimerID; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Timer constructor |
| | | /// </summary> |
| | | /// <param name="newTime">the time that timer is counting</param> |
| | | /// <param name="onElapsed">the event fired at the end of the timer elapsing</param> |
| | | public Timer(float newTime, Action onElapsed = null) |
| | | { |
| | | SetTime(newTime); |
| | | /// <summary> |
| | | /// Timer constructor |
| | | /// </summary> |
| | | /// <param name="newTime">the time that timer is counting</param> |
| | | /// <param name="onElapsed">the event fired at the end of the timer elapsing</param> |
| | | public Timer(float newTime, Action onElapsed = null) |
| | | { |
| | | SetTime(newTime); |
| | | |
| | | m_CurrentTime = 0f; |
| | | m_Callback += onElapsed; |
| | | m_CurrentTime = 0f; |
| | | m_Callback += onElapsed; |
| | | |
| | | mTimerID = TIMER_IDSTART++; |
| | | } |
| | | mTimerID = TIMER_IDSTART++; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Returns the result of AssessTime |
| | | /// </summary> |
| | | /// <param name="deltaTime">change in time between ticks</param> |
| | | /// <returns>true if the timer has elapsed, false otherwise</returns> |
| | | public virtual bool Tick(float deltaTime) |
| | | { |
| | | return AssessTime(deltaTime); |
| | | } |
| | | /// <summary> |
| | | /// Returns the result of AssessTime |
| | | /// </summary> |
| | | /// <param name="deltaTime">change in time between ticks</param> |
| | | /// <returns>true if the timer has elapsed, false otherwise</returns> |
| | | public virtual bool Tick(float deltaTime) |
| | | { |
| | | return AssessTime(deltaTime); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Checks if the time has elapsed and fires the tick event |
| | | /// </summary> |
| | | /// <param name="deltaTime">the change in time between assessments</param> |
| | | /// <returns>true if the timer has elapsed, false otherwise</returns> |
| | | protected bool AssessTime(float deltaTime) |
| | | { |
| | | m_CurrentTime += deltaTime; |
| | | if (m_CurrentTime >= m_Time) |
| | | { |
| | | FireEvent(); |
| | | return true; |
| | | } |
| | | /// <summary> |
| | | /// Checks if the time has elapsed and fires the tick event |
| | | /// </summary> |
| | | /// <param name="deltaTime">the change in time between assessments</param> |
| | | /// <returns>true if the timer has elapsed, false otherwise</returns> |
| | | protected bool AssessTime(float deltaTime) |
| | | { |
| | | m_CurrentTime += deltaTime; |
| | | if (m_CurrentTime >= m_Time) |
| | | { |
| | | FireEvent(); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Resets the current time to 0 |
| | | /// </summary> |
| | | public void Reset() |
| | | { |
| | | m_CurrentTime = 0; |
| | | } |
| | | /// <summary> |
| | | /// Resets the current time to 0 |
| | | /// </summary> |
| | | public void Reset() |
| | | { |
| | | m_CurrentTime = 0; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Fires the associated timer event |
| | | /// </summary> |
| | | public void FireEvent() |
| | | { |
| | | m_Callback.Invoke(); |
| | | } |
| | | /// <summary> |
| | | /// Fires the associated timer event |
| | | /// </summary> |
| | | public void FireEvent() |
| | | { |
| | | if (m_Callback != null) |
| | | m_Callback.Invoke(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Sets the elapsed time |
| | | /// </summary> |
| | | /// <param name="newTime">sets the time to a new value</param> |
| | | public void SetTime(float newTime) |
| | | { |
| | | m_Time = newTime; |
| | | /// <summary> |
| | | /// Sets the elapsed time |
| | | /// </summary> |
| | | /// <param name="newTime">sets the time to a new value</param> |
| | | public void SetTime(float newTime) |
| | | { |
| | | m_Time = newTime; |
| | | |
| | | if (newTime <= 0) |
| | | { |
| | | m_Time = 0.1f; |
| | | } |
| | | } |
| | | } |
| | | if (newTime <= 0) |
| | | { |
| | | m_Time = 0.1f; |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections.Generic; |
| | | |
| | | /** |
| | | * 无尽模式boss表处理类 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 13:46:33 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public class EndlessBossData |
| | | { |
| | | private static List<endless_boss> endlessBossList; |
| | | |
| | | public static void Init() |
| | | { |
| | | endlessBossList = JsonDataCenter.GetList<endless_boss>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据id获取表数据 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | public static endless_boss GetDataById(int id) |
| | | { |
| | | for (int i = 0; i < endlessBossList.Count; ++i) |
| | | { |
| | | if (endlessBossList[i].id == id) |
| | | return endlessBossList[i]; |
| | | } |
| | | |
| | | Debug.LogError($"--------------------- bossId: {id},找不到对应的boss数据 ---------------------"); |
| | | return null; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 9ab2fe4b0fe03644c80dfd2ed055bde7 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | |
| | | /** |
| | | * 无尽模式boss技能表处理类 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 13:51:00 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public class EndlessBossSkillData |
| | | { |
| | | private static List<boss_skill> endlessBossSkillList; |
| | | |
| | | public static void Init() |
| | | { |
| | | endlessBossSkillList = JsonDataCenter.GetList<boss_skill>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据id获取表数据 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | public static boss_skill GetDataById(int id) |
| | | { |
| | | for (int i = 0; i < endlessBossSkillList.Count; ++i) |
| | | { |
| | | if (endlessBossSkillList[i].id == id) |
| | | return endlessBossSkillList[i]; |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 59ceada5402529a48b7c2666e59b6c8a |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | new Color(118 / 255f, 1, 118 / 255f), |
| | | new Color(131 / 255f, 181 / 255f, 1), |
| | | new Color(220 / 255f, 112 / 255f, 1), |
| | | new Color() |
| | | }; |
| | | |
| | | public static void Init() |
| | |
| | | endlessPortList = JsonDataCenter.GetList<endless_port>(); |
| | | portConfigList = new List<EndlessPortConfig>(); |
| | | portDic = new Dictionary<int, List<EndlessPortConfig>>(); |
| | | InitPortList(portConfigList, endlessPortList); |
| | | } |
| | | |
| | | private static void InitPortList(List<EndlessPortConfig> list, List<endless_port> srcList) |
| | | /// <summary> |
| | | /// 更新关卡数据的时候也重新初始化一次 |
| | | /// </summary> |
| | | public static void InitPortList() |
| | | { |
| | | maxLevel = 0; |
| | | int? preLevel = null; |
| | | portConfigList.Clear(); |
| | | portDic.Clear(); |
| | | |
| | | foreach (endless_port data in srcList) |
| | | foreach (endless_port data in endlessPortList) |
| | | { |
| | | if (!GameConfig.IsNewbie && data.level < 0) continue; |
| | | |
| | |
| | | } |
| | | |
| | | param.DropTotalWeight = totalWeight; |
| | | list.Add(param); |
| | | |
| | | portConfigList.Add(param); |
| | | |
| | | if (!portDic.ContainsKey(param.PortLevel)) |
| | | portDic.Add(param.PortLevel, new List<EndlessPortConfig>()); |
| | | |
| | | |
| | | portDic[param.PortLevel].Add(param); |
| | | } |
| | | } |
| | |
| | | Summon, |
| | | |
| | | // 死亡 |
| | | Death |
| | | Death, |
| | | |
| | | // 技能动作 |
| | | Skill |
| | | } |
| | | } |
New file |
| | |
| | | /** |
| | | * 无尽模式boss技能AI类型 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 20:24:25 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public enum EndlessBossSkillAIType |
| | | { |
| | | None, |
| | | |
| | | // 普通AI,每一波开始30s之后开始释放技能,技能cd好了就释放 |
| | | Normal |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 6c1ddd85189ce234189c2983299e9157 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | /** |
| | | * 无尽模式技能作用小怪类型 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 16:32:12 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public enum EndlessBossSkillAgentType |
| | | { |
| | | None, |
| | | |
| | | // 该赛道的所有小怪 |
| | | All |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 47c5507620b08d74bbf053a98f83681d |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | /** |
| | | * 无尽模式技能作用塔位类型 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 16:31:13 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public enum EndlessBossSkillTowerType |
| | | { |
| | | None, |
| | | |
| | | // 该赛道的所有塔 |
| | | All, |
| | | |
| | | // 单个塔,如果第一排塔被损坏,直接作用到第二排 |
| | | Single |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: ccdf7d12c28e5c547b6add3c95d49f63 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | /** |
| | | * 无尽模式技能作用赛道类型 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 16:32:48 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public enum EndlessBossSkillTunelType |
| | | { |
| | | None, |
| | | |
| | | // 法阵中心位置 |
| | | Top, |
| | | |
| | | // 赛道中心 |
| | | Center, |
| | | |
| | | // 我方塔位前面 |
| | | Bottom |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: cfb0c0ef0c2c2d14c872be02be06944b |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | /** |
| | | * 无尽模式boss技能类型 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 16:33:34 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public enum EndlessBossSkillType |
| | | { |
| | | None, |
| | | |
| | | // 魔法护盾 |
| | | ShieldWall, |
| | | |
| | | // 泡泡炸弹 |
| | | BubbleBomb, |
| | | |
| | | // 召唤木桩 |
| | | WoodPile |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 16693698ec0738245931ef13e867b305 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | /** |
| | | * 无尽模式boss技能作用对象 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 15:08:35 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | /// <summary> |
| | | /// 无尽模式技能作用对象 |
| | | /// </summary> |
| | | public enum EndlessBossSkillUseTarget |
| | | { |
| | | // 无效类型 |
| | | None, |
| | | |
| | | // 我方的攻击塔位 |
| | | Tower, |
| | | |
| | | // 小怪 |
| | | Agent, |
| | | |
| | | // 赛道 |
| | | Tunel |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: e74fcfa6b178c2f40b0576817ccdcb58 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | /** |
| | | * 代理类型 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-03 19:59:35 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public enum SpawnAgentType |
| | | { |
| | | // 普通怪,就是正常关卡出的小怪和boss,PVP里面的目前全部都是这种类型 |
| | | Normal, |
| | | |
| | | // 泡泡炸弹,在PVE模式里面,boss技能可以召唤炸弹和木桩等 |
| | | BubbleBomb, |
| | | |
| | | // 召唤木桩 |
| | | WoodPile |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 2380eb60ee8e31649ad585ff6f10cb84 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | GuidePlayUpgradeEffect, |
| | | // 无尽模式boss召唤结束 |
| | | EndlessBossSummonEnd, |
| | | // 无尽模式新的波次开始 |
| | | EndlessBeginWave, |
| | | // 无尽模式boss技能泡泡炸弹受到一次攻击 |
| | | EndlessBossSkillBubbleBombGetHit, |
| | | // 无尽模式泡泡炸弹被火技能烧死 |
| | | EndlessFireSkillKillBubbleBomb, |
| | | // 无尽模式泡泡炸弹被眩晕 |
| | | EndlessBubbleBombBeDizzinessed, |
| | | // 闪烁boss技能title |
| | | EndlessBossSkillGlintTitle, |
| | | } |
| | | |
| | | } |
| | |
| | | EndlessEnemyData.Init(); |
| | | EndlessPortData.Init(); |
| | | EndlessBuffData.Init(); |
| | | EndlessBossData.Init(); |
| | | EndlessBossSkillData.Init(); |
| | | } |
| | | } |
| | | } |
| | |
| | | public List<int> target; |
| | | |
| | | // 技能范围 |
| | | public int tunnel; |
| | | public List<int> tunnel; |
| | | |
| | | // 技能动作 |
| | | public int action; |
| | | |
| | | // 技能类型 |
| | | public int skill_class; |
| | | |
| | | // 技能效果 |
| | | public List<float> effect; |
| | |
| | | _boss_skill.image = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _boss_skill.cool_down = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _boss_skill.target = GameUtils.GetIntList(item[index++]); |
| | | _boss_skill.tunnel = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _boss_skill.tunnel = GameUtils.GetIntList(item[index++]); |
| | | _boss_skill.action = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _boss_skill.skill_class = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _boss_skill.effect = GameUtils.GetFloatList(item[index++]); |
| | | |
| | | return _boss_skill; |
| | |
| | | |
| | | namespace TowerDefense.Affectors |
| | | { |
| | | /// <summary> |
| | | /// The common effect for handling firing projectiles to attack |
| | | /// |
| | | /// Requires an ILauncher but it is not automatically added |
| | | /// Add an ILauncher implementation to this GameObject before you add this script |
| | | /// </summary> |
| | | [RequireComponent(typeof(ILauncher))] |
| | | public class AttackAffector : Affector, ITowerRadiusProvider |
| | | { |
| | | /// <summary> |
| | | /// The projectile used to attack |
| | | /// </summary> |
| | | public GameObject projectile; |
| | | /// <summary> |
| | | /// The common effect for handling firing projectiles to attack |
| | | /// |
| | | /// Requires an ILauncher but it is not automatically added |
| | | /// Add an ILauncher implementation to this GameObject before you add this script |
| | | /// </summary> |
| | | [RequireComponent(typeof(ILauncher))] |
| | | public class AttackAffector : Affector, ITowerRadiusProvider |
| | | { |
| | | /// <summary> |
| | | /// The projectile used to attack |
| | | /// </summary> |
| | | public GameObject projectile; |
| | | |
| | | // |
| | | protected GameObject projectile1; |
| | | protected GameObject projectile2; |
| | | // |
| | | protected GameObject projectile1; |
| | | protected GameObject projectile2; |
| | | |
| | | /// <summary> |
| | | /// The list of points to launch the projectiles from |
| | | /// </summary> |
| | | public Transform[] projectilePoints; |
| | | /// <summary> |
| | | /// The list of points to launch the projectiles from |
| | | /// </summary> |
| | | public Transform[] projectilePoints; |
| | | |
| | | /// <summary> |
| | | /// The reference to the center point where the tower will search from |
| | | /// </summary> |
| | | public Transform epicenter; |
| | | /// <summary> |
| | | /// The reference to the center point where the tower will search from |
| | | /// </summary> |
| | | public Transform epicenter; |
| | | |
| | | /// <summary> |
| | | /// Configuration for when the tower does splash damage |
| | | /// </summary> |
| | | public bool isMultiAttack; |
| | | /// <summary> |
| | | /// Configuration for when the tower does splash damage |
| | | /// </summary> |
| | | public bool isMultiAttack; |
| | | |
| | | /// <summary> |
| | | /// 如果是多目标攻击,最多攻击目标 |
| | | /// </summary> |
| | | public int maxAttackNum = 1; |
| | | /// <summary> |
| | | /// 如果是多目标攻击,最多攻击目标 |
| | | /// </summary> |
| | | public int maxAttackNum = 1; |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | public float fireRate; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 是否木属性数据 |
| | | /// </summary> |
| | | public bool bWoodAffector = false; |
| | | /// <summary> |
| | | /// 是否木属性数据 |
| | | /// </summary> |
| | | public bool bWoodAffector = false; |
| | | |
| | | /// <summary> |
| | | /// The audio source to play when firing |
| | | /// </summary> |
| | | public RandomAudioSource randomAudioSource; |
| | | /// <summary> |
| | | /// The audio source to play when firing |
| | | /// </summary> |
| | | public RandomAudioSource randomAudioSource; |
| | | |
| | | /// <summary> |
| | | /// Gets the targetter |
| | | /// </summary> |
| | | public Targetter towerTargetter; |
| | | /// <summary> |
| | | /// Gets the targetter |
| | | /// </summary> |
| | | public Targetter towerTargetter; |
| | | |
| | | /// <summary> |
| | | /// Color of effect radius visualization |
| | | /// </summary> |
| | | public Color radiusEffectColor; |
| | | /// <summary> |
| | | /// Color of effect radius visualization |
| | | /// </summary> |
| | | public Color radiusEffectColor; |
| | | |
| | | /// <summary> |
| | | /// Search condition |
| | | /// </summary> |
| | | public Filter searchCondition; |
| | | /// <summary> |
| | | /// Search condition |
| | | /// </summary> |
| | | public Filter searchCondition; |
| | | |
| | | /// <summary> |
| | | /// Fire condition |
| | | /// </summary> |
| | | public Filter fireCondition; |
| | | /// <summary> |
| | | /// Fire condition |
| | | /// </summary> |
| | | public Filter fireCondition; |
| | | |
| | | /// <summary> |
| | | /// The reference to the attached launcher |
| | | /// </summary> |
| | | protected ILauncher m_Launcher; |
| | | /// <summary> |
| | | /// The reference to the attached launcher |
| | | /// </summary> |
| | | protected ILauncher m_Launcher; |
| | | |
| | | /// <summary> |
| | | /// The time before firing is possible |
| | | /// </summary> |
| | | protected float m_FireTimer; |
| | | /// <summary> |
| | | /// The time before firing is possible |
| | | /// </summary> |
| | | protected float m_FireTimer; |
| | | |
| | | /// <summary> |
| | | /// Reference to the current tracked enemy |
| | | /// </summary> |
| | | protected Targetable m_TrackingEnemy; |
| | | /// <summary> |
| | | /// Reference to the current tracked enemy |
| | | /// </summary> |
| | | protected Targetable m_TrackingEnemy; |
| | | |
| | | /// <summary> |
| | | /// 处理装弹时间. |
| | | /// </summary> |
| | | protected float fillBulletTime = 0.0f; |
| | | /// <summary> |
| | | /// 处理装弹时间. |
| | | /// </summary> |
| | | protected float fillBulletTime = 0.0f; |
| | | |
| | | /// <summary> |
| | | /// 充能时间 |
| | | /// </summary> |
| | | protected float energyCalTime = 0; |
| | | protected float fInEnergy = 0; |
| | | protected float fBackupTimer = 0.0f; |
| | | /// <summary> |
| | | /// Gets the search rate from the targetter |
| | | /// </summary> |
| | | public float searchRate |
| | | { |
| | | get { return towerTargetter.searchRate; } |
| | | set { towerTargetter.searchRate = value; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Gets the targetable |
| | | /// </summary> |
| | | public Targetable trackingEnemy |
| | | { |
| | | get { return m_TrackingEnemy; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Gets or sets the attack radius |
| | | /// </summary> |
| | | public float effectRadius |
| | | { |
| | | get { return towerTargetter.effectRadius; } |
| | | } |
| | | |
| | | public Color effectColor |
| | | { |
| | | get { return radiusEffectColor; } |
| | | } |
| | | |
| | | public Targetter targetter |
| | | { |
| | | get { return towerTargetter; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Initializes the attack affector |
| | | /// </summary> |
| | | public override void Initialize(IAlignmentProvider affectorAlignment) |
| | | { |
| | | Initialize(affectorAlignment, -1); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 返回可能存在的Targetter. |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public override TowerDefense.Targetting.Targetter GetTargetter() |
| | | { |
| | | return targetter; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Initialises the attack affector with a layer mask |
| | | /// </summary> |
| | | public override void Initialize(IAlignmentProvider affectorAlignment, LayerMask mask) |
| | | { |
| | | base.Initialize(affectorAlignment, mask); |
| | | SetUpTimers(); |
| | | |
| | | towerTargetter.ResetTargetter(); |
| | | towerTargetter.alignment = affectorAlignment; |
| | | towerTargetter.acquiredTarget += OnAcquiredTarget; |
| | | towerTargetter.lostTarget += OnLostTarget; |
| | | } |
| | | |
| | | void OnDestroy() |
| | | { |
| | | towerTargetter.acquiredTarget -= OnAcquiredTarget; |
| | | towerTargetter.lostTarget -= OnLostTarget; |
| | | } |
| | | |
| | | void OnLostTarget() |
| | | { |
| | | m_TrackingEnemy = null; |
| | | } |
| | | |
| | | void OnAcquiredTarget(Targetable acquiredTarget) |
| | | { |
| | | m_TrackingEnemy = acquiredTarget; |
| | | } |
| | | |
| | | public Damager damagerProjectile |
| | | { |
| | | get { return projectile == null ? null : projectile.GetComponent<Damager>(); } |
| | | } |
| | | |
| | | public Damager damagerProjectile1 |
| | | { |
| | | get { return projectile == null ? null : projectile.GetComponent<Damager>(); } |
| | | } |
| | | |
| | | public Damager damagerProjectile2 |
| | | { |
| | | get { return projectile == null ? null : projectile.GetComponent<Damager>(); } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// Returns the total projectile damage |
| | | /// </summary> |
| | | public float GetProjectileDamage() |
| | | { |
| | | var splash = projectile.GetComponent<SplashDamager>(); |
| | | float splashDamage = splash != null ? splash.damage : 0; |
| | | return damagerProjectile.finalDamage + splashDamage; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Initialise the RepeatingTimer |
| | | /// </summary> |
| | | protected virtual void SetUpTimers() |
| | | { |
| | | m_FireTimer = 1 / fireRate; |
| | | m_Launcher = GetComponent<ILauncher>(); |
| | | } |
| | | |
| | | |
| | | protected void updateTowerSkillData() |
| | | protected float fInEnergy = 0; |
| | | protected float fBackupTimer = 0.0f; |
| | | /// <summary> |
| | | /// Gets the search rate from the targetter |
| | | /// </summary> |
| | | public float searchRate |
| | | { |
| | | // |
| | | // 预留出来装填子弹的时间. |
| | | if (fillBulletTime > 0) |
| | | { |
| | | fillBulletTime -= Time.deltaTime; |
| | | if (fillBulletTime <= 0.3f) |
| | | { |
| | | if (towerPtr && towerPtr.bulletCtl) |
| | | towerPtr.bulletCtl.resetToMaxBullet(); |
| | | } |
| | | get { return towerTargetter.searchRate; } |
| | | set { towerTargetter.searchRate = value; } |
| | | } |
| | | |
| | | if (fillBulletTime <= 0) |
| | | { |
| | | fillBulletTime = 0; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// Gets the targetable |
| | | /// </summary> |
| | | public Targetable trackingEnemy |
| | | { |
| | | get { return m_TrackingEnemy; } |
| | | } |
| | | |
| | | // |
| | | // 充能时间的处理 |
| | | if( towerPtr && towerPtr.energyCtl) |
| | | /// <summary> |
| | | /// Gets or sets the attack radius |
| | | /// </summary> |
| | | public float effectRadius |
| | | { |
| | | get { return towerTargetter.effectRadius; } |
| | | } |
| | | |
| | | public Color effectColor |
| | | { |
| | | get { return radiusEffectColor; } |
| | | } |
| | | |
| | | public Targetter targetter |
| | | { |
| | | get { return towerTargetter; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Initializes the attack affector |
| | | /// </summary> |
| | | public override void Initialize(IAlignmentProvider affectorAlignment) |
| | | { |
| | | Initialize(affectorAlignment, -1); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 返回可能存在的Targetter. |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public override TowerDefense.Targetting.Targetter GetTargetter() |
| | | { |
| | | return targetter; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Initialises the attack affector with a layer mask |
| | | /// </summary> |
| | | public override void Initialize(IAlignmentProvider affectorAlignment, LayerMask mask) |
| | | { |
| | | base.Initialize(affectorAlignment, mask); |
| | | SetUpTimers(); |
| | | |
| | | towerTargetter.ResetTargetter(); |
| | | towerTargetter.alignment = affectorAlignment; |
| | | towerTargetter.acquiredTarget += OnAcquiredTarget; |
| | | towerTargetter.lostTarget += OnLostTarget; |
| | | } |
| | | |
| | | void OnDestroy() |
| | | { |
| | | towerTargetter.acquiredTarget -= OnAcquiredTarget; |
| | | towerTargetter.lostTarget -= OnLostTarget; |
| | | } |
| | | |
| | | void OnLostTarget() |
| | | { |
| | | m_TrackingEnemy = null; |
| | | } |
| | | |
| | | void OnAcquiredTarget(Targetable acquiredTarget) |
| | | { |
| | | // m_TrackingEnemy = acquiredTarget; |
| | | } |
| | | |
| | | public Damager damagerProjectile |
| | | { |
| | | get { return projectile == null ? null : projectile.GetComponent<Damager>(); } |
| | | } |
| | | |
| | | public Damager damagerProjectile1 |
| | | { |
| | | get { return projectile == null ? null : projectile.GetComponent<Damager>(); } |
| | | } |
| | | |
| | | public Damager damagerProjectile2 |
| | | { |
| | | get { return projectile == null ? null : projectile.GetComponent<Damager>(); } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// Returns the total projectile damage |
| | | /// </summary> |
| | | public float GetProjectileDamage() |
| | | { |
| | | var splash = projectile.GetComponent<SplashDamager>(); |
| | | float splashDamage = splash != null ? splash.damage : 0; |
| | | return damagerProjectile.finalDamage + splashDamage; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Initialise the RepeatingTimer |
| | | /// </summary> |
| | | protected virtual void SetUpTimers() |
| | | { |
| | | m_FireTimer = 1 / fireRate; |
| | | m_Launcher = GetComponent<ILauncher>(); |
| | | } |
| | | |
| | | |
| | | protected void updateTowerSkillData() |
| | | { |
| | | // |
| | | // 预留出来装填子弹的时间. |
| | | if (fillBulletTime > 0) |
| | | { |
| | | if( this.fInEnergy <= 0) |
| | | fillBulletTime -= Time.deltaTime; |
| | | if (fillBulletTime <= 0.3f) |
| | | { |
| | | this.energyCalTime += Time.deltaTime; |
| | | float process = energyCalTime % 11.0f; |
| | | int proint = (int)Math.Floor(process); |
| | | proint += towerPtr.uiProOffset; |
| | | towerPtr.energyCtl.SetEnergyProcessFloat( process ); |
| | | if (proint == 10) |
| | | { |
| | | fInEnergy = 5.0f; |
| | | if (towerPtr && towerPtr.bulletCtl) |
| | | towerPtr.bulletCtl.resetToMaxBullet(); |
| | | } |
| | | |
| | | // 设置多倍攻击速度 |
| | | fBackupTimer = m_FireTimer; |
| | | m_FireTimer = m_FireTimer / 3.0f; |
| | | if (fillBulletTime <= 0) |
| | | { |
| | | fillBulletTime = 0; |
| | | } |
| | | } |
| | | |
| | | towerPtr.uiProOffset = 0; |
| | | towerPtr.PlayEnergyEffect(true); |
| | | } |
| | | // |
| | | // 充能时间的处理 |
| | | if (towerPtr && towerPtr.energyCtl) |
| | | { |
| | | if (this.fInEnergy <= 0) |
| | | { |
| | | this.energyCalTime += Time.deltaTime; |
| | | float process = energyCalTime % 11.0f; |
| | | int proint = (int)Math.Floor(process); |
| | | proint += towerPtr.uiProOffset; |
| | | towerPtr.energyCtl.SetEnergyProcessFloat(process); |
| | | if (proint == 10) |
| | | { |
| | | fInEnergy = 5.0f; |
| | | |
| | | // 设置多倍攻击速度 |
| | | fBackupTimer = m_FireTimer; |
| | | m_FireTimer = m_FireTimer / 3.0f; |
| | | |
| | | towerPtr.uiProOffset = 0; |
| | | towerPtr.PlayEnergyEffect(true); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | fInEnergy -= Time.deltaTime; |
| | | if( fInEnergy <= 0) |
| | | fInEnergy -= Time.deltaTime; |
| | | if (fInEnergy <= 0) |
| | | { |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.FireTowerChargeEnd); |
| | | fInEnergy = 0.0f; |
| | | this.energyCalTime = 0.0f; |
| | | towerPtr.energyCtl.SetEnergyProgress(0); |
| | | fInEnergy = 0.0f; |
| | | this.energyCalTime = 0.0f; |
| | | towerPtr.energyCtl.SetEnergyProgress(0); |
| | | |
| | | // 恢复正常攻击速度 |
| | | m_FireTimer = fBackupTimer; |
| | | // 恢复正常攻击速度 |
| | | m_FireTimer = fBackupTimer; |
| | | |
| | | towerPtr.PlayEnergyEffect(false); |
| | | towerPtr.PlayEnergyEffect(false); |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Update the timers |
| | | /// </summary> |
| | | protected virtual void Update() |
| | | { |
| | | // 处理当前Affector所在Tower对应的技能 |
| | | updateTowerSkillData(); |
| | | /// <summary> |
| | | /// Update the timers |
| | | /// </summary> |
| | | protected virtual void Update() |
| | | { |
| | | // Agent 和 Tower 身上都有 AttackAffector,如果获取不到 ILauncher 说明是 Agent |
| | | // 目前为止,Agent 并不需要发射子弹攻击 |
| | | if (m_Launcher == null) return; |
| | | |
| | | m_FireTimer -= Time.deltaTime; |
| | | if( trackingEnemy == null ) |
| | | m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector); |
| | | if (trackingEnemy != null && m_FireTimer <= 0.0f) |
| | | { |
| | | OnFireTimer(); |
| | | m_FireTimer = 1 / fireRate; |
| | | // 处理当前Affector所在Tower对应的技能 |
| | | updateTowerSkillData(); |
| | | |
| | | // 多倍攻速: |
| | | if (fInEnergy > 0.0f) |
| | | m_FireTimer = m_FireTimer / 3.0f; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Fired at every poll of the fire rate timer |
| | | /// </summary> |
| | | protected virtual void OnFireTimer() |
| | | { |
| | | if (fireCondition != null) |
| | | { |
| | | if (!fireCondition()) |
| | | { |
| | | return; |
| | | } |
| | | } |
| | | FireProjectile(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Common logic when attacking |
| | | /// 调用攻击的核心函数,由这个函数发起真正的攻击,多目标或者单目标 |
| | | /// </summary> |
| | | protected virtual void FireProjectile() |
| | | { |
| | | // 不再处理多子弹攻击,确保只有一个弹道 |
| | | isMultiAttack = false; |
| | | m_TrackingEnemy = targetter.GetTarget( waveLineID, bWoodAffector ); |
| | | if ( (m_TrackingEnemy == null) || (fillBulletTime>0) ) |
| | | { |
| | | if (this.towerPtr) |
| | | towerPtr.setTowerState(false); |
| | | return; |
| | | }else |
| | | m_FireTimer -= Time.deltaTime; |
| | | if (trackingEnemy == null) |
| | | m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector); |
| | | if (trackingEnemy != null && m_FireTimer <= 0.0f) |
| | | { |
| | | if (this.towerPtr) |
| | | towerPtr.setTowerState(true); |
| | | OnFireTimer(); |
| | | m_FireTimer = 1 / fireRate; |
| | | |
| | | // 多倍攻速: |
| | | if (fInEnergy > 0.0f) |
| | | m_FireTimer = m_FireTimer / 3.0f; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Fired at every poll of the fire rate timer |
| | | /// </summary> |
| | | protected virtual void OnFireTimer() |
| | | { |
| | | if (fireCondition != null) |
| | | { |
| | | if (!fireCondition()) |
| | | { |
| | | return; |
| | | } |
| | | } |
| | | FireProjectile(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Common logic when attacking |
| | | /// 调用攻击的核心函数,由这个函数发起真正的攻击,多目标或者单目标 |
| | | /// </summary> |
| | | protected virtual void FireProjectile() |
| | | { |
| | | // 不再处理多子弹攻击,确保只有一个弹道 |
| | | isMultiAttack = false; |
| | | m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector); |
| | | if ((m_TrackingEnemy == null) || (fillBulletTime > 0)) |
| | | { |
| | | if (this.towerPtr) |
| | | towerPtr.setTowerState(false); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | if (this.towerPtr) |
| | | towerPtr.setTowerState(true); |
| | | } |
| | | |
| | | // |
| | | // 处理子弹充能相关的内容 |
| | | if( towerPtr && (towerPtr.bulletCtl != null)) |
| | | // |
| | | // 处理子弹充能相关的内容 |
| | | if (towerPtr && (towerPtr.bulletCtl != null)) |
| | | { |
| | | int bnum = towerPtr.bulletCtl.decBullet(); |
| | | // |
| | | if (bnum == 0) |
| | | { |
| | | damagerProjectile.damageMulti = 2.0f; |
| | | fillBulletTime = 2.0f; |
| | | } |
| | | int bnum = towerPtr.bulletCtl.decBullet(); |
| | | // |
| | | if (bnum == 0) |
| | | { |
| | | damagerProjectile.damageMulti = 2.0f; |
| | | fillBulletTime = 2.0f; |
| | | } |
| | | } |
| | | |
| | | if (isMultiAttack) |
| | | { |
| | | List<Targetable> enemies = towerTargetter.GetAllTargets(); |
| | | if( (enemies != null)&&(Targetter.bSearchTarget) ) |
| | | m_Launcher.Launch(enemies, projectile, projectilePoints,this.maxAttackNum); |
| | | } |
| | | else |
| | | { |
| | | if(Targetter.bSearchTarget ) |
| | | m_Launcher.Launch(m_TrackingEnemy, damagerProjectile.gameObject, projectilePoints); |
| | | } |
| | | if (randomAudioSource != null) |
| | | { |
| | | if( Targetter.bSearchTarget ) |
| | | randomAudioSource.PlayRandomClip(); |
| | | } |
| | | } |
| | | if (isMultiAttack) |
| | | { |
| | | List<Targetable> enemies = towerTargetter.GetAllTargets(); |
| | | if ((enemies != null) && (Targetter.bSearchTarget)) |
| | | m_Launcher.Launch(enemies, projectile, projectilePoints, this.maxAttackNum); |
| | | } |
| | | else |
| | | { |
| | | if (Targetter.bSearchTarget) |
| | | m_Launcher.Launch(m_TrackingEnemy, damagerProjectile.gameObject, projectilePoints); |
| | | } |
| | | if (randomAudioSource != null) |
| | | { |
| | | if (Targetter.bSearchTarget) |
| | | randomAudioSource.PlayRandomClip(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// A delegate to compare distances of components |
| | | /// </summary> |
| | | /// <param name="first"></param> |
| | | /// <param name="second"></param> |
| | | protected virtual int ByDistance(Targetable first, Targetable second) |
| | | { |
| | | float firstSqrMagnitude = Vector3.SqrMagnitude(first.position - epicenter.position); |
| | | float secondSqrMagnitude = Vector3.SqrMagnitude(second.position - epicenter.position); |
| | | return firstSqrMagnitude.CompareTo(secondSqrMagnitude); |
| | | } |
| | | /// <summary> |
| | | /// A delegate to compare distances of components |
| | | /// </summary> |
| | | /// <param name="first"></param> |
| | | /// <param name="second"></param> |
| | | protected virtual int ByDistance(Targetable first, Targetable second) |
| | | { |
| | | float firstSqrMagnitude = Vector3.SqrMagnitude(first.position - epicenter.position); |
| | | float secondSqrMagnitude = Vector3.SqrMagnitude(second.position - epicenter.position); |
| | | return firstSqrMagnitude.CompareTo(secondSqrMagnitude); |
| | | } |
| | | |
| | | #if UNITY_EDITOR |
| | | /// <summary> |
| | | /// Draws the search area |
| | | /// </summary> |
| | | void OnDrawGizmosSelected() |
| | | { |
| | | Gizmos.DrawWireSphere(epicenter.position, towerTargetter.effectRadius); |
| | | } |
| | | /// <summary> |
| | | /// Draws the search area |
| | | /// </summary> |
| | | void OnDrawGizmosSelected() |
| | | { |
| | | Gizmos.DrawWireSphere(epicenter.position, towerTargetter.effectRadius); |
| | | } |
| | | #endif |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// A delegate for boolean calculation logic |
| | | /// </summary> |
| | | public delegate bool Filter(); |
| | | /// <summary> |
| | | /// A delegate for boolean calculation logic |
| | | /// </summary> |
| | | public delegate bool Filter(); |
| | | } |
| | |
| | | public bool bInDeathState |
| | | { |
| | | get { return this.bInDeathAct; } |
| | | set { bInDeathAct = value; } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | protected bool nodeMoveUpdate = false; |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 代理的类型 |
| | | /// </summary> |
| | | public SpawnAgentType AgentType { get; set; } = SpawnAgentType.Normal; |
| | | |
| | | /// <summary> |
| | | /// Accessor to <see cref="m_NavMeshAgent"/> |
New file |
| | |
| | | using Core.Utilities; |
| | | using UnityEngine; |
| | | |
| | | /** |
| | | * 泡泡炸弹 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-03 17:26:27 |
| | | */ |
| | | namespace TowerDefense.Agents |
| | | { |
| | | public class BubbleBombAgent : Agent |
| | | { |
| | | /// <summary> |
| | | /// 外部赋值,唯一标识一个泡泡炸弹代理 |
| | | /// </summary> |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 正常的特效 |
| | | /// </summary> |
| | | public ParticleSystem NormalEffect; |
| | | |
| | | /// <summary> |
| | | /// 爆炸的特效 |
| | | /// </summary> |
| | | public ParticleSystem ExplodeEffect; |
| | | |
| | | /// <summary> |
| | | /// Peforms the relevant path update |
| | | /// 执行相关路径更新 |
| | | /// </summary> |
| | | protected override void PathUpdate() |
| | | { |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// The behaviour for when the agent has been blocked |
| | | /// 代理被阻止时的行为 |
| | | /// </summary> |
| | | protected override void OnPartialPathUpdate() |
| | | { |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重置数据 |
| | | /// </summary> |
| | | public void Reset() |
| | | { |
| | | bInDeathState = false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 播放正常状态的特效 |
| | | /// </summary> |
| | | public void PlayNormalEffect() |
| | | { |
| | | NormalEffect.Play(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 停止正常状态的特效 |
| | | /// </summary> |
| | | public void StopNormalEffect() |
| | | { |
| | | NormalEffect.Stop(); |
| | | NormalEffect.Clear(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 播放爆炸的特效 |
| | | /// </summary> |
| | | public void PlayExplodeEffect() |
| | | { |
| | | ExplodeEffect.Play(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 停止爆炸特效 |
| | | /// </summary> |
| | | public void StopExplodeEffect() |
| | | { |
| | | ExplodeEffect.Stop(); |
| | | ExplodeEffect.Clear(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取爆炸特效持续时间,该时间过后会回收gameObject |
| | | /// </summary> |
| | | public float GetExplodeTime() |
| | | { |
| | | return 1.15f; |
| | | } |
| | | |
| | | protected override void Update() |
| | | { |
| | | |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: a92cd5a2e6e04f84aa172ab3a5f342a1 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | /// <returns></returns> |
| | | public int getAgentInsNum() |
| | | { |
| | | return this.agentInsList.Count; |
| | | int ret = 0; |
| | | |
| | | for (int i = 0; i < agentInsList.Count; ++i) |
| | | { |
| | | if (agentInsList[i].AgentType == SpawnAgentType.Normal) |
| | | ++ret; |
| | | } |
| | | |
| | | return ret; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | if (slinfo.atcmod.Count < 2) return; |
| | | |
| | | float radius = slinfo.atcmod[1]; |
| | | |
| | | for (int ti = 0; ti < mgrList.Length; ti++) |
| | | { |
| | | WaveLineAgentInsMgr mgr = mgrList[ti]; |
| | | for (int idx = 0; idx < mgr.listAgent.Count; idx++) |
| | | { |
| | | Agent eag = mgr.listAgent[idx]; |
| | | Vector3 fpos = eag.transform.position; |
| | | fpos.y = 0; |
| | | float dist = Vector3.Distance(fpos, pos); |
| | | if (radius < dist) |
| | | continue; |
| | | |
| | | float damage = slinfo.skilleffect[2]; |
| | | damage += (slinfo.skilleffect[1] / 100.0f * eag.configuration.maxHealth); |
| | | damage = (float)Math.Floor(damage); |
| | | |
| | | eag.TakeDamage(damage, fpos, null); |
| | | if (!eag.opponentAgent) |
| | | if (eag.AgentType == SpawnAgentType.BubbleBomb) |
| | | { |
| | | if (GameUI.instanceExists) |
| | | GameUI.instance.generateBloodText(fpos, damage, false, false); |
| | | else if (EndlessGameUI.instanceExists) |
| | | EndlessGameUI.instance.generateBloodText(fpos, damage, false, false); |
| | | buffinfo bufdata = JsonDataCenter.GetBuffFromId(3); |
| | | if (bufdata != null) |
| | | { |
| | | if (bufdata.buff_func[0] == 3) |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessBubbleBombBeDizzinessed, (eag as BubbleBombAgent).Id, bufdata.last); |
| | | } |
| | | } |
| | | |
| | | if (eag.isDead) |
| | | continue; |
| | | else |
| | | eag.SetAgentBuffEffect(3); |
| | | { |
| | | Vector3 fpos = eag.transform.position; |
| | | fpos.y = 0; |
| | | float dist = Vector3.Distance(fpos, pos); |
| | | if (radius < dist) |
| | | continue; |
| | | |
| | | float damage = slinfo.skilleffect[2]; |
| | | damage += (slinfo.skilleffect[1] / 100.0f * eag.configuration.maxHealth); |
| | | damage = (float)Math.Floor(damage); |
| | | |
| | | eag.TakeDamage(damage, fpos, null); |
| | | if (!eag.opponentAgent) |
| | | { |
| | | if (GameUI.instanceExists) |
| | | GameUI.instance.generateBloodText(fpos, damage, false, false); |
| | | else if (EndlessGameUI.instanceExists) |
| | | EndlessGameUI.instance.generateBloodText(fpos, damage, false, false); |
| | | } |
| | | |
| | | if (eag.isDead) |
| | | continue; |
| | | else |
| | | eag.SetAgentBuffEffect(3); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | wavelineIns = agentWaveLineArray[waveline]; |
| | | |
| | | if (wavelineIns == null) return; |
| | | |
| | | List<Agent> listAg = wavelineIns.listAgent; |
| | | |
| | | for (int ti = listAg.Count - 1; ti >= 0; ti--) |
| | | { |
| | | Agent eag = listAg[ti]; |
| | | Vector3 fpos = eag.transform.position; |
| | | float damage = slinfo.skilleffect[2]; |
| | | damage += (slinfo.skilleffect[1] / 100.0f * eag.configuration.maxHealth); |
| | | damage = (float)Math.Floor(damage); |
| | | |
| | | eag.TakeDamage(damage, fpos, null); |
| | | if (!eag.opponentAgent) |
| | | if (eag.AgentType == SpawnAgentType.BubbleBomb) |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessFireSkillKillBubbleBomb, (eag as BubbleBombAgent).Id); |
| | | else |
| | | { |
| | | if (GameUI.instanceExists) |
| | | GameUI.instance.generateBloodText(fpos, damage, false, false); |
| | | else if (EndlessGameUI.instanceExists) |
| | | EndlessGameUI.instance.generateBloodText(fpos, damage, false, false); |
| | | Vector3 fpos = eag.transform.position; |
| | | float damage = slinfo.skilleffect[2]; |
| | | damage += (slinfo.skilleffect[1] / 100.0f * eag.configuration.maxHealth); |
| | | damage = (float)Math.Floor(damage); |
| | | |
| | | eag.TakeDamage(damage, fpos, null); |
| | | if (!eag.opponentAgent) |
| | | { |
| | | if (GameUI.instanceExists) |
| | | GameUI.instance.generateBloodText(fpos, damage, false, false); |
| | | else if (EndlessGameUI.instanceExists) |
| | | EndlessGameUI.instance.generateBloodText(fpos, damage, false, false); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | private bool isStopSecondWaveCompleted = false; |
| | | |
| | | /// <summary> |
| | | /// 赛道长度 |
| | | /// </summary> |
| | | private float tunelLength = 31.94f; |
| | | |
| | | private List<Vector3> homeBasePositionList; |
| | | |
| | | /// <summary> |
| | | /// 根据赛道id(1~5)获得基地坐标 |
| | | /// </summary> |
| | | /// <param name="tunelId"></param> |
| | | /// <returns></returns> |
| | | public Vector3 GetHomeBasePosition(int tunelId) |
| | | { |
| | | return homeBasePositionList[tunelId - 1]; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据赛道id(1~5)和赛道类型获得世界坐标 |
| | | /// </summary> |
| | | /// <param name="tunelId"></param> |
| | | /// <param name="tunelType"></param> |
| | | public Vector3 GetTunelWorldPosition(int tunelId, EndlessBossSkillTunelType tunelType) |
| | | { |
| | | Vector3 startPos = StartingNodeList[tunelId - 1].transform.position; |
| | | Vector3 ret = new Vector3(startPos.x, startPos.y, startPos.z); |
| | | float add = 0; |
| | | |
| | | switch (tunelType) |
| | | { |
| | | case EndlessBossSkillTunelType.Top: |
| | | break; |
| | | case EndlessBossSkillTunelType.Center: |
| | | add = -(tunelLength / 2); |
| | | break; |
| | | case EndlessBossSkillTunelType.Bottom: |
| | | add = -tunelLength; |
| | | break; |
| | | } |
| | | |
| | | ret.z += add; |
| | | |
| | | return ret; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 切换基地 |
| | | /// </summary> |
| | | /// <param name="index">列索引</param> |
| | |
| | | { |
| | | EndlessBuffSelect.instance.BuffSelectCompleted += OnBuffSelectCompleted; |
| | | EndlessGameUI.instance.GameOverEvent += SafelyCallLevelCompleted; |
| | | |
| | | homeBasePositionList = new List<Vector3>(); |
| | | |
| | | for (int i = 0; i < StartingNodeList.Count; ++i) |
| | | { |
| | | Vector3 startPos = StartingNodeList[i].transform.position; |
| | | Vector3 pos = new Vector3(); |
| | | pos.x = startPos.x; |
| | | pos.y = startPos.y; |
| | | pos.z = startPos.z - tunelLength; |
| | | homeBasePositionList.Add(pos); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | if (!isBuffSelectCompleted) |
| | | { |
| | | isBuffSelectCompleted = true; |
| | | WaveManager.InitPort(CurrentLevel); |
| | | if (CurrentLevel > startLevel) |
| | | WaveManager.InitPort(CurrentLevel); |
| | | EndlessUIStart.instance.Restart(); |
| | | WaveManager.StartWaves(CurrentLevel); |
| | | } |
| | |
| | | protected virtual void AllWaveCompleted() |
| | | { |
| | | IsAllWaveCompleted = true; |
| | | EndlessBossSkillManager.instance.ClearSkillList(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | isWaveStoped = false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Handles spawning the current agent and sets up the next agent for spawning |
| | | /// 在场景内孵化出来一个Boss,这个核心函数最后被规则性的数据接管 |
| | | /// </summary> |
| | | protected virtual void SpawnCurrent() |
| | | { |
| | | if (isWaveStoped) return; |
| | |
| | | else |
| | | { |
| | | ++spawnedEnemies; |
| | | |
| | | if (SpawnNewAgent != null) |
| | | SpawnNewAgent(); |
| | | |
| | | if (spawnedEnemies >= waveData.Config.amount) |
| | | { |
| | | StopWave(); |
| | | SafelyBroadcastWaveCompletedEvent(); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | newAgent.healthBar.SetHealthLevel(1); |
| | | // 加入Manager统一管理. |
| | | AgentInsManager.instance.addAgent(newAgent); |
| | | |
| | | |
| | | if (isDouble) |
| | | { |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 暂时先这么处理 |
| | | /// 暂时先这么处理 cx test |
| | | /// </summary> |
| | | /// <param name="resId">endless_enemy表的资源id</param> |
| | | /// <returns>所有可选的agent列表的索引</returns> |
| | |
| | | /// <param name="level"></param> |
| | | public void InitPort(int level) |
| | | { |
| | | EndlessPortData.InitPortList(); |
| | | InitPortData(level); |
| | | InitWaveData(); |
| | | RefreshBoss(); |
| | | |
| | | if (!GameConfig.IsNewbie) |
| | | { |
| | | endless_boss bossData = EndlessBossData.GetDataById(waveData[0].Config.resource); |
| | | |
| | | if (bossData != null) |
| | | EndlessBossSkillManager.instance.Init(bossData.skill); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | } |
| | | |
| | | if (TotalWaveLines != 0) |
| | | { |
| | | isWaveStarted = true; |
| | | EndlessBossSkillManager.instance.Restart(); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessBeginWave); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | // 更新波索引 |
| | | ++CurrentWaveIndex; |
| | | EndlessBuffManager.instance.UpdateBuffList(); |
| | | EndlessBossSkillManager.instance.Reset(); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessCompletedPort, Level, CurrentWaveIndex); |
| | | |
| | | if (CurrentWaveIndex >= TotalWaves) |
| | |
| | | } |
| | | void FixedUpdate() |
| | | { |
| | | this.resizeBuyButtonSize(this.buyButtonScaler); |
| | | // this.resizeBuyButtonSize(this.buyButtonScaler); |
| | | } |
| | | |
| | | void Update() |
| | |
| | | /// </summary> |
| | | public float attackRise { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 处理代理收到的伤害,这里需要判断代理的类型分别去处理 |
| | | /// </summary> |
| | | /// <param name="enemy"></param> |
| | | public void DealDamage(Targetable enemy) |
| | | { |
| | | switch ((enemy as Agent).AgentType) |
| | | { |
| | | case SpawnAgentType.Normal: |
| | | HandleNormal(enemy); |
| | | break; |
| | | case SpawnAgentType.BubbleBomb: |
| | | HandleBubbleBomb(enemy); |
| | | break; |
| | | case SpawnAgentType.WoodPile: |
| | | break; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理泡泡炸弹收到的伤害 |
| | | /// </summary> |
| | | /// <param name="enemy"></param> |
| | | private void HandleBubbleBomb(Targetable enemy) |
| | | { |
| | | // 泡泡炸弹伤害是以次数计算的 |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessBossSkillBubbleBombGetHit, (enemy as BubbleBombAgent).Id); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理普通小怪和boss收到的伤害 |
| | | /// </summary> |
| | | /// <param name="enemy"></param> |
| | | private void HandleNormal(Targetable enemy) |
| | | { |
| | | float finalDamage = damager.finalDamage; |
| | | bool crit = damager.isCrit; |
| | | if (crit) |
| | |
| | | using DG.Tweening; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | using Core.Utilities; |
| | | |
| | | /** |
| | |
| | | /// </summary> |
| | | public EndlessBossActionState ActionState { get; set; } |
| | | |
| | | public Image Title; |
| | | |
| | | // Start is called before the first frame update |
| | | private void Start() |
| | | { |
| | | |
| | | ColorVal = 0; |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.EndlessBossSkillGlintTitle, Glint); |
| | | } |
| | | |
| | | // Update is called once per frame |
| | |
| | | |
| | | } |
| | | |
| | | private void Glint() |
| | | { |
| | | //设置一个DOTween队列 |
| | | Sequence flashSeq = DOTween.Sequence(); |
| | | Color c = Title.color; |
| | | c.a = 0; |
| | | Title.color = c; |
| | | Title.gameObject.SetActive(true); |
| | | |
| | | flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f)); |
| | | flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f)); |
| | | flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f)); |
| | | flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f)); |
| | | flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f)); |
| | | flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f)); |
| | | } |
| | | |
| | | private float ColorVal |
| | | { |
| | | get { return Title.color.a; } |
| | | set |
| | | { |
| | | Title.gameObject.SetActive(value != 0); |
| | | Color c = Title.color; |
| | | c.a = value; |
| | | Title.color = c; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 帧事件 |
| | | /// </summary> |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: dc8c9b67f835de24cbc9408979359b09 |
| | | folderAsset: yes |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using TowerDefense.UI.HUD; |
| | | using Core.Utilities; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using TowerDefense.Agents; |
| | | using TowerDefense.Level; |
| | | |
| | | /** |
| | | * 泡泡炸弹 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 17:09:03 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public class BubbleBombConfig |
| | | { |
| | | public BubbleBombAgent Agent { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 需要被攻击的次数,攻击 * 次炸弹才会被销毁 |
| | | /// </summary> |
| | | public int NeedAttackCount { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 已经被攻击的次数 |
| | | /// </summary> |
| | | public int AttackCount { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否抵达基地,抵达基地后,不能继续被塔攻击 |
| | | /// </summary> |
| | | public bool IsArrived { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 出生点坐标 |
| | | /// </summary> |
| | | public Vector3 StartPosition { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 目的地坐标,也就是基地位置 |
| | | /// </summary> |
| | | public Vector3 TargetPosition { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否被攻击打死,被塔打死或者被火技能宝石打死(火技能宝石是直接秒杀炸弹的) |
| | | /// </summary> |
| | | public bool IsAttackDeath { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 销毁时间,被塔打死或者攻击玩家基地后,时间减为0之后销毁 |
| | | /// </summary> |
| | | public float DestroyTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 移动速度 |
| | | /// </summary> |
| | | public float MoveSpeed { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否被眩晕 |
| | | /// </summary> |
| | | public bool IsDizzinessed { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 眩晕时间 |
| | | /// </summary> |
| | | public float DizzinessTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否是攻击状态,延时取摧毁基地 |
| | | /// </summary> |
| | | public bool IsAttack { get; set; } |
| | | |
| | | public float AttackTime { get; set; } |
| | | } |
| | | |
| | | public class BossSkillBubbleBomb : EndlessBossSkill |
| | | { |
| | | public BossSkillBubbleBomb(boss_skill param) : base(param) |
| | | { |
| | | random = new System.Random(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 被攻击的次数 |
| | | /// </summary> |
| | | protected int beAttackedCount; |
| | | |
| | | protected string prefabPath = "Prefabs/Endless/BubbleBomb"; |
| | | |
| | | /// <summary> |
| | | /// 所有存在于场景中的泡泡炸弹 |
| | | /// </summary> |
| | | protected List<BubbleBombConfig> bubbleBombList; |
| | | |
| | | protected System.Random random; |
| | | |
| | | /// <summary> |
| | | /// 释放技能 |
| | | /// </summary> |
| | | public override void ReleaseSkill() |
| | | { |
| | | base.ReleaseSkill(); |
| | | Debug.Log("--------------------- 泡泡炸弹释放 ---------------------"); |
| | | // cx test |
| | | SpawnBubbleBomb(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 在场景中生成泡泡炸弹 |
| | | /// </summary> |
| | | protected void SpawnBubbleBomb() |
| | | { |
| | | switch ((EndlessBossSkillUseTarget)SkillData.target[0]) |
| | | { |
| | | case EndlessBossSkillUseTarget.Tower: |
| | | Debug.Log("--------------------- WTF 不支持哦~ ---------------------"); |
| | | break; |
| | | case EndlessBossSkillUseTarget.Agent: |
| | | Debug.Log("--------------------- WTF 不支持哦~ ---------------------"); |
| | | break; |
| | | case EndlessBossSkillUseTarget.Tunel: |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessBossSkillGlintTitle); |
| | | SpawnOnTunel(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 在赛道上生成炸弹 |
| | | /// </summary> |
| | | protected void SpawnOnTunel() |
| | | { |
| | | // 有可能只在某一条赛道生成,也有可能在所有赛道生成 |
| | | List<int> tunelIdList = GetTunelList(); |
| | | GameObject prefab = Resources.Load<GameObject>(prefabPath); |
| | | |
| | | for (int i = 0; i < tunelIdList.Count; ++i) |
| | | { |
| | | Poolable poolable = Poolable.TryGetPoolable<Poolable>(prefab); |
| | | BubbleBombAgent bubbleBomb = poolable.GetComponent<BubbleBombAgent>(); |
| | | |
| | | // 分配唯一id |
| | | bubbleBomb.Id = GameUtils.GetId(); |
| | | bubbleBomb.waveLineID = tunelIdList[i] - 1; |
| | | bubbleBomb.AgentType = SpawnAgentType.BubbleBomb; |
| | | bubbleBomb.opponentAgent = false; |
| | | |
| | | // 出生位置 |
| | | Vector3 spawnPosition = EndlessLevelManager.instance.GetTunelWorldPosition(tunelIdList[i], (EndlessBossSkillTunelType)SkillData.target[1]); |
| | | bubbleBomb.transform.position = spawnPosition; |
| | | bubbleBomb.PlayNormalEffect(); |
| | | AgentInsManager.instance.addAgent(bubbleBomb); |
| | | |
| | | BubbleBombConfig config = new BubbleBombConfig(); |
| | | config.Agent = bubbleBomb; |
| | | config.NeedAttackCount = (int)SkillData.effect[0]; |
| | | config.StartPosition = spawnPosition; |
| | | config.TargetPosition = EndlessLevelManager.instance.GetHomeBasePosition(tunelIdList[i]); |
| | | config.DestroyTime = bubbleBomb.GetExplodeTime(); |
| | | config.MoveSpeed = SkillData.effect[1]; |
| | | bubbleBombList.Add(config); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取赛道列表 |
| | | /// </summary> |
| | | protected List<int> GetTunelList() |
| | | { |
| | | List<int> tunelIdList = new List<int>(); |
| | | // cx test 后面改 |
| | | int configTunel = SkillData.tunnel[0]; |
| | | |
| | | if (configTunel <= 5) |
| | | // 直接对应具体的一条赛道 |
| | | tunelIdList.Add(configTunel); |
| | | else if (configTunel == 6) |
| | | { |
| | | // 所有赛道 |
| | | for (int i = 1; i <= 5; ++i) |
| | | { |
| | | tunelIdList.Add(i); |
| | | } |
| | | } |
| | | else if (configTunel == 7) |
| | | // 随机一条 |
| | | tunelIdList.Add(random.Next(1, 6)); |
| | | |
| | | return tunelIdList; |
| | | } |
| | | |
| | | public override void Reset() |
| | | { |
| | | base.Reset(); |
| | | beAttackedCount = 0; |
| | | ClearBubbleBomb(); |
| | | } |
| | | |
| | | public override void Clear() |
| | | { |
| | | base.Clear(); |
| | | ClearBubbleBomb(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 清理在场景中的所有炸弹 |
| | | /// </summary> |
| | | private void ClearBubbleBomb() |
| | | { |
| | | for (int i = 0; i < bubbleBombList.Count; ++i) |
| | | { |
| | | bubbleBombList[i].Agent.Reset(); |
| | | bubbleBombList[i].Agent.StopNormalEffect(); |
| | | bubbleBombList[i].Agent.StopExplodeEffect(); |
| | | |
| | | if (!bubbleBombList[i].Agent.bInDeathState) |
| | | AgentInsManager.instance.removeAgent(bubbleBombList[i].Agent); |
| | | |
| | | Poolable.TryPool(bubbleBombList[i].Agent.gameObject); |
| | | } |
| | | |
| | | bubbleBombList.Clear(); |
| | | } |
| | | |
| | | public override void Init() |
| | | { |
| | | base.Init(); |
| | | Debug.Log("--------------------- 泡泡炸弹技能初始化 ---------------------"); |
| | | bubbleBombList = new List<BubbleBombConfig>(); |
| | | } |
| | | |
| | | protected override void AddEvent() |
| | | { |
| | | EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.EndlessBossSkillBubbleBombGetHit, OnGetHit); |
| | | EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.EndlessFireSkillKillBubbleBomb, OnFireSkillKillBubbleBomb); |
| | | EventCenter.Ins.Add<int, int>((int)KTGMGemClient.EventType.EndlessBubbleBombBeDizzinessed, OnBubbleBombBeDizzinessed); |
| | | } |
| | | |
| | | protected override void RemoveEvent() |
| | | { |
| | | EventCenter.Ins.Remove<int>((int)KTGMGemClient.EventType.EndlessBossSkillBubbleBombGetHit, OnGetHit); |
| | | EventCenter.Ins.Remove<int>((int)KTGMGemClient.EventType.EndlessFireSkillKillBubbleBomb, OnFireSkillKillBubbleBomb); |
| | | EventCenter.Ins.Remove<int, int>((int)KTGMGemClient.EventType.EndlessBubbleBombBeDizzinessed, OnBubbleBombBeDizzinessed); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 泡泡炸弹受到一次攻击 |
| | | /// </summary> |
| | | /// <param name="id">炸弹代理的唯一id</param> |
| | | private void OnGetHit(int id) |
| | | { |
| | | for (int i = 0; i < bubbleBombList.Count; ++i) |
| | | { |
| | | if (bubbleBombList[i].Agent.Id == id) |
| | | { |
| | | BubbleBombConfig config = bubbleBombList[i]; |
| | | // 攻击次数够了被打死了 或者 达到基地了 |
| | | if (config.Agent.bInDeathState) return; |
| | | |
| | | ++config.AttackCount; |
| | | |
| | | if (config.AttackCount >= config.NeedAttackCount) |
| | | AgentDead(config); |
| | | |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 泡泡炸弹被火技能烧死 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | private void OnFireSkillKillBubbleBomb(int id) |
| | | { |
| | | for (int i = 0; i < bubbleBombList.Count; ++i) |
| | | { |
| | | if (bubbleBombList[i].Agent.Id == id) |
| | | { |
| | | BubbleBombConfig config = bubbleBombList[i]; |
| | | |
| | | if (config.Agent.bInDeathState) return; |
| | | |
| | | AgentDead(config); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 泡泡炸弹被眩晕 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <param name="duration">持续时间</param> |
| | | private void OnBubbleBombBeDizzinessed(int id, int duration) |
| | | { |
| | | for (int i = 0; i < bubbleBombList.Count; ++i) |
| | | { |
| | | if (bubbleBombList[i].Agent.Id == id) |
| | | { |
| | | BubbleBombConfig config = bubbleBombList[i]; |
| | | |
| | | if (config.Agent.bInDeathState) return; |
| | | |
| | | config.IsDizzinessed = true; |
| | | config.Agent.CanMove = false; |
| | | // 直接覆盖持续时间 |
| | | config.DizzinessTime = duration / 1000f; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 炸弹突然去世 |
| | | /// </summary> |
| | | /// <param name="config"></param> |
| | | private void AgentDead(BubbleBombConfig config) |
| | | { |
| | | config.Agent.StopNormalEffect(); |
| | | config.Agent.PlayExplodeEffect(); |
| | | AgentInsManager.instance.removeAgent(config.Agent); |
| | | config.Agent.bInDeathState = true; |
| | | config.IsAttackDeath = true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 炸弹到达基地 |
| | | /// </summary> |
| | | /// <param name="config"></param> |
| | | private void AgentArrived(BubbleBombConfig config) |
| | | { |
| | | config.IsArrived = true; |
| | | config.Agent.StopNormalEffect(); |
| | | config.Agent.PlayExplodeEffect(); |
| | | AgentInsManager.instance.removeAgent(config.Agent); |
| | | config.Agent.bInDeathState = true; |
| | | } |
| | | |
| | | public override void Update(float deltaTime) |
| | | { |
| | | base.Update(deltaTime); |
| | | |
| | | for (int i = 0; i < bubbleBombList.Count; ++i) |
| | | { |
| | | if (bubbleBombList[i] == null) continue; |
| | | |
| | | BubbleBombConfig config = bubbleBombList[i]; |
| | | |
| | | if (config.IsAttack) |
| | | { |
| | | config.AttackTime -= deltaTime; |
| | | |
| | | if (config.AttackTime <= 0) |
| | | { |
| | | EndlessGameUI.instance.DestroyTowerGrid(config.Agent.waveLineID); |
| | | config.IsAttack = false; |
| | | } |
| | | } |
| | | |
| | | // 被打死了 或 到达基地 |
| | | if (config.IsAttackDeath || config.IsArrived) |
| | | { |
| | | config.DestroyTime -= deltaTime; |
| | | |
| | | if (config.DestroyTime <= 0) |
| | | { |
| | | bubbleBombList[i].Agent.Reset(); |
| | | Poolable.TryPool(bubbleBombList[i].Agent.gameObject); |
| | | bubbleBombList.Remove(bubbleBombList[i]); |
| | | --i; |
| | | } |
| | | |
| | | continue; |
| | | } |
| | | |
| | | // 处理被眩晕的 |
| | | if (config.IsDizzinessed) |
| | | { |
| | | config.DizzinessTime -= deltaTime; |
| | | |
| | | if (config.DizzinessTime <= 0) |
| | | { |
| | | // 解除眩晕 |
| | | config.IsDizzinessed = false; |
| | | config.Agent.CanMove = true; |
| | | } |
| | | else continue; |
| | | } |
| | | |
| | | // 更新移动 |
| | | if (!config.Agent.bInDeathState && config.Agent.CanMove) |
| | | { |
| | | Vector3 pos = config.Agent.transform.position; |
| | | pos.z -= deltaTime * config.MoveSpeed; |
| | | config.Agent.transform.position = pos; |
| | | |
| | | if (pos.z <= config.TargetPosition.z) |
| | | { |
| | | AgentArrived(config); |
| | | config.IsAttack = true; |
| | | config.AttackTime = 0.65f; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: ee97c7099a8839949be5597efdc9ce55 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | |
| | | /** |
| | | * 魔法护盾 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 17:13:58 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public class BossSkillShieldWall : EndlessBossSkill |
| | | { |
| | | public BossSkillShieldWall(boss_skill param) : base(param) { } |
| | | |
| | | /// <summary> |
| | | /// 释放技能 |
| | | /// </summary> |
| | | public override void ReleaseSkill() |
| | | { |
| | | |
| | | } |
| | | |
| | | public override void Init() |
| | | { |
| | | base.Init(); |
| | | Debug.Log("--------------------- 魔法护盾技能初始化 ---------------------"); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 972f8036a93bb5e458806c734414125e |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | |
| | | /** |
| | | * 召唤木桩 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 17:15:39 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public class BossSkillWoodPile : EndlessBossSkill |
| | | { |
| | | public BossSkillWoodPile(boss_skill param) : base(param) { } |
| | | |
| | | /// <summary> |
| | | /// 释放技能 |
| | | /// </summary> |
| | | public override void ReleaseSkill() |
| | | { |
| | | |
| | | } |
| | | |
| | | public override void Init() |
| | | { |
| | | base.Init(); |
| | | Debug.Log("--------------------- 召唤木桩技能初始化 ---------------------"); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 345a680f4c105a24a8938d705a2c5eba |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using Core.Utilities; |
| | | |
| | | /** |
| | | * 无尽模式boss技能基类 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 16:47:31 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public abstract class EndlessBossSkill |
| | | { |
| | | public EndlessBossSkill(boss_skill param) |
| | | { |
| | | SkillData = param; |
| | | SkillType = (EndlessBossSkillType)param.skill_class; |
| | | SkillAI = GetSkillAI(param); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 技能类型 |
| | | /// </summary> |
| | | public EndlessBossSkillType SkillType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 技能配置表数据 |
| | | /// </summary> |
| | | public boss_skill SkillData { get; protected set; } |
| | | |
| | | /// <summary> |
| | | /// 技能AI |
| | | /// </summary> |
| | | public EndlessBossSkillAI SkillAI { get; protected set; } |
| | | |
| | | /// <summary> |
| | | /// 冷却是否完成 |
| | | /// </summary> |
| | | public bool IsCDCompleted { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否满足AI条件 |
| | | /// </summary> |
| | | /// <value></value> |
| | | public bool IsConditionOK { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 技能cd的计时器 |
| | | /// </summary> |
| | | protected Timer cdTimer; |
| | | |
| | | /// <summary> |
| | | /// 帧刷新 |
| | | /// </summary> |
| | | public virtual void Update(float deltaTime) |
| | | { |
| | | SkillAI.Update(deltaTime); |
| | | |
| | | if (SkillAI.IsActived) |
| | | { |
| | | if (!IsCDCompleted && cdTimer.Tick(deltaTime)) |
| | | IsCDCompleted = true; |
| | | IsConditionOK = SkillAI.CanRelease(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 后面根据类型来获得 |
| | | /// </summary> |
| | | /// <param name="param"></param> |
| | | /// <returns></returns> |
| | | private EndlessBossSkillAI GetSkillAI(boss_skill param) |
| | | { |
| | | return new NormalBossSkillAI(param); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 释放技能 |
| | | /// </summary> |
| | | public virtual void ReleaseSkill() |
| | | { |
| | | IsCDCompleted = false; |
| | | ResetCD(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 技能初始化 |
| | | /// </summary> |
| | | public virtual void Init() |
| | | { |
| | | AddEvent(); |
| | | SkillAI.Init(); |
| | | // 技能第一次的cd直接就是好的 |
| | | cdTimer = new Timer(0); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重置cd时间 |
| | | /// </summary> |
| | | protected void ResetCD() |
| | | { |
| | | cdTimer.SetTime(SkillData.cool_down / 1000f); |
| | | cdTimer.Reset(); |
| | | } |
| | | |
| | | public virtual void Reset() |
| | | { |
| | | cdTimer.SetTime(0); |
| | | cdTimer.Reset(); |
| | | SkillAI.Reset(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 清理方法 |
| | | /// </summary> |
| | | public virtual void Clear() |
| | | { |
| | | RemoveEvent(); |
| | | IsCDCompleted = false; |
| | | cdTimer = null; |
| | | SkillAI.Clear(); |
| | | } |
| | | |
| | | protected virtual void AddEvent() |
| | | { |
| | | |
| | | } |
| | | |
| | | protected virtual void RemoveEvent() |
| | | { |
| | | |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 151d3ee3975ad6e4788937bdf8649eff |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using Core.Utilities; |
| | | |
| | | /** |
| | | * 无尽模式boss技能管理器 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 16:46:12 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public class EndlessBossSkillManager : Singleton<EndlessBossSkillManager> |
| | | { |
| | | /// <summary> |
| | | /// boss技能id列表 |
| | | /// </summary> |
| | | private List<int> skillIdList; |
| | | |
| | | /// <summary> |
| | | /// 技能列表,所有的技能 cdList + waitList = skillList |
| | | /// </summary> |
| | | private List<EndlessBossSkill> skillList; |
| | | |
| | | /// <summary> |
| | | /// 技能cd列表,技能冷却好了就放到这个队列 |
| | | /// </summary> |
| | | private List<EndlessBossSkill> cdList; |
| | | |
| | | /// <summary> |
| | | /// 正在等待冷却的技能队列 |
| | | /// </summary> |
| | | private List<EndlessBossSkill> waitList; |
| | | |
| | | /// <summary> |
| | | /// 是否终止使用技能 |
| | | /// </summary> |
| | | /// <value></value> |
| | | private bool isPaused { get; set; } |
| | | |
| | | // Start is called before the first frame update |
| | | private void Start() |
| | | { |
| | | skillList = new List<EndlessBossSkill>(); |
| | | cdList = new List<EndlessBossSkill>(); |
| | | waitList = new List<EndlessBossSkill>(); |
| | | } |
| | | |
| | | // Update is called once per frame |
| | | private void Update() |
| | | { |
| | | if (isPaused) return; |
| | | |
| | | for (int i = 0; i < skillList.Count; ++i) |
| | | { |
| | | skillList[i].Update(Time.deltaTime); |
| | | |
| | | if (skillList[i].IsCDCompleted) |
| | | AddSkill(skillList[i]); |
| | | } |
| | | |
| | | for (int i = 0; i < cdList.Count; ++i) |
| | | { |
| | | if (cdList[i].IsConditionOK) |
| | | { |
| | | cdList[i].ReleaseSkill(); |
| | | RemoveSkill(cdList[i]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新关卡需要重新初始化boss技能 |
| | | /// </summary> |
| | | /// <param name="idList"></param> |
| | | public void Init(List<int> idList) |
| | | { |
| | | Debug.Log("--------------------- 初始化boss技能列表 ---------------------"); |
| | | skillIdList = idList; |
| | | |
| | | for (int i = 0; i < idList.Count; ++i) |
| | | { |
| | | EndlessBossSkill skill = GetSkillInstanceByType(idList[i]); |
| | | |
| | | if (skill != null) |
| | | { |
| | | skillList.Add(skill); |
| | | skill.Init(); |
| | | } |
| | | } |
| | | |
| | | isPaused = false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 关卡结束需要清理一下技能列表 |
| | | /// </summary> |
| | | public void ClearSkillList() |
| | | { |
| | | Debug.Log("--------------------- 关卡结束,清空技能列表 ---------------------"); |
| | | for (int i = 0; i < skillList.Count; ++i) |
| | | { |
| | | skillList[i].Clear(); |
| | | } |
| | | |
| | | skillList.Clear(); |
| | | cdList.Clear(); |
| | | waitList.Clear(); |
| | | isPaused = true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 波次更新时需要重置所有技能 |
| | | /// </summary> |
| | | public void Reset() |
| | | { |
| | | for (int i = 0; i < skillList.Count; ++i) |
| | | { |
| | | skillList[i].Reset(); |
| | | } |
| | | |
| | | cdList.Clear(); |
| | | waitList.Clear(); |
| | | isPaused = true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重新开始新的一波,重新启动技能 |
| | | /// </summary> |
| | | public void Restart() |
| | | { |
| | | isPaused = false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取技能实例 |
| | | /// </summary> |
| | | /// <param name="skillId">技能id</param> |
| | | /// <returns></returns> |
| | | private EndlessBossSkill GetSkillInstanceByType(int skillId) |
| | | { |
| | | boss_skill data = EndlessBossSkillData.GetDataById(skillId); |
| | | |
| | | if (data == null) |
| | | { |
| | | Debug.LogError($"--------------------- skillId: {skillId},没有对应的技能数据 ---------------------"); |
| | | return null; |
| | | } |
| | | |
| | | switch ((EndlessBossSkillType)data.skill_class) |
| | | { |
| | | case EndlessBossSkillType.ShieldWall: |
| | | return new BossSkillShieldWall(data); |
| | | case EndlessBossSkillType.BubbleBomb: |
| | | return new BossSkillBubbleBomb(data); |
| | | case EndlessBossSkillType.WoodPile: |
| | | return new BossSkillWoodPile(data); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 技能cd好了,加到cd列表 |
| | | /// </summary> |
| | | /// <param name="skill"></param> |
| | | private void AddSkill(EndlessBossSkill skill) |
| | | { |
| | | waitList.Remove(skill); |
| | | cdList.Add(skill); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 技能进入冷却状态,加到等待列表 |
| | | /// </summary> |
| | | /// <param name="skill"></param> |
| | | private void RemoveSkill(EndlessBossSkill skill) |
| | | { |
| | | cdList.Remove(skill); |
| | | waitList.Add(skill); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 178f167d46a275f46b252d07f0809e45 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 1675d2ff3ee0e804a912af9988e28c1d |
| | | folderAsset: yes |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using Core.Utilities; |
| | | |
| | | /** |
| | | * 无尽模式boss技能AI基类 |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 20:23:32 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public abstract class EndlessBossSkillAI |
| | | { |
| | | public EndlessBossSkillAI(boss_skill param) |
| | | { |
| | | SkillData = param; |
| | | // cx test |
| | | AIType = EndlessBossSkillAIType.Normal; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 技能AI类型 |
| | | /// </summary> |
| | | /// <value></value> |
| | | public EndlessBossSkillAIType AIType { get; protected set; } |
| | | |
| | | /// <summary> |
| | | /// 技能配置表数据 |
| | | /// </summary> |
| | | public boss_skill SkillData { get; protected set; } |
| | | |
| | | /// <summary> |
| | | /// 技能是否被激活,只有被激活才会开始cd,也才能去释放,取决于具体的AI怎么去实现它 |
| | | /// </summary> |
| | | /// <value></value> |
| | | public bool IsActived { get; set; } |
| | | |
| | | protected Timer timer; |
| | | |
| | | /// <summary> |
| | | /// 帧刷新 |
| | | /// </summary> |
| | | /// <param name="deltaTime"></param> |
| | | public virtual void Update(float deltaTime) |
| | | { |
| | | |
| | | } |
| | | |
| | | protected virtual void AddEvent() |
| | | { |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.EndlessBeginWave, OnEndlessBeginWave); |
| | | } |
| | | |
| | | protected virtual void RemoveEvent() |
| | | { |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.EndlessBeginWave, OnEndlessBeginWave); |
| | | } |
| | | |
| | | protected virtual void OnEndlessBeginWave() |
| | | { |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// AI 初始化 |
| | | /// </summary> |
| | | public virtual void Init() |
| | | { |
| | | AddEvent(); |
| | | } |
| | | |
| | | public virtual void Clear() |
| | | { |
| | | RemoveEvent(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重置AI |
| | | /// </summary> |
| | | public abstract void Reset(); |
| | | |
| | | /// <summary> |
| | | /// 是否满足条件可以释放技能 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public abstract bool CanRelease(); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 316720dc863139d4eb739868bbff24f2 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | using Core.Utilities; |
| | | |
| | | /** |
| | | * 普通boss技能AI |
| | | * @Author: chenxin |
| | | * @Date: 2020-11-02 20:58:49 |
| | | */ |
| | | namespace KTGMGemClient |
| | | { |
| | | public class NormalBossSkillAI : EndlessBossSkillAI |
| | | { |
| | | public NormalBossSkillAI(boss_skill param) : base(param) { } |
| | | |
| | | /// <summary> |
| | | /// 每一波开始后30s可以释放技能 |
| | | /// </summary> |
| | | public float SetupTime { get; set; } = 15f; |
| | | |
| | | public override void Update(float deltaTime) |
| | | { |
| | | base.Update(deltaTime); |
| | | |
| | | if (timer != null && timer.Tick(deltaTime)) |
| | | { |
| | | IsActived = true; |
| | | timer = null; |
| | | Debug.Log("--------------------- 技能准备完成 ---------------------"); |
| | | } |
| | | } |
| | | |
| | | public override bool CanRelease() |
| | | { |
| | | return IsActived; |
| | | } |
| | | |
| | | protected override void OnEndlessBeginWave() |
| | | { |
| | | base.OnEndlessBeginWave(); |
| | | |
| | | if (timer == null) |
| | | timer = new Timer(SetupTime); |
| | | else |
| | | timer.SetTime(SetupTime); |
| | | } |
| | | |
| | | public override void Reset() |
| | | { |
| | | IsActived = false; |
| | | |
| | | if (timer != null) |
| | | { |
| | | timer.SetTime(SetupTime); |
| | | timer.Reset(); |
| | | } |
| | | } |
| | | |
| | | public override void Clear() |
| | | { |
| | | base.Clear(); |
| | | IsActived = false; |
| | | timer = null; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 50f6a01d997fb9f4aa30c3771b6b2dc2 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | // } |
| | | |
| | | return; |
| | | List<EndlessDrop> list = EndlessDropManager.instance.GetAllObtainedDrop(); |
| | | // List<EndlessDrop> list = EndlessDropManager.instance.GetAllObtainedDrop(); |
| | | |
| | | for (int i = 0; i < list.Count; ++i) |
| | | { |
| | | if (list[i].Reward.type == CURRENCY.Gold) |
| | | { |
| | | AddItem($"{(int)list[i].Reward.type}"); |
| | | } |
| | | else |
| | | { |
| | | for (int j = 0; j < list[i].Reward.count; ++j) |
| | | { |
| | | AddItem($"{(int)list[i].Reward.type}_{list[i].Reward.id}"); |
| | | } |
| | | } |
| | | } |
| | | // for (int i = 0; i < list.Count; ++i) |
| | | // { |
| | | // if (list[i].Reward.type == CURRENCY.Gold) |
| | | // { |
| | | // AddItem($"{(int)list[i].Reward.type}"); |
| | | // } |
| | | // else |
| | | // { |
| | | // for (int j = 0; j < list[i].Reward.count; ++j) |
| | | // { |
| | | // AddItem($"{(int)list[i].Reward.type}_{list[i].Reward.id}"); |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | private void StartLater() |
| | |
| | | |
| | | EventCenter.Ins.Add<Vector3>((int)KTGMGemClient.EventType.PlayAppearEffect, GuidePlayAppearEffect); |
| | | EventCenter.Ins.Add<Vector3>((int)KTGMGemClient.EventType.GuidePlayUpgradeEffect, GuidePlayUpgradeEffect); |
| | | |
| | | } |
| | | |
| | | private void RemoveGuideEvent() |
| | | { |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateFireLv2, CreateFireLv2); |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateFirstWave, CreateFirstWave); |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.RestartWave, RestartWave); |
| | | EventCenter.Ins.Remove<int>((int)KTGMGemClient.EventType.AddGold, AddGold); |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateSecondWave, CreateSecondWave); |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.SkillRelease, SkillRelease); |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.GuideFinish, NewbieGuideEnd); |
| | | } |
| | | |
| | | protected override void OnDestroy() |
| | | { |
| | | base.OnDestroy(); |
| | | RemoveGuideEvent(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 播放宝石出现特效 |
| | | /// </summary> |
| | |
| | | [[10001,"魔法护盾",10001,20000,[2,1],1,10001,[0.3,0]],[10002,"泡泡炸弹",10002,20000,[3,1],2,10002,[10,5]],[10003,"召唤木桩",10003,20000,[3,1],3,10003,[3,2.5]]] |
| | | [[10001,"魔法护盾",10001,20000,[2,1],[1],10001,1,[0.3,0]],[10002,"泡泡炸弹",10002,15000,[3,1],[2],10001,2,[15,3]],[10003,"召唤木桩",10003,20000,[3,1],[3],10001,3,[3,2.5]]] |
| | |
| | | [[1,"史莱姆大王",1,1,[10001]],[2,"捣蛋恶魔",1,2,[10002,10003]],[3,"精灵小偷",1,3,[10001,10002]]] |
| | | [[1,"史莱姆大王",1,1,[10002]],[2,"捣蛋恶魔",1,2,[10002,10003]],[3,"精灵小偷",1,3,[10001,10002]]] |
| | |
| | | [[1,"低级火灵之力",[2,1],[1,2,0],-1,"增加全体火精灵2%攻击力",0,99,10001,1],[2,"低级水灵之力",[2,2],[1,2,0],-1,"增加全体水精灵2%攻击力",0,99,10002,1],[3,"低级木灵之力",[2,3],[1,2,0],-1,"增加全体木精灵2%攻击力",0,99,10003,1],[4,"火灵之力",[2,1],[1,4,0],-1,"增加全体火精灵4%攻击力",0,99,10001,2],[5,"水灵之力",[2,2],[1,4,0],-1,"增加全体水精灵4%攻击力",0,99,10002,2],[6,"木灵之力",[2,3],[1,4,0],-1,"增加全体木精灵4%攻击力",0,99,10003,2],[7,"高级火灵之力",[2,1],[1,6,0],-1,"增加全体火精灵6%攻击力",0,99,10001,3],[8,"高级水灵之力",[2,2],[1,6,0],-1,"增加全体水精灵6%攻击力",0,99,10002,3],[9,"高级木灵之力",[2,3],[1,6,0],-1,"增加全体木精灵6%攻击力",0,99,10003,3],[10,"精灵之力",[1,0],[1,10,0],3,"3波增加全体精灵10%攻击力",0,99,10004,2],[11,"时空宝石",[1,0],[1,20,0],3,"3波内增加全体精灵20%攻击力",0,99,10005,3],[12,"飞来横财",[0],[2,500,0],0,"增加500金币",0,99,10007,1],[13,"中大奖!",[0],[2,1000,0],0,"增加1000金币",0,99,10007,3],[14,"精灵魔盒",[0],[3,3,300],0,"随机获得一个3级精灵",0,99,10006,2],[15,"超级精灵魔盒",[0],[3,4,500],0,"随机获得一个4级精灵",0,99,10006,3]] |
| | | [[1,"低级火灵之力",[2,1],[1,2,0],-1,"增加全体火精灵2%攻击力",0,99,10001,1],[2,"低级水灵之力",[2,2],[1,2,0],-1,"增加全体水精灵2%攻击力",0,99,10002,1],[3,"低级木灵之力",[2,3],[1,2,0],-1,"增加全体木精灵2%攻击力",0,99,10003,1],[4,"火灵之力",[2,1],[1,4,0],-1,"增加全体火精灵4%攻击力",3,99,10001,2],[5,"水灵之力",[2,2],[1,4,0],-1,"增加全体水精灵4%攻击力",3,99,10002,2],[6,"木灵之力",[2,3],[1,4,0],-1,"增加全体木精灵4%攻击力",3,99,10003,2],[7,"高级火灵之力",[2,1],[1,6,0],-1,"增加全体火精灵6%攻击力",5,99,10001,3],[8,"高级水灵之力",[2,2],[1,6,0],-1,"增加全体水精灵6%攻击力",5,99,10002,3],[9,"高级木灵之力",[2,3],[1,6,0],-1,"增加全体木精灵6%攻击力",5,99,10003,3],[10,"精灵之力",[1,0],[1,10,0],3,"3波增加全体精灵10%攻击力",2,99,10004,2],[11,"时空宝石",[1,0],[1,20,0],3,"3波内增加全体精灵20%攻击力",2,99,10005,3],[12,"飞来横财",[0],[2,300,0],0,"增加300金币",0,99,10007,1],[13,"中大奖!",[0],[2,800,0],0,"增加800金币",3,99,10007,3],[14,"精灵魔盒",[0],[3,3,300],0,"随机获得一个3级精灵",0,99,10006,2],[15,"超级精灵魔盒",[0],[3,4,500],0,"随机获得一个4级精灵",3,99,10006,3]] |
| | |
| | | [[1,"测试小怪1",1,1,2.2,1,101],[2,"测试小怪2",1,4,1,3,102],[3,"测试小怪3",1,1.5,1.2,1,103],[4,"测试小怪4",1,4,2,1,104],[5,"测试小怪5",2,5,2,1,105],[6,"测试小怪6",2,6,2,1,106]] |
| | | [[1,"小怪_火",1,1,2.2,1,101],[2,"小怪_水",1,4,1,3,102],[3,"小怪_木",1,1.5,1.2,1,103]] |
| | |
| | | [[1,-2,"史莱姆大王",1,1,1,0,0,0,400,1.5,5,3000,["0"],[0],0],[2,-2,"史莱姆大王",1,1,2,0,0,0,400,1.5,5,3000,["0"],[0],0],[3,-2,"史莱姆大王",1,1,3,3,10,2000,400,1.5,5,3000,["0"],[0],3],[4,-2,"史莱姆大王",1,1,4,0,0,0,400,1.5,5,3000,["0"],[0],0],[5,-2,"史莱姆大王",1,1,5,0,0,0,400,1.5,5,3000,["0"],[0],0],[6,-1,"史莱姆大王",1,2,1,0,0,0,800,1.5,5,3000,["0"],[0],0],[7,-1,"史莱姆大王",1,2,2,1,10,2000,800,1.5,5,3000,["0"],[0],1],[8,-1,"史莱姆大王",1,2,3,0,0,0,800,1.5,5,3000,["0"],[0],0],[9,-1,"史莱姆大王",1,2,4,0,0,0,800,1.5,5,3000,["0"],[0],0],[10,-1,"史莱姆大王",1,2,5,0,0,0,800,1.5,5,3000,["0"],[0],0],[11,1,"史莱姆大王",2,1,1,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[12,1,"史莱姆大王",2,1,2,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[13,1,"史莱姆大王",2,1,3,2,"4","6000",400,1.5,5,3000,["gold:1"],[500,9500],2],[14,1,"史莱姆大王",2,1,4,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[15,1,"史莱姆大王",2,1,5,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[16,1,"史莱姆大王",2,2,1,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[17,1,"史莱姆大王",2,2,2,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[18,1,"史莱姆大王",2,2,3,3,"6","4000",400,1.5,5,3000,["gold:1"],[500,9500],3],[19,1,"史莱姆大王",2,2,4,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[20,1,"史莱姆大王",2,2,5,0,"0","0",400,1.5,5,3000,["box:1:1"],[500,9500],0],[21,1,"拿破仑",1,1,1,0,"0","0",520,1.5,5,3000,["gold:1"],[500,9500],0],[22,2,"拿破仑",1,1,2,2,"4","6000",555,1.5,5,3000,["gold:1"],[500,9500],2],[23,2,"拿破仑",1,1,3,0,"0","0",590,1.5,5,3000,["gold:1"],[500,9500],0],[24,2,"拿破仑",1,1,4,2,"4","6000",625,1.5,5,3000,["gold:1"],[500,9500],2],[25,2,"拿破仑",1,1,5,0,"0","0",660,1.5,5,3000,["gold:1"],[500,9500],0],[26,2,"拿破仑",1,2,1,0,"0","0",695,1.5,5,3000,["gold:1"],[500,9500],0],[27,2,"拿破仑",1,2,2,3,"6","4000",730,1.5,5,3000,["gold:1"],[500,9500],3],[28,2,"拿破仑",1,2,3,1,"12","2000",765,1.5,5,3000,["gold:1"],[500,9500],1],[29,2,"拿破仑",1,2,4,3,"6","4000",800,1.5,5,3000,["gold:1"],[500,9500],3],[30,2,"拿破仑",1,2,5,0,"0","0",835,1.5,5,3000,["box:1:1"],[500,9500],0],[31,3,"凯撒",2,1,1,3,"6","4000",870,1.5,5,3000,["gold:1"],[500,9500],3],[32,3,"凯撒",2,1,2,0,"0","0",905,1.5,5,3000,["gold:1"],[500,9500],0],[33,3,"凯撒",2,1,3,1,"12","2000",940,1.5,5,3000,["gold:1"],[500,9500],1],[34,3,"凯撒",2,1,4,0,"0","0",975,1.5,5,3000,["gold:1"],[500,9500],0],[35,3,"凯撒",2,1,5,3,"6","4000",1010,1.5,5,3000,["gold:1"],[500,9500],3],[36,3,"凯撒",2,2,1,0,"0","0",1045,1.5,5,3000,["gold:1"],[500,9500],0],[37,3,"凯撒",2,2,2,2,"4","6000",1080,1.5,5,3000,["gold:1"],[500,9500],2],[38,3,"凯撒",2,2,3,3,"6","4000",1115,1.5,5,3000,["gold:1"],[500,9500],3],[39,3,"凯撒",2,2,4,2,"4","6000",1150,1.5,5,3000,["gold:1"],[500,9500],2],[40,3,"凯撒",2,2,5,0,"0","0",1185,1.5,5,3000,["gold:1"],[500,9500],0],[41,3,"凯撒",2,3,1,3,"6","4000",1220,1.5,5,3000,["box:2:1"],[500,9500],3],[42,3,"凯撒",2,3,2,2,"4","6000",1255,1.5,5,3000,["box:2:1"],[500,9500],2],[43,3,"凯撒",2,3,3,1,"12","2000",1290,1.5,5,3000,["box:2:1"],[500,9500],1],[44,3,"凯撒",2,3,4,2,"4","6000",1325,1.5,5,3000,["box:2:1"],[500,9500],2],[45,3,"凯撒",2,3,5,3,"6","4000",1360,1.5,5,3000,["box:2:1"],[500,9500],3],[46,4,"克伦威尔",1,1,1,3,"6","4000",1395,1.5,5,3000,["gold:1"],[500,9500],3],[47,4,"克伦威尔",1,1,2,1,"12","2000",1430,1.5,5,3000,["gold:1"],[500,9500],1],[48,4,"克伦威尔",1,1,3,0,"0","0",1465,1.5,5,3000,["gold:1"],[500,9500],0],[49,4,"克伦威尔",1,1,4,1,"12","2000",1500,1.5,5,3000,["gold:1"],[500,9500],1],[50,4,"克伦威尔",1,1,5,3,"6","4000",1535,1.5,5,3000,["gold:1"],[500,9500],3],[51,4,"克伦威尔",1,2,1,2,"4","6000",1570,1.5,5,3000,["gold:1"],[500,9500],2],[52,4,"克伦威尔",1,2,2,1,"12","2000",1605,1.5,5,3000,["gold:1"],[500,9500],1],[53,4,"克伦威尔",1,2,3,0,"0","0",1640,1.5,5,3000,["gold:1"],[500,9500],0],[54,4,"克伦威尔",1,2,4,1,"12","2000",1675,1.5,5,3000,["gold:1"],[500,9500],1],[55,4,"克伦威尔",1,2,5,2,"4","6000",1710,1.5,5,3000,["gold:1"],[500,9500],2],[56,4,"克伦威尔",1,3,1,3,"6","4000",1745,1.5,5,3000,["box:2:1"],[500,9500],3],[57,4,"克伦威尔",1,3,2,3,"6","4000",1780,1.5,5,3000,["box:2:1"],[500,9500],3],[58,4,"克伦威尔",1,3,3,1,"12","2000",1815,1.5,5,3000,["box:2:1"],[500,9500],1],[59,4,"克伦威尔",1,3,4,2,"4","6000",1850,1.5,5,3000,["box:2:1"],[500,9500],2],[60,4,"克伦威尔",1,3,5,2,"4","6000",1885,1.5,5,3000,["box:2:1"],[500,9500],2],[61,5,"尼克松",2,1,1,1,"12","2000",1920,1.5,5,3000,["gold:1"],[500,9500],1],[62,5,"尼克松",2,1,2,1,"12","2000",1955,1.5,5,3000,["gold:1"],[500,9500],1],[63,5,"尼克松",2,1,3,1,"12","2000",1990,1.5,5,3000,["gold:1"],[500,9500],1],[64,5,"尼克松",2,1,4,1,"12","2000",2025,1.5,5,3000,["gold:1"],[500,9500],1],[65,5,"尼克松",2,1,5,1,"12","2000",2060,1.5,5,3000,["gold:1"],[500,9500],1],[66,5,"尼克松",2,2,1,2,"4","6000",2095,1.5,5,3000,["gold:1"],[500,9500],2],[67,5,"尼克松",2,2,2,2,"4","6000",2130,1.5,5,3000,["gold:1"],[500,9500],2],[68,5,"尼克松",2,2,3,2,"4","6000",2165,1.5,5,3000,["gold:1"],[500,9500],2],[69,5,"尼克松",2,2,4,2,"4","6000",2200,1.5,5,3000,["gold:1"],[500,9500],2],[70,5,"尼克松",2,2,5,2,"4","6000",2235,1.5,5,3000,["gold:1"],[500,9500],2],[71,5,"尼克松",2,3,1,3,"6","4000",2270,1.5,5,3000,["gold:1"],[500,9500],3],[72,5,"尼克松",2,3,2,3,"6","4000",2305,1.5,5,3000,["gold:1"],[500,9500],3],[73,5,"尼克松",2,3,3,3,"6","4000",2340,1.5,5,3000,["gold:1"],[500,9500],3],[74,5,"尼克松",2,3,4,3,"6","4000",2375,1.5,5,3000,["gold:1"],[500,9500],3],[75,5,"尼克松",2,3,5,3,"6","4000",2410,1.5,5,3000,["gold:1"],[500,9500],3],[76,5,"尼克松",2,4,1,-1,"8","3000",2445,1.5,5,3000,["box:2:1"],[500,9500],4],[77,5,"尼克松",2,4,2,-1,"8","3000",2480,1.5,5,3000,["box:2:1"],[500,9500],4],[78,5,"尼克松",2,4,3,-1,"8","3000",2515,1.5,5,3000,["box:2:1"],[500,9500],4],[79,5,"尼克松",2,4,4,-1,"8","3000",2550,1.5,5,3000,["box:2:1"],[500,9500],4],[80,5,"尼克松",2,4,5,-1,"8","3000",2585,1.5,5,3000,["box:2:1"],[500,9500],4],[81,6,"李存勖",1,1,1,1,"12","2000",2620,1.5,5,3000,["gold:1"],[500,9500],1],[82,6,"李存勖",1,1,2,1,"12","2000",2655,1.5,5,3000,["gold:1"],[500,9500],1],[83,6,"李存勖",1,1,3,2,"4","6000",2690,1.5,5,3000,["gold:1"],[500,9500],2],[84,6,"李存勖",1,1,4,1,"12","2000",2725,1.5,5,3000,["gold:1"],[500,9500],1],[85,6,"李存勖",1,1,5,1,"12","2000",2760,1.5,5,3000,["gold:1"],[500,9500],1],[86,6,"李存勖",1,2,1,2,"4","6000",2795,1.5,5,3000,["gold:1"],[500,9500],2],[87,6,"李存勖",1,2,2,2,"4","6000",2830,1.5,5,3000,["gold:1"],[500,9500],2],[88,6,"李存勖",1,2,3,3,"6","4000",2865,1.5,5,3000,["gold:1"],[500,9500],3],[89,6,"李存勖",1,2,4,2,"4","6000",2900,1.5,5,3000,["gold:1"],[500,9500],2],[90,6,"李存勖",1,2,5,2,"4","6000",2935,1.5,5,3000,["gold:1"],[500,9500],2],[91,6,"李存勖",1,3,1,1,"12","2000",2970,1.5,5,3000,["gold:1"],[500,9500],1],[92,6,"李存勖",1,3,2,2,"4","6000",3005,1.5,5,3000,["gold:1"],[500,9500],2],[93,6,"李存勖",1,3,3,3,"6","4000",3040,1.5,5,3000,["gold:1"],[500,9500],3],[94,6,"李存勖",1,3,4,2,"4","6000",3075,1.5,5,3000,["gold:1"],[500,9500],2],[95,6,"李存勖",1,3,5,1,"12","2000",3110,1.5,5,3000,["gold:1"],[500,9500],1],[96,6,"李存勖",1,4,1,2,"4","6000",3145,1.5,5,3000,["box:3:1"],[500,9500],2],[97,6,"李存勖",1,4,2,1,"12","2000",3180,1.5,5,3000,["box:3:1"],[500,9500],1],[98,6,"李存勖",1,4,3,-1,"8","3000",3215,1.5,5,3000,["box:3:1"],[500,9500],4],[99,6,"李存勖",1,4,4,1,"12","2000",3250,1.5,5,3000,["box:3:1"],[500,9500],1],[100,6,"李存勖",1,4,5,2,"4","6000",3285,1.5,5,3000,["box:3:1"],[500,9500],2],[101,7,"AA_12",1,1,1,3,"6","4000",3320,1.5,5,3000,["gold:1"],[500,9500],3],[102,7,"AA_12",1,1,2,3,"6","4000",3355,1.5,5,3000,["gold:1"],[500,9500],3],[103,7,"AA_12",1,1,3,1,"12","2000",3390,1.5,5,3000,["gold:1"],[500,9500],1],[104,7,"AA_12",1,1,4,3,"6","4000",3425,1.5,5,3000,["gold:1"],[500,9500],3],[105,7,"AA_12",1,1,5,3,"6","4000",3460,1.5,5,3000,["gold:1"],[500,9500],3],[106,7,"AA_12",1,2,1,1,"12","2000",3495,1.5,5,3000,["gold:1"],[500,9500],1],[107,7,"AA_12",1,2,2,2,"4","6000",3530,1.5,5,3000,["gold:1"],[500,9500],2],[108,7,"AA_12",1,2,3,3,"6","4000",3565,1.5,5,3000,["gold:1"],[500,9500],3],[109,7,"AA_12",1,2,4,2,"4","6000",3600,1.5,5,3000,["gold:1"],[500,9500],2],[110,7,"AA_12",1,2,5,1,"12","2000",3635,1.5,5,3000,["gold:1"],[500,9500],1],[111,7,"AA_12",1,3,1,2,"4","6000",3670,1.5,5,3000,["gold:1"],[500,9500],2],[112,7,"AA_12",1,3,2,1,"12","2000",3705,1.5,5,3000,["gold:1"],[500,9500],1],[113,7,"AA_12",1,3,3,3,"6","4000",3740,1.5,5,3000,["gold:1"],[500,9500],3],[114,7,"AA_12",1,3,4,1,"12","2000",3775,1.5,5,3000,["gold:1"],[500,9500],1],[115,7,"AA_12",1,3,5,2,"4","6000",3810,1.5,5,3000,["gold:1"],[500,9500],2],[116,7,"AA_12",1,4,1,2,"4","6000",3845,1.5,5,3000,["box:3:1"],[500,9500],2],[117,7,"AA_12",1,4,2,2,"4","6000",3880,1.5,5,3000,["box:3:1"],[500,9500],2],[118,7,"AA_12",1,4,3,-1,"8","3000",3915,1.5,5,3000,["box:3:1"],[500,9500],4],[119,7,"AA_12",1,4,4,3,"6","4000",3950,1.5,5,3000,["box:3:1"],[500,9500],3],[120,7,"AA_12",1,4,5,3,"6","4000",3985,1.5,5,3000,["box:3:1"],[500,9500],3],[121,8,"米高扬",2,1,1,1,"6","4000",4020,1.5,5,3000,["gold:1"],[500,9500],1],[122,8,"米高扬",2,1,2,1,"6","4000",4055,1.5,5,3000,["gold:1"],[500,9500],1],[123,8,"米高扬",2,1,3,1,"12","2000",4090,1.5,5,3000,["gold:1"],[500,9500],1],[124,8,"米高扬",2,1,4,1,"6","4000",4125,1.5,5,3000,["gold:1"],[500,9500],1],[125,8,"米高扬",2,1,5,1,"6","4000",4160,1.5,5,3000,["gold:1"],[500,9500],1],[126,8,"米高扬",2,2,1,2,"12","2000",4195,1.5,5,3000,["gold:1"],[500,9500],2],[127,8,"米高扬",2,2,2,2,"4","6000",4230,1.5,5,3000,["gold:1"],[500,9500],2],[128,8,"米高扬",2,2,3,2,"6","4000",4265,1.5,5,3000,["gold:1"],[500,9500],2],[129,8,"米高扬",2,2,4,2,"4","6000",4300,1.5,5,3000,["gold:1"],[500,9500],2],[130,8,"米高扬",2,2,5,2,"12","2000",4335,1.5,5,3000,["gold:1"],[500,9500],2],[131,8,"米高扬",2,3,1,3,"4","6000",4370,1.5,5,3000,["gold:1"],[500,9500],3],[132,8,"米高扬",2,3,2,3,"12","2000",4405,1.5,5,3000,["gold:1"],[500,9500],3],[133,8,"米高扬",2,3,3,3,"6","4000",4440,1.5,5,3000,["gold:1"],[500,9500],3],[134,8,"米高扬",2,3,4,3,"12","2000",4475,1.5,5,3000,["gold:1"],[500,9500],3],[135,8,"米高扬",2,3,5,3,"4","6000",4510,1.5,5,3000,["gold:1"],[500,9500],3],[136,8,"米高扬",2,4,1,-1,"4","6000",4545,1.5,5,3000,["box:3:1"],[500,9500],4],[137,8,"米高扬",2,4,2,-1,"4","6000",4580,1.5,5,3000,["box:3:1"],[500,9500],4],[138,8,"米高扬",2,4,3,-1,"8","3000",4615,1.5,5,3000,["box:3:1"],[500,9500],4],[139,8,"米高扬",2,4,4,-1,"6","4000",4650,1.5,5,3000,["box:3:1"],[500,9500],4],[140,8,"米高扬",2,4,5,-1,"6","4000",4685,1.5,5,3000,["box:3:1"],[500,9500],4],[141,9,"安德罗波夫",1,1,1,2,"6","4000",4720,1.5,5,3000,["gold:1"],[500,9500],2],[142,9,"安德罗波夫",1,1,2,2,"6","4000",4755,1.5,5,3000,["gold:1"],[500,9500],2],[143,9,"安德罗波夫",1,1,3,1,"12","2000",4790,1.5,5,3000,["gold:1"],[500,9500],1],[144,9,"安德罗波夫",1,1,4,2,"6","4000",4825,1.5,5,3000,["gold:1"],[500,9500],2],[145,9,"安德罗波夫",1,1,5,2,"6","4000",4860,1.5,5,3000,["gold:1"],[500,9500],2],[146,9,"安德罗波夫",1,2,1,3,"12","2000",4895,1.5,5,3000,["gold:1"],[500,9500],3],[147,9,"安德罗波夫",1,2,2,3,"4","6000",4930,1.5,5,3000,["gold:1"],[500,9500],3],[148,9,"安德罗波夫",1,2,3,2,"6","4000",4965,1.5,5,3000,["gold:1"],[500,9500],2],[149,9,"安德罗波夫",1,2,4,3,"4","6000",5000,1.5,5,3000,["gold:1"],[500,9500],3],[150,9,"安德罗波夫",1,2,5,3,"12","2000",5035,1.5,5,3000,["gold:1"],[500,9500],3],[151,9,"安德罗波夫",1,3,1,1,"4","6000",5070,1.5,5,3000,["gold:1"],[500,9500],1],[152,9,"安德罗波夫",1,3,2,1,"12","2000",5105,1.5,5,3000,["gold:1"],[500,9500],1],[153,9,"安德罗波夫",1,3,3,1,"6","4000",5140,1.5,5,3000,["gold:1"],[500,9500],1],[154,9,"安德罗波夫",1,3,4,1,"12","2000",5175,1.5,5,3000,["gold:1"],[500,9500],1],[155,9,"安德罗波夫",1,3,5,1,"4","6000",5210,1.5,5,3000,["gold:1"],[500,9500],1],[156,9,"安德罗波夫",1,4,1,2,"4","6000",5245,1.5,5,3000,["box:3:1"],[500,9500],2],[157,9,"安德罗波夫",1,4,2,-1,"4","6000",5280,1.5,5,3000,["box:3:1"],[500,9500],4],[158,9,"安德罗波夫",1,4,3,-1,"8","3000",5315,1.5,5,3000,["box:3:1"],[500,9500],4],[159,9,"安德罗波夫",1,4,4,-1,"6","4000",5350,1.5,5,3000,["box:3:1"],[500,9500],4],[160,9,"安德罗波夫",1,4,5,2,"6","4000",5385,1.5,5,3000,["box:3:1"],[500,9500],2]] |
| | | [[1,-2,"史莱姆大王",1,1,1,0,0,0,400,1.5,5,3000,["0"],[0],0],[2,-2,"史莱姆大王",1,1,2,0,0,0,400,1.5,5,3000,["0"],[0],0],[3,-2,"史莱姆大王",1,1,3,3,10,2000,400,1.5,5,3000,["0"],[0],3],[4,-2,"史莱姆大王",1,1,4,0,0,0,400,1.5,5,3000,["0"],[0],0],[5,-2,"史莱姆大王",1,1,5,0,0,0,400,1.5,5,3000,["0"],[0],0],[6,-1,"史莱姆大王",1,2,1,0,0,0,800,1.5,5,3000,["0"],[0],0],[7,-1,"史莱姆大王",1,2,2,1,10,2000,800,1.5,5,3000,["0"],[0],1],[8,-1,"史莱姆大王",1,2,3,0,0,0,800,1.5,5,3000,["0"],[0],0],[9,-1,"史莱姆大王",1,2,4,0,0,0,800,1.5,5,3000,["0"],[0],0],[10,-1,"史莱姆大王",1,2,5,0,0,0,800,1.5,5,3000,["0"],[0],0],[11,1,"史莱姆大王",2,1,1,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[12,1,"史莱姆大王",2,1,2,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[13,1,"史莱姆大王",2,1,3,2,"4","6000",400,1.5,5,3000,["gold:1"],[500,9500],2],[14,1,"史莱姆大王",2,1,4,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[15,1,"史莱姆大王",2,1,5,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[16,1,"史莱姆大王",2,2,1,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[17,1,"史莱姆大王",2,2,2,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[18,1,"史莱姆大王",2,2,3,3,"6","4000",400,1.5,5,3000,["gold:1"],[500,9500],3],[19,1,"史莱姆大王",2,2,4,0,"0","0",400,1.5,5,3000,["gold:1"],[500,9500],0],[20,1,"史莱姆大王",2,2,5,0,"0","0",400,1.5,5,3000,["box:1:1"],[500,9500],0],[21,1,"拿破仑",1,1,1,0,"0","0",520,1.5,5,3000,["gold:1"],[500,9500],0],[22,2,"拿破仑",1,1,2,2,"4","6000",555,1.5,5,3000,["gold:1"],[500,9500],2],[23,2,"拿破仑",1,1,3,0,"0","0",590,1.5,5,3000,["gold:1"],[500,9500],0],[24,2,"拿破仑",1,1,4,2,"4","6000",625,1.5,5,3000,["gold:1"],[500,9500],2],[25,2,"拿破仑",1,1,5,0,"0","0",660,1.5,5,3000,["gold:1"],[500,9500],0],[26,2,"拿破仑",1,2,1,0,"0","0",695,1.5,5,3000,["gold:1"],[500,9500],0],[27,2,"拿破仑",1,2,2,3,"6","4000",730,1.5,5,3000,["gold:1"],[500,9500],3],[28,2,"拿破仑",1,2,3,1,"12","2000",765,1.5,5,3000,["gold:1"],[500,9500],1],[29,2,"拿破仑",1,2,4,3,"6","4000",800,1.5,5,3000,["gold:1"],[500,9500],3],[30,2,"拿破仑",1,2,5,0,"0","0",835,1.5,5,3000,["box:1:1"],[500,9500],0],[31,3,"凯撒",2,1,1,3,"6","4000",870,1.5,5,3000,["gold:1"],[500,9500],3],[32,3,"凯撒",2,1,2,0,"0","0",905,1.5,5,3000,["gold:1"],[500,9500],0],[33,3,"凯撒",2,1,3,1,"12","2000",940,1.5,5,3000,["gold:1"],[500,9500],1],[34,3,"凯撒",2,1,4,0,"0","0",975,1.5,5,3000,["gold:1"],[500,9500],0],[35,3,"凯撒",2,1,5,3,"6","4000",1010,1.5,5,3000,["gold:1"],[500,9500],3],[36,3,"凯撒",2,2,1,0,"0","0",1045,1.5,5,3000,["gold:1"],[500,9500],0],[37,3,"凯撒",2,2,2,2,"4","6000",1080,1.5,5,3000,["gold:1"],[500,9500],2],[38,3,"凯撒",2,2,3,3,"6","4000",1115,1.5,5,3000,["gold:1"],[500,9500],3],[39,3,"凯撒",2,2,4,2,"4","6000",1150,1.5,5,3000,["gold:1"],[500,9500],2],[40,3,"凯撒",2,2,5,0,"0","0",1185,1.5,5,3000,["gold:1"],[500,9500],0],[41,3,"凯撒",2,3,1,3,"6","4000",1220,1.5,5,3000,["box:2:1"],[500,9500],3],[42,3,"凯撒",2,3,2,2,"4","6000",1255,1.5,5,3000,["box:2:1"],[500,9500],2],[43,3,"凯撒",2,3,3,1,"12","2000",1290,1.5,5,3000,["box:2:1"],[500,9500],1],[44,3,"凯撒",2,3,4,2,"4","6000",1325,1.5,5,3000,["box:2:1"],[500,9500],2],[45,3,"凯撒",2,3,5,3,"6","4000",1360,1.5,5,3000,["box:2:1"],[500,9500],3],[46,4,"克伦威尔",1,1,1,3,"6","4000",1395,1.5,5,3000,["gold:1"],[500,9500],3],[47,4,"克伦威尔",1,1,2,1,12,"2000",1430,1.5,5,3000,["gold:1"],[500,9500],1],[48,4,"克伦威尔",1,1,3,0,"0","0",1465,1.5,5,3000,["gold:1"],[500,9500],0],[49,4,"克伦威尔",1,1,4,1,"12","2000",1500,1.5,5,3000,["gold:1"],[500,9500],1],[50,4,"克伦威尔",1,1,5,3,"6","4000",1535,1.5,5,3000,["gold:1"],[500,9500],3],[51,4,"克伦威尔",1,2,1,2,"4","6000",1570,1.5,5,3000,["gold:1"],[500,9500],2],[52,4,"克伦威尔",1,2,2,1,"12","2000",1605,1.5,5,3000,["gold:1"],[500,9500],1],[53,4,"克伦威尔",1,2,3,0,"0","0",1640,1.5,5,3000,["gold:1"],[500,9500],0],[54,4,"克伦威尔",1,2,4,1,"12","2000",1675,1.5,5,3000,["gold:1"],[500,9500],1],[55,4,"克伦威尔",1,2,5,2,"4","6000",1710,1.5,5,3000,["gold:1"],[500,9500],2],[56,4,"克伦威尔",1,3,1,3,"6","4000",1745,1.5,5,3000,["box:2:1"],[500,9500],3],[57,4,"克伦威尔",1,3,2,3,"6","4000",1780,1.5,5,3000,["box:2:1"],[500,9500],3],[58,4,"克伦威尔",1,3,3,1,"12","2000",1815,1.5,5,3000,["box:2:1"],[500,9500],1],[59,4,"克伦威尔",1,3,4,2,"4","6000",1850,1.5,5,3000,["box:2:1"],[500,9500],2],[60,4,"克伦威尔",1,3,5,2,"4","6000",1885,1.5,5,3000,["box:2:1"],[500,9500],2],[61,5,"尼克松",2,1,1,1,"12","2000",1920,1.5,5,3000,["gold:1"],[500,9500],1],[62,5,"尼克松",2,1,2,1,"12","2000",1955,1.5,5,3000,["gold:1"],[500,9500],1],[63,5,"尼克松",2,1,3,1,"12","2000",1990,1.5,5,3000,["gold:1"],[500,9500],1],[64,5,"尼克松",2,1,4,1,"12","2000",2025,1.5,5,3000,["gold:1"],[500,9500],1],[65,5,"尼克松",2,1,5,1,"12","2000",2060,1.5,5,3000,["gold:1"],[500,9500],1],[66,5,"尼克松",2,2,1,2,"4","6000",2095,1.5,5,3000,["gold:1"],[500,9500],2],[67,5,"尼克松",2,2,2,2,"4","6000",2130,1.5,5,3000,["gold:1"],[500,9500],2],[68,5,"尼克松",2,2,3,2,"4","6000",2165,1.5,5,3000,["gold:1"],[500,9500],2],[69,5,"尼克松",2,2,4,2,"4","6000",2200,1.5,5,3000,["gold:1"],[500,9500],2],[70,5,"尼克松",2,2,5,2,"4","6000",2235,1.5,5,3000,["gold:1"],[500,9500],2],[71,5,"尼克松",2,3,1,3,"6","4000",2270,1.5,5,3000,["gold:1"],[500,9500],3],[72,5,"尼克松",2,3,2,3,"6","4000",2305,1.5,5,3000,["gold:1"],[500,9500],3],[73,5,"尼克松",2,3,3,3,"6","4000",2340,1.5,5,3000,["gold:1"],[500,9500],3],[74,5,"尼克松",2,3,4,3,"6","4000",2375,1.5,5,3000,["gold:1"],[500,9500],3],[75,5,"尼克松",2,3,5,3,"6","4000",2410,1.5,5,3000,["gold:1"],[500,9500],3],[76,5,"尼克松",2,4,1,-1,"8","3000",2445,1.5,5,3000,["box:2:1"],[500,9500],4],[77,5,"尼克松",2,4,2,-1,"8","3000",2480,1.5,5,3000,["box:2:1"],[500,9500],4],[78,5,"尼克松",2,4,3,-1,"8","3000",2515,1.5,5,3000,["box:2:1"],[500,9500],4],[79,5,"尼克松",2,4,4,-1,"8","3000",2550,1.5,5,3000,["box:2:1"],[500,9500],4],[80,5,"尼克松",2,4,5,-1,"8","3000",2585,1.5,5,3000,["box:2:1"],[500,9500],4],[81,6,"李存勖",1,1,1,1,"12","2000",2620,1.5,5,3000,["gold:1"],[500,9500],1],[82,6,"李存勖",1,1,2,1,"12","2000",2655,1.5,5,3000,["gold:1"],[500,9500],1],[83,6,"李存勖",1,1,3,2,"4","6000",2690,1.5,5,3000,["gold:1"],[500,9500],2],[84,6,"李存勖",1,1,4,1,"12","2000",2725,1.5,5,3000,["gold:1"],[500,9500],1],[85,6,"李存勖",1,1,5,1,"12","2000",2760,1.5,5,3000,["gold:1"],[500,9500],1],[86,6,"李存勖",1,2,1,2,"4","6000",2795,1.5,5,3000,["gold:1"],[500,9500],2],[87,6,"李存勖",1,2,2,2,"4","6000",2830,1.5,5,3000,["gold:1"],[500,9500],2],[88,6,"李存勖",1,2,3,3,"6","4000",2865,1.5,5,3000,["gold:1"],[500,9500],3],[89,6,"李存勖",1,2,4,2,"4","6000",2900,1.5,5,3000,["gold:1"],[500,9500],2],[90,6,"李存勖",1,2,5,2,"4","6000",2935,1.5,5,3000,["gold:1"],[500,9500],2],[91,6,"李存勖",1,3,1,1,"12","2000",2970,1.5,5,3000,["gold:1"],[500,9500],1],[92,6,"李存勖",1,3,2,2,"4","6000",3005,1.5,5,3000,["gold:1"],[500,9500],2],[93,6,"李存勖",1,3,3,3,"6","4000",3040,1.5,5,3000,["gold:1"],[500,9500],3],[94,6,"李存勖",1,3,4,2,"4","6000",3075,1.5,5,3000,["gold:1"],[500,9500],2],[95,6,"李存勖",1,3,5,1,"12","2000",3110,1.5,5,3000,["gold:1"],[500,9500],1],[96,6,"李存勖",1,4,1,2,"4","6000",3145,1.5,5,3000,["box:3:1"],[500,9500],2],[97,6,"李存勖",1,4,2,1,"12","2000",3180,1.5,5,3000,["box:3:1"],[500,9500],1],[98,6,"李存勖",1,4,3,-1,"8","3000",3215,1.5,5,3000,["box:3:1"],[500,9500],4],[99,6,"李存勖",1,4,4,1,"12","2000",3250,1.5,5,3000,["box:3:1"],[500,9500],1],[100,6,"李存勖",1,4,5,2,"4","6000",3285,1.5,5,3000,["box:3:1"],[500,9500],2],[101,7,"AA_12",1,1,1,3,"6","4000",3320,1.5,5,3000,["gold:1"],[500,9500],3],[102,7,"AA_12",1,1,2,3,"6","4000",3355,1.5,5,3000,["gold:1"],[500,9500],3],[103,7,"AA_12",1,1,3,1,"12","2000",3390,1.5,5,3000,["gold:1"],[500,9500],1],[104,7,"AA_12",1,1,4,3,"6","4000",3425,1.5,5,3000,["gold:1"],[500,9500],3],[105,7,"AA_12",1,1,5,3,"6","4000",3460,1.5,5,3000,["gold:1"],[500,9500],3],[106,7,"AA_12",1,2,1,1,"12","2000",3495,1.5,5,3000,["gold:1"],[500,9500],1],[107,7,"AA_12",1,2,2,2,"4","6000",3530,1.5,5,3000,["gold:1"],[500,9500],2],[108,7,"AA_12",1,2,3,3,"6","4000",3565,1.5,5,3000,["gold:1"],[500,9500],3],[109,7,"AA_12",1,2,4,2,"4","6000",3600,1.5,5,3000,["gold:1"],[500,9500],2],[110,7,"AA_12",1,2,5,1,"12","2000",3635,1.5,5,3000,["gold:1"],[500,9500],1],[111,7,"AA_12",1,3,1,2,"4","6000",3670,1.5,5,3000,["gold:1"],[500,9500],2],[112,7,"AA_12",1,3,2,1,"12","2000",3705,1.5,5,3000,["gold:1"],[500,9500],1],[113,7,"AA_12",1,3,3,3,"6","4000",3740,1.5,5,3000,["gold:1"],[500,9500],3],[114,7,"AA_12",1,3,4,1,"12","2000",3775,1.5,5,3000,["gold:1"],[500,9500],1],[115,7,"AA_12",1,3,5,2,"4","6000",3810,1.5,5,3000,["gold:1"],[500,9500],2],[116,7,"AA_12",1,4,1,2,"4","6000",3845,1.5,5,3000,["box:3:1"],[500,9500],2],[117,7,"AA_12",1,4,2,2,"4","6000",3880,1.5,5,3000,["box:3:1"],[500,9500],2],[118,7,"AA_12",1,4,3,-1,"8","3000",3915,1.5,5,3000,["box:3:1"],[500,9500],4],[119,7,"AA_12",1,4,4,3,"6","4000",3950,1.5,5,3000,["box:3:1"],[500,9500],3],[120,7,"AA_12",1,4,5,3,"6","4000",3985,1.5,5,3000,["box:3:1"],[500,9500],3],[121,8,"米高扬",2,1,1,1,"6","4000",4020,1.5,5,3000,["gold:1"],[500,9500],1],[122,8,"米高扬",2,1,2,1,"6","4000",4055,1.5,5,3000,["gold:1"],[500,9500],1],[123,8,"米高扬",2,1,3,1,"12","2000",4090,1.5,5,3000,["gold:1"],[500,9500],1],[124,8,"米高扬",2,1,4,1,"6","4000",4125,1.5,5,3000,["gold:1"],[500,9500],1],[125,8,"米高扬",2,1,5,1,"6","4000",4160,1.5,5,3000,["gold:1"],[500,9500],1],[126,8,"米高扬",2,2,1,2,"12","2000",4195,1.5,5,3000,["gold:1"],[500,9500],2],[127,8,"米高扬",2,2,2,2,"4","6000",4230,1.5,5,3000,["gold:1"],[500,9500],2],[128,8,"米高扬",2,2,3,2,"6","4000",4265,1.5,5,3000,["gold:1"],[500,9500],2],[129,8,"米高扬",2,2,4,2,"4","6000",4300,1.5,5,3000,["gold:1"],[500,9500],2],[130,8,"米高扬",2,2,5,2,"12","2000",4335,1.5,5,3000,["gold:1"],[500,9500],2],[131,8,"米高扬",2,3,1,3,"4","6000",4370,1.5,5,3000,["gold:1"],[500,9500],3],[132,8,"米高扬",2,3,2,3,"12","2000",4405,1.5,5,3000,["gold:1"],[500,9500],3],[133,8,"米高扬",2,3,3,3,"6","4000",4440,1.5,5,3000,["gold:1"],[500,9500],3],[134,8,"米高扬",2,3,4,3,"12","2000",4475,1.5,5,3000,["gold:1"],[500,9500],3],[135,8,"米高扬",2,3,5,3,"4","6000",4510,1.5,5,3000,["gold:1"],[500,9500],3],[136,8,"米高扬",2,4,1,-1,"4","6000",4545,1.5,5,3000,["box:3:1"],[500,9500],4],[137,8,"米高扬",2,4,2,-1,"4","6000",4580,1.5,5,3000,["box:3:1"],[500,9500],4],[138,8,"米高扬",2,4,3,-1,"8","3000",4615,1.5,5,3000,["box:3:1"],[500,9500],4],[139,8,"米高扬",2,4,4,-1,"6","4000",4650,1.5,5,3000,["box:3:1"],[500,9500],4],[140,8,"米高扬",2,4,5,-1,"6","4000",4685,1.5,5,3000,["box:3:1"],[500,9500],4],[141,9,"安德罗波夫",1,1,1,2,"6","4000",4720,1.5,5,3000,["gold:1"],[500,9500],2],[142,9,"安德罗波夫",1,1,2,2,"6","4000",4755,1.5,5,3000,["gold:1"],[500,9500],2],[143,9,"安德罗波夫",1,1,3,1,"12","2000",4790,1.5,5,3000,["gold:1"],[500,9500],1],[144,9,"安德罗波夫",1,1,4,2,"6","4000",4825,1.5,5,3000,["gold:1"],[500,9500],2],[145,9,"安德罗波夫",1,1,5,2,"6","4000",4860,1.5,5,3000,["gold:1"],[500,9500],2],[146,9,"安德罗波夫",1,2,1,3,"12","2000",4895,1.5,5,3000,["gold:1"],[500,9500],3],[147,9,"安德罗波夫",1,2,2,3,"4","6000",4930,1.5,5,3000,["gold:1"],[500,9500],3],[148,9,"安德罗波夫",1,2,3,2,"6","4000",4965,1.5,5,3000,["gold:1"],[500,9500],2],[149,9,"安德罗波夫",1,2,4,3,"4","6000",5000,1.5,5,3000,["gold:1"],[500,9500],3],[150,9,"安德罗波夫",1,2,5,3,"12","2000",5035,1.5,5,3000,["gold:1"],[500,9500],3],[151,9,"安德罗波夫",1,3,1,1,"4","6000",5070,1.5,5,3000,["gold:1"],[500,9500],1],[152,9,"安德罗波夫",1,3,2,1,"12","2000",5105,1.5,5,3000,["gold:1"],[500,9500],1],[153,9,"安德罗波夫",1,3,3,1,"6","4000",5140,1.5,5,3000,["gold:1"],[500,9500],1],[154,9,"安德罗波夫",1,3,4,1,"12","2000",5175,1.5,5,3000,["gold:1"],[500,9500],1],[155,9,"安德罗波夫",1,3,5,1,"4","6000",5210,1.5,5,3000,["gold:1"],[500,9500],1],[156,9,"安德罗波夫",1,4,1,2,"4","6000",5245,1.5,5,3000,["box:3:1"],[500,9500],2],[157,9,"安德罗波夫",1,4,2,-1,"4","6000",5280,1.5,5,3000,["box:3:1"],[500,9500],4],[158,9,"安德罗波夫",1,4,3,-1,"8","3000",5315,1.5,5,3000,["box:3:1"],[500,9500],4],[159,9,"安德罗波夫",1,4,4,-1,"6","4000",5350,1.5,5,3000,["box:3:1"],[500,9500],4],[160,9,"安德罗波夫",1,4,5,2,"6","4000",5385,1.5,5,3000,["box:3:1"],[500,9500],2],[161,10,"腓特烈",1,1,1,2,"4","4000",5420,1.5,5,3000,["gold:1"],[500,9500],2],[162,10,"腓特烈",1,1,2,2,"4","4000",5455,1.5,5,3000,["gold:1"],[500,9500],2],[163,10,"腓特烈",1,1,3,2,"4","2000",5490,1.5,5,3000,["gold:1"],[500,9500],2],[164,10,"腓特烈",1,1,4,2,"4","4000",5525,1.5,5,3000,["gold:1"],[500,9500],2],[165,10,"腓特烈",1,1,5,2,"4","4000",5560,1.5,5,3000,["gold:1"],[500,9500],2],[166,10,"腓特烈",1,2,1,3,"6","2000",5595,1.5,5,3000,["gold:1"],[500,9500],3],[167,10,"腓特烈",1,2,2,3,"6","6000",5630,1.5,5,3000,["gold:1"],[500,9500],3],[168,10,"腓特烈",1,2,3,3,"6","4000",5665,1.5,5,3000,["gold:1"],[500,9500],3],[169,10,"腓特烈",1,2,4,3,"6","6000",5700,1.5,5,3000,["gold:1"],[500,9500],3],[170,10,"腓特烈",1,2,5,3,"6","2000",5735,1.5,5,3000,["gold:1"],[500,9500],3],[171,10,"腓特烈",1,3,1,1,"12","6000",5770,1.5,5,3000,["gold:1"],[500,9500],1],[172,10,"腓特烈",1,3,2,1,"12","2000",5805,1.5,5,3000,["gold:1"],[500,9500],1],[173,10,"腓特烈",1,3,3,1,"12","4000",5840,1.5,5,3000,["gold:1"],[500,9500],1],[174,10,"腓特烈",1,3,4,1,"12","2000",5875,1.5,5,3000,["gold:1"],[500,9500],1],[175,10,"腓特烈",1,3,5,1,"12","6000",5910,1.5,5,3000,["gold:1"],[500,9500],1],[176,10,"腓特烈",1,4,1,1,"12","6000",5945,1.5,5,3000,["box:3:1"],[500,9500],1],[177,10,"腓特烈",1,4,2,2,"4","6000",5980,1.5,5,3000,["box:3:1"],[500,9500],4],[178,10,"腓特烈",1,4,3,3,"6","3000",6015,1.5,5,3000,["box:3:1"],[500,9500],4],[179,10,"腓特烈",1,4,4,2,"4","4000",6050,1.5,5,3000,["box:3:1"],[500,9500],4],[180,10,"腓特烈",1,4,5,1,"12","4000",6085,1.5,5,3000,["box:3:1"],[500,9500],1],[181,11,"林肯",1,1,1,2,"4","4000",6120,1.5,5,3000,["gold:1"],[500,9500],2],[182,11,"林肯",1,1,2,2,"4","4000",6155,1.5,5,3000,["gold:1"],[500,9500],2],[183,11,"林肯",1,1,3,1,"12","2000",6190,1.5,5,3000,["gold:1"],[500,9500],1],[184,11,"林肯",1,1,4,2,"4","4000",6225,1.5,5,3000,["gold:1"],[500,9500],2],[185,11,"林肯",1,1,5,2,"4","4000",6260,1.5,5,3000,["gold:1"],[500,9500],2],[186,11,"林肯",1,2,1,3,"6","2000",6295,1.5,5,3000,["gold:1"],[500,9500],3],[187,11,"林肯",1,2,2,3,"6","6000",6330,1.5,5,3000,["gold:1"],[500,9500],3],[188,11,"林肯",1,2,3,2,"4","4000",6365,1.5,5,3000,["gold:1"],[500,9500],2],[189,11,"林肯",1,2,4,3,"6","6000",6400,1.5,5,3000,["gold:1"],[500,9500],3],[190,11,"林肯",1,2,5,3,"6","2000",6435,1.5,5,3000,["gold:1"],[500,9500],3],[191,11,"林肯",1,3,1,1,"12","6000",6470,1.5,5,3000,["gold:1"],[500,9500],1],[192,11,"林肯",1,3,2,1,"12","2000",6505,1.5,5,3000,["gold:1"],[500,9500],1],[193,11,"林肯",1,3,3,1,"12","4000",6540,1.5,5,3000,["gold:1"],[500,9500],1],[194,11,"林肯",1,3,4,1,"12","2000",6575,1.5,5,3000,["gold:1"],[500,9500],1],[195,11,"林肯",1,3,5,1,"12","6000",6610,1.5,5,3000,["gold:1"],[500,9500],1],[196,11,"林肯",1,4,1,2,"4","6000",6645,1.5,5,3000,["box:3:1"],[500,9500],2],[197,11,"林肯",1,4,2,-1,"8","6000",6680,1.5,5,3000,["box:3:1"],[500,9500],4],[198,11,"林肯",1,4,3,-1,"8","3000",6715,1.5,5,3000,["box:3:1"],[500,9500],4],[199,11,"林肯",1,4,4,-1,"8","4000",6750,1.5,5,3000,["box:3:1"],[500,9500],4],[200,11,"林肯",1,4,5,2,"4","4000",6785,1.5,5,3000,["box:3:1"],[500,9500],2],[201,12,"卡扎菲",1,1,1,2,"4","4000",6820,1.5,5,3000,["gold:1"],[500,9500],2],[202,12,"卡扎菲",1,1,2,2,"4","4000",6855,1.5,5,3000,["gold:1"],[500,9500],2],[203,12,"卡扎菲",1,1,3,1,"12","2000",6890,1.5,5,3000,["gold:1"],[500,9500],1],[204,12,"卡扎菲",1,1,4,2,"4","4000",6925,1.5,5,3000,["gold:1"],[500,9500],2],[205,12,"卡扎菲",1,1,5,2,"4","4000",6960,1.5,5,3000,["gold:1"],[500,9500],2],[206,12,"卡扎菲",1,2,1,3,"6","2000",6995,1.5,5,3000,["gold:1"],[500,9500],3],[207,12,"卡扎菲",1,2,2,3,"6","6000",7030,1.5,5,3000,["gold:1"],[500,9500],3],[208,12,"卡扎菲",1,2,3,2,"4","4000",7065,1.5,5,3000,["gold:1"],[500,9500],2],[209,12,"卡扎菲",1,2,4,3,"6","6000",7100,1.5,5,3000,["gold:1"],[500,9500],3],[210,12,"卡扎菲",1,2,5,3,"6","2000",7135,1.5,5,3000,["gold:1"],[500,9500],3],[211,12,"卡扎菲",1,3,1,1,"12","6000",7170,1.5,5,3000,["gold:1"],[500,9500],1],[212,12,"卡扎菲",1,3,2,1,"12","2000",7205,1.5,5,3000,["gold:1"],[500,9500],1],[213,12,"卡扎菲",1,3,3,1,"12","4000",7240,1.5,5,3000,["gold:1"],[500,9500],1],[214,12,"卡扎菲",1,3,4,1,"12","2000",7275,1.5,5,3000,["gold:1"],[500,9500],1],[215,12,"卡扎菲",1,3,5,1,"12","6000",7310,1.5,5,3000,["gold:1"],[500,9500],1],[216,12,"卡扎菲",1,4,1,2,"4","6000",7345,1.5,5,3000,["box:3:1"],[500,9500],2],[217,12,"卡扎菲",1,4,2,-1,"8","6000",7380,1.5,5,3000,["box:3:1"],[500,9500],4],[218,12,"卡扎菲",1,4,3,-1,"8","3000",7415,1.5,5,3000,["box:3:1"],[500,9500],4],[219,12,"卡扎菲",1,4,4,-1,"8","4000",7450,1.5,5,3000,["box:3:1"],[500,9500],4],[220,12,"卡扎菲",1,4,5,2,"4","4000",7485,1.5,5,3000,["box:3:1"],[500,9500],2],[221,12,"卡扎菲",1,5,1,2,"4","4000",7520,1.5,5,3000,["gold:1"],[500,9500],2],[222,12,"卡扎菲",1,5,2,2,"4","4000",7555,1.5,5,3000,["gold:1"],[500,9500],2],[223,12,"卡扎菲",1,5,3,1,"12","2000",7590,1.5,5,3000,["gold:1"],[500,9500],1],[224,12,"卡扎菲",1,5,4,2,"4","4000",7625,1.5,5,3000,["gold:1"],[500,9500],2],[225,12,"卡扎菲",1,5,5,2,"4","4000",7660,1.5,5,3000,["gold:1"],[500,9500],2],[226,12,"卡扎菲",1,6,1,3,"6","2000",7695,1.5,5,3000,["gold:1"],[500,9500],3],[227,12,"卡扎菲",1,6,2,3,"6","6000",7730,1.5,5,3000,["gold:1"],[500,9500],3],[228,12,"卡扎菲",1,6,3,2,"4","4000",7765,1.5,5,3000,["gold:1"],[500,9500],2],[229,12,"卡扎菲",1,6,4,3,"6","6000",7800,1.5,5,3000,["gold:1"],[500,9500],3],[230,12,"卡扎菲",1,6,5,3,"6","2000",7835,1.5,5,3000,["gold:1"],[500,9500],3],[231,12,"卡扎菲",1,7,1,1,"12","6000",7870,1.5,5,3000,["gold:1"],[500,9500],1],[232,12,"卡扎菲",1,7,2,1,"12","2000",7905,1.5,5,3000,["gold:1"],[500,9500],1],[233,12,"卡扎菲",1,7,3,1,"12","4000",7940,1.5,5,3000,["gold:1"],[500,9500],1],[234,12,"卡扎菲",1,7,4,1,"12","2000",7975,1.5,5,3000,["gold:1"],[500,9500],1],[235,12,"卡扎菲",1,7,5,1,"12","6000",8010,1.5,5,3000,["gold:1"],[500,9500],1],[236,12,"卡扎菲",1,8,1,2,"4","6000",8045,1.5,5,3000,["box:3:1"],[500,9500],2],[237,12,"卡扎菲",1,8,2,-1,"8","6000",8080,1.5,5,3000,["box:3:1"],[500,9500],4],[238,12,"卡扎菲",1,8,3,-1,"8","3000",8115,1.5,5,3000,["box:3:1"],[500,9500],4],[239,12,"卡扎菲",1,8,4,-1,"8","4000",8150,1.5,5,3000,["box:3:1"],[500,9500],4],[240,12,"卡扎菲",1,8,5,2,"4","4000",8185,1.5,5,3000,["box:3:1"],[500,9500],2]] |