|
|
@@ -91,9 +91,9 @@ class PetLogic
|
|
|
$pet->name = $name;
|
|
|
$pet->level = 1;
|
|
|
$pet->experience = 0;
|
|
|
- $pet->max_experience = $nextLevelConfig->exp_required;
|
|
|
- $pet->stamina = $petConfig->stamina_max ?? 100;
|
|
|
- $pet->max_stamina = $petConfig->stamina_max ?? 100;
|
|
|
+ // 体力值从等级配置获取
|
|
|
+ $levelConfig = PetLevelConfig::where('level', 1)->first();
|
|
|
+ $pet->stamina = $levelConfig ? ($levelConfig->numeric_attributes->stamina_max ?? 100) : 100;
|
|
|
$pet->status = PetStatus::NORMAL;
|
|
|
$pet->save();
|
|
|
|
|
|
@@ -145,17 +145,10 @@ class PetLogic
|
|
|
if($pet->experience < $nextLevelConfig->exp_required){
|
|
|
break;
|
|
|
}
|
|
|
- // 获取下一级配置
|
|
|
- $nextLevelConfig2 = PetLevelConfig::where('level', $pet->level + 2)->first();
|
|
|
|
|
|
// 升级宠物
|
|
|
$pet->level += 1;
|
|
|
$pet->experience = $pet->experience - $nextLevelConfig->exp_required;
|
|
|
- if ($nextLevelConfig2) {
|
|
|
- $pet->max_experience = $nextLevelConfig2->exp_required;
|
|
|
- } else {
|
|
|
- $pet->max_experience = 0;
|
|
|
- }
|
|
|
$change = true;
|
|
|
$nextLevelConfigOld = $nextLevelConfig;
|
|
|
|
|
|
@@ -353,17 +346,14 @@ class PetLogic
|
|
|
*/
|
|
|
protected function addStamina(PetUser $pet, int $staminaAmount): int
|
|
|
{
|
|
|
-
|
|
|
- // 获取宠物等级配置
|
|
|
- $levelConfig = PetLevelConfig::where('level', $pet->level)->first();
|
|
|
- $maxStamina = $levelConfig ? ($levelConfig->numeric_attributes->stamina_max ?? 100) : 100;
|
|
|
+ // 使用模型的访问器获取最大体力值
|
|
|
+ $maxStamina = $pet->max_stamina;
|
|
|
|
|
|
// 计算实际增加的体力值
|
|
|
$oldStamina = $pet->stamina;
|
|
|
- $newStamina = max($maxStamina, $oldStamina + $staminaAmount);
|
|
|
+ $newStamina = min($maxStamina, $oldStamina + $staminaAmount);
|
|
|
$actualGained = $newStamina - $oldStamina;
|
|
|
|
|
|
-
|
|
|
return $actualGained;
|
|
|
}
|
|
|
|
|
|
@@ -839,9 +829,11 @@ class PetLogic
|
|
|
// 获取宠物信息
|
|
|
$pet = PetUser::findOrFail($petId);
|
|
|
|
|
|
- // 获取宠物等级配置
|
|
|
+ // 使用模型的访问器获取最大体力值
|
|
|
+ $maxStamina = $pet->max_stamina;
|
|
|
+
|
|
|
+ // 获取宠物等级配置中的恢复速度
|
|
|
$levelConfig = PetLevelConfig::where('level', $pet->level)->first();
|
|
|
- $maxStamina = $levelConfig ? ($levelConfig->numeric_attributes->stamina_max ?? 100) : 100;
|
|
|
$recoveryRate = $levelConfig ? ($levelConfig->numeric_attributes->stamina_recovery ?? 5) : 5;
|
|
|
|
|
|
// 计算恢复的体力值
|