From ce5a827b7b6724b12ba1485a2e445379b566e0c4 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 6 Oct 2009 11:47:09 -0500 Subject: add rules for fusing demons to make elements --- lib/Games/SMTNocturne/Fusion/Chart.pm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/Games/SMTNocturne/Fusion/Chart.pm b/lib/Games/SMTNocturne/Fusion/Chart.pm index b20b70f..57f89fc 100644 --- a/lib/Games/SMTNocturne/Fusion/Chart.pm +++ b/lib/Games/SMTNocturne/Fusion/Chart.pm @@ -49,10 +49,18 @@ my %element_fusions = ( multi method fuse (ClassName $class: SMTDemon $demon1 is coerce, SMTDemon $demon2 is coerce) { - return Demon->next_demon_above_level( - $class->_type_chart->{$demon1->type}{$demon2->type}, - ($demon1->level + $demon2->level) / 2, - ); + if ($demon1->type eq $demon2->type) { + # aw, this can't be a separate multimethod + my $element = $demon1->self_fusion_element; + return unless $element; + return Demon->lookup($element); + } + else { + return Demon->next_demon_above_level( + $class->_type_chart->{$demon1->type}{$demon2->type}, + ($demon1->level + $demon2->level) / 2, + ); + } } multi method fuse (ClassName $class: Element $demon1 is coerce, -- cgit v1.2.3-54-g00ecf