public static ContextActionCombatManeuverCTT CreateFrom(ContextActionCombatManeuver original, bool doNotProvokeAoO = false)
        {
            var instance = Library.Create <ContextActionCombatManeuverCTT>();

            instance.Type                       = original.Type;
            instance.OnSuccess                  = original.OnSuccess;
            instance.ReplaceStat                = original.ReplaceStat;
            instance.NewStat                    = original.NewStat;
            instance.UseKineticistMainStat      = original.UseKineticistMainStat;
            instance.UseCastingStat             = original.UseCastingStat;
            instance.UseCasterLevelAsBaseAttack = original.UseCasterLevelAsBaseAttack;
            instance.UseBestMentalStat          = original.UseBestMentalStat;
            instance.BatteringBlast             = original.BatteringBlast;
            instance.DoNotProvokeAoO            = doNotProvokeAoO;
            return(instance);
        }
            static bool Prefix(ContextActionCombatManeuver __instance)
            {
                var tr     = Harmony12.Traverse.Create(__instance);
                var target = tr.Property("Target").GetValue <TargetWrapper>();
                var unit   = target?.Unit;

                if (unit == null)
                {
                    return(true);
                }

                if (__instance.Type == CombatManeuverTypeExtender.AwesomeBlow.ToCombatManeuverType() &&
                    (unit.Descriptor.State.Prone.Active || unit.View.IsGetUp))
                {
                    return(false);
                }

                return(true);
            }