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; }
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); } }