void Start() { FinisherCount = FinisherTime; FinisherModeCooldownCount = FinisherModeCooldownTime; CurrentFinisherMode = FinisherModes.Runic; inFinisherMode = false; PerformingFinisher = false; ExecutingFinisher = false; FinisherFullImage.SetActive(false); FinisherIcon.gameObject.SetActive(true); FinisherIcon.SetActivated(false); InFinisherIcons.SetActive(false); PrimaryAttackPopUp.SetActive(false); //RunicSequence = new RunicInputHelper(); RunicQue = new List <Direction>(); }
public IEnumerator EnterFinisherMode(bool usedSwordGrapple) { GameStatus.FinisherModeActive = true; Player.GetComponent <PlayerMovementController>().PreventMoving(); Player.GetComponent <PlayerMovementController>().PreventTuring(); inFinisherMode = true; print("Begin Finisher"); swordController.PreventAttacking(); //move enemy into place and lock controls. PlayerRotWrapper.LookAt(new Vector3(currentTarget.transform.position.x, PlayerRotWrapper.transform.position.y, currentTarget.transform.position.z)); if (!PillarFinisherUsed) { if (currentTarget.tag != "TargetDummy") { currentTarget.GetComponent <EnemyMovementController>().StopMovement(); currentTarget.GetComponent <EnemyAI>().BeingFinished(); if (currentTarget.GetComponent <EnemyTypeController>().MyEnemyType == EnemyType.Boss) { savedAnimController = currentTarget.GetComponent <EnemyAI>().anim.runtimeAnimatorController; } if (enemyAnimator = currentTarget.GetComponent <EnemyAI>().anim) { enemyAnimator.runtimeAnimatorController = enemyAnimatorController; enemyAnimator.updateMode = AnimatorUpdateMode.UnscaledTime; enemyAnimator.Play("Finisher_Start"); } yield return(null); } } UIanim.Play("FinisherRunicIdleStance"); Time.timeScale = slowMoModifier; if (usedSwordGrapple) { //moves camera cam.MoveToAimingLocation(true); //Mark make sure camera takes as long as the animation usedSwordGrapple = false; //move sword forward and back over a small period SwordThrowAnimObj.SetActive(true); var savedSwordPos = SwordThrowAnimObj.transform.localPosition; var savedSwordRot = SwordThrowAnimObj.transform.localRotation; var currentSwordPos = SwordThrowAnimObj.transform.position; Vector3 FinalTarget = EnemyFinisherPlacement.position; float timeToMove = .25f; var t = 0f; while (t < 1) { t += Time.unscaledDeltaTime / timeToMove; SwordThrowAnimObj.transform.position = Vector3.Lerp(currentSwordPos, currentTarget.transform.position, t); yield return(null); } currentSwordPos = SwordThrowAnimObj.transform.position; var currentTargetPos = currentTarget.transform.position; t = 0f; while (t < 1) { t += Time.unscaledDeltaTime / timeToMove; SwordThrowAnimObj.transform.position = Vector3.Lerp(currentSwordPos, FinalTarget, t); currentTarget.transform.position = Vector3.Lerp(currentTargetPos, FinalTarget, t); yield return(null); } SwordThrowAnimObj.transform.localPosition = savedSwordPos; SwordThrowAnimObj.transform.localRotation = savedSwordRot; SwordThrowAnimObj.SetActive(false); CharAnim.Play("Finisher_Start"); yield return(null); } else { CharAnim.Play("Finisher_Start"); yield return(null); } currentTarget.transform.position = EnemyFinisherPlacement.position; currentTarget.transform.rotation = EnemyFinisherPlacement.rotation; if (!PillarFinisherUsed) { currentTarget.transform.Rotate(new Vector3(0, -40, 0)); } //currentTarget.transform.parent = EnemyFinisherPlacement; if (PillarFinisherUsed) { currentTarget.transform.position += Vector3.down; TutorialPopups.Instance.ShowTutorialPopup(PillarTutorial.FinisherUnlock); } //moves camera cam.MoveToFinisherModeLocation(); //Mark make sure camera takes as long as the animation if (PillarFinisherUsed) { PillarTutorial.PlayFirstHit(); } while (cam.GetIsMoving()) { CameraBase.rotation = Quaternion.Slerp(CameraBase.rotation, PlayerRotWrapper.rotation, .5f); yield return(null); } //waits till the camera and or animation is done CameraBase.rotation = PlayerRotWrapper.rotation; GetComponent <PlayerMovementController>().Aiming = false; PerformingFinisher = true; FinisherCount = FinisherTime; FinisherIcon.SetActivated(false); InFinisherIcons.SetActive(true); if (!PillarFinisherUsed) { RunicRinisherGuides.SetActive(true); } //RunicSequence.RestartQue(); RunicQue.Clear(); InputList.Clear(); //yield return null; }
// Update is called once per frame void Update() { if (!inFinisherMode) { if (FinisherModeCooldownCount >= FinisherModeCooldownTime && CanFinish) { if (PillarFinisherNearby && PillarTarget != null)//TutorialPillarComment { FinisherIcon.SetActivated(true); FinisherIcon.transform.position = PillarTarget.transform.position; FinisherIcon.transform.position += Vector3.up * 2f; if (TryFinisher && !GameStatus.GamePaused) { PillarFinisherUsed = true; currentTarget = PillarTarget; PillarTutorial = PillarTarget.GetComponent <TutorialPillar>(); switch (PillarTutorial.FinisherUnlock) { case Finishers.Siphoning: GetComponent <Siphoncut>().enabled = true; break; case Finishers.FlameSword: GetComponent <RunicFireSword>().enabled = true; break; case Finishers.Flamethrower: GetComponent <RunicFlamethrower>().enabled = true; break; case Finishers.FlameAOE: GetComponent <RunicFireCircle>().enabled = true; break; case Finishers.FrostAOE: GetComponent <RunicFrostCircle>().enabled = true; break; } StartCoroutine(EnterFinisherMode(false)); } } else if (finisherSlider.value >= 100) { currentTarget = GetClosestEnemy(); FinisherFullImage.SetActive(true); if (TryFinisher && !GameStatus.GamePaused) //Input.GetButtonDown("FinishMode") { if (currentTarget != null) { finisherSlider.value = 25; FinisherFullImage.SetActive(false); StartCoroutine(EnterFinisherMode(usedSwordGrapple)); } else { print("No nearby enemy"); } } } else { FinisherFullImage.SetActive(false); } } else { FinisherModeCooldownCount += Time.deltaTime; FinisherIcon.SetActivated(false); } //Increase UI slider for Finisher && temp cheat if (Input.GetKeyDown(KeyCode.G)) { IncreaseFinisherMeter(100); } if (Input.GetKeyDown(KeyCode.H)) { IncreaseGodModeMeter(100); } } else { CameraBase.rotation = PlayerRotWrapper.rotation; if (PerformingFinisher && !ExecutingFinisher && !GameStatus.GamePaused) //MARK: Unsure of how we will do the full finisher carves { if (!PillarFinisherUsed) { currentTarget.transform.position = EnemyFinisherPlacement.position; currentTarget.transform.rotation = EnemyFinisherPlacement.rotation; if (!PillarFinisherUsed) { currentTarget.transform.Rotate(new Vector3(0, -40, 0)); } } if (Input.GetButtonDown("QuickFinish")) { FailFinisherMode(); return; } ProcessPlayerInput(); bool goodSoFar = false; foreach (FinisherAbstract RCombo in FinisherMoves) { goodSoFar = RCombo.checkSoFar(RunicQue); if (goodSoFar) { if (RCombo.check(RunicQue)) { PrimaryAttackPopUp.SetActive(true); if (PillarFinisherUsed) { if (PillarTutorial) { PillarTutorial.PlayFinalHit(); } } } break; } } if (!goodSoFar) { FailFinisherMode(); return; } //inside the primary attack check, see if they did a correct sequence, and succeed or fail if (Input.GetButtonDown("Execute")) { bool goodCombo = false; FinisherAbstract FinisherToPerform = null; foreach (FinisherAbstract f in FinisherMoves) { //goodCombo = f.startfinisher(this, RunicQue); goodCombo = f.check(RunicQue); FinisherToPerform = f; if (goodCombo) { break; } } if (!goodCombo) { FailFinisherMode(); } else { StartCoroutine(ExecuteFinisher(FinisherToPerform)); } } if (FinisherCount <= 0 && !ExecutingFinisher && !PillarFinisherUsed) { FailFinisherMode(); } else { FinisherCount -= Time.unscaledDeltaTime; } } } //print(NearbyEnemies); TryFinisher = false; }