--- deliantra/server/ext/bonus.ext 2007/02/05 11:48:43 1.4 +++ deliantra/server/ext/bonus.ext 2007/06/11 21:38:13 1.8 @@ -1,17 +1,18 @@ #!perl + use List::Util qw/min/; my $WC_BASE_VALUE = 15 * 5000; # 15r my $AC_BASE_VALUE = 40 * 5000; # 40r -my $DAM_BASE_VALUE = 200; # 3.6p +my $DAM_BASE_VALUE = 200; # 4p my $MAGIC_BASE_VALUE = 100 * 5000; # 100r my $MAX_LEVEL = cf::settings->max_level; # maximum values of additions at $MAX_LEVEL difficulty -my $MAX_ADD_WC = 15; +my $MAX_ADD_WC = 10; my $MAX_ADD_AC = 5; # weapons should rather give wc than ac -my $MAX_ADD_DAM = 70; +my $MAX_ADD_DAM = 45; my $MAX_ADD_MAGIC = 5; # TODO: should become part of some stdlib @@ -22,18 +23,18 @@ sub determine_weapon_value { my ($weapon) = @_; - my $clone = $weapon->arch->clone; - my $value = $clone->value; + my $arch = $weapon->arch; + my $value = $arch->value; - my $wc_diff = $weapon->stats->wc - $clone->stats->wc; - my $ac_diff = $weapon->stats->ac - $clone->stats->ac; - my $dam_diff = $weapon->stats->dam - $clone->stats->dam; + my $wc_diff = $weapon->stats->wc - $arch->stats->wc; + my $ac_diff = $weapon->stats->ac - $arch->stats->ac; + my $dam_diff = $weapon->stats->dam - $arch->stats->dam; - my $magic_diff = $weapon->magic - $clone->magic; + my $magic_diff = $weapon->magic - $arch->magic; if ($wc_diff > 0) { $value += $WC_BASE_VALUE * 1.5 * $wc_diff * rand_range .5, 1 } if ($ac_diff > 0) { $value += $AC_BASE_VALUE * 1.5 * $ac_diff * rand_range .5, 1 } - if ($dam_diff > 0) { $value += $DAM_BASE_VALUE * ($dam_diff ** 2.1) * rand_range .7, 1 } + if ($dam_diff > 0) { $value += $DAM_BASE_VALUE * ($dam_diff ** 2.4) * rand_range .7, 1 } if ($magic_diff > 0) { $value += $MAGIC_BASE_VALUE * 1.5 * $magic_diff * rand_range .5, 1 } #warn sprintf "WC DIFF: %3d, %3d, %3d, %3d | %10d = %10.3f r\n",