Меньше условий. Теперь метод всегда возвращает array во избежание ошибок.
This commit is contained in:
parent
49a7f3a273
commit
6eca7863ce
@ -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)];
|
||||
}
|
||||
|
||||
//Расчет защиты
|
||||
|
Loading…
Reference in New Issue
Block a user