public override void Activate(CreatureStates Creature, Raycast Raycast, Good.Times.State State)
    {
        base.Activate (Creature, Raycast, State);
        if (State == State.BeginningOfTurn)
        {
            RecordHeight(Creature,Raycast);
        }

        if (State == State.Jump)
        {
            if (Raycast.SearchForCreature(Creature.Front,Creature.Storey) &&
                Raycast.SearchForHeight(Creature.Front,true) &&
                Creature.Jump >= Raycast.TargetMultipleCreature.Count)
            {
                float x = Raycast.TargetCreature.transform.position.x;
                float y = Raycast.TargetCreature.transform.position.y;
                float AddHeight = Raycast.TargetMultipleCreature.Select(h => h.Height).Sum();
                Move(Creature,x,y + AddHeight);
                Creature.Storey = Raycast.TargetMultipleCreature.OrderByDescending(s => s.Storey).ToList()[0].Storey + 1;
            }
        }

        if (State == State.EndOfTurn)
        {
            RecordHeight(Creature,Raycast);
            Fall(Creature, Raycast);
        }
    }
 protected void VanillaSlash(CreatureStates Creature,Raycast Raycast, Vector3 SlashDirection)
 {
     if (Raycast.SearchForCreature(SlashDirection, Creature.Storey))
     {
         Raycast.TargetCreature.Health -= Creature.Damage;
     }
 }
 private void Fall(CreatureStates Creature, Raycast Raycast)
 {
     if (Raycast.SearchForCreature(Vector3.down,Creature.Storey -1) == false &&
         Creature.Storey > 1)
     {
         float x = Creature.transform.position.x;
         float y = Creature.transform.position.y;
         Move(Creature,x,y-FallDistance);
         Creature.Storey--;
     }
 }
    private void Fall(Creature_States Creature, Raycast Raycast)
    {
        if (Raycast.SearchForCreature(Vector2.down,Creature.Storey -1) == false &&
            Creature.Storey > 1)
        {
            float x = Creature.transform.position.x;
            float y = Creature.transform.position.y;
            Vector2 FallLocation = new Vector2 (x, y - FallDistance);

            transform.position = FallLocation;
            Creature.Storey--;
        }
    }
 private void RecordHeight(CreatureStates Creature, Raycast Raycast)
 {
     if (Raycast.SearchForCreature(Vector3.down,Creature.Storey -1))
         FallDistance = Raycast.TargetCreature.Height;
 }