diff --git a/_incl_data/class/User.php b/_incl_data/class/User.php index 984def33..6cfe477f 100644 --- a/_incl_data/class/User.php +++ b/_incl_data/class/User.php @@ -852,108 +852,98 @@ class User } //Расчет урона от оружия - private function weaponAtc($item, $st, $x) + private function weaponAtc($item, $st, $x): array { - $tp = 0; - if (isset($item['id'])) { - $itm = ConversionHelper::dataStringToArray($item['data']); - //начинаем расчет урона - if (!isset($st['minAtack'])) { - $st['minAtack'] = 0; - } - if (!isset($st['maxAtack'])) { - $st['maxAtack'] = 0; - } - if (!isset($st['yron_min'])) { - $st['yron_min'] = 0; - } - if (!isset($st['yron_max'])) { - $st['yron_max'] = 0; - } - if (!isset($itm['yron_min'])) { - $itm['yron_min'] = 0; - } - if (!isset($itm['yron_max'])) { - $itm['yron_max'] = 0; - } - if (!isset($itm['sv_yron_min'])) { - $itm['sv_yron_min'] = 0; - } - if (!isset($itm['sv_yron_max'])) { - $itm['sv_yron_max'] = 0; - } - - $min = $itm['sv_yron_min'] + $st['minAtack'] + $itm['yron_min'] + $st['yron_min']; - $max = $itm['sv_yron_max'] + $st['maxAtack'] + $itm['yron_max'] + $st['yron_max']; - - //Тип урона: 0 - нет урона, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - огонь, 6 - воздух, 7 - вода, 8 - земля, 9 - свет, 10 - тьма, 11 - серая - if ($item['type'] == 18) { - //колющий - $sss = ceil($st['s2'] * 0.75); - } elseif ($item['type'] == 19) { - //рубящий - $sss = ceil($st['s1'] * 0.75); - } elseif ($item['type'] == 20) { - //дробящий - $sss = ceil($st['s4'] * 1.5); - } elseif ($item['type'] == 21) { - //режущий - $sss = ceil($st['s3'] * 0.75); - } else { - //без профильного урона - $sss = ceil($st['s1'] * 0.1); - } - - //Обычный урон - - $p['B'][0] = ceil($st['s1'] * 1); - $p['B'][1] = ceil(0.4 + $p['B'][0] / 0.9); - - $p['B'][0] = 2 + $st['level'] + $st['s1'] - round($st['s1'] / 5); - $p['B'][1] = $p['B'][0] + 3; - - $p['B']['rnd'] = rand($p['B'][0], $p['B'][1]); - //Добавочный минимальный урон - $p['W'][0] = $min; - $p['W'][1] = $max; - $p['W']['rnd'] = rand($p['W'][0], $p['W'][1]); - // Коэф. оружия - $p['T'] = 1; - //Владения - $bn = 0; - if ($item['type'] == 21) { - // меч - $p['M'] = $st['pa4']; - $bn = $st['a4']; - //ТУТ $p['M'] = $st['pa'.$x]; - } elseif ($item['type'] == 20) { - // дубина - $p['M'] = $st['pa3']; - $bn = $st['a3']; - } elseif ($item['type'] == 19) { - // топор - $p['M'] = $st['pa2']; - $bn = $st['a2']; - } elseif ($item['type'] == 18) { - // нож - $p['M'] = $st['pa1']; - $bn = $st['pa1']; - } elseif ($item['type'] == 22) { - // посох - $p['M'] = $st['pa3']; - $bn = $st['a5']; - } - //Мощнность - - $min = (($p['B'][0] + $sss + $p['W'][0]) * $p['T'] * (1 + 0.005 * $bn)) * (1 + $p['M'] / 100); - $max = (($p['B'][1] + $sss + $p['W'][1]) * $p['T'] * (1 + 0.005 * $bn)) * (1 + $p['M'] / 100); - // - $kmin = ceil((2 * (1 + $st['m3'] / 100)) * $min); - $kmax = ceil((2 * (1 + $st['m3'] / 100)) * $max); - - $tp = [0 => ceil($min), 1 => ceil($max), 2 => ceil($kmin), 3 => ceil($kmax)]; + if (empty($item['id'])) { + return [0,0,0,0]; } - return $tp; + $stDefault = [ + 'minAtack' => 0, + 'maxAtack' => 0, + 'yron_min' => 0, + 'yron_max' => 0, + ]; + $itmDefault = [ + 'yron_min' => 0, + 'yron_max' => 0, + 'sv_yron_min' => 0, + 'sv_yron_max' => 0, + ]; + + $itm = ConversionHelper::dataStringToArray($item['data']); + //начинаем расчет урона + $st = array_merge($stDefault, $st); + $itm = array_merge($itmDefault, $itm); + + $min = $itm['sv_yron_min'] + $st['minAtack'] + $itm['yron_min'] + $st['yron_min']; + $max = $itm['sv_yron_max'] + $st['maxAtack'] + $itm['yron_max'] + $st['yron_max']; + + //Тип урона: 0 - нет урона, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - огонь, 6 - воздух, 7 - вода, 8 - земля, 9 - свет, 10 - тьма, 11 - серая + if ($item['type'] == 18) { + //колющий + $sss = ceil($st['s2'] * 0.75); + } elseif ($item['type'] == 19) { + //рубящий + $sss = ceil($st['s1'] * 0.75); + } elseif ($item['type'] == 20) { + //дробящий + $sss = ceil($st['s4'] * 1.5); + } elseif ($item['type'] == 21) { + //режущий + $sss = ceil($st['s3'] * 0.75); + } else { + //без профильного урона + $sss = ceil($st['s1'] * 0.1); + } + + //Обычный урон + + $p['B'][0] = ceil($st['s1'] * 1); + $p['B'][1] = ceil(0.4 + $p['B'][0] / 0.9); + + $p['B'][0] = 2 + $st['level'] + $st['s1'] - round($st['s1'] / 5); + $p['B'][1] = $p['B'][0] + 3; + + $p['B']['rnd'] = rand($p['B'][0], $p['B'][1]); + //Добавочный минимальный урон + $p['W'][0] = $min; + $p['W'][1] = $max; + $p['W']['rnd'] = rand($p['W'][0], $p['W'][1]); + // Коэф. оружия + $p['T'] = 1; + //Владения + $bn = 0; + if ($item['type'] == 21) { + // меч + $p['M'] = $st['pa4']; + $bn = $st['a4']; + //ТУТ $p['M'] = $st['pa'.$x]; + } elseif ($item['type'] == 20) { + // дубина + $p['M'] = $st['pa3']; + $bn = $st['a3']; + } elseif ($item['type'] == 19) { + // топор + $p['M'] = $st['pa2']; + $bn = $st['a2']; + } elseif ($item['type'] == 18) { + // нож + $p['M'] = $st['pa1']; + $bn = $st['pa1']; + } elseif ($item['type'] == 22) { + // посох + $p['M'] = $st['pa3']; + $bn = $st['a5']; + } + //Мощнность + + $min = (($p['B'][0] + $sss + $p['W'][0]) * $p['T'] * (1 + 0.005 * $bn)) * (1 + $p['M'] / 100); + $max = (($p['B'][1] + $sss + $p['W'][1]) * $p['T'] * (1 + 0.005 * $bn)) * (1 + $p['M'] / 100); + // + $kmin = ceil((2 * (1 + $st['m3'] / 100)) * $min); + $kmax = ceil((2 * (1 + $st['m3'] / 100)) * $max); + + return [0 => ceil($min), 1 => ceil($max), 2 => ceil($kmin), 3 => ceil($kmax)]; } //Расчет защиты