kHAT_Hp, 'val' => self::_getCoefficient($meta,$hero_id,'hp_rate') ], [ 'attr_id'=>kHAT_Atk, 'val' => self::_getCoefficient($meta,$hero_id,'atk_rate') ], [ 'attr_id'=>kHAT_Def, 'val' => self::_getCoefficient($meta,$hero_id,'def_rate') ], [ 'attr_id'=>kHAT_Critical, 'val' => self::_getCoefficient($meta,$hero_id,'crit_atk_rate') ], [ 'attr_id'=>kHAT_CriDamage, 'val' => self::_getCoefficient($meta,$hero_id,'damage_rate') ], [ 'attr_id'=>kHAT_Dodge, 'val' => self::_getCoefficient($meta,$hero_id,'miss_rate') ], [ 'attr_id'=>kHAT_Ruduce, 'val' => self::_getCoefficient($meta,$hero_id,'ruduce_rate') ], ]; } public static function getRandAttr($qualityMeta) { $nums = explode(':', $qualityMeta['rand_attrs_num']); $attrs = StrHelper::parseList($qualityMeta['rand_attrs'], array('|', ':')); $num = rand($nums[0], $nums[1]); shuffle($attrs); $result = array(); $i = 0; foreach ($attrs as $item) { if ($i < $num) { array_push($result, array( 'attr_id' => $item[0], 'type' => $item[1], 'val' => rand($item[2], $item[3]) )); } ++$i; } return $result; } private static function _getCoefficient($meta,$hero_id,$title){ if ($meta[$title.'2']){ $item = explode('|',$meta[$title.'2']); foreach ($item as $val){ $item_1 = explode(':',$val); if ($item_1[0] == $hero_id){ return $item_1[1]; } } return $meta[$title]; } return $meta[$title]; } protected static function getMetaList() { if (!self::$metaList) { self::$metaList = getMetaTable('heroQuality@heroQuality.php'); foreach (self::$metaList as $key=>$value){ if ($value['id'] == 1){ self::$metaList[$key]['promote_val'] = (1+$value['promote']/100); }else{ self::$metaList[$key]['promote_val'] = (1+$value['promote']/100)*self::$metaList[$key-1]['promote_val']; } } } return self::$metaList; } protected static function mustBeQualityHash() { if (!self::$qualityHash) { self::$qualityHash = array(); foreach (self::getMetaList() as $meta) { self::$qualityHash[$meta['quality']] = $meta; } } } protected static function mustBeCoefficientHash($list) { if (!self::$coefficientHash) { self::$coefficientHash = array(); foreach ($list as $val) { self::$coefficientHash[$val['attr_id']] = $val; } } } protected static $metaList; protected static $qualityHash; protected static $coefficientHash; }