|
|
@@ -1081,6 +1081,7 @@ class CropLogic
|
|
|
'min_amount' => $targetOutput->min_amount,
|
|
|
'max_amount' => $targetOutput->max_amount,
|
|
|
'disaster_max_amount' => $targetOutput->disaster_max_amount ?? 2000,
|
|
|
+ 'disaster_min_amount' => $targetOutput->disaster_min_amount ?? 500,
|
|
|
];
|
|
|
}
|
|
|
|
|
|
@@ -1093,6 +1094,7 @@ class CropLogic
|
|
|
'min_amount' => $seed->min_output,
|
|
|
'max_amount' => $seed->max_output,
|
|
|
'disaster_max_amount' => $seed->disaster_max_output ?? 2000,
|
|
|
+ 'disaster_min_amount' => $seed->disaster_min_output ?? 500,
|
|
|
];
|
|
|
}
|
|
|
|
|
|
@@ -1154,17 +1156,21 @@ class CropLogic
|
|
|
// 2. 获取基础产量(使用发芽期确定的产出配置)
|
|
|
$outputInfo = $this->getOutputInfoByItemId($seed->id, $crop->final_output_item_id);
|
|
|
|
|
|
- // 检查是否有灾害,如果有灾害则限制基础产量的最大值
|
|
|
+ // 检查是否有灾害,如果有灾害则使用灾害时的产量区间
|
|
|
$hasDisaster = !empty($crop->disasters);
|
|
|
+ $minBaseAmount = $outputInfo['min_amount'];
|
|
|
$maxBaseAmount = $outputInfo['max_amount'];
|
|
|
|
|
|
if ($hasDisaster) {
|
|
|
- // 有灾害时,基础产量的最大值不能超过产出配置的灾害最大产量
|
|
|
+ // 有灾害时,使用灾害时的产量区间
|
|
|
+ $disasterMinAmount = $outputInfo['disaster_min_amount'] ?? 500;
|
|
|
$disasterMaxAmount = $outputInfo['disaster_max_amount'] ?? 2000;
|
|
|
- $maxBaseAmount = min($outputInfo['max_amount'], $disasterMaxAmount);
|
|
|
+ $minBaseAmount = $disasterMinAmount;
|
|
|
+ $maxBaseAmount = $disasterMaxAmount;
|
|
|
}
|
|
|
|
|
|
- $baseAmount = mt_rand($outputInfo['min_amount'], $maxBaseAmount);
|
|
|
+ // 3. 计算基础产量(随机值)
|
|
|
+ $baseAmount = mt_rand($minBaseAmount, $maxBaseAmount);
|
|
|
|
|
|
// 3. 获取土地的产量加成
|
|
|
$landOutputBonus = $land->landType->output_bonus ?? 0;
|
|
|
@@ -1206,7 +1212,7 @@ class CropLogic
|
|
|
if ($hasHarvestBuff) {
|
|
|
// 丰收之神加持时的最大产量也要考虑灾害影响
|
|
|
$maxPossibleAmount = $hasDisaster ?
|
|
|
- min($outputInfo['max_amount'], $outputInfo['disaster_max_amount'] ?? 2000) :
|
|
|
+ ($outputInfo['disaster_max_amount'] ?? 2000) :
|
|
|
$outputInfo['max_amount'];
|
|
|
|
|
|
$maxPossibleAmount = (int)($maxPossibleAmount * (1 + $landOutputBonus));
|
|
|
@@ -1233,6 +1239,7 @@ class CropLogic
|
|
|
'user_id' => $crop->user_id,
|
|
|
'seed_id' => $seed->id,
|
|
|
'base_amount' => $baseAmount,
|
|
|
+ 'min_base_amount' => $minBaseAmount,
|
|
|
'max_base_amount' => $maxBaseAmount,
|
|
|
'final_amount' => $finalAmount,
|
|
|
'land_bonus' => $landOutputBonus,
|