//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); } }
/// 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; } } }
/// <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; } } }
/// <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(); } }
public MicrowaveVaporizeReagentIndexedMessage(Solution.ReagentQuantity reagentQuantity) { ReagentQuantity = reagentQuantity; }
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); }
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);