From ade301b296ad7f99faf65981cd703e2310819f82 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 26 May 2014 02:39:27 -0400 Subject: also check sacrifice fusions in party_fusion --- bin/smt_fusion | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'bin/smt_fusion') diff --git a/bin/smt_fusion b/bin/smt_fusion index aa7ee7b..337f75c 100644 --- a/bin/smt_fusion +++ b/bin/smt_fusion @@ -77,15 +77,34 @@ sub _party_fusion_recursive_fuse { $seen->{$_} = 1 for map { $_->name } @demons; if (@demons > 1) { + my $check_fusion = sub { + my ($demon1, $demon2, $sacrifice) = @_; + + my $fused = _fuse( + $demon1, $demon2, + { + %$options, + sacrifice => $sacrifice, + }, + ); + return unless $fused; + return if defined $max_level && $fused->level > $max_level; + my @new_party = ( + $fused, + grep { + $_ ne $demon1 && $_ ne $demon2 + && (!$sacrifice || $_ ne $sacrifice) + } @demons + ); + _party_fusion_recursive_fuse($seen, @new_party); + }; + for my $demon1 (@demons) { for my $demon2 (grep { $_ ne $demon1 } @demons) { - my $fused = _fuse($demon1, $demon2, $options); - next unless $fused; - next if defined $max_level && $fused->level > $max_level; - my @new_party = ( - $fused, grep { $_ ne $demon1 && $_ ne $demon2 } @demons - ); - _party_fusion_recursive_fuse($seen, @new_party); + $check_fusion->($demon1, $demon2); + for my $demon3 (grep { $_ ne $demon1 && $_ ne $demon2 } @demons) { + $check_fusion->($demon1, $demon2, $demon3); + } } } } -- cgit v1.2.3