using System; using NodeCanvas.Framework; using ParadoxNotion.Design; using UnityEngine; namespace Reset.Items { [Category("Reset/Combat")] [Description("Set an existing or new weapon actor variable to the defined value.")] public class SetWeaponActorVariable : ActionTask{ public BBParameter variable; public BBParameter value; protected override string info{ get{ return $"Set weapon variable {variable.value} == {value.name}"; } } //Use for initialization. This is called only once in the lifetime of the task. //Return null if init was successfull. Return an error string otherwise protected override string OnInit() { return null; } //This is called once each time the task is enabled. //Call EndAction() to mark the action as finished, either in success or failure. //EndAction can be called from anywhere. protected override void OnExecute() { WeaponActor actor = agent.GetComponent(); if (actor == null) { Debug.LogError("No WeaponActor was found on this player."); EndAction(false); } try { actor.RegisterWeaponVariable(variable.value, value.value); } catch (Exception e) { Debug.LogError($"Failed to set weapon variable '{variable.value}': {e.Message} "); EndAction(false); } EndAction(true); } //Called once per frame while the action is active. protected override void OnUpdate() { } //Called when the task is disabled. protected override void OnStop() { } //Called when the task is paused. protected override void OnPause() { } } }