protected override void SetDefaultValues() { base.SetDefaultValues(); AIType = EAISelection.Servant; previousState = currentState; newState = currentState; currentWaypointMode = EAIWaypointMode.Patrol; movementEnabled = true; attackEnabled = true; canMakeWolfsbane = true; if (wolfsbaneDamage <= 0f) { wolfsbaneDamageDefault = 1f; wolfsbaneDamage = wolfsbaneDamageDefault; } else { wolfsbaneDamageDefault = wolfsbaneDamage; } if (wolfsbaneSpeedDefault <= 0f) { wolfsbaneSpeedDefault = 0f; } }
protected void InvokeWolfsbaneCountdown() { if (!wolfsbaneTimerActive && canMakeWolfsbane) { wolfsbaneTimerActive = true; wolfsbaneMakeTimer = wolfsbaneSpeedDefault; newState = EServantStates.CreatingWolfsbane; } }
void UpdateState() { previousState = currentState; currentState = newState; newState = currentState; if (currentState == EServantStates.Normal) { walkSpeed = defaultWalkSpeed; targets = patrolWaypoints; currentWaypointMode = EAIWaypointMode.Patrol; currentTarget = 0; nextWaypointDistance = defaultNextWaypointDistance; revalulatePathing = true; myAnimator.SetBool("Running", false); } else if (currentState == EServantStates.Running) { currentWaypointMode = EAIWaypointMode.OneWay; targets = levelWaypoints; nextWaypointDistance = defaultNextWaypointDistance; revalulatePathing = true; myAnimator.SetBool("Running", true); } else if (currentState == EServantStates.FoundFoodbowl) { currentWaypointMode = EAIWaypointMode.OneWay; currentTarget = 0; nextWaypointDistance = .1f; revalulatePathing = true; myAnimator.SetBool("Running", false); } else if (currentState == EServantStates.CreatingWolfsbane) { walkSpeed = 0f; } else if (currentState == EServantStates.PresentingWolfsbane) { walkSpeed = defaultWalkSpeed; currentWaypointMode = EAIWaypointMode.OneWay; } }
protected override void PerformAction() { if (singleTarget != null) { if (hasWolfsbane) { if (singleTarget.CompareTag("Enemy") && currentState == EServantStates.PresentingWolfsbane) { hasWolfsbane = false; singleTarget.gameObject.GetComponent <WerewolfAI>().TakeDamage(wolfsbaneDamage); singleTarget = levelTarget; newState = EServantStates.Running; myAnimator.SetBool("Presenting Wolfsbane", false); Destroy(foodbowlPlacementSpot.transform.GetChild(0).gameObject); } } } }
protected override void SetDefaultValues() { base.SetDefaultValues(); AIType = EAISelection.Servant; previousState = currentState; newState = currentState; currentWaypointMode = EAIWaypointMode.Patrol; movementEnabled = true; attackEnabled = true; if (wolfsbaneDamage <= 0f) { wolfsbaneDamageDefault = 1f; wolfsbaneDamage = wolfsbaneDamageDefault; } else { wolfsbaneDamageDefault = wolfsbaneDamage; } if (wolfsbaneSpeedDefault <= 0f) { wolfsbaneSpeedDefault = 0f; } targets = patrolWaypoints; if (nextWaypointDistance <= 0f) { defaultNextWaypointDistance = 3f; nextWaypointDistance = defaultNextWaypointDistance; } else { defaultNextWaypointDistance = nextWaypointDistance; } }
void UpdateState() { previousState = currentState; currentState = newState; newState = currentState; if (currentState == EServantStates.Normal) { walkSpeed = defaultWalkSpeed; currentWaypointMode = EAIWaypointMode.Patrol; myAnimator.SetBool("Running", false); } else if (currentState == EServantStates.Running) { currentWaypointMode = EAIWaypointMode.OneWay; singleTarget = levelTarget; myAnimator.SetBool("Running", true); } else if (currentState == EServantStates.FoundFoodbowl) { currentWaypointMode = EAIWaypointMode.OneWay; currentTarget = 0; myAnimator.SetBool("Running", false); } else if (currentState == EServantStates.CreatingWolfsbane) { walkSpeed = 0f; } else if (currentState == EServantStates.PresentingWolfsbane) { walkSpeed = defaultWalkSpeed; currentWaypointMode = EAIWaypointMode.OneWay; } }
private void TickCountdowns() { if (wolfsbaneTimerActive) { wolfsbaneMakeTimer -= Time.deltaTime; if (wolfsbaneMakeTimer <= 0f) { wolfsbaneTimerActive = false; hasWolfsbane = true; canMakeWolfsbane = false; newState = EServantStates.Normal; if (singleTarget.CompareTag("Food Bowl")) { if (!canMakeWolfsbane) { singleTarget.parent = foodbowlPlacementSpot; foodbowlPlacementSpot.transform.GetChild(0).localPosition = new Vector3(0, 0, 0); singleTarget = null; } } } } }