… | |
… | |
845 | $obj->{arch} = $thing->arch->archname; |
845 | $obj->{arch} = $thing->arch->archname; |
846 | $obj->{face} = $thing->face; |
846 | $obj->{face} = $thing->face; |
847 | |
847 | |
848 | $obj->{value} = $thing->value; |
848 | $obj->{value} = $thing->value; |
849 | |
849 | |
|
|
850 | $obj->{is_ring} = ($thing->type == cf::RING); |
|
|
851 | |
850 | $self->{hash} = $obj |
852 | $self->{hash} = $obj |
851 | } |
853 | } |
852 | |
854 | |
853 | sub to_object { |
855 | sub to_object { |
854 | my ($self) = @_; |
856 | my ($self) = @_; |
… | |
… | |
987 | sub power_to_level { |
989 | sub power_to_level { |
988 | my ($self, $lvldescr) = @_; |
990 | my ($self, $lvldescr) = @_; |
989 | |
991 | |
990 | my $max_imprs = Jeweler::getcfg (maximprovements => 'improvements'); |
992 | my $max_imprs = Jeweler::getcfg (maximprovements => 'improvements'); |
991 | my $max_impr_lvl = Jeweler::getcfg (maxlevels => 'improve_level'); |
993 | my $max_impr_lvl = Jeweler::getcfg (maxlevels => 'improve_level'); |
|
|
994 | my $ring_offs = Jeweler::getcfg (maxlevels => 'ring_offset'); |
992 | |
995 | |
993 | my ($stat_lvl, $stat_imprs) = $self->stat_level; |
996 | my ($stat_lvl, $stat_imprs) = $self->stat_level; |
994 | my ($resist_lvl, $res_imprs) = $self->resist_level; |
997 | my ($resist_lvl, $res_imprs) = $self->resist_level; |
995 | my ($spec_lvl, $spec_imprs) = $self->special_level; |
998 | my ($spec_lvl, $spec_imprs) = $self->special_level; |
996 | |
999 | |
997 | my $impr_sum = $stat_imprs + $res_imprs + $spec_imprs; |
1000 | my $impr_sum = $stat_imprs + $res_imprs + $spec_imprs; |
998 | |
1001 | |
999 | my $impr_lvl = ceil (($max_impr_lvl / ($max_imprs + 1)) * ($impr_sum - 1)); # 1 improvemnt bonus |
1002 | my $impr_lvl = |
|
|
1003 | ceil (($max_impr_lvl / ($max_imprs + 1)) |
|
|
1004 | * ($impr_sum - 1)); # 1 improvemnt bonus |
1000 | |
1005 | |
1001 | my $levl = int max ($stat_lvl, $resist_lvl, $impr_lvl, $spec_lvl, 0); |
1006 | my $levl = int max ($stat_lvl, $resist_lvl, $impr_lvl, $spec_lvl, 0); |
|
|
1007 | |
|
|
1008 | if ($self->{hash}->{is_ring}) { |
|
|
1009 | $levl += $ring_offs; |
|
|
1010 | } |
|
|
1011 | |
|
|
1012 | $levl = min ($levl, cf::settings->max_level); |
1002 | |
1013 | |
1003 | if ($lvldescr) { |
1014 | if ($lvldescr) { |
1004 | $$lvldescr = |
1015 | $$lvldescr = |
1005 | sprintf "%3d: %s\n", $levl, |
1016 | sprintf "%3d: %s\n", $levl, |
1006 | "stat: $stat_lvl, resist: $resist_lvl, improve: $impr_lvl, " |
1017 | "stat: $stat_lvl, resist: $resist_lvl, improve: $impr_lvl, " |