Example #1
0
        private bool AddBonus(PetFoodRecord food)
        {
            var possibleEffect = PetTemplate.PossibleEffects.OfType <EffectDice>().FirstOrDefault(x => x.EffectId == food.BoostedEffect);
            var effect         = Effects.OfType <EffectInteger>().FirstOrDefault(x => x.EffectId == food.BoostedEffect);

            if (possibleEffect == null)
            {
                return(false);
            }

            if (effect?.Value >= possibleEffect.Max)
            {
                return(false);
            }

            if (PetTemplate.PossibleEffects.Count > 0 && EffectManager.Instance.GetItemPower(this) >= MaxPower)
            {
                return(false);
            }

            if (effect == null)
            {
                Effects.Add(effect = new EffectInteger(food.BoostedEffect, (short)food.BoostAmount));
                if (IsEquiped())
                {
                    var handler = EffectManager.Instance.GetItemEffectHandler(effect, Owner, this);
                    handler.Operation = ItemEffectHandler.HandlerOperation.APPLY;
                    handler.Apply();

                    Owner.RefreshStats();
                }
            }
            else
            {
                if (IsEquiped())
                {
                    var handler = EffectManager.Instance.GetItemEffectHandler(effect, Owner, this);
                    handler.Operation = ItemEffectHandler.HandlerOperation.UNAPPLY;
                    handler.Apply();

                    effect.Value += (short)food.BoostAmount;

                    handler.Operation = ItemEffectHandler.HandlerOperation.APPLY;
                    handler.Apply();
                    Owner.RefreshStats();
                }
                else
                {
                    effect.Value += (short)food.BoostAmount;
                }
            }

            return(true);
        }
Example #2
0
        public PetTemplate Map(PetTemplate pet, PetFoodRecord food)
        {
            if (pet == null)
            {
                return(m_current);
            }

            if (m_current?.Id == pet.Id)
            {
                m_current.Foods.Add(food);
                return(null);
            }

            var previous = m_current;

            m_current = pet;
            m_current.Foods.Add(food);
            return(previous);
        }