… | |
… | |
89 | |
89 | |
90 | if ($r <= $ch or $pl->flag (cf::FLAG_WIZ)) { |
90 | if ($r <= $ch or $pl->flag (cf::FLAG_WIZ)) { |
91 | my $lvl = max ($ring->power_to_level, 1); |
91 | my $lvl = max ($ring->power_to_level, 1); |
92 | $exp = |
92 | $exp = |
93 | (cf::level_to_min_exp ($lvl) - cf::level_to_min_exp ($lvl - 1)) |
93 | (cf::level_to_min_exp ($lvl) - cf::level_to_min_exp ($lvl - 1)) |
94 | / (10 + max ($lvl - 1, 0)); |
94 | / (10 + max ($lvl - 1, 0)); # 10 + level times making such a ring |
95 | # divided by 10 + level |
95 | # should get you to the rings level at least. |
96 | |
96 | |
97 | if (defined $input_level) { |
97 | if (defined $input_level) { |
98 | my $subexp = |
98 | my $subexp = |
99 | (cf::level_to_min_exp ($input_level) |
99 | (cf::level_to_min_exp ($input_level) |
100 | - cf::level_to_min_exp ($input_level - 1)) |
100 | - cf::level_to_min_exp ($input_level - 1)) |
101 | / (10 + max ($input_level - 1, 0)); |
101 | / (10 + max ($input_level - 1, 0)); # see above for comment |
|
|
102 | |
102 | $exp -= $subexp; |
103 | $exp -= $subexp; |
103 | $exp = max ($exp, 0); |
104 | $exp = max ($exp, 0); |
|
|
105 | |
|
|
106 | } else { |
|
|
107 | # the experience bonus here is to make level 1 rings give you at least |
|
|
108 | # 100 exp points when making them. This also makes leveling in the |
|
|
109 | # first few levels a bit easier. (Propably until around level 5-6). |
|
|
110 | my $expbonus = cf::level_to_min_exp (2) / 10; |
|
|
111 | # this bonus should also only be given for _new_ rings and not for merged |
|
|
112 | # ones - to prevent infinite exp making. |
|
|
113 | $exp += $expbonus; |
104 | } |
114 | } |
105 | |
115 | |
106 | $pl->change_exp ($exp, "jeweler", cf::SK_EXP_SKILL_ONLY); |
116 | $pl->change_exp ($exp, "jeweler", cf::SK_EXP_SKILL_ONLY); |
107 | $pl->message ("You succeed and get $exp experience points."); |
117 | $pl->message ("You succeed and get $exp experience points."); |
108 | $make_status = "succeeded"; |
118 | $make_status = "succeeded"; |