diff --git a/Assets/02.Scripts/Character/Enemy/Boss/Boss.cs b/Assets/02.Scripts/Character/Enemy/Boss/Boss.cs index 7d662bd9d..3df7675ae 100644 --- a/Assets/02.Scripts/Character/Enemy/Boss/Boss.cs +++ b/Assets/02.Scripts/Character/Enemy/Boss/Boss.cs @@ -29,6 +29,7 @@ namespace BlueWater.Enemies.Bosses GateOfSpikes, MultiThrowSpikes, SingleRoll, + SpikeBarrage } public abstract class Boss : MonoBehaviour, ITarget diff --git a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/MiniSandMole.cs b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/MiniSandMole.cs index f9b83d31f..d7b16da7d 100644 --- a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/MiniSandMole.cs +++ b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/MiniSandMole.cs @@ -188,7 +188,7 @@ namespace BlueWater.Enemies.Bosses.SandMole yield return null; } - SpriteRenderer.material.SetFloat(_dissolveValueHash, 1f); + SpriteRenderer.material.SetFloat(_dissolveValueHash, 0f); Destroy(gameObject); } diff --git a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMole.cs b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMole.cs index 6683d6041..0bcfe166b 100644 --- a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMole.cs +++ b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMole.cs @@ -13,6 +13,7 @@ namespace BlueWater.Enemies.Bosses.SandMole GateOfSpikes, MultiThrowSpikes, SingleRoll, + SpikeBarrage } [Serializable] diff --git a/Assets/02.Scripts/Map/SandMoleMapController.cs b/Assets/02.Scripts/Map/SandMoleMapController.cs index bacb4feda..99312cbdf 100644 --- a/Assets/02.Scripts/Map/SandMoleMapController.cs +++ b/Assets/02.Scripts/Map/SandMoleMapController.cs @@ -7,8 +7,8 @@ namespace BlueWater.Maps { public class SandMoleMapController : BossMapController { - [SerializeField, Required] - protected Transform CenterSpawnTransform; + [field: SerializeField, Required] + public Transform CenterSpawnTransform { get; private set; } [SerializeField, Required] protected List MiniSandMoleSpawnTransforms; diff --git a/Assets/02.Scripts/ScriptableObject/Enemy/Boss/SandMoleData.asset b/Assets/02.Scripts/ScriptableObject/Enemy/Boss/SandMoleData.asset index ff5fe1e4e..f3f4ced20 100644 --- a/Assets/02.Scripts/ScriptableObject/Enemy/Boss/SandMoleData.asset +++ b/Assets/02.Scripts/ScriptableObject/Enemy/Boss/SandMoleData.asset @@ -22,4 +22,5 @@ MonoBehaviour: - {fileID: 6760430575876107212, guid: a09fc16b8b3c86a4e88ac3f049b5fd89, type: 3} - {fileID: 2789312915140829590, guid: 8f4a84b8b6727c64ea203026334a60c2, type: 3} - {fileID: -8817476587284398613, guid: 1ac17d81b98c9fb488ac24d8e2291955, type: 3} + - {fileID: 6831508064570746451, guid: 4c632b5316acd35479cf545bc4752b7f, type: 3} k__BackingField: 3 diff --git a/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SpikeBarrageData.asset b/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SpikeBarrageData.asset new file mode 100644 index 000000000..9fd792c24 --- /dev/null +++ b/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SpikeBarrageData.asset @@ -0,0 +1,32 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1252d13955f45dd4dbc35301cc515c01, type: 3} + m_Name: SpikeBarrageData + m_EditorClassIdentifier: + k__BackingField: SpikeBarrage + k__BackingField: "\uAC00\uC2DC \uB09C\uC0AC" + k__BackingField: + k__BackingField: 1 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: + serializedVersion: 2 + m_Bits: 2432 + k__BackingField: {fileID: 194276104676398060, guid: 74d380cc223e6a5419f3aa88df2d767c, type: 3} + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 48 + k__BackingField: 0.1 + k__BackingField: 15 + k__BackingField: 25 diff --git a/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SpikeBarrageData.asset.meta b/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SpikeBarrageData.asset.meta new file mode 100644 index 000000000..668660fc9 --- /dev/null +++ b/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SpikeBarrageData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bc1538523ade0f347bef7073c51317bb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SpikeBarrageData.cs b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SpikeBarrageData.cs new file mode 100644 index 000000000..b5457978c --- /dev/null +++ b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SpikeBarrageData.cs @@ -0,0 +1,32 @@ +using UnityEngine; + +namespace BlueWater.Enemies.Bosses.SandMole.Skills +{ + [CreateAssetMenu(fileName = "SpikeBarrageData", menuName = "ScriptableObjects/Skills/SandMole/SpikeBarrageData", order = (int)SandMoleSkill.SpikeBarrage)] + public class SpikeBarrageData : SkillData + { + [field: SerializeField] + public float DissolveTime { get; private set; } = 1f; + + [field: SerializeField] + public float SpawnDissolveTime { get; private set; } = 1f; + + [field: SerializeField] + public GameObject SpikePrefab { get; private set; } + + [field: SerializeField, Range(0f, 360f), Tooltip("첫 발사체의 y축 각도\n0은 ↑ 숫자가 커질수록 시계방향으로")] + public int StartAngle { get; private set; } + + [field: SerializeField] + public int SpikeCount { get; private set; } = 48; + + [field: SerializeField, Tooltip("다음 발사체와의 시간 간격")] + public float SpikeInterval { get; private set; } = 0.1f; + + [field: SerializeField, Tooltip("다음 발사체와의 각도 간격")] + public float AngleStep { get; private set; } = 15f; + + [field: SerializeField] + public float ProjectileSpeed { get; private set; } = 25f; + } +} \ No newline at end of file diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SpikeBarrageData.cs.meta b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SpikeBarrageData.cs.meta new file mode 100644 index 000000000..050862ee8 --- /dev/null +++ b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SpikeBarrageData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1252d13955f45dd4dbc35301cc515c01 diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SpikeBarrage.cs b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SpikeBarrage.cs new file mode 100644 index 000000000..4042daacb --- /dev/null +++ b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SpikeBarrage.cs @@ -0,0 +1,137 @@ +using System; +using System.Collections; +using BlueWater.Interfaces; +using BlueWater.Maps; +using BlueWater.Utility; +using UnityEngine; + +namespace BlueWater.Enemies.Bosses.SandMole.Skills +{ + public class SpikeBarrage : BaseSkill + { + private SpikeBarrageData _spikeBarrageData; + private AnimationController _animationController; + private AiMovement _aiMovement; + private Rigidbody _userRigidbody; + private Collider _userCollider; + private Collider _targetCollider; + private SpriteRenderer _userSpriteRenderer; + private SandMoleMapController _sandMoleMapController; + private Transform _particleInstantiateLocation; + private Transform _centerSpawnTransform; + + private static readonly int _dissolveValueHash = Shader.PropertyToID("_DissolveValue"); + + protected override void BasicSetting() + { + _animationController = SkillUser.GetComponent(); + _aiMovement = SkillUser.GetComponent(); + _userRigidbody = SkillUser.GetComponent(); + _userCollider = SkillUser.GetComponent(); + _targetCollider = SkillUser.GetComponent().Target; + _userSpriteRenderer = SkillUser.GetComponentInChildren(); + _sandMoleMapController = MapManager.Instance.SandMoleMapController; + _particleInstantiateLocation = _sandMoleMapController.ParticleInstantiateLocation; + _centerSpawnTransform = _sandMoleMapController.CenterSpawnTransform; + _spikeBarrageData = (SpikeBarrageData)SkillData; + + base.BasicSetting(); + } + + public override void ActivateSkill(params Action[] actions) + { + Utils.StartUniqueCoroutine(this, ref SkillCoroutineInstance, SkillCoroutine(actions)); + } + + private IEnumerator SkillCoroutine(params Action[] actions) + { + EnableSkill = false; + _aiMovement.StopMove(); + _animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.SpikeBarrage); + + var animationStarted = false; + yield return StartCoroutine(_animationController.WaitForAnimationToRun("SpikeBarrage", + success => animationStarted = success)); + + if (!animationStarted || !SkillUser) + { + EndSkill(0, actions[0]); + yield break; + } + + _userRigidbody.isKinematic = true; + _userSpriteRenderer.material.SetFloat(_dissolveValueHash, 1f); + var elapsedTime = 0f; + var dissolveTime = _spikeBarrageData.DissolveTime; + while (elapsedTime <= dissolveTime) + { + if (!_userSpriteRenderer) + { + EndSkill(0, actions[0]); + yield break; + } + + var value = Mathf.Lerp(1f, 0f, elapsedTime / dissolveTime); + _userSpriteRenderer.material.SetFloat(_dissolveValueHash, value); + elapsedTime += Time.deltaTime; + + yield return null; + } + _userSpriteRenderer.material.SetFloat(_dissolveValueHash, 0f); + _aiMovement.Teleport(SkillUser.transform.position + Vector3.up * 20f); + + yield return new WaitForSeconds(1f); + + _aiMovement.Teleport(_centerSpawnTransform.position); + _userRigidbody.isKinematic = false; + + elapsedTime = 0f; + dissolveTime = _spikeBarrageData.SpawnDissolveTime; + while (elapsedTime <= dissolveTime) + { + if (!_userSpriteRenderer) + { + EndSkill(0, actions[0]); + yield break; + } + + var value = Mathf.Lerp(0f, 1f, elapsedTime / dissolveTime); + _userSpriteRenderer.material.SetFloat(_dissolveValueHash, value); + elapsedTime += Time.deltaTime; + + yield return null; + } + _userSpriteRenderer.material.SetFloat(_dissolveValueHash, 1f); + + var startAngle = _spikeBarrageData.StartAngle; + var angleStep = _spikeBarrageData.AngleStep; + var spikeSpawnPosition = _userCollider.bounds.center; + spikeSpawnPosition.y = _targetCollider.bounds.center.y; + var spikeInterval = new WaitForSeconds(_spikeBarrageData.SpikeInterval); + for (var i = 0; i < _spikeBarrageData.SpikeCount; i++) + { + var currentAngle = startAngle + angleStep * i; + var rotation = Quaternion.Euler(0f, currentAngle, 0f); + var spike = Instantiate(_spikeBarrageData.SpikePrefab, spikeSpawnPosition, rotation, + _particleInstantiateLocation).GetComponent(); + spike.Initialize(_spikeBarrageData.Damage, _spikeBarrageData.TargetLayer); + spike.AddForce(spike.transform.forward * _spikeBarrageData.ProjectileSpeed, ForceMode.Impulse); + + yield return spikeInterval; + } + + EndSkill(SkillData.Cooldown, actions[0]); + } + + private void EndSkill(float cooldown, Action action) + { + Utils.EndUniqueCoroutine(this, ref SkillCoroutineInstance); + + _animationController.ResetAnimationSpeed(); + _animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.None); + action?.Invoke(); + + Utils.StartUniqueCoroutine(this, ref CooldownCoroutineInstance,Utils.CoolDownCoroutine(cooldown, EndCooldown)); + } + } +} \ No newline at end of file diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SpikeBarrage.cs.meta b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SpikeBarrage.cs.meta new file mode 100644 index 000000000..98a642310 --- /dev/null +++ b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SpikeBarrage.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ad09c617546190644969b90e17b1a651 diff --git a/Assets/05.Prefabs/Maps/SandMoleMapController.prefab b/Assets/05.Prefabs/Maps/SandMoleMapController.prefab index a84ee06f1..39975cd18 100644 --- a/Assets/05.Prefabs/Maps/SandMoleMapController.prefab +++ b/Assets/05.Prefabs/Maps/SandMoleMapController.prefab @@ -1037,7 +1037,7 @@ MonoBehaviour: BGMName: BossSpawnTransform: {fileID: 6522622582430961898} BossType: 3 - CenterSpawnTransform: {fileID: 4946803535834257734} + k__BackingField: {fileID: 4946803535834257734} MiniSandMoleSpawnTransforms: - {fileID: 2981470058859736985} - {fileID: 1324592367882867249} diff --git a/Assets/05.Prefabs/Skills/Enemies/Bosses/SandMole/SpikeBarrage.prefab b/Assets/05.Prefabs/Skills/Enemies/Bosses/SandMole/SpikeBarrage.prefab new file mode 100644 index 000000000..f54a21a3b --- /dev/null +++ b/Assets/05.Prefabs/Skills/Enemies/Bosses/SandMole/SpikeBarrage.prefab @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &6575159217317842605 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 817830973935461002, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_Name + value: SpikeBarrage + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7266951372888583716, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_Material + value: + objectReference: {fileID: 2100000, guid: a1e8e71505dd71149a84a361110dac07, type: 2} + - target: {fileID: 8663005856679327762, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 817830973935461002, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + insertIndex: -1 + addedObject: {fileID: 6831508064570746451} + m_SourcePrefab: {fileID: 100100000, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} +--- !u!1 &5793366936479968295 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 817830973935461002, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3} + m_PrefabInstance: {fileID: 6575159217317842605} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6831508064570746451 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5793366936479968295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ad09c617546190644969b90e17b1a651, type: 3} + m_Name: + m_EditorClassIdentifier: + SkillData: {fileID: 11400000, guid: bc1538523ade0f347bef7073c51317bb, type: 2} + EnableSkill: 1 + IsUsingIndicator: 0 + Indicator: {fileID: 0} diff --git a/Assets/05.Prefabs/Skills/Enemies/Bosses/SandMole/SpikeBarrage.prefab.meta b/Assets/05.Prefabs/Skills/Enemies/Bosses/SandMole/SpikeBarrage.prefab.meta new file mode 100644 index 000000000..57c2632c8 --- /dev/null +++ b/Assets/05.Prefabs/Skills/Enemies/Bosses/SandMole/SpikeBarrage.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4c632b5316acd35479cf545bc4752b7f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07.Animations/Characters/Enemies/Bosses/SandMole/SandMole.controller b/Assets/07.Animations/Characters/Enemies/Bosses/SandMole/SandMole.controller index a58e1ac00..591179e77 100644 --- a/Assets/07.Animations/Characters/Enemies/Bosses/SandMole/SandMole.controller +++ b/Assets/07.Animations/Characters/Enemies/Bosses/SandMole/SandMole.controller @@ -685,7 +685,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: SummonMiniSandMole + m_Name: SpikeBarrage m_Speed: 1 m_CycleOffset: 0 m_Transitions: diff --git a/Assets/11.BehaviorTree/SandMole.asset b/Assets/11.BehaviorTree/SandMole.asset index effdfea74..ec81a0d3c 100644 --- a/Assets/11.BehaviorTree/SandMole.asset +++ b/Assets/11.BehaviorTree/SandMole.asset @@ -32,18 +32,28 @@ MonoBehaviour: Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-95.23809,150)"},"ID":13,"Name":"Activate Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(71.37249,153.681122)"},"ID":14,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-616.0723,449.166626)"},"ID":15,"Name":"Multi Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-71.4286,150)"},"ID":16,"Name":"Activate - Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(78.571434,150)"},"ID":17,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(9.765897,452.758667)"},"ID":18,"Name":"Multi - Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-383.3333,150)"},"ID":19,"Name":"Activate - Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-233.333313,150)"},"ID":20,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-84.2857,148.095215)"},"ID":21,"Name":"Activate - Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(65.71442,148.095215)"},"ID":22,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(222.6831,147.804932)"},"ID":23,"Name":"Activate - Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.SelfStun","NodeData":{"Offset":"(370,150)"},"ID":24,"Name":"Self - Stun","Instant":true,"Single_stunDuration":4},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(496.964966,145.486084)"},"ID":25,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(718.678467,449.4253)"},"ID":26,"Name":"Gate - Of Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-73.52939,150)"},"ID":27,"Name":"Activate - Skill","Instant":true,"BossSkillName_bossSkillName":"GateOfSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(76.47061,150)"},"ID":28,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(1021.18909,446.111084)"},"ID":29,"Name":"Multi - Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-70,150)"},"ID":30,"Name":"Activate - Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(80,150)"},"ID":31,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(1357.89648,453.97522)"},"ID":32,"Name":"Single - Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-100,150)"},"ID":33,"Name":"Activate - Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(70,150)"},"ID":34,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":3},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"Int32mValue":0},{"Type":"BehaviorDesigner.Runtime.SharedCollider","Name":"Target","IsShared":true}]}' + Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(78.571434,150)"},"ID":17,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.RandomSelector","NodeData":{"Offset":"(-3.888855,446.111084)"},"ID":18,"Name":"Random + Selector","Instant":true,"Int32seed":0,"BooleanuseSeed":false,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-194.553284,150.079346)"},"ID":19,"Name":"Case1 + Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-1339.99878,200)"},"ID":20,"Name":"Multi + Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-383.3333,150)"},"ID":21,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-233.333313,150)"},"ID":22,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-84.2857,148.095215)"},"ID":23,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(65.71442,148.095215)"},"ID":24,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(222.6831,147.804932)"},"ID":25,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.SelfStun","NodeData":{"Offset":"(370,150)"},"ID":26,"Name":"Self + Stun","Instant":true,"Single_stunDuration":4},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(496.964966,145.486084)"},"ID":27,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-532.630249,202.105347)"},"ID":28,"Name":"Gate + Of Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-70,150)"},"ID":29,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"GateOfSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(80,150)"},"ID":30,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-232.630539,202.105347)"},"ID":31,"Name":"Multi + Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-69.9997559,150)"},"ID":32,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(80,150)"},"ID":33,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(107.369766,202.105347)"},"ID":34,"Name":"Single + Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-100,150)"},"ID":35,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(70,150)"},"ID":36,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":3},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(281.537964,160)"},"ID":37,"Name":"Case2 + Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(3.58260536,189.3617)"},"ID":38,"Name":"Spike + Barrage","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-117.619049,150)"},"ID":39,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"SpikeBarrage"},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.SelfStun","NodeData":{"Offset":"(2.2166748,148.095215)"},"ID":40,"Name":"Self + Stun","Instant":true,"Single_stunDuration":4},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(115.714287,150)"},"ID":41,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(328.2801,192.40271)"},"ID":42,"Name":"Gate + Of Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-73.52939,150)"},"ID":43,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"GateOfSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(76.47061,150)"},"ID":44,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(664.709656,192.40271)"},"ID":45,"Name":"Single + Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-100,150)"},"ID":46,"Name":"Activate + Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(70,150)"},"ID":47,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":3},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"Int32mValue":0},{"Type":"BehaviorDesigner.Runtime.SharedCollider","Name":"Target","IsShared":true}]}' fieldSerializationData: typeName: [] fieldNameHash: