package Vee::Schema::Items;

use strict;
use warnings;
use base 'DBIx::Class';

=head1 NAME

Vee::Schema::Items - DBIC class for the C<items> table

=cut

__PACKAGE__->load_components('Core');
__PACKAGE__->table('items');
__PACKAGE__->add_columns(qw/ id game_id berry_id name category cost col5 hp_plus_maybe fling_power fling_effect natural_gift_power natural_gift_type col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23 effort_hp effort_at effort_de effort_sp effort_sa effort_sd hp_restored pp_restored happiness1 happiness2 happiness3 is_underground dpblurb description /);
__PACKAGE__->set_primary_key('id');

__PACKAGE__->has_many(pokemon_items => 'Vee::Schema::PokemonItems', 'item_id', { join_type => 'left' });
__PACKAGE__->many_to_many(pokemon => 'pokemon_items', 'pokemon');

__PACKAGE__->might_have(berry => 'Vee::Schema::Berries', { 'foreign.id' => 'self.berry_id' });

=head1 METHODS

=head2 display_name

Returns this item's name, suitable for display.  This method actually just
replaces 'Poke' with 'Pok&eacute;', as the database is not currently designed
for Unicode.

=cut

sub display_name {
    my ($self) = @_;

    my $name = $self->name;
    $name =~ s/Poke/Pok&eacute;/;
    return $name;
}

=head2 display_name

Returns the filename (sans extension) for this item's sprite.

=cut

sub sprite_name {
    my ($self) = @_;

    my $name = lc $self->name;
    # TMs!

    $name =~ tr/ /-/;
    $name =~ tr/-a-z0-9//cd;

    return $name;
}

=head2 fling_description

Returns the effect this item will cause when Fling is used with it.

=cut

sub fling_description {
    my ($self) = @_;

    return 'n/a' if not $self->fling_power;

    my $desc = 'Inflicts regular damage with ' . $self->fling_power . ' power.';
    $desc .= '  ' . $self->fling_effect
        if $self->fling_effect;

    return $desc;
}

=head1 SEE ALSO

L<Vee::Schema>, L<DBIx::Class>

=head1 AUTHOR

Maintainer: Alex "Eevee" Munroe (C<veekun@veekun.com>)

See the included F<AUTHORS> file for a full list of contributers.

=head1 LICENSE

See the included F<LICENSE> file.

=cut

1;
