- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- [CreateAssetMenu(menuName = "Finite State Machine/Action/Recovery")]
- public class RecoveryAction : Action
- {
- [SerializeField] private float regenerationRate;
- public override void Act(FiniteStateMachine fsm)
- {
- if (fsm.booleanDictionary.HasKey("escaping")) fsm.booleanDictionary.SetValue("escaping", false);
- if (!fsm.monoDictionary.HasKey("hp")) fsm.monoDictionary.SetValue("hp", fsm.GetComponent<Health>());
- if((fsm.monoDictionary.GetValue("hp") as Health).hp < 100)
- {
- (fsm.monoDictionary.GetValue("hp") as Health).hp += regenerationRate * Time.deltaTime;
- (fsm.monoDictionary.GetValue("hp") as Health).regenerating = true;
- }
- else (fsm.monoDictionary.GetValue("hp") as Health).hp = 100;
- }
- }