package RolePlaying::Classes; use strict; use warnings; use base 'Exporter'; our @EXPORT_OK = qw(class_data print_classes return_THAC0 return_familiarity return_non_proficiency); use lib "C:/Documents and Settings/Dawn M. Burge/My Documents/fantasy/files/perl/lib"; use Lingua::EN::Inflect qw(ORD); use List::Util qw(max min); use Tie::IxHash; use RolePlaying::Level qw(get_level); use RolePlaying::THAC0 qw(get_THAC0 get_familiarity get_non_proficiency); tie my %classes, qw(Tie::IxHash); my @classes; my @THAC0; my @familiarity; my @non_proficiency; sub class_data { my ($experience,@values) = @_; for my $class (@values) { my @class_array = split(m!\/!,$class); my $key = $class_array[0]; if (@class_array == 3) { $classes{$key}{xp_class} = $class_array[1]; $classes{$key}{class_type} = $class_array[2]; } elsif (@class_array == 2) { $classes{$key}{xp_class} = $class_array[1]; $classes{$key}{class_type} = $class_array[1]; } else { $classes{$key}{xp_class} = $class_array[0]; $classes{$key}{class_type} = $class_array[0]; } $classes{$key}{level} = get_level($classes{$key}{xp_class},$experience); push @THAC0, get_THAC0($classes{$key}{level},$classes{$key}{class_type}); push @familiarity, get_familiarity($classes{$key}{class_type}); push @non_proficiency, get_non_proficiency($classes{$key}{class_type}); } } sub print_classes { my ($experience,@data) = @_; class_data($experience,@data); for my $key (keys %classes) { push @classes, ORD($classes{$key}{level}).' level '.$key; } return join(' / ',@classes); } sub return_THAC0 { my ($experience,@data) = @_; class_data($experience,@data); return min(@THAC0); } sub return_familiarity { my ($experience,@data) = @_; class_data($experience,@data); return min(@familiarity); } sub return_non_proficiency { my ($experience,@data) = @_; class_data($experience,@data); return min(@non_proficiency); } 1;