static bool Prefix(BackToBack __instance, RuleCalculateAC evt) { if (!evt.Target.isFlankedByAttacker(evt.Initiator)) { return(false); } foreach (UnitEntityData unitEntityData in GameHelper.GetTargetsAround(__instance.Owner.Unit.Position, (float)__instance.Radius, true, false)) { if ((unitEntityData.Descriptor.HasFact(__instance.BackToBackFact) || (bool)__instance.Owner.State.Features.SoloTactics) && unitEntityData != __instance.Owner.Unit && !unitEntityData.IsEnemy(__instance.Owner.Unit)) { evt.AddBonus(2, __instance.Fact); break; } } return(false); }
static void Postfix(BackToBack __instance, RuleCalculateAC evt) { UnitCombatState_get_IsFlanked_Patch.PopFlankingParametersIfTypeMatches(typeof(BackToBack_OnEventAboutToTrigger_Patch)); }
static bool Prefix(BackToBack __instance, RuleCalculateAC evt) { UnitCombatState_get_IsFlanked_Patch.PushFlankingParameters(new FlankingParameters(typeof(BackToBack_OnEventAboutToTrigger_Patch), evt.Initiator)); return(true); }