private void Block(StateController controller) { if (!controller.isBlocking) { controller.StopNavAgentFor(controller.blockPauseDuration); AkSoundEngine.PostEvent(controller.akEventHurt, controller.gameObject); controller.PlayBlockAnimation(); } if (Time.time >= controller.blockReadyTime) { controller.blockReadyTime = Time.time + controller.blockPauseDuration; SkeletonDamagable skeleton = controller.gameObject.GetComponent <SkeletonDamagable>(); skeleton.DealHealing(30); Debug.Log("Enemy healed " + skeleton.blockHealing); } }
private void Teleport(StateController controller) { SkeletonDamagable boss = controller.GetComponent <SkeletonDamagable>(); if (boss.currentHealth < boss.previousHealth && Time.time >= controller.lastTeleport) { boss.previousHealth = boss.currentHealth; controller.lastTeleport = Time.time + controller.teleportCooldownTime; //play teleport particle system controller.teleportFirst = Instantiate(controller.teleportPrefab, controller.gameObject.transform.position, controller.gameObject.transform.rotation); //teleport boss to random point on platform Transform[] points = controller.teleportPoints; int location = (int)(Random.Range(0f, points.Length - 1)); Vector3 randomPoint = points[location].position; controller.gameObject.transform.position = randomPoint; //play teleport particle system again at new location controller.teleportSecond = Instantiate(controller.teleportPrefab, controller.gameObject.transform.position, controller.gameObject.transform.rotation); } }