summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2009-10-05 22:04:38 -0500
committerJesse Luehrs <doy@tozt.net>2009-10-05 22:09:21 -0500
commit67d97ac9c0a810da61930c69515edcce5082ba38 (patch)
treeb3d6e30a969d88dc5eb207e714e5be447399bd46
parentd0c6fddd162854bc7841a17274384f5c13930f9e (diff)
downloadgames-smtnocturne-fusion-67d97ac9c0a810da61930c69515edcce5082ba38.tar.gz
games-smtnocturne-fusion-67d97ac9c0a810da61930c69515edcce5082ba38.zip
add a few fusion rules for elements and mitama
-rw-r--r--lib/Games/SMTNocturne/Fusion/Chart.pm34
-rw-r--r--lib/Games/SMTNocturne/Fusion/Types.pm2
2 files changed, 35 insertions, 1 deletions
diff --git a/lib/Games/SMTNocturne/Fusion/Chart.pm b/lib/Games/SMTNocturne/Fusion/Chart.pm
index 790e9b9..b297ef5 100644
--- a/lib/Games/SMTNocturne/Fusion/Chart.pm
+++ b/lib/Games/SMTNocturne/Fusion/Chart.pm
@@ -3,7 +3,7 @@ use Moose;
use MooseX::ClassAttribute;
use MooseX::MultiMethods;
use YAML::Any qw(Load);
-use Games::SMTNocturne::Fusion::Types qw(DemonType SMTDemon);
+use Games::SMTNocturne::Fusion::Types qw(DemonType SMTDemon Element Mitama);
use MooseX::Types::Moose qw(HashRef Maybe);
use constant Demon => 'Games::SMTNocturne::Fusion::Demon';
@@ -30,6 +30,38 @@ multi method fuse (ClassName $self: SMTDemon $demon1 is coerce,
return $possible[0];
}
+multi method fuse (ClassName $self: Element $demon1 is coerce,
+ SMTDemon $demon2 is coerce) {
+ # XXX: fix
+ return;
+}
+
+multi method fuse (ClassName $self: Mitama $demon1 is coerce,
+ SMTDemon $demon2 is coerce) {
+ return $demon2;
+}
+
+multi method fuse (ClassName $self: SMTDemon $demon1 is coerce,
+ Element $demon2 is coerce) {
+ return $self->fuse($demon2, $demon1);
+}
+
+multi method fuse (ClassName $self: SMTDemon $demon1 is coerce,
+ Mitama $demon2 is coerce) {
+ return $self->fuse($demon2, $demon1);
+}
+
+multi method fuse (ClassName $self: Element $demon1 is coerce,
+ Element $demon2 is coerce) {
+ # XXX: fix
+ return;
+}
+
+multi method fuse (ClassName $self: Mitama $demon1 is coerce,
+ Mitama $demon2 is coerce) {
+ return;
+}
+
method fusions_for (ClassName $self: SMTDemon $demon is coerce) {
my $type = $demon->type;
my @type_combos;
diff --git a/lib/Games/SMTNocturne/Fusion/Types.pm b/lib/Games/SMTNocturne/Fusion/Types.pm
index a4a83d2..f5276f9 100644
--- a/lib/Games/SMTNocturne/Fusion/Types.pm
+++ b/lib/Games/SMTNocturne/Fusion/Types.pm
@@ -23,6 +23,8 @@ coerce DemonList, from ArrayRef[Str],
for my $typename (@demon_types) {
my $type = __PACKAGE__->can($typename)->();
subtype $type, as SMTDemon, where { $_->type eq $typename };
+ coerce $type, from Str,
+ via { Games::SMTNocturne::Fusion::Demon->lookup($_) };
}
1;