WIP: перед введенимем класса Fighter.php
This commit is contained in:
+93
-113
@@ -126,17 +126,18 @@ class Stats
|
||||
public function getStats(int|array|null $uid = null, $i1 = 0, $reimg = false, $btl_cache = false): array
|
||||
{
|
||||
$u = match (true) {
|
||||
empty($uid) => User::getInfo($this->u->info['id']),
|
||||
empty($uid) => $this->u->info,
|
||||
is_array($uid) => $uid,
|
||||
default => User::getInfo($uid),
|
||||
};
|
||||
|
||||
|
||||
if (!isset($u['id'])) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// Как? Нахуя 4 переменные разные для одного и того же?
|
||||
$st = array_fill_keys($this->sysNames, 0);
|
||||
$st = array_fill_keys(array_keys($this->sysNames), 0);
|
||||
$sti = $st;
|
||||
$s_v = $st;
|
||||
$s_vi = $st;
|
||||
@@ -168,9 +169,12 @@ class Stats
|
||||
$st['items'] = [];
|
||||
$st['effects'] = [];
|
||||
|
||||
|
||||
|
||||
$st['vip'] = $u['vip'];
|
||||
|
||||
foreach (Conversion::dataStringToArray($u['stats']) as $stat => $value) {
|
||||
//fixme несуществующие статы mg5 mg6 a6 s8-s15
|
||||
$this->addKeyIfNotExist($stat, (int)$value, $st);
|
||||
}
|
||||
|
||||
@@ -282,13 +286,13 @@ class Stats
|
||||
|
||||
// мф.анти-уворот = 2.5
|
||||
$st['m5'] += $st['s2'] * 5;
|
||||
$st['za'] += $st['s4'] * 1.0;
|
||||
$st['za'] += $st['s4'];
|
||||
|
||||
$st['m19'] += (int)($st['s3'] * 0.03);
|
||||
|
||||
|
||||
|
||||
$st['m19'] += round($st['s3'] * 0.03);
|
||||
|
||||
//Мощности
|
||||
//Мощность против "Мощность крит. урона". Гамс
|
||||
$st['antm3'] += $st['s5'] * 0.5;
|
||||
|
||||
//Бонусы комплектов
|
||||
if (is_iterable($coms['new'])) {
|
||||
@@ -321,33 +325,19 @@ class Stats
|
||||
//Бонусы статов
|
||||
$this->addStatBonuses($st);
|
||||
|
||||
//если второе оружие одето
|
||||
if ($hnd2 == 1 && $hnd1 == 1) {
|
||||
$st['zona']++;
|
||||
}
|
||||
if ($sht1 == 1) {
|
||||
$st['zonb']++;
|
||||
}/* Владения */
|
||||
/* Владения */
|
||||
|
||||
//mib1-mib4, mab1-mab4 armor??
|
||||
|
||||
if (isset($st['s5'])) {
|
||||
$st['pm1'] += $st['s5'] * 0.5;
|
||||
$st['pm2'] += $st['s5'] * 0.5;
|
||||
$st['pm3'] += $st['s5'] * 0.5;
|
||||
$st['pm4'] += $st['s5'] * 0.5;
|
||||
$st['pm7'] += $st['s5'] * 0.5;
|
||||
if (!empty($st['s5'])) {
|
||||
$st['pm1'] += (int)($st['s5'] * 0.5);
|
||||
$st['pm2'] += (int)($st['s5'] * 0.5);
|
||||
$st['pm3'] += (int)($st['s5'] * 0.5);
|
||||
$st['pm4'] += (int)($st['s5'] * 0.5);
|
||||
$st['pm7'] += (int)($st['s5'] * 0.5);
|
||||
}
|
||||
|
||||
if (isset($st['m11a'])) {
|
||||
$st['pm1'] += $st['m11a'] * 0.5;
|
||||
$st['pm2'] += $st['m11a'] * 0.5;
|
||||
$st['pm3'] += $st['m11a'] * 0.5;
|
||||
$st['pm4'] += $st['m11a'] * 0.5;
|
||||
$st['pm7'] += $st['m11a'] * 0.5;
|
||||
}
|
||||
|
||||
if (isset($st['aall'])) {
|
||||
if (!empty($st['aall'])) {
|
||||
$st['a1'] += $st['aall'];
|
||||
$st['a2'] += $st['aall'];
|
||||
$st['a3'] += $st['aall'];
|
||||
@@ -355,56 +345,35 @@ class Stats
|
||||
$st['a5'] += $st['aall'];
|
||||
}
|
||||
|
||||
if (isset($st['m2all'])) {
|
||||
$st['mg1'] += $st['m2all'];
|
||||
$st['mg2'] += $st['m2all'];
|
||||
$st['mg3'] += $st['m2all'];
|
||||
$st['mg4'] += $st['m2all'];
|
||||
$st['mg7'] += $st['m2all'];
|
||||
}
|
||||
|
||||
if (isset($st['zm'])) {
|
||||
if (!empty($st['zm'])) {
|
||||
$st['zm1'] += $st['zm'];
|
||||
$st['zm2'] += $st['zm'];
|
||||
$st['zm3'] += $st['zm'];
|
||||
$st['zm4'] += $st['zm'];
|
||||
$st['zm5'] += $st['zm'];
|
||||
$st['zm6'] += $st['zm'];
|
||||
$st['zm7'] += $st['zm'];
|
||||
}
|
||||
|
||||
if (isset($st['zma'])) {
|
||||
$st['zm1'] += $st['zma'];
|
||||
$st['zm2'] += $st['zma'];
|
||||
$st['zm3'] += $st['zma'];
|
||||
$st['zm4'] += $st['zma'];
|
||||
$st['zm5'] += $st['zma'];
|
||||
$st['zm6'] += $st['zma'];
|
||||
$st['zm7'] += $st['zma'];
|
||||
}
|
||||
|
||||
if (isset($st['mall'])) {
|
||||
if (!empty($st['mall'])) {
|
||||
$st['mg1'] += $st['mall'];
|
||||
$st['mg2'] += $st['mall'];
|
||||
$st['mg3'] += $st['mall'];
|
||||
$st['mg4'] += $st['mall'];
|
||||
}
|
||||
|
||||
if (isset($st['m11'])) {
|
||||
if (!empty($st['m11'])) {
|
||||
$st['pm1'] += $st['m11'];
|
||||
$st['pm2'] += $st['m11'];
|
||||
$st['pm3'] += $st['m11'];
|
||||
$st['pm4'] += $st['m11'];
|
||||
}
|
||||
|
||||
if (isset($st['m10'])) {
|
||||
if (!empty($st['m10'])) {
|
||||
$st['pa1'] += $st['m10'];
|
||||
$st['pa2'] += $st['m10'];
|
||||
$st['pa3'] += $st['m10'];
|
||||
$st['pa4'] += $st['m10'];
|
||||
}
|
||||
|
||||
if (isset($st['za'])) {
|
||||
if (!empty($st['za'])) {
|
||||
$st['za1'] += $st['za'];
|
||||
$st['za2'] += $st['za'];
|
||||
$st['za3'] += $st['za'];
|
||||
@@ -412,16 +381,16 @@ class Stats
|
||||
}
|
||||
|
||||
if (!empty($st['hpVinos'])) {
|
||||
$st['hpall'] += round($st['hpVinos'] * $st['s4']);
|
||||
$st['hpall'] += (int)($st['hpVinos'] * $st['s4']);
|
||||
}
|
||||
if (!empty($st['mpVinos'])) {
|
||||
$st['mpall'] += round($st['mpVinos'] * $st['s6']);
|
||||
$st['mpall'] += (int)($st['mpVinos'] * $st['s6']);
|
||||
}
|
||||
if (!empty($st['hpProc'])) {
|
||||
$st['hpall'] += round($st['hpall'] / 100 * $st['hpProc']);
|
||||
$st['hpall'] += (int)($st['hpall'] / 100 * $st['hpProc']);
|
||||
}
|
||||
if (!empty($st['mpProc'])) {
|
||||
$st['mpall'] += round($st['mpall'] / 100 * $st['mpProc']);
|
||||
$st['mpall'] += (int)($st['mpall'] / 100 * $st['mpProc']);
|
||||
}
|
||||
|
||||
//Реген. - 250 ед.
|
||||
@@ -430,6 +399,15 @@ class Stats
|
||||
$st['mpNow'] = Comparsion::minimax($st['mpNow'], 0, $st['mpall']);
|
||||
|
||||
//зоны блока и удара
|
||||
|
||||
//если второе оружие одето
|
||||
if ($hnd2 == 1 && $hnd1 == 1) {
|
||||
$st['zona']++;
|
||||
}
|
||||
if ($sht1 == 1) {
|
||||
$st['zonb']++;
|
||||
}
|
||||
|
||||
if ($st['zona'] < 1) {
|
||||
$st['zona'] = 1;
|
||||
}
|
||||
@@ -473,12 +451,9 @@ class Stats
|
||||
$st['btl_cof'] = $st['prckr'];
|
||||
Db::sql('update stats set btl_cof = ? where id = ?', [$st['prckr'], $st['id']]);
|
||||
}
|
||||
if ($st['hpall'] < 1) {
|
||||
$st['hpall'] = 1;
|
||||
}
|
||||
if ($st['mpall'] < 0) {
|
||||
$st['mpall'] = 0;
|
||||
}
|
||||
|
||||
$st['hpall'] = max($st['hpall'], 1);
|
||||
$st['mpall'] = max($st['mpall'], 0);
|
||||
|
||||
if (stristr($u['login'], '(зверь ') || (stristr($u['login'], 'Каменный страж') && $u['ip'] == '0')) {
|
||||
$st['this_animal'] = 1;
|
||||
@@ -495,8 +470,8 @@ class Stats
|
||||
} else {
|
||||
$rt = $st;
|
||||
}
|
||||
if ($u['hpAll'] != $st['hpall'] || $u['mpAll'] != $st['mpall']) {
|
||||
Db::sql('update stats set hpAll = ?, mpAll = ? where id = ?', [$st['hpall'], $st['mpall'], $u['id']]);
|
||||
if ($u['hpAll'] != $st['hpAll'] || $u['mpAll'] != $st['mpAll']) {
|
||||
Db::sql('update stats set hpAll = ?, mpAll = ? where id = ?', [$st['hpAll'], $st['mpAll'], $u['id']]);
|
||||
}
|
||||
if ($btl_cache) {
|
||||
$dataca = [
|
||||
@@ -564,6 +539,7 @@ class Stats
|
||||
5 => [70, 89,],//Великолепная
|
||||
];
|
||||
|
||||
|
||||
foreach ($wearedItems as $wearedItem) {
|
||||
$this->addKeyIfNotExist('wp' . $wearedItem['inOdet'] . 'id', $h, $st);
|
||||
|
||||
@@ -591,48 +567,37 @@ class Stats
|
||||
$this->addKeyIfNotExist('reting', 1, $st);
|
||||
}
|
||||
|
||||
if (isset($data['add_oza'])) {
|
||||
$oza = array_fill_keys($oza, $ozaozmtypes[$data['add_oza']]);
|
||||
}
|
||||
# Пришлось зацикливать, уж больно однотипное.
|
||||
# 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_ozm'])) {
|
||||
$ozm = array_fill_keys($ozm, $ozaozmtypes[$data['add_ozm']]);
|
||||
} else {
|
||||
$ozm = array_fill_keys($ozm, $ozaozmtypes[1]);
|
||||
}
|
||||
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_oza1'], range(1, 5))) {
|
||||
$oza[1] = $ozaozmtypes[$data['add_oza1']];
|
||||
}
|
||||
if (in_array($data['add_oza2'], range(1, 5))) {
|
||||
$oza[2] = $ozaozmtypes[$data['add_oza2']];
|
||||
}
|
||||
if (in_array($data['add_oza3'], range(1, 5))) {
|
||||
$oza[3] = $ozaozmtypes[$data['add_oza3']];
|
||||
}
|
||||
if (in_array($data['add_oza4'], range(1, 5))) {
|
||||
$oza[4] = $ozaozmtypes[$data['add_oza4']];
|
||||
}
|
||||
|
||||
if (in_array($data['add_ozm1'], range(1, 5))) {
|
||||
$ozm[1] = $ozaozmtypes[$data['add_ozm1']];
|
||||
} else {
|
||||
$ozm[1] = $ozaozmtypes[1];
|
||||
}
|
||||
if (in_array($data['add_ozm2'], range(1, 5))) {
|
||||
$ozm[2] = $ozaozmtypes[$data['add_ozm2']];
|
||||
} else {
|
||||
$ozm[2] = $ozaozmtypes[1];
|
||||
}
|
||||
if (in_array($data['add_ozm3'], range(1, 5))) {
|
||||
$ozm[3] = $ozaozmtypes[$data['add_ozm3']];
|
||||
} else {
|
||||
$ozm[3] = $ozaozmtypes[1];
|
||||
}
|
||||
if (in_array($data['add_ozm4'], range(1, 5))) {
|
||||
$ozm[4] = $ozaozmtypes[$data['add_ozm4']];
|
||||
} else {
|
||||
$ozm[4] = $ozaozmtypes[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];
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['art'])) {
|
||||
@@ -1167,7 +1132,11 @@ class Stats
|
||||
);
|
||||
|
||||
//Бонус за количество полностью вырытых пещер.
|
||||
$st['m10'] += 10 * $finishedDungeons;
|
||||
if (isset($st['m10'])) {
|
||||
$st['m10'] += 10 * $finishedDungeons;
|
||||
} else {
|
||||
$st['m10'] = 10 * $finishedDungeons;
|
||||
}
|
||||
}
|
||||
|
||||
private function addAdminBonuses(array $u, array &$st): void
|
||||
@@ -1197,11 +1166,22 @@ class Stats
|
||||
*/
|
||||
private function renameArrayKeys(array &$st): void
|
||||
{
|
||||
$st['lvl'] = $st['level'];
|
||||
$st['hpNow'] = $st['hpnow'];
|
||||
$st['mpNow'] = $st['mpnow'];
|
||||
|
||||
unset($st['level'], $st['hpnow'], $st['mpnow']);
|
||||
if (isset($st['level'])) {
|
||||
$st['lvl'] = $st['level'];
|
||||
}
|
||||
if (isset($st['hpall'])) {
|
||||
$st['hpAll'] = $st['hpall'];
|
||||
}
|
||||
if (isset($st['mpall'])) {
|
||||
$st['mpAll'] = $st['mpall'];
|
||||
}
|
||||
if (isset($st['hpnow'])) {
|
||||
$st['hpNow'] = $st['hpnow'];
|
||||
}
|
||||
if (isset($st['mpnow'])) {
|
||||
$st['mpNow'] = $st['mpnow'];
|
||||
}
|
||||
unset($st['level'], $st['hpnow'], $st['mpnow'], $st['hpall'], $st['mpall']);
|
||||
}
|
||||
|
||||
public static function saveBattleStats(array $stats, int $id): void
|
||||
|
||||
Reference in New Issue
Block a user