BiomassReclaimerComponent.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Content.Shared.Storage;
  2. namespace Content.Server.Medical.BiomassReclaimer
  3. {
  4. [RegisterComponent]
  5. public sealed partial class BiomassReclaimerComponent : Component
  6. {
  7. /// <summary>
  8. /// This gets set for each mob it processes.
  9. /// When it hits 0, there is a chance for the reclaimer to either spill blood or throw an item.
  10. /// </summary>
  11. [ViewVariables]
  12. public float RandomMessTimer = 0f;
  13. /// <summary>
  14. /// The interval for <see cref="RandomMessTimer"/>.
  15. /// </summary>
  16. [ViewVariables(VVAccess.ReadWrite), DataField]
  17. public TimeSpan RandomMessInterval = TimeSpan.FromSeconds(5);
  18. /// <summary>
  19. /// This gets set for each mob it processes.
  20. /// When it hits 0, spit out biomass.
  21. /// </summary>
  22. [ViewVariables]
  23. public float ProcessingTimer = default;
  24. /// <summary>
  25. /// Amount of biomass that the mob being processed will yield.
  26. /// This is calculated from the YieldPerUnitMass.
  27. /// Also stores non-integer leftovers.
  28. /// </summary>
  29. [ViewVariables]
  30. public float CurrentExpectedYield = 0f;
  31. /// <summary>
  32. /// The reagent that will be spilled while processing a mob.
  33. /// </summary>
  34. [ViewVariables]
  35. public string? BloodReagent;
  36. /// <summary>
  37. /// Entities that can be randomly spawned while processing a mob.
  38. /// </summary>
  39. public List<EntitySpawnEntry> SpawnedEntities = new();
  40. /// <summary>
  41. /// How many units of biomass it produces for each unit of mass.
  42. /// </summary>
  43. [DataField, ViewVariables(VVAccess.ReadWrite)]
  44. public float YieldPerUnitMass = 0.4f;
  45. /// <summary>
  46. /// How many seconds to take to insert an entity per unit of its mass.
  47. /// </summary>
  48. [DataField, ViewVariables(VVAccess.ReadWrite)]
  49. public float BaseInsertionDelay = 0.1f;
  50. /// <summary>
  51. /// How much to multiply biomass yield from botany produce.
  52. /// </summary>
  53. [DataField, ViewVariables(VVAccess.ReadWrite)]
  54. public float ProduceYieldMultiplier = 0.25f;
  55. /// <summary>
  56. /// The time it takes to process a mob, per mass.
  57. /// </summary>
  58. [DataField, ViewVariables(VVAccess.ReadWrite)]
  59. public float ProcessingTimePerUnitMass = 0.5f;
  60. /// <summary>
  61. /// Will this refuse to gib a living mob?
  62. /// </summary>
  63. [ViewVariables(VVAccess.ReadWrite), DataField]
  64. public bool SafetyEnabled = true;
  65. }
  66. }