예제 #1
0
 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);
 }
예제 #2
0
 static void Postfix(BackToBack __instance, RuleCalculateAC evt)
 {
     UnitCombatState_get_IsFlanked_Patch.PopFlankingParametersIfTypeMatches(typeof(BackToBack_OnEventAboutToTrigger_Patch));
 }
예제 #3
0
 static bool Prefix(BackToBack __instance, RuleCalculateAC evt)
 {
     UnitCombatState_get_IsFlanked_Patch.PushFlankingParameters(new FlankingParameters(typeof(BackToBack_OnEventAboutToTrigger_Patch), evt.Initiator));
     return(true);
 }