Меньше условий. Теперь метод всегда возвращает 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 (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)];
|
||||||
}
|
}
|
||||||
|
|
||||||
//Расчет защиты
|
//Расчет защиты
|
||||||
|
Loading…
Reference in New Issue
Block a user