Adding genders.
This commit is contained in:
parent
6371fd1195
commit
77cc606473
|
@ -45,6 +45,27 @@ my %all_species_data;
|
||||||
my $growth_rate = $1;
|
my $growth_rate = $1;
|
||||||
$species_data{growth_rate} = $1;
|
$species_data{growth_rate} = $1;
|
||||||
}
|
}
|
||||||
|
if ($line =~ /\.genderRatio\s*=\s*(\w+)/) {
|
||||||
|
my $gender_ratio = $1;
|
||||||
|
if ($gender_ratio eq 'min' && $line =~ /(\w+) \* 255/) {
|
||||||
|
$gender_ratio = $1;
|
||||||
|
$gender_ratio *= 255 / 100;
|
||||||
|
$gender_ratio = int($gender_ratio);
|
||||||
|
if ($gender_ratio > 254) {
|
||||||
|
$gender_ratio = 254;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($gender_ratio eq 'MON_FEMALE') {
|
||||||
|
$gender_ratio = 254;
|
||||||
|
}
|
||||||
|
if ($gender_ratio eq 'MON_MALE') {
|
||||||
|
$gender_ratio = 0;
|
||||||
|
}
|
||||||
|
if ($gender_ratio eq 'MON_GENDERLESS') {
|
||||||
|
$gender_ratio = 255;
|
||||||
|
}
|
||||||
|
$species_data{gender_ratio} = $gender_ratio
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,13 @@ sub level {
|
||||||
}
|
}
|
||||||
my $pokemon = $self->_pokemon;
|
my $pokemon = $self->_pokemon;
|
||||||
my $experience = $pokemon->{substructures}[0]{experience};
|
my $experience = $pokemon->{substructures}[0]{experience};
|
||||||
my $growth_func = $self->growth_function;
|
my $growth_func = sub {
|
||||||
|
my $n = shift;
|
||||||
|
if ($n == 1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return $self->growth_function->($n);
|
||||||
|
};
|
||||||
my $level = 1;
|
my $level = 1;
|
||||||
while ($level <= 100 && int($growth_func->($level)) <= $experience) {
|
while ($level <= 100 && int($growth_func->($level)) <= $experience) {
|
||||||
$level++;
|
$level++;
|
||||||
|
@ -61,6 +67,38 @@ sub growth_function {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub gender_ratio {
|
||||||
|
my $self = shift;
|
||||||
|
my $pokemon_name = $self->pokemon_name;
|
||||||
|
my %pokemon_data = %Rsaves::Constants::Emerald::SpeciesData::SPECIES_DATA;
|
||||||
|
my $data = $pokemon_data{$pokemon_name};
|
||||||
|
my $gender_ratio = $data->{gender_ratio};
|
||||||
|
return $gender_ratio;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub gender {
|
||||||
|
# 0 male
|
||||||
|
# 1 female
|
||||||
|
# 2 genderless
|
||||||
|
my $self = shift;
|
||||||
|
my $gender_ratio = $self->gender_ratio;
|
||||||
|
my $pokemon = $self->_pokemon;
|
||||||
|
my $personality = $pokemon->{personality};
|
||||||
|
if ($gender_ratio == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ($gender_ratio == 254) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if ($gender_ratio == 255) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if ($gender_ratio <= ($personality & 0xff)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
sub growth {
|
sub growth {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $pokemon_name = $self->pokemon_name;
|
my $pokemon_name = $self->pokemon_name;
|
||||||
|
|
|
@ -4,6 +4,7 @@ use v5.16.3;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
use utf8;
|
||||||
|
|
||||||
use Cairo::GObject;
|
use Cairo::GObject;
|
||||||
use Glib;
|
use Glib;
|
||||||
|
@ -188,11 +189,26 @@ sub draw_pokemon_details {
|
||||||
$cairo->move_to( 5, 128 );
|
$cairo->move_to( 5, 128 );
|
||||||
$cairo->text_path('/'.$pokemon_species);
|
$cairo->text_path('/'.$pokemon_species);
|
||||||
$cairo->set_source_rgb( 1, 1, 1 );
|
$cairo->set_source_rgb( 1, 1, 1 );
|
||||||
$cairo->fill_preserve;
|
$cairo->fill;
|
||||||
# $cairo->set_source_rgb( 0, 0, 0 );
|
# $cairo->set_source_rgb( 0, 0, 0 );
|
||||||
# $cairo->set_line_width(0.8);
|
# $cairo->set_line_width(0.8);
|
||||||
# $cairo->stroke;
|
# $cairo->stroke;
|
||||||
$cairo->move_to( 5, 136 );
|
$cairo->move_to( 6, 140 );
|
||||||
|
my $gender = $selected_pokemon->gender;
|
||||||
|
$cairo->set_font_size(15);
|
||||||
|
if ($gender == 0) {
|
||||||
|
$cairo->text_path("♂");
|
||||||
|
$cairo->set_source_rgb( 0, 0, 1 );
|
||||||
|
$cairo->fill;
|
||||||
|
}
|
||||||
|
if ($gender == 1) {
|
||||||
|
$cairo->text_path("♀");
|
||||||
|
$cairo->set_source_rgb( 1, 0, 0 );
|
||||||
|
$cairo->fill;
|
||||||
|
}
|
||||||
|
$cairo->set_source_rgb( 1, 1, 1 );
|
||||||
|
$cairo->set_font_size(8);
|
||||||
|
$cairo->move_to( 18, 138 );
|
||||||
$cairo->text_path("Lv@{[$selected_pokemon->level]}");
|
$cairo->text_path("Lv@{[$selected_pokemon->level]}");
|
||||||
$cairo->set_source_rgb( 1, 1, 1 );
|
$cairo->set_source_rgb( 1, 1, 1 );
|
||||||
$cairo->fill_preserve;
|
$cairo->fill_preserve;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue