diff options
Diffstat (limited to 'lib/Games')
-rw-r--r-- | lib/Games/SMTNocturne/Demons.pm | 6 | ||||
-rw-r--r-- | lib/Games/SMTNocturne/Demons/FusionChart.pm | 30 |
2 files changed, 35 insertions, 1 deletions
diff --git a/lib/Games/SMTNocturne/Demons.pm b/lib/Games/SMTNocturne/Demons.pm index f24518c..a5e8b04 100644 --- a/lib/Games/SMTNocturne/Demons.pm +++ b/lib/Games/SMTNocturne/Demons.pm @@ -65,7 +65,11 @@ sub fusions_for { sub _fuse_mitama { my ($element1, $element2) = @_; - die "element fusion nyi"; + my $mitama = Games::SMTNocturne::Demons::FusionChart::fuse_mitama( + $element1->name, $element2->name + ); + return unless $mitama; + return Games::SMTNocturne::Demons::Demon->from_name($mitama); } sub _element_fusion { diff --git a/lib/Games/SMTNocturne/Demons/FusionChart.pm b/lib/Games/SMTNocturne/Demons/FusionChart.pm index 294092d..e73bb9b 100644 --- a/lib/Games/SMTNocturne/Demons/FusionChart.pm +++ b/lib/Games/SMTNocturne/Demons/FusionChart.pm @@ -43,6 +43,36 @@ sub element_fusion { return $TYPES{$type}{element_fusions}{$element}; } +sub fuse_mitama { + my ($element1, $element2) = @_; + + # XXX move this into actual data somewhere + my %mitama_fusions = ( + Erthys => { + Aeros => 'Nigi Mitama', + Aquans => 'Ara Mitama', + Flaemis => 'Kusi Mitama', + }, + Aeros => { + Erthys => 'Nigi Mitama', + Aquans => 'Kusi Mitama', + Flaemis => 'Ara Mitama', + }, + Aquans => { + Erthys => 'Ara Mitama', + Aeros => 'Kusi Mitama', + Flaemis => 'Saki Mitama', + }, + Flaemis => { + Erthys => 'Kusi Mitama', + Aeros => 'Ara Mitama', + Aquans => 'Saki Mitama', + }, + ); + + return $mitama_fusions{$element1}{$element2}; +} + 1; __DATA__ |