Adding genders.

This commit is contained in:
Sergiotarxz 2024-03-08 22:38:50 +01:00
parent 6371fd1195
commit 77cc606473
4 changed files with 1656 additions and 1171 deletions

View File

@ -45,6 +45,27 @@ my %all_species_data;
my $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
}
}
}

View File

@ -28,7 +28,13 @@ sub level {
}
my $pokemon = $self->_pokemon;
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;
while ($level <= 100 && int($growth_func->($level)) <= $experience) {
$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 {
my $self = shift;
my $pokemon_name = $self->pokemon_name;

View File

@ -4,6 +4,7 @@ use v5.16.3;
use strict;
use warnings;
use utf8;
use Cairo::GObject;
use Glib;
@ -188,11 +189,26 @@ sub draw_pokemon_details {
$cairo->move_to( 5, 128 );
$cairo->text_path('/'.$pokemon_species);
$cairo->set_source_rgb( 1, 1, 1 );
$cairo->fill_preserve;
$cairo->fill;
# $cairo->set_source_rgb( 0, 0, 0 );
# $cairo->set_line_width(0.8);
# $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->set_source_rgb( 1, 1, 1 );
$cairo->fill_preserve;

File diff suppressed because it is too large Load Diff