public void OnEventAboutToTrigger(RuleCalculateCMB evt) { var weaponType = evt.Initiator.GetThreatHand()?.Weapon?.Blueprint.Type; if (weaponType == WeaponType) { var bonus = AttackBonus * Fact.GetRank(); // TODO: this bonus should be a "trait" bonus. But doing it this way shows up in the UI. evt.AddBonus(bonus, Fact); //evt.AddTemporaryModifier(evt.Initiator.Stats.AdditionalCMB.AddModifier(bonus, this, ModifierDescriptor.Trait)); } }
private static bool tryBreakFree(UnitEntityData target, UnitEntityData grappler, MechanicsContext context) { int dc = 0; if (context != null) { dc = context.Params.DC; } RuleCalculateCMB rule_calcualte_cmb1 = new RuleCalculateCMB(target, grappler, CombatManeuver.Grapple); RuleCalculateCMB rule_calcualte_cmb2 = context?.TriggerRule <RuleCalculateCMB>(rule_calcualte_cmb1) ?? Rulebook.Trigger <RuleCalculateCMB>(rule_calcualte_cmb1); if (Math.Max((int)(target.Stats.SkillMobility), (int)(target.Stats.SkillAthletics)) < rule_calcualte_cmb2.Result) { RuleSkillCheck rule_skill_check = new RuleSkillCheck(target, StatType.AdditionalCMB, dc); rule_skill_check.Bonus.AddModifier(rule_calcualte_cmb2.Result - target.Stats.AdditionalCMB.ModifiedValue, null, ModifierDescriptor.UntypedStackable); return((context?.TriggerRule <RuleSkillCheck>(rule_skill_check) ?? Rulebook.Trigger <RuleSkillCheck>(rule_skill_check)).IsPassed); } else { StatType stat = (int)(target.Stats.SkillMobility) > (int)(target.Stats.SkillAthletics) ? StatType.SkillMobility : StatType.SkillAthletics; RuleSkillCheck rule_skill_check = new RuleSkillCheck(target, stat, dc); return((context?.TriggerRule <RuleSkillCheck>(rule_skill_check) ?? Rulebook.Trigger <RuleSkillCheck>(rule_skill_check)).IsPassed); } }
public void OnEventDidTrigger(RuleCalculateCMB evt) { }