static void Postfix(DeflectArrows __instance, ref bool __result)
            {
                if (__result)
                {
                    return;
                }

                if (!__instance.Owner.Body.HandsAreEnabled)
                {
                    return;
                }
                var tr          = Harmony12.Traverse.Create(__instance);
                int restriction = (int)(tr.Field("m_Restriction").GetValue());

                if (restriction != 0)
                {
                    return;
                }

                if (!FeralCombatTraining.checkHasFeralCombat(__instance.Owner.Unit, __instance.Owner.Body.PrimaryHand.MaybeWeapon))
                {
                    __result = FeralCombatTraining.checkHasFeralCombat(__instance.Owner.Unit, __instance.Owner.Body.SecondaryHand.MaybeWeapon);
                }
                else
                {
                    __result = true;
                }
                return;
            }
Example #2
0
        public void HandleKnockOff(UnitEntityData initiator, UnitEntityData target)
        {
            if (target == initiator || initiator == null || target == null)
            {
                return;
            }

            if (!this.Owner.Unit.CombatState.IsEngage(target))
            {
                return;
            }

            if (this.Owner.Body.PrimaryHand?.MaybeWeapon == null)
            {
                return;
            }

            if (this.Owner.Body.PrimaryHand.Weapon.Blueprint.IsUnarmed ||
                FeralCombatTraining.checkHasFeralCombat(this.Owner.Unit, this.Owner.Body.PrimaryHand.Weapon))
            {
                Game.Instance.CombatEngagementController.ForceAttackOfOpportunity(Owner.Unit, target);
            }
        }