WIP: removing User::class public array $items for Stat()::class.
This commit is contained in:
@@ -195,7 +195,7 @@ class Stats
|
||||
|
||||
}
|
||||
|
||||
[$hnd1, $hnd2, $sht1, $oza, $ozm, $dom, $coms] = $this->addWearedItemsBonuses($u['id'], $st, $s_v, $baseStats);
|
||||
[$hnd1, $hnd2, $sht1, $dom, $coms] = $this->addWearedItemsBonuses($u['id'], $st, $s_v, $baseStats);
|
||||
|
||||
|
||||
$this->addMedalsBonuses($u['id'], $st);
|
||||
@@ -408,21 +408,9 @@ class Stats
|
||||
$st['zonb']++;
|
||||
}
|
||||
|
||||
if ($st['zona'] < 1) {
|
||||
$st['zona'] = 1;
|
||||
}
|
||||
if ($st['zona'] > 5) {
|
||||
$st['zona'] = 5;
|
||||
}
|
||||
if ($st['zonb'] < 1) {
|
||||
$st['zonb'] = 1;
|
||||
}
|
||||
if ($st['zonb'] > 3) {
|
||||
$st['zonb'] = 3;
|
||||
}
|
||||
$st['zona'] = Comparsion::minimax($st['zona'], 1, 5);
|
||||
$st['zonb'] = Comparsion::minimax($st['zonb'], 1, 3);
|
||||
|
||||
$st['ozash'] = $oza;
|
||||
$st['ozmsh'] = $ozm;
|
||||
$st['weapon1'] = $hnd1;
|
||||
$st['weapon2'] = $hnd2;
|
||||
$st['sheld1'] = $sht1;
|
||||
@@ -500,6 +488,15 @@ class Stats
|
||||
$st[$key] += $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет бонусы к статам игрока.
|
||||
* Генерирует переменную User:class->stats['items'], где лежат одетые предметы.
|
||||
* @param int $uid
|
||||
* @param array $st
|
||||
* @param array $s_v
|
||||
* @param array $baseStats
|
||||
* @return array
|
||||
*/
|
||||
private function addWearedItemsBonuses(int $uid, array &$st, array &$s_v, array $baseStats): array
|
||||
{
|
||||
//Характеристики от предметов //ТУТ tr_lvl
|
||||
@@ -518,33 +515,20 @@ class Stats
|
||||
$coms = []; // комплекты
|
||||
$dom = [];
|
||||
|
||||
$oza = [
|
||||
1 => [0, 0],
|
||||
2 => [0, 0],
|
||||
3 => [0, 0],
|
||||
4 => [0, 0],
|
||||
]; //особенности защиты
|
||||
$ozm = [
|
||||
1 => [0, 0],
|
||||
2 => [0, 0],
|
||||
3 => [0, 0],
|
||||
4 => [0, 0],
|
||||
]; //особенности магии
|
||||
|
||||
$ozaozmtypes = [
|
||||
1 => [1, 9,],//Слабая
|
||||
2 => [20, 39,],//Нормальная
|
||||
3 => [40, 69,],//Хорошая
|
||||
4 => [10, 19,],//Посредственная
|
||||
5 => [70, 89,],//Великолепная
|
||||
];
|
||||
|
||||
$wi = new WearedItem(); // на замену User:class->stats['items']
|
||||
$st['items_o'] = $wi;
|
||||
|
||||
foreach ($wearedItems as $wearedItem) {
|
||||
// Генерируем всратую пепяку User:class->stats['wpXid'] > 0, которая показывает, что определённый слот
|
||||
// чем-то занят. Странное решение.
|
||||
$this->addKeyIfNotExist('wp' . $wearedItem['inOdet'] . 'id', $h, $st);
|
||||
|
||||
$st['items'][$h] = $wearedItem;
|
||||
$h++;
|
||||
|
||||
$wi->add(new Item($wearedItem));
|
||||
|
||||
// Если в левой руке (3) предметы определённого типа, то рука занята оружием.
|
||||
if ($wearedItem['inOdet'] == 3 &&
|
||||
(($wearedItem['type'] >= 18 && $wearedItem['type'] <= 24) ||
|
||||
$wearedItem['type'] == 26 ||
|
||||
@@ -552,6 +536,8 @@ class Stats
|
||||
$wearedItem['type'] == 28)) {
|
||||
$hnd1 = 1;
|
||||
}
|
||||
|
||||
// Если в правой руке (14) предметы определённого типа, то рука занята оружием или щитом.
|
||||
if ($wearedItem['inOdet'] == 14 &&
|
||||
(($wearedItem['type'] >= 18 && $wearedItem['type'] <= 24) ||
|
||||
$wearedItem['type'] == 26 ||
|
||||
@@ -562,44 +548,13 @@ class Stats
|
||||
$sht1 = 1;
|
||||
}
|
||||
|
||||
$data = Conversion::dataStringToArray($wearedItem['data']);
|
||||
// Если в любом слоте что-то есть, повышается User:class->stats['reting'] за каждый слот
|
||||
// Используется каким-то непонятным образом в хаотах.
|
||||
if ($wearedItem['inOdet'] <= 18 && $wearedItem['inOdet'] > 0) {
|
||||
$this->addKeyIfNotExist('reting', 1, $st);
|
||||
}
|
||||
|
||||
# Пришлось зацикливать, уж больно однотипное.
|
||||
# oza[X][0,1] = add_ozaX[0,1] + add_oza[0,1]
|
||||
# ozm[X][0,1] = add_ozmX[0,1] + add_ozm[0,1]
|
||||
for ($i = 1; $i <= 4; $i++) {
|
||||
if (!isset($data["add_oza$i"])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isset($data['add_oza']) && in_array($data['add_oza'], range(1, 5))) {
|
||||
$oza[$i][0] += $ozaozmtypes[$data['add_oza']][0];
|
||||
$oza[$i][1] += $ozaozmtypes[$data['add_oza']][1];
|
||||
}
|
||||
if (isset($data['add_ozm']) && in_array($data['add_ozm'], range(1, 5))) {
|
||||
$ozm[$i][0] += $ozaozmtypes[$data['add_ozm']][0];
|
||||
$ozm[$i][1] += $ozaozmtypes[$data['add_ozm']][1];
|
||||
} else {
|
||||
$ozm[$i][0] += $ozaozmtypes[1][0];
|
||||
$ozm[$i][1] += $ozaozmtypes[1][1];
|
||||
}
|
||||
|
||||
if (in_array($data["add_oza$i"], range(1, 5))) {
|
||||
$oza[$i][0] += $ozaozmtypes[$data["add_oza$i"]][0];
|
||||
$oza[$i][1] += $ozaozmtypes[$data["add_oza$i"]][1];
|
||||
}
|
||||
if (isset($data["add_ozm$i"]) && in_array($data["add_ozm$i"], range(1, 5))) {
|
||||
$ozm[$i][0] += $ozaozmtypes[$data["add_ozm$i"]][0];
|
||||
$ozm[$i][1] += $ozaozmtypes[$data["add_ozm$i"]][1];
|
||||
} else {
|
||||
$ozm[$i][0] += $ozaozmtypes[1][0];
|
||||
$ozm[$i][1] += $ozaozmtypes[1][1];
|
||||
}
|
||||
}
|
||||
|
||||
$data = Conversion::dataStringToArray($wearedItem['data']);
|
||||
if (isset($data['art'])) {
|
||||
$this->addKeyIfNotExist('art', $data['art'], $st);
|
||||
}
|
||||
@@ -696,7 +651,7 @@ class Stats
|
||||
}
|
||||
}
|
||||
}
|
||||
return [$hnd1, $hnd2, $sht1, $oza, $ozm, $dom, $coms];
|
||||
return [$hnd1, $hnd2, $sht1, $dom, $coms];
|
||||
}
|
||||
|
||||
private function addMedalsBonuses(int $uid, array &$st): void
|
||||
|
||||
Reference in New Issue
Block a user