224 lines
7.1 KiB
Markdown
224 lines
7.1 KiB
Markdown
# Crop Boost Scenarios
|
|
|
|
## Shared setup
|
|
- Use one beehive in range of a crop/farmland.
|
|
- Keep distance fixed inside full-distance zone (`PlantsFullBoostDistanceToHive`) unless the scenario says otherwise.
|
|
- Enable both boosts when validating both paths: `SpeedBoost=true`, `YieldBoost=true`.
|
|
- Use non-zero bonuses to make differences visible: `GrowthSpeedBonus=0.2`, `YieldMultiplier=1.2`.
|
|
|
|
### Shared config commands (copy/paste)
|
|
```text
|
|
/beehives YieldBoost true
|
|
/beehives SpeedBoost true
|
|
/beehives GrowthSpeedBonus 0.2
|
|
/beehives YieldMultiplier 1.2
|
|
/beehives BeehiveRadius 35
|
|
/beehives PlantsFullBoostDistanceToHive 20
|
|
/beehives MinBeesForPlantBoost 1000
|
|
/beehives MaxBeePopulation 50000
|
|
/beehives PopulationPercentForMaxBoost 100
|
|
/beehives MultipleBeehivesBoostCombination Max
|
|
```
|
|
|
|
## 1) Full mode keeps legacy behavior
|
|
- Config: `BoostCalculation=Full`
|
|
- Set hive population below `MinBeesForPlantBoost`
|
|
- Expected: no crop boost from that hive.
|
|
- Raise population to `MinBeesForPlantBoost`
|
|
- Expected: hive contributes full population factor (`100%`) immediately (same as old behavior).
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation Full
|
|
```
|
|
|
|
## 2) LinearPopulation starts at 0% at min
|
|
- Config: `BoostCalculation=LinearPopulation`, `PopulationPercentForMaxBoost=100`, `MaxBeePopulation=50000`, `MinBeesForPlantBoost=1000`
|
|
- Set hive population to `1000`
|
|
- Expected: population factor is `0%`.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation LinearPopulation
|
|
/beehives PopulationPercentForMaxBoost 100
|
|
/beehives MaxBeePopulation 50000
|
|
/beehives MinBeesForPlantBoost 1000
|
|
```
|
|
|
|
## 3) LinearPopulation reaches 100% at configured max percent
|
|
- Same config as scenario 2
|
|
- Set hive population to `50000` (`100%` of `MaxBeePopulation`)
|
|
- Expected: population factor is `100%`.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation LinearPopulation
|
|
/beehives PopulationPercentForMaxBoost 100
|
|
/beehives MaxBeePopulation 50000
|
|
/beehives MinBeesForPlantBoost 1000
|
|
```
|
|
|
|
## 4) LinearPopulation midpoint check
|
|
- Same config as scenario 2
|
|
- Set hive population to midpoint between min and target max (`25500`)
|
|
- Expected: population factor is about `50%`.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation LinearPopulation
|
|
/beehives PopulationPercentForMaxBoost 100
|
|
/beehives MaxBeePopulation 50000
|
|
/beehives MinBeesForPlantBoost 1000
|
|
```
|
|
|
|
## 5) NormalizedLogk10Population starts at 0% and ends at 100%
|
|
- Config: `BoostCalculation=NormalizedLogk10Population`, same thresholds as scenario 2
|
|
- At `MinBeesForPlantBoost`, expected `0%`.
|
|
- At configured target max, expected `100%`.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation NormalizedLogk10Population
|
|
/beehives PopulationPercentForMaxBoost 100
|
|
/beehives MaxBeePopulation 50000
|
|
/beehives MinBeesForPlantBoost 1000
|
|
```
|
|
|
|
## 6) NormalizedLogk10Population is front-loaded vs linear
|
|
- Compare `LinearPopulation` vs `NormalizedLogk10Population` at same midpoint population
|
|
- Expected: log mode gives a higher factor than linear at midpoint.
|
|
- Formula reference: `f(x)=ln(1+10x)/ln(11)` where `x` is normalized `[0..1]` between min and configured max.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives PopulationPercentForMaxBoost 100
|
|
/beehives MaxBeePopulation 50000
|
|
/beehives MinBeesForPlantBoost 1000
|
|
```
|
|
|
|
## 7) PopulationPercentForMaxBoost lower than 100
|
|
- Config: `PopulationPercentForMaxBoost=50`, `MaxBeePopulation=50000`
|
|
- Target max population for full factor becomes `25000`.
|
|
- Expected: factor reaches `100%` at `25000` and stays clamped at `100%` above it.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation LinearPopulation
|
|
/beehives PopulationPercentForMaxBoost 50
|
|
/beehives MaxBeePopulation 50000
|
|
/beehives MinBeesForPlantBoost 1000
|
|
```
|
|
|
|
## 8) PopulationPercentForMaxBoost = 0 boundary
|
|
- Config: `PopulationPercentForMaxBoost=0`, non-Full mode
|
|
- Expected: implementation falls back to immediate full factor once min threshold is met (avoids divide-by-zero / inverted range).
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation LinearPopulation
|
|
/beehives PopulationPercentForMaxBoost 0
|
|
```
|
|
|
|
## 9) Distance and population multiply together
|
|
- Use non-Full mode with population factor around `50%`.
|
|
- Move crop just outside full-distance zone so distance effectiveness is also around `50%`.
|
|
- Expected: per-hive contribution is about `25%` (`0.5 * 0.5`).
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation LinearPopulation
|
|
/beehives PopulationPercentForMaxBoost 100
|
|
/beehives MaxBeePopulation 50000
|
|
/beehives MinBeesForPlantBoost 1000
|
|
/beehives PlantsFullBoostDistanceToHive 20
|
|
/beehives BeehiveRadius 35
|
|
```
|
|
|
|
## 10) Multi-hive accumulation still clamps at 100%
|
|
- Place multiple valid hives in range.
|
|
- Expected: summed effectiveness does not exceed `100%` total.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives BoostCalculation Full
|
|
/beehives YieldBoost true
|
|
/beehives SpeedBoost true
|
|
/beehives MultipleBeehivesBoostCombination Additive
|
|
```
|
|
|
|
## 10b) Multi-hive combination: Max mode
|
|
- Place multiple valid hives in range with noticeably different effectiveness.
|
|
- Expected: final effectiveness equals the highest single-hive effectiveness (no additive stacking).
|
|
|
|
### Commands
|
|
```text
|
|
/beehives MultipleBeehivesBoostCombination Max
|
|
```
|
|
|
|
## 10c) Multi-hive combination: Additive mode
|
|
- Place multiple valid hives in range with partial effectiveness.
|
|
- Expected: effectiveness is additive across hives and capped at `100%`.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives MultipleBeehivesBoostCombination Additive
|
|
```
|
|
|
|
## 11) Yield and speed consumers are consistent
|
|
- Verify beehive info text and actual growth/drop behavior under same setup.
|
|
- Expected: displayed boost trend matches runtime trend for growth speed and yield bonus when population changes.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives YieldBoost true
|
|
/beehives SpeedBoost true
|
|
/beehives GrowthSpeedBonus 0.2
|
|
/beehives YieldMultiplier 1.2
|
|
```
|
|
|
|
## 12) Verbosity 1 uses level words (no percentages, no parentheses)
|
|
- Config: effective InformationVerbosity = `1`
|
|
- Expected beehive block info line: `Crop boost effectiveness: Low|Medium|High`
|
|
- Expected: no `%` and no `(...)` details.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives InformationVerbosityServerSideType ServerForced
|
|
/beehives InformationVerbosityServer 1
|
|
/beehives YieldBoost true
|
|
/beehives SpeedBoost true
|
|
```
|
|
|
|
## 13) Verbosity > 1 shows detailed percentages and details
|
|
- Config: effective InformationVerbosity = `2` (or higher)
|
|
- Expected beehive block info line format: `Crop boost effectiveness: X% (+Y% yield, +Z% speed)`.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives InformationVerbosityServerSideType ServerForced
|
|
/beehives InformationVerbosityServer 2
|
|
/beehives YieldBoost true
|
|
/beehives SpeedBoost true
|
|
```
|
|
|
|
## 14) Crop boost line hidden when boost is disabled
|
|
- Config: `YieldBoost=false`, `SpeedBoost=false`
|
|
- Expected on beehive block info: no `Crop boost effectiveness` line and no `Population too low for a crop boost` warning.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives YieldBoost false
|
|
/beehives SpeedBoost false
|
|
```
|
|
|
|
## 15) Low-population warning appears in yellow when boost is enabled
|
|
- Config: boost enabled, nearby hive population below `MinBeesForPlantBoost`
|
|
- Expected on beehive block info: yellow line `Population too low for a crop boost`.
|
|
|
|
### Commands
|
|
```text
|
|
/beehives YieldBoost true
|
|
/beehives SpeedBoost true
|
|
/beehives MinBeesForPlantBoost 1000
|
|
```
|