I used bool parameter in my animator controller setting it to true by script but where should I set it back to false and when?

using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI;  public class FireEffect : MonoBehaviour {     public Transform player;     public Transform target;      private float timeElapsed = 0;     private float lerpDuration = 3;     private float startValue = 1;     private float endValue = 0;     private float valueToLerp = 0;      private Animator playerAnimator;     private bool prevFacing = false;     private bool stopped = false;     private bool move = true;     private bool rot = false;     private Vector3 currPos;      private void Start()     {         playerAnimator = player.GetComponent<Animator>();     }      private void Update()     {         var currFacing = IsFacing(target);         if (currFacing != prevFacing)         {             timeElapsed = 0;         }         prevFacing = currFacing;          var distance = Vector3.Distance(player.position, target.position);          if (IsFacing(target))         {             if (distance < 10 && move)             {                 if (timeElapsed < lerpDuration)                 {                     valueToLerp = Mathf.Lerp(startValue, endValue, timeElapsed / lerpDuration);                     playerAnimator.SetFloat("Forward", valueToLerp);                     timeElapsed += Time.deltaTime;                 }                 playerAnimator.SetFloat("Forward", valueToLerp);                 stopped = true;                 valueToLerp = 0;             }              if (move == false)             {                 playerAnimator.SetFloat("Forward", 0);             }              if (playerAnimator.GetFloat("Forward") == 0 && stopped)             {                 move = false;                 rot = true;                 currPos = player.position;                 stopped = false;                 Debug.Log("Player current position when valueToLerp value is 0 : " + currPos);             }         }                  if(rot)         {             playerAnimator.SetBool("Walk Back", true);              rot = false;         }          if (playerAnimator.GetCurrentAnimatorStateInfo(0).IsName("Walk Back"))         {             playerAnimator.SetBool("Walk Back", false);         }     }      private bool IsFacing(Transform target)     {         Vector3 forward = player.TransformDirection(Vector3.forward);         Vector3 toTarget = target.position - player.position;         return Vector3.Dot(forward, toTarget) > 0;     }      public IEnumerator ScaleOverSeconds(Vector3 scaleTo, Vector3 rotateTo, Vector3 moveTo, float seconds)     {         float elapsedTime = 0;         Vector3 startingScale = player.localScale;         Vector3 startingRotation = player.localEulerAngles;         Vector3 startingPosition = player.localPosition;          while (elapsedTime < seconds)         {             player.localScale = Vector3.Lerp(startingScale, scaleTo, (elapsedTime / seconds));             player.localEulerAngles = Vector3.Lerp(startingRotation, rotateTo, (elapsedTime / seconds));             player.localPosition = Vector3.Lerp(startingPosition, moveTo, (elapsedTime / seconds));              elapsedTime += Time.deltaTime;              yield return null;         }         player.localScale = scaleTo;         player.localEulerAngles = rotateTo;         player.localPosition = moveTo;     } } 

At this part, I’m setting the bool to true once and it’s playing the "Walk Back".

if(rot)             {                 playerAnimator.SetBool("Walk Back", true);                      rot = false;             }                  if (playerAnimator.GetCurrentAnimatorStateInfo(0).IsName("Walk Back"))             {                 playerAnimator.SetBool("Walk Back", false);             } 

After that, I’m setting the trigger to false when it’s finishing playing it because if I will not set it to false it will keep playing the "Walk Back" nonstop.

I want that it will play it once but also when rot is true again then play it again once. but because I’m setting it false it’s not playing it again even if rot is true again.

animator controller

I created a transition from the Grounded blend tree to the Walk Back with the bool condition in the screenshot.

The Walk Back is working fine smooth as I wanted the problem is now how to make it play once only each time rot is true?

The way or the place in the script I’m setting the bool back to false make it that it will not play the Move Back ever again even if rot is true.

Does True Seeing reveal an Elder Oblex’s simulacrum’s true form as an ooze?

I’m currently playing in a campaign where we’ve encountered an Elder Oblex. Before we ventured into its lair I twinned True Seeing onto myself and another party member.

Later on it was revealed that a pretty suspicious humanoid male we met down there was actually a simulacrum created by the Elder Oblex’s Sulfurous Impersonation ability.

The description of the ability is:

As a bonus action, the oblex can extrude a piece of itself that assumes the appearance of one Medium or smaller creature whose memories it has stolen. This simulacrum appears, feels, and sounds exactly like the creature it impersonates, though it smells faintly of sulfur. The oblex can impersonate 2d6 + 1 different creatures, each one tethered to its body by a strand of slime that can extend up to 120 feet away. For all practical purposes, the simulacrum is the oblex, meaning the oblex occupies its space and the simulacrum’s space simultaneously. The slimy tether is immune to damage, but it is severed if there is no opening at least 1 inch wide between the oblex’s main body and the simulacrum. The simulacrum disappears if the tether is severed.

From the description of Truesight in the Basic Rules/Player’s Handbook (emphasis mine).

A monster with truesight can, out to a specific range, see in normal and magical darkness, see invisible creatures and objects, automatically detect visual illusions and succeed on saving throws against them, and perceive the original form of a shapechanger or a creature that is transformed by magic.

So, while not necessarily the traditional definition of a shapechanger (typically associated with polymorph’d creatures or lycanthropes), clearly the Elder Oblex is shapechanging beyond its natural composition, and should be detectable via True Seeing, and the characters who had True Seeing active should have seen an ooze in the guise of a man.

Is this a reasonable deduction or a stretch? Perhaps there is there a more specific definition of what is or isn’t a shapechanger somewhere that I am missing?

Can True Polymorph be dispelled or reversed?

My interpretation of True Polymorph is that, once made permanent, it could not be undone (except perhaps with a Wish spell, god-level magic, another casting of True Polymorph, or some similar ability). Spells like Dispel Magic would not affect a permanent True Polymorph.

However, in the comments of this question, dispelling True Polymorph is mentioned/briefly discussed. So, can any item or spell dispel True Polymorph once the transformation is permanent?

The linked question concerns whether the spell will naturally end, or if altering the polymorphed form (such as cutting the chunk of adamantine) will end the spell. The answers do not discuss the concept of dispelling the polymorph. My question is all about dispelling a permanent True Polymorph, and arguments about the spell ending through damage or other non-dispelling effects should not be considered here.

Can I use True Polymorph and Awaken to upgrade my familiar?

The idea of using Polymorph to get around the limitations on Awaken has been covered before. It has a bunch of issues, having to do with the fact that eventually you’ll want to unpolymorph the thing back into its original state and (preferably) keep the int boost and the free language, and there’s a lot of reasons that might not work the way you want. Find Familiar, though, gives you a critter that basically is a low-CR beast, other than the fact that it’s not actually a beast, so there’s much less incentive to change it back when you’re done. You can’t normally abuse True Polymorph to permanently upgrade your familiar in a meaningful way, because you can’t increase CR with that spell… but changing it into its actually-a-beast version, or into some other beast of the same CR should still be doable, and that seems like it would make the creature a valid target for Awaken. At that point, it seems like you could just… leave it as it is. It would be a beast instead of a celestial/fey/fiend, but that seems like a small enough price to pay for cranking the int up to 10 and giving it the ability to speak a language. There are a number of other useful features of familiars, but those all seem to be facts about what the caster can do, rather than things that would be disrupted by True Polymorph.

Basically, this looks like cheese. It’s a way to permanently upgrade your familiar with spells, and it seems pretty clear that the authors have made efforts to try to prevent exactly that. At the same time, as far as I can see, it’s viable-within-the-rules cheese. Is there anything I’m missing here?

The argument "it’s obviously cheesy so as DM I wouldn’t allow it" is not a acceptable answer to this question unless you can also find some in-the-rules way to challenge its validity. If doing this would cause you to lose out on any of the standard features of a familiar, that would be useful additional information.

When you learn True Polymorph, do you learn about every creature in existence?

When a wizard learns true polymorph, do they also learn about every creature in existence? Since the spell says the new form can be a creature of any kind you choose, it seems to me that this would mean they must have gained some knowledge about every creature in existence.

Or can you only turn into creatures that you have encountered "in your lifetime"?