104 lines
2.2 KiB
Perl
104 lines
2.2 KiB
Perl
package LasTres::PJAction::GolpearArbolCentralTribuDeLaLima;
|
|
|
|
use v5.36.0;
|
|
use strict;
|
|
use warnings;
|
|
use utf8;
|
|
|
|
use feature 'signatures';
|
|
|
|
use Moo;
|
|
|
|
with 'LasTres::PJAction';
|
|
|
|
## DO NOT EXTEND NOT SUPPORTED.
|
|
|
|
sub name {
|
|
return 'Golpear el árbol.';
|
|
}
|
|
|
|
sub identifier {
|
|
return 'golpear_arbol_central_tribu_de_la_lima';
|
|
}
|
|
|
|
sub is_disabled ( $self, $pj ) {
|
|
if ($pj->health < 1) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
sub disabled_reason ( $self, $pj ) {
|
|
if ($pj->health < 1) {
|
|
return "Estás debilitado.";
|
|
}
|
|
return undef;
|
|
}
|
|
|
|
sub _chance_enemy ( $self, $pj ) {
|
|
if ( $pj->level > 20 ) {
|
|
return 0;
|
|
}
|
|
if ( $pj->level > 10 ) {
|
|
return 25;
|
|
}
|
|
return 50;
|
|
}
|
|
|
|
sub callback ( $self, $pj ) {
|
|
$pj = $pj->get_from_storage;
|
|
my $damage_for_hitting_the_tree = int( $pj->health / 10 );
|
|
my $current_health = int( $pj->health - $damage_for_hitting_the_tree );
|
|
# We do not let the player die. That would be problematic out of combat.
|
|
$pj->health($current_health);
|
|
$pj->update;
|
|
my $team = $pj->team;
|
|
$team->append_log_line(
|
|
[
|
|
{
|
|
text => $pj->nick,
|
|
color => 'green',
|
|
},
|
|
{
|
|
text => ' golpeó el árbol y se hizo '
|
|
. $damage_for_hitting_the_tree
|
|
. ' de daño. '
|
|
. $pj->health . '/'
|
|
. $pj->max_health . '.'
|
|
}
|
|
]
|
|
);
|
|
if ($team->is_defeated) {
|
|
return;
|
|
}
|
|
|
|
if ( LasTres::Util::rand_range_int( 0, 100 ) <= $self->_chance_enemy($pj) )
|
|
{
|
|
$self->_start_battle($pj);
|
|
return;
|
|
}
|
|
}
|
|
|
|
sub _start_battle ( $self, $pj ) {
|
|
require LasTres::EnemyArea;
|
|
require LasTres::Battle;
|
|
require LasTres::Util;
|
|
my $team = $pj->team;
|
|
$team->append_log_line([
|
|
{
|
|
text => 'Una criatura que vive en el árbol se ha molestado, preparate para luchar...'
|
|
}
|
|
]);
|
|
|
|
my $battle = LasTres::Battle->start_battle_machine($team,
|
|
[
|
|
LasTres::EnemyArea->new(
|
|
race => 'conejo',
|
|
nick => 'Conejo territorial.',
|
|
level => LasTres::Util::rand_range_int(1,3),
|
|
)
|
|
]
|
|
);
|
|
}
|
|
1;
|