summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-05-26 02:39:27 -0400
committerJesse Luehrs <doy@tozt.net>2014-05-26 02:39:27 -0400
commitade301b296ad7f99faf65981cd703e2310819f82 (patch)
tree4c02708da90510a71b5c4efe9b9bb2b72dc1ea6d
parentb76a5d384aa826c93ebb0a6e775b7351b22508e4 (diff)
downloadgames-smtnocturne-demons-ade301b296ad7f99faf65981cd703e2310819f82.tar.gz
games-smtnocturne-demons-ade301b296ad7f99faf65981cd703e2310819f82.zip
also check sacrifice fusions in party_fusion
-rw-r--r--bin/smt_fusion33
1 files changed, 26 insertions, 7 deletions
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);
+ }
}
}
}