//Remove reagent at set rate, satiate hunger if a HungerComponent can be found
 public override void Metabolize(IEntity solutionEntity, Solution.ReagentQuantity amount)
 {
     if (solutionEntity.TryGetComponent(out HungerComponent? hunger))
     {
         hunger.UpdateFood(NutritionFactor);
     }
 }
Beispiel #2
0
 /// Satiate thirst if a ThirstComponent can be found
 public override void Metabolize(IEntity solutionEntity, Solution.ReagentQuantity amount)
 {
     if (solutionEntity.TryGetComponent(out ThirstComponent? thirst))
     {
         thirst.UpdateThirst(HydrationFactor);
     }
 }
 private void VaporizeReagentQuantity(Solution.ReagentQuantity reagentQuantity)
 {
     if (EntitySystem.Get <SolutionContainerSystem>().TryGetSolution(Owner, SolutionName, out var solution))
     {
         EntitySystem.Get <SolutionContainerSystem>()
         .TryRemoveReagent(Owner, solution, reagentQuantity.ReagentId, reagentQuantity.Quantity);
     }
 }
        /// <summary>
        ///     Add a single reagent entry to the list
        /// </summary>
        private void AddReagentEntry(Solution.ReagentQuantity reagent)
        {
            var box  = new BoxContainer();
            var spin = new FloatSpinBox(1, 2);

            spin.Value            = reagent.Quantity.Float();
            spin.OnValueChanged  += (args) => SetReagent(args, reagent.ReagentId);
            spin.HorizontalExpand = true;

            box.AddChild(new Label()
            {
                Text = reagent.ReagentId, HorizontalExpand = true
            });
            box.AddChild(spin);

            ReagentList.AddChild(box);
        }
        /// <summary>
        ///     Changes damage if a DamageableComponent can be found.
        /// </summary>
        public override void Metabolize(IEntity solutionEntity, Solution.ReagentQuantity amount)
        {
            if (solutionEntity.TryGetComponent(out IDamageableComponent? health))
            {
                health.ChangeDamage(DamageType, (int)AmountToChange, true);
                float decHealthChange = (float)(AmountToChange - (int)AmountToChange);
                _accumulatedHealth += decHealthChange;

                if (_accumulatedHealth >= 1)
                {
                    health.ChangeDamage(DamageType, 1, true);
                    _accumulatedHealth -= 1;
                }

                else if (_accumulatedHealth <= -1)
                {
                    health.ChangeDamage(DamageType, -1, true);
                    _accumulatedHealth += 1;
                }
            }
        }
Beispiel #6
0
        /// <summary>
        ///     Changes damage if a DamageableComponent can be found.
        /// </summary>
        public override void Metabolize(IEntity solutionEntity, Solution.ReagentQuantity amount)
        {
            if (solutionEntity.TryGetComponent(out IDamageableComponent? damageComponent))
            {
                damageComponent.TryChangeDamage(DamageGroup, (int)AmountToChange, true);

                float decHealthChange = (float)(AmountToChange - (int)AmountToChange);
                _accumulatedDamage += decHealthChange;

                if (_accumulatedDamage >= 1)
                {
                    damageComponent.TryChangeDamage(DamageGroup, 1, true);
                    _accumulatedDamage -= 1;
                }

                else if (_accumulatedDamage <= -1)
                {
                    damageComponent.TryChangeDamage(DamageGroup, -1, true);
                    _accumulatedDamage += 1;
                }
            }
        }
Beispiel #7
0
        /// <summary>
        /// Remove reagent at set rate, changes the movespeed modifiers and adds a MovespeedModifierMetabolismComponent if not already there.
        /// </summary>
        public override void Metabolize(IEntity solutionEntity, Solution.ReagentQuantity amount)
        {
            if (!solutionEntity.TryGetComponent(out MovementSpeedModifierComponent? movement))
            {
                return;
            }

            solutionEntity.EnsureComponent(out MovespeedModifierMetabolismComponent status);

            // Only refresh movement if we need to.
            var modified = !status.WalkSpeedModifier.Equals(WalkSpeedModifier) ||
                           !status.SprintSpeedModifier.Equals(SprintSpeedModifier);

            status.WalkSpeedModifier   = WalkSpeedModifier;
            status.SprintSpeedModifier = SprintSpeedModifier;

            IncreaseTimer(status, StatusLifetime * amount.Quantity.Float());

            if (modified)
            {
                movement.RefreshMovementSpeedModifiers();
            }
        }
Beispiel #8
0
 public MicrowaveVaporizeReagentIndexedMessage(Solution.ReagentQuantity reagentQuantity)
 {
     ReagentQuantity = reagentQuantity;
 }
Beispiel #9
0
 private void VaporizeReagentWithReagentQuantity(Solution.ReagentQuantity reagentQuantity)
 {
     _solution.TryRemoveReagent(reagentQuantity.ReagentId, reagentQuantity.Quantity);
 }
 public override bool Condition(IEntity solutionEntity, Solution.ReagentQuantity reagent)
 {
     return(reagent.Quantity >= Min && reagent.Quantity < Max);
 }
Beispiel #11
0
 public ReagentGrinderVaporizeReagentIndexedMessage(Solution.ReagentQuantity reagentQuantity)
 {
     ReagentQuantity = reagentQuantity;
 }
 public override void Metabolize(IEntity solutionEntity, Solution.ReagentQuantity amount)
 {
     EntitySystem.Get <DamageableSystem>().TryChangeDamage(solutionEntity.Uid, Damage, true);
 }
 public abstract bool Condition(IEntity solutionEntity, Solution.ReagentQuantity reagent);