summaryrefslogtreecommitdiffstats
path: root/lib/Games/SMTNocturne/Demons.pm
blob: b075dc574c9073db548681504050d0bf9b985a81 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package Games::SMTNocturne::Demons;
use strict;
use warnings;

use Games::SMTNocturne::Demons::Demon;
use Games::SMTNocturne::Demons::FusionChart;

sub fuse {
    my ($demon1, $demon2) = @_;

    $demon1 = Games::SMTNocturne::Demons::Demon->new_from_name($demon1)
        unless ref($demon1);
    $demon2 = Games::SMTNocturne::Demons::Demon->new_from_name($demon2)
        unless ref($demon2);

    my $new_type = Games::SMTNocturne::Demons::FusionChart::fuse(
        $demon1->type, $demon2->type
    );
    my $new_level = ($demon1->level + $demon2->level) / 2;

    return Games::SMTNocturne::Demons::Demon->new_from_type_and_level(
        $new_type, $new_level
    );
}

1;