From 26bba9f137ac161c9c394c74332968fd91d7acfc Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 25 May 2014 10:39:31 -0400 Subject: refactor --- lib/Games/SMTNocturne/Demons/Demon.pm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'lib/Games/SMTNocturne/Demons') diff --git a/lib/Games/SMTNocturne/Demons/Demon.pm b/lib/Games/SMTNocturne/Demons/Demon.pm index 7371df5..41b689a 100644 --- a/lib/Games/SMTNocturne/Demons/Demon.pm +++ b/lib/Games/SMTNocturne/Demons/Demon.pm @@ -30,14 +30,20 @@ sub from_name { } sub from_fusion_stats { - my ($class, $type, $level, $fusion_type) = @_; + my ($class, $options) = @_; - die "unknown type $type" unless $DEMONS_BY_TYPE{$type}; + die "unknown type $options->{type}" + unless $DEMONS_BY_TYPE{$options->{type}}; + + my @possible = @{ $DEMONS_BY_TYPE{$options->{type}} }; + + @possible = grep { $_->fusion_type eq $options->{fusion_type} } @possible + if $options->{fusion_type}; my $found; - for my $demon (grep { $_->fusion_type eq $fusion_type } @{ $DEMONS_BY_TYPE{$type} }) { + for my $demon (@possible) { $found = $demon; - last if $demon->level >= $level; + last if $demon->level >= $options->{level}; } return $found; -- cgit v1.2.3-54-g00ecf