1export function calculateWaterDiscipline(
2 harvestYield: number,
3 carryWeight: number,
4 stillsuitEfficiency: number
5): { rations: number; surplus: number } {
6 const baseNeed = harvestYield * 0.45;
7
8 const adjustedNeed = carryWeight >= 150 ? baseNeed * 0.8 : baseNeed;
9 const recycled = adjustedNeed * (stillsuitEfficiency / 100);
10
11 return {
12 rations: Math.floor(adjustedNeed - recycled),
13 surplus: Math.floor(recycled * 0.3),
14 };
15}
16
17describe('calculateWaterDiscipline', () => {
18 it('should optimize rations for heavy loads in deep desert', () => {
19 const result = calculateWaterDiscipline(1000, 150, 95);
20 expect(result.rations).toBe(45);
21 expect(result.surplus).toBe(28);
22 });
23
24 it('should handle light patrols differently', () => {
25 const result = calculateWaterDiscipline(1000, 80, 90);
26 expect(result.rations).toBe(225);
27 });
28});