Added function to generate HP
This commit is contained in:
parent
e22b88537e
commit
2b7010bb27
@ -20,7 +20,8 @@ use OSRIC::Class::Paladin;
|
||||
use OSRIC::Class::Ranger;
|
||||
use OSRIC::Class::Thief;
|
||||
|
||||
use OSRIC::Util qw/d/;
|
||||
use OSRIC::Util qw/d con_mod/;
|
||||
use POSIX qw/ceil/;
|
||||
use JSON qw/to_json/;
|
||||
|
||||
# These functions are ordered in this file in the order they are to be
|
||||
@ -42,7 +43,7 @@ sub new
|
||||
xp => 0,
|
||||
hp => 0,
|
||||
ac => 0,
|
||||
lvl => 0,
|
||||
lvl => 1,
|
||||
age => 0,
|
||||
height => 0,
|
||||
weight => 0,
|
||||
@ -218,6 +219,25 @@ sub generate_age
|
||||
$self->{personal}->{age} /= @{$self->{personal}->{classes}};
|
||||
}
|
||||
|
||||
# Generates the player's HP.
|
||||
sub generate_hp
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Loop over each class and generate an HP value:
|
||||
for my $class(@{$self->{personal}->{classes}})
|
||||
{
|
||||
$self->{personal}->{hp} += ("OSRIC::Class::$class"->get_hp +
|
||||
con_mod($self->{stats}->{con}, $class));
|
||||
}
|
||||
|
||||
# Divide by the number of classes:
|
||||
$self->{personal}->{hp} /= @{$self->{personal}->{classes}};
|
||||
|
||||
# Round up if needed:
|
||||
$self->{personal}->{hp} = ceil($self->{personal}->{hp});
|
||||
}
|
||||
|
||||
# Encodes the character to JSON:
|
||||
sub as_json
|
||||
{
|
||||
|
@ -9,6 +9,9 @@ my @CLASSES = qw/Assassin Cleric Druid Fighter Illusionist MagicUser Paladin
|
||||
sub max_starting_gold { 0 }
|
||||
sub get_gold { 0 }
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { 0 }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 120 }
|
||||
sub get_gold { (d(6, 2) * 10) } # 2d6 * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(6) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 180 }
|
||||
sub get_gold { (d(6, 3) * 10) } # 3d6 * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(8) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 180 }
|
||||
sub get_gold { (d(6, 3) * 10) } # 3d6 * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(8) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 200 }
|
||||
sub get_gold { ((d(6, 3) + 2) * 10) } # (3d6 + 2) * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(10) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 80 }
|
||||
sub get_gold { (d(4, 2) * 10) } # 2d4 * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(4) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 80 }
|
||||
sub get_gold { (d(4, 2) * 10) } # 2d4 * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(4) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 200 }
|
||||
sub get_gold { ((d(6, 3) + 2) * 10) } # (3d6 + 2) * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(10) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 200 }
|
||||
sub get_gold { ((d(6, 3) + 2) * 10) } # (3d6 + 2) * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(8) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -7,6 +7,9 @@ use OSRIC::Util qw/d/;
|
||||
sub max_starting_gold { 120 }
|
||||
sub get_gold { (d(6, 2) * 10) } # 2d6 * 10
|
||||
|
||||
# The starting HP of the class:
|
||||
sub get_hp { d(6) }
|
||||
|
||||
# Minimum score requirements:
|
||||
sub minimum_scores
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
package OSRIC::Util;
|
||||
use Exporter qw/import/;
|
||||
our @EXPORT = qw/d/;
|
||||
our @EXPORT = qw/d con_mod/;
|
||||
|
||||
# Rolls a dice of the specified number:
|
||||
sub d
|
||||
@ -16,4 +16,71 @@ sub d
|
||||
return $i;
|
||||
}
|
||||
|
||||
# Returns the constitution hp modifier (at level 1):
|
||||
sub con_mod
|
||||
{
|
||||
my $con = shift;
|
||||
my $class = shift;
|
||||
|
||||
# Get the constitution modifier:
|
||||
my $mod;
|
||||
if($con <= 3)
|
||||
{
|
||||
$mod = -2;
|
||||
}
|
||||
elsif(($con > 3) && ($con <= 6))
|
||||
{
|
||||
$mod = -1;
|
||||
}
|
||||
elsif(($con > 6) && ($con <= 14))
|
||||
{
|
||||
$mod = 0;
|
||||
}
|
||||
elsif(($con > 14) && ($con <= 15))
|
||||
{
|
||||
$mod = 1;
|
||||
}
|
||||
elsif(($con > 15) && ($con <= 16))
|
||||
{
|
||||
$mod = 2;
|
||||
}
|
||||
elsif(($con > 16) && ($con <= 17))
|
||||
{
|
||||
if(($class eq "Fighter") || ($class eq "Paladin")
|
||||
|| ($class eq "Ranger"))
|
||||
{
|
||||
$mod = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
$mod = 2;
|
||||
}
|
||||
}
|
||||
elsif(($con > 17) && ($con <= 18))
|
||||
{
|
||||
if(($class eq "Fighter") || ($class eq "Paladin")
|
||||
|| ($class eq "Ranger"))
|
||||
{
|
||||
$mod = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
$mod = 2;
|
||||
}
|
||||
}
|
||||
elsif(($con > 18) && ($con <= 19))
|
||||
{
|
||||
if(($class eq "Fighter") || ($class eq "Paladin")
|
||||
|| ($class eq "Ranger"))
|
||||
{
|
||||
$mod = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
$mod = 2;
|
||||
}
|
||||
}
|
||||
return $mod;
|
||||
}
|
||||
|
||||
1;
|
||||
|
Loading…
Reference in New Issue
Block a user