Меньше условий. Теперь метод всегда возвращает array во избежание ошибок.

This commit is contained in:
Ivor Barhansky 2023-07-11 02:24:59 +03:00
parent 49a7f3a273
commit 6eca7863ce

View File

@ -852,108 +852,98 @@ class User
} }
//Расчет урона от оружия //Расчет урона от оружия
private function weaponAtc($item, $st, $x) private function weaponAtc($item, $st, $x): array
{ {
$tp = 0; if (empty($item['id'])) {
if (isset($item['id'])) { return [0,0,0,0];
$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)];
} }
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)];
} }
//Расчет защиты //Расчет защиты