コード例 #1
0
 public bool IsActive(GetBonusDto bonus)
 {
     if (ParentAbility != null)
     {
         return(ParentAbility.IsActive(bonus));
     }
     return(true);
 }
コード例 #2
0
        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));
        }