|
|
@@ -1473,13 +1473,22 @@ class CropLogic
|
|
|
// 2. 获取基础产量(使用发芽期确定的产出配置)
|
|
|
$outputInfo = $this->getOutputInfoByItemId($seed->id, $crop->final_output_item_id);
|
|
|
|
|
|
- // 检查是否有灾害,如果有灾害则使用灾害时的产量区间
|
|
|
- $hasDisaster = !empty($crop->disasters);
|
|
|
+ // 检查是否有活跃灾害,只有活跃灾害才影响产量
|
|
|
+ $hasActiveDisaster = false;
|
|
|
+ if (!empty($crop->disasters)) {
|
|
|
+ foreach ($crop->disasters as $disaster) {
|
|
|
+ if (($disaster['status'] ?? '') === 'active') {
|
|
|
+ $hasActiveDisaster = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$minBaseAmount = $outputInfo['min_amount'];
|
|
|
$maxBaseAmount = $outputInfo['max_amount'];
|
|
|
|
|
|
- if ($hasDisaster) {
|
|
|
- // 有灾害时,使用灾害时的产量区间
|
|
|
+ if ($hasActiveDisaster) {
|
|
|
+ // 有活跃灾害时,使用灾害时的产量区间
|
|
|
$disasterMinAmount = $outputInfo['disaster_min_amount'] ?? 500;
|
|
|
$disasterMaxAmount = $outputInfo['disaster_max_amount'] ?? 2000;
|
|
|
$minBaseAmount = $disasterMinAmount;
|
|
|
@@ -1528,8 +1537,8 @@ class CropLogic
|
|
|
|
|
|
// 如果有丰收之神加持,使用最大可能产量
|
|
|
if ($hasHarvestBuff) {
|
|
|
- // 丰收之神加持时的最大产量也要考虑灾害影响
|
|
|
- $maxPossibleAmount = $hasDisaster ?
|
|
|
+ // 丰收之神加持时的最大产量也要考虑活跃灾害影响
|
|
|
+ $maxPossibleAmount = $hasActiveDisaster ?
|
|
|
($outputInfo['disaster_max_amount'] ?? 2000) :
|
|
|
$outputInfo['max_amount'];
|
|
|
|
|
|
@@ -1543,8 +1552,8 @@ class CropLogic
|
|
|
$globalMaxOutput = 3000;
|
|
|
$finalAmount = min($finalAmount, $globalMaxOutput);
|
|
|
|
|
|
- // 如果有灾害,确保产量不超过产出配置的灾害时最高产量(双重保险)
|
|
|
- if ($hasDisaster) {
|
|
|
+ // 如果有活跃灾害,确保产量不超过产出配置的灾害时最高产量(双重保险)
|
|
|
+ if ($hasActiveDisaster) {
|
|
|
$disasterMaxAmount = $outputInfo['disaster_max_amount'] ?? 2000;
|
|
|
$finalAmount = min($finalAmount, $disasterMaxAmount);
|
|
|
}
|
|
|
@@ -1562,7 +1571,7 @@ class CropLogic
|
|
|
'final_amount' => $finalAmount,
|
|
|
'land_bonus' => $landOutputBonus,
|
|
|
'house_bonus' => $houseOutputBonus,
|
|
|
- 'has_disaster' => $hasDisaster,
|
|
|
+ 'has_active_disaster' => $hasActiveDisaster,
|
|
|
'disaster_penalty' => $disasterPenalty,
|
|
|
'has_harvest_buff' => $hasHarvestBuff,
|
|
|
'disaster_max_amount' => $outputInfo['disaster_max_amount'] ?? 2000,
|
|
|
@@ -1576,7 +1585,7 @@ class CropLogic
|
|
|
'final_amount' => $finalAmount,
|
|
|
'land_bonus' => $landOutputBonus,
|
|
|
'house_bonus' => $houseOutputBonus,
|
|
|
- 'has_disaster' => $hasDisaster,
|
|
|
+ 'has_active_disaster' => $hasActiveDisaster,
|
|
|
'disaster_penalty' => $disasterPenalty,
|
|
|
'has_harvest_buff' => $hasHarvestBuff,
|
|
|
'disaster_max_amount' => $outputInfo['disaster_max_amount'] ?? 2000,
|