summaryrefslogtreecommitdiffstats
path: root/lib/Games/SMTNocturne/Fusion/Types.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Games/SMTNocturne/Fusion/Types.pm')
-rw-r--r--lib/Games/SMTNocturne/Fusion/Types.pm12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/Games/SMTNocturne/Fusion/Types.pm b/lib/Games/SMTNocturne/Fusion/Types.pm
index 86f7fab..b62f483 100644
--- a/lib/Games/SMTNocturne/Fusion/Types.pm
+++ b/lib/Games/SMTNocturne/Fusion/Types.pm
@@ -7,7 +7,9 @@ BEGIN {
Foul Seraph Wargod Genma Dragon Avatar Avian Raptor Entity Fiend);
}
use MooseX::Types
- -declare => [qw(DemonType FusionType SMTDemon DemonList), @demon_types];
+ -declare => [qw(DemonType FusionType SMTDemon DemonList
+ DeathstoneDemon EvolveDemon SpecialDemon),
+ @demon_types];
use MooseX::Types::Moose qw(ArrayRef Str);
enum DemonType, @demon_types;
@@ -28,4 +30,12 @@ for my $typename (@demon_types) {
via { Games::SMTNocturne::Fusion::Demon->lookup($_) };
}
+for my $typename (qw(Deathstone Evolve Special)) {
+ my $type = __PACKAGE__->can("${typename}Demon")->();
+ subtype $type, as SMTDemon,
+ where { $_->does("Games::SMTNocturne::Fusion::Role::$typename") };
+ coerce $type, from Str,
+ via { Games::SMTNocturne::Fusion::Demon->lookup($_) };
+}
+
1;