public bool IsActive(GetBonusDto bonus) { if (ParentAbility != null) { return(ParentAbility.IsActive(bonus)); } return(true); }
public virtual DiceRoll GetBonus(GetBonusDto bonusDto) { if (ParentAbility != null && ParentAbility.IsActive(bonusDto) && ParentAbility.IsChargeItem()) { if (ParentAbility.Limit != null && ParentAbility.Limit.Amount != null && (ParentAbility.Limit.Amount.ActionRequired == RoundAction.AutoOnHit || ParentAbility.Limit.Amount.ActionRequired == RoundAction.AutoOnTakeDamage)) { return(BonusValue.GetBonus(bonusDto)); } var activeAbi = bonusDto.Round.ActivatedAbilities.First(x => x.AbilityId == ParentAbility.ID); var charge = ParentAbility.BonusFromCharges.First(x => x.NumberOfChargesForBonus == activeAbi.Charges); return(charge.Bonus); } if (ParentAbility != null && ParentAbility.IsActive(bonusDto) && ParentAbility.IsTradeOff()) { var activeAbi = bonusDto.Round.ActivatedAbilities.First(x => x.AbilityId == ParentAbility.ID); var toTrade = 0; if (ParentAbility.Limit.Amount.TradeWith == this) { toTrade = -activeAbi.Charges; } else { toTrade = (int)(activeAbi.Charges * activeAbi.Multiplier); } return(new DiceRoll { FixedAmount = toTrade }); } return(BonusValue.GetBonus(bonusDto)); }