'decimal:4', 'probability_override' => 'decimal:4', 'is_active' => 'boolean' ]; /** * 关联种子 */ public function seed(): BelongsTo { return $this->belongsTo(FarmSeed::class, 'seed_id'); } /** * 关联土地类型 */ public function landType(): BelongsTo { return $this->belongsTo(FarmLandType::class, 'land_type_id'); } /** * 关联产出物品 */ public function outputItem(): BelongsTo { return $this->belongsTo(\App\Module\GameItems\Models\Item::class, 'output_item_id'); } /** * 获取调整类型 * * @return string */ public function getAdjustmentTypeAttribute(): string { return $this->probability_override !== null ? 'override' : 'modifier'; } /** * 获取最终概率值 * * @param float $baseProbability 基础概率 * @return float */ public function getFinalProbability(float $baseProbability): float { if ($this->probability_override !== null) { // 使用覆盖值 return $this->probability_override; } else { // 使用修正值 return $baseProbability + $this->probability_modifier; } } /** * 作用域:启用的配置 */ public function scopeActive($query) { return $query->where('is_active', true); } /** * 作用域:指定种子的配置 */ public function scopeForSeed($query, int $seedId) { return $query->where('seed_id', $seedId); } /** * 作用域:指定土地类型的配置 */ public function scopeForLandType($query, int $landTypeId) { return $query->where('land_type_id', $landTypeId); } }