summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Games/SMTNocturne/Fusion/Chart.pm16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/Games/SMTNocturne/Fusion/Chart.pm b/lib/Games/SMTNocturne/Fusion/Chart.pm
index 631e585..69f2fd5 100644
--- a/lib/Games/SMTNocturne/Fusion/Chart.pm
+++ b/lib/Games/SMTNocturne/Fusion/Chart.pm
@@ -16,6 +16,22 @@ class_has _type_chart => (
},
);
+sub fuse {
+ my $self = shift;
+ my ($demon1, $demon2) = @_;
+ $demon1 = Games::SMTNocturne::Fusion::Demon->lookup($demon1)
+ unless blessed($demon1);
+ $demon2 = Games::SMTNocturne::Fusion::Demon->lookup($demon2)
+ unless blessed($demon2);
+ my $type = $self->_type_chart->{$demon1->type}{$demon2->type};
+ my $level = ($demon1->level + $demon2->level) / 2;
+ my @possible = Games::SMTNocturne::Fusion::Demon->lookup(
+ type => $type,
+ level => sub { $_ >= $level },
+ );
+ return $possible[0];
+}
+
1;
__DATA__