85 lines
1.9 KiB
Perl
85 lines
1.9 KiB
Perl
package LasTres::PJAction::DefaultHeal;
|
|
|
|
use v5.36.0;
|
|
|
|
use strict;
|
|
use warnings;
|
|
use utf8;
|
|
|
|
use Moo;
|
|
|
|
with 'LasTres::PJAction';
|
|
|
|
## OVERRIDE
|
|
sub name {
|
|
return 'Dormir aquí.';
|
|
}
|
|
|
|
## OVERRIDE
|
|
sub identifier {
|
|
return 'dormir';
|
|
}
|
|
|
|
## OVERRIDE (Always use $self->SUPER::is_disabled.)
|
|
sub is_disabled($self, $pj) {
|
|
my $team = $pj->team;
|
|
if (!$team->leader->uuid eq $pj->uuid) {
|
|
return 1;
|
|
}
|
|
if (!$self->_check_if_someone_needs_to_restore($pj)) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
## OVERRIDE (Always use $self->SUPER::disabled_reason($self, $pj).)
|
|
sub disabled_reason($self, $pj) {
|
|
my $team = $pj->team;
|
|
if (!$team->leader->uuid eq $pj->uuid) {
|
|
return 'No eres el líder del equipo.';
|
|
}
|
|
if (!$self->_check_if_someone_needs_to_restore($pj)) {
|
|
return 'Todo tu equipo esta lleno de vitalidad y listo para la aventura.';
|
|
}
|
|
return undef;
|
|
}
|
|
|
|
sub _check_if_someone_needs_to_restore($self, $pj) {
|
|
my $team = $pj->team;
|
|
for my $member ($team->combat_members->@*) {
|
|
if ($member->health < $member->max_health) {
|
|
return 1;
|
|
}
|
|
if ($member->mana < $member->max_mana) {
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
## OVERRIDE (Always use $self->SUPER::callback($self, $pj).)
|
|
# Possibly for all the healing actions you would want to
|
|
# extend this Action, if you want something special in the callback
|
|
# remember to call super.
|
|
sub callback($self, $pj) {
|
|
my $team = $pj->team;
|
|
for my $member ($team->combat_members->@*) {
|
|
$member->health($member->max_health);
|
|
$member->mana($member->max_mana);
|
|
$member->update;
|
|
}
|
|
if (Scalar::Util::blessed($self) eq __PACKAGE__) {
|
|
$self->_callback_unique_sleep($pj);
|
|
}
|
|
}
|
|
|
|
sub _callback_unique_sleep($self, $pj) {
|
|
my $team = $pj->team;
|
|
$team->append_log_line([
|
|
{
|
|
text => 'Tras dormir os sentís mucho mejor, a por más aventuras.'
|
|
}
|
|
]);
|
|
}
|
|
1;
|