From f48246724273d560c6a5ca19a688ca7dbcc6c11a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Jun 2022 20:23:50 +0800 Subject: [PATCH] 1 --- webapp/mt/HeroLevelAttr.php | 57 +++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/webapp/mt/HeroLevelAttr.php b/webapp/mt/HeroLevelAttr.php index 78d97508..384de985 100644 --- a/webapp/mt/HeroLevelAttr.php +++ b/webapp/mt/HeroLevelAttr.php @@ -14,15 +14,62 @@ class HeroLevelAttr { return getXVal(self::getMetaList(), $id); } - public static function addRandAttr($level, $baseAttrs, &$dbAttrs) + public static function addRandAttr($level, &$dbAttrs) { - $nums = explode(':', $levelMeta['rand_attrs_num']); - $num = rand($nums[0], $nums[1]); - $cfgAttrs = StrHelper::parseList($levelMeta['rand_attrs'], array('|', ':')); - AttrHelper::addRandAttrs($cfgAttrs, $num, $baseAttrs, $dbAttrs); + $newAttrs = array(); + foreach (self::getMetaList() as $meta) { + if ($meta['level'] == $level) { + if (in_array( + $meta['type'], + array( + kHAT_ABS_VAL, + kHAT_RATE_VAL + ) + )) { + $val = self::getAttrValue($meta); + if ($val > 0) { + array_push(array( + 'attr_id' => $meta['attr_id'], + 'type' => $meta['type'], + 'val' => $val, + )); + } + } + } + } + AttrHelper::addRandAttrs($dbAttrs, $newAttrs); return true; } + protected static function getAttrValue($meta) + { + $strs = explode('|', $meta['attr_weight']); + + $totalSpace = 0; + foreach ($strs as $tmpStr) { + $strs2 = explode(':', $tmpStr); + if (count($str2) == 2) { + $totalSpace += $str2[1]; + } + } + + if ($totalSpace > 0) { + $randSpace = rand(0, $totalSpace); + $currSpace = 0; + foreach ($strs as $tmpStr) { + $strs2 = explode(':', $tmpStr); + if (count($str2) == 2) { + $currSpace += $str2[1]; + } + if ($randSpace <= $currSpace) { + return $str2[0]; + } + } + } + + return 0; + } + protected static function getMetaList() { if (!self::$metaList) {