static bool Prefix(RuleCalculateAttackBonus __instance, RulebookEventContext context) { FlankingParameters flankedParameters = new FlankingParameters(typeof(RuleCalculateAttackBonus_OnTrigger_Patch), __instance.Initiator); UnitCombatState_get_IsFlanked_Patch.PushFlankingParameters(flankedParameters); return(true); }
static bool Prefix(RulePrepareDamage __instance, RulebookEventContext context) { FlankingParameters flankedParameters = new FlankingParameters(typeof(RulePrepareDamage_OnTrigger_Patch), __instance.Initiator, true, null, null); UnitCombatState_get_IsFlanked_Patch.PushFlankingParameters(flankedParameters); return(true); }
static bool Prefix(PreciseStrike __instance, RulePrepareDamage evt) { BlueprintUnitFact preciseStrikeFact = __instance.PreciseStrikeFact; Func <UnitEntityData, UnitEntityData, UnitEntityData, bool> hasPreciseStrike = (target, owner, flankingPartner) => owner.Descriptor.State.Features.SoloTactics || flankingPartner.Descriptor.HasFact(preciseStrikeFact); FlankingParameters flankingParameters = new FlankingParameters(typeof(PreciseStrike_OnEventAboutToTrigger_Patch), __instance.Owner.Unit, hasPreciseStrike); UnitCombatState_get_IsFlanked_Patch.PushFlankingParameters(flankingParameters); return(true); }
static bool Prefix(FlankedAttackBonus __instance, RuleCalculateAttackBonus evt) { Main.Logger?.Write("FlankedAttackBonus event triggered"); UnitCombatState_get_IsFlanked_Patch.PushFlankingParameters(new FlankingParameters(typeof(FlankedAttackBonus_OnEventAboutToTrigger_Patch), __instance.Owner.Unit)); return(true); }
static void Postfix(RulePrepareDamage __instance, RulebookEventContext context) { UnitCombatState_get_IsFlanked_Patch.PopFlankingParametersIfTypeMatches(typeof(RulePrepareDamage_OnTrigger_Patch)); }
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); }