Files

45 lines
984 B
PHP
Raw Permalink Normal View History

<?php
namespace App\Services\Game;
use App\Models\Character;
class NerveService
{
/**
* Consume nerve if character can act
*/
public function consume(Character $character, int $amount): bool
{
if (!$character->canAct()) {
return false;
}
return $character->consumeNerve($amount);
}
/**
* Regenerate nerve for a character
*/
public function regenerate(Character $character): void
{
$regenRate = config('game.nerve.regen_rate', 1);
if ($character->max_nerve <= 0) {
$character->max_nerve = config('game.nerve.max', 100);
}
$character->addNerve($regenRate);
}
/**
* Refill nerve to max for all active characters
*/
public function refillAll(): int
{
return Character::where('nerve', '<', \DB::raw('max_nerve'))
->where('status', 'active')
->update(['nerve' => \DB::raw('max_nerve')]);
}
}