Show
Ignore:
Timestamp:
04/27/08 20:49:18 (4 months ago)
Author:
eevee
Message:

Few small fixes for new breeding chains applet (#302).
Deals a little better with invalid moves/Pokemon, form actually works.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • veekun/trunk/lib/Vee/Controller/Dex/Utils.pm

    r428 r429  
    247247    # XXX do the retrievals in Inflator code 
    248248    my $pokemon = $c->model('DBIC::Pokemon')->find($form->param_value('pokemon')); 
    249     warn join '|', $form->param_list('move'); 
    250249    my @moves   = map { $c->model('DBIC::Moves')->find($_) } $form->param_list('move'); 
    251250 
     
    253252    my $version = 'dp'; 
    254253 
     254    ### Misc error handling 
     255 
     256    if ($pokemon->breeding_code == 255) { 
     257        $s->{error_msg} = $pokemon->name . ' cannot breed.'; 
     258        return; 
     259    } 
     260 
     261    my @unlearnable_moves; 
     262    for my $move (@moves) { 
     263        my $method = $pokemon->move_method_string($move, $version); 
     264        if (not $method) { 
     265            push @unlearnable_moves, $move; 
     266        } 
     267    } 
     268    if (@unlearnable_moves) { 
     269        my @move_names = map { $_->name } @unlearnable_moves; 
     270        if (@move_names > 2) { 
     271            $move_names[-1] = 'or ' . $move_names[-1]; 
     272        } 
     273        $s->{error_msg} = $pokemon->name . " cannot inherit " 
     274                        . join(', ', @move_names) . '.'; 
     275        return; 
     276    } 
     277 
     278    # Find potential members of the genealogy 
    255279    my @learners = $c->model('DBIC::Pokemon')->search( { 
    256280        -or => [ { 
     281            -nest => \ "FIND_IN_SET('dp', pokemon_moves.versions)", 
    257282            'pokemon_moves.move_id' => $moves[0]->id, 
    258283            'pokemon_moves.method'  => [qw[ level egg machine ]], 
    259             -nest   => \ "FIND_IN_SET('dp', pokemon_moves.versions)", 
    260 #            'pokemon.gender_rate' => $gender_restriction, 
     284            'gender_rate'           => { -not_in => [ 0, 254, 255 ] }, 
    261285        }, { 
    262286            # Smeargle can, technically, learn anything