summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-05-26 02:05:34 -0400
committerJesse Luehrs <doy@tozt.net>2014-05-26 02:05:34 -0400
commitfad35a892eca5bff5824f6bd4ddf889b2aae7f8d (patch)
tree5b3d3297c54d7553df9c716406ebec67ff2dd755
parent8daee7509476687c3ba3b28eab1bd1e4e8e3d1e6 (diff)
downloadgames-smtnocturne-demons-fad35a892eca5bff5824f6bd4ddf889b2aae7f8d.tar.gz
games-smtnocturne-demons-fad35a892eca5bff5824f6bd4ddf889b2aae7f8d.zip
command to see what all we can fuse from a set of demons
-rw-r--r--bin/smt_fusion26
1 files changed, 26 insertions, 0 deletions
diff --git a/bin/smt_fusion b/bin/smt_fusion
index aeee940..096bd5a 100644
--- a/bin/smt_fusion
+++ b/bin/smt_fusion
@@ -53,3 +53,29 @@ sub min_level_for {
print "Level $min_level:\n";
print join("\n", @min_level_fusions), "\n";
}
+
+sub party_fusion {
+ my @demons = @_;
+ my $seen = _party_fusion_recursive_fuse({}, map { _demon($_) } @demons);
+ print join("\n", map { _demon($_) } sort { $a cmp $b } keys %$seen), "\n";
+}
+sub _party_fusion_recursive_fuse {
+ my ($seen, @demons) = @_;
+
+ $seen->{$_} = 1 for map { $_->name } @demons;
+
+ if (@demons > 1) {
+ for my $demon1 (@demons) {
+ for my $demon2 (grep { $_ ne $demon1 } @demons) {
+ my $fused = _fuse($demon1, $demon2);
+ next unless $fused;
+ my @new_party = (
+ $fused, grep { $_ ne $demon1 && $_ ne $demon2 } @demons
+ );
+ _party_fusion_recursive_fuse($seen, @new_party);
+ }
+ }
+ }
+
+ return $seen;
+}