public void OnEventAboutToTrigger(RuleAttackRoll evt) { if (evt.Target.Descriptor == Descriptor) { evt.AddTemporaryModifier(evt.Initiator.Stats.AdditionalAttackBonus.AddModifier(_bonus, Source, (string)null, ModifierDescriptor.FavoredEnemy)); } }
public void OnEventAboutToTrigger(RuleAttackRoll evt) { if (evt.Target.Descriptor.Resources.GetResourceAmount(resource) < cost) { return; } if ((base.Owner.Body.PrimaryHand.Weapon.Blueprint.Category == WeaponCategory.Dagger || base.Owner.Body.PrimaryHand.Weapon.Blueprint.Category == WeaponCategory.Starknife) && base.Owner.Body.PrimaryHand.Weapon.Blueprint.IsRanged) { ThrowAnything.toggleThrown(base.Owner.Body.PrimaryHand.Weapon, evt.Initiator); did_swap = true; } if (!evt.Weapon.Blueprint.IsMelee || evt.Parry != null || !base.Owner.Unit.IsEnemy(evt.Initiator)) { return; } if (evt.Target != base.Owner.Unit) { return; } if (!base.Owner.Unit.IsReach(evt.Target, base.Owner.Body.PrimaryHand)) { return; } //TODO - Conditions? /* * if (this.AttackerCondition.HasConditions) * { * MechanicsContext maybeContext = base.Fact.MaybeContext; * using ((maybeContext != null) ? maybeContext.GetDataScope(evt.Initiator) : null) * { * if (!this.AttackerCondition.Check(null)) * { * return; * } * } * } */ evt.TryParry(base.Owner.Unit, base.Owner.Body.PrimaryHand.Weapon, 0); if (evt.Parry == null) { return; } ModifiableValue additionalAttackBonus = base.Owner.Stats.AdditionalAttackBonus; int num = evt.Initiator.Descriptor.State.Size - base.Owner.State.Size; if (num > 0) { int value = -2 * num; evt.AddTemporaryModifier(additionalAttackBonus.AddModifier(value, this, ModifierDescriptor.Penalty)); } }
public void OnEventAboutToTrigger(RuleAttackRoll evt) { var unit_part_fe = this.Owner.Get <UnitPartFavoredEnemy>(); if (unit_part_fe == null) { return; } foreach (var fe in unit_part_fe.Entries) { if ((fe.CheckedFeatures).Any <BlueprintUnitFact>((Func <BlueprintUnitFact, bool>)(p => evt.Initiator.Descriptor.HasFact(p)))) { evt.AddTemporaryModifier(evt.Target.Stats.AC.AddModifier(this.value.Calculate(this.Fact.MaybeContext) * this.Fact.GetRank(), (GameLogicComponent)this, this.descriptor)); break; } } }