Ejemplo n.º 1
0
 public function get_enhanced_refine_info($player_id, $player_prop_id, $refine_attr_seq = 0)
 {
     #$this->get_game('PlayerFunc')->get_func_is_open($player_id, $this->func_id_enhanced_refine);
     $this->param_check_numeric(array($player_id));
     $player_equip_info = $this->get_data('PlayerProp')->get_player_prop_detail($player_id, $player_prop_id);
     if (!$player_equip_info) {
         $this->throw_error('80013');
         # 玩家没有该装备!
     }
     if (Com_Util::is_first_charge_item($player_equip_info['prop_id'])) {
         $this->throw_error('81105');
         # 首充装备不允许精练
     }
     $out_849 = array('player_prop_id' => $player_prop_id, 'refine_info_list' => array(), 'add_success_rate_cost' => "{$this->add_success_rate_cost_cur_type}:{$this->add_success_rate_cost_cur_value}", 'add_success_rate' => $this->add_success_rate, 'attr_perfection_avg' => 0, 'refine_attr_seq' => empty($refine_attr_seq) ? 1 : $refine_attr_seq);
     # --------------------------------------------------------------------
     # 获取装备洗练属性信息 + 计算精炼属性增量,成功率与货币消耗
     # --------------------------------------------------------------------
     $attr_perfection_sum = 0;
     if (!empty($player_equip_info['refine_info'])) {
         $refine_info_mod = $this->get_en_refine_success_rate_and_cost_currency($player_equip_info['refine_info']);
         foreach ($refine_info_mod['attr_info'] as $attr_seq => $attr_info) {
             $en_refine_attr_value_current_lv = $attr_info['en_refine_success_num'] * ceil($attr_info['attr_limit'] / $attr_info['attr_section']);
             if ($attr_info['en_refine_lv'] >= $player_equip_info['level'] && $en_refine_attr_value_current_lv >= $attr_info['attr_limit']) {
                 $en_refine_attr_delta = 0;
                 # 已满
             } else {
                 $en_refine_attr_delta = ceil($attr_info['attr_limit'] / $attr_info['attr_section']);
             }
             $out_849['refine_info_list'][] = array('attr_seq' => $attr_info['attr_seq'], 'attr_key' => Cache_RoleKey::getInstance()->get_item_key($attr_info['attr_key']), 'attr_value' => $attr_info['attr_value'], 'attr_limit' => $attr_info['refine_attr_value'] + $attr_info['attr_stint'], 'attr_perfection' => $attr_info['attr_ratio'], 'en_refine_attr_delta' => $en_refine_attr_delta, 'en_refine_success_rate' => $attr_info['en_refine_success_rate'], 'en_refine_cost_currency' => $attr_info['en_refine_cost_currency'], 'lock_status' => 0);
             $attr_perfection_sum += $attr_info['attr_ratio'];
         }
     }
     $out_849['refine_info_list'] = Struct_Prop::attr_sort_2($out_849['refine_info_list']);
     $out_849['attr_perfection_avg'] = ceil($attr_perfection_sum / 5);
     #var_export($out_849);
     return $out_849;
 }