Файл: system/ui_modules.php
Строк: 115
<?php
/** Единые правила отображения предметов и параметров. by Метриум (Стэлп) */
declare(strict_types=1);
function game_item_quality_info(int $quality): array {
$map = [
0=>['name'=>'Простой','color'=>'#b6aa8d','border'=>'#5b5549','max_bonus'=>60,'class'=>'q0'],
1=>['name'=>'Обычный','color'=>'#79d35d','border'=>'#39752d','max_bonus'=>60,'class'=>'q1'],
2=>['name'=>'Редкий','color'=>'#6eb6ff','border'=>'#356d9e','max_bonus'=>60,'class'=>'q2'],
3=>['name'=>'Эпический','color'=>'#d18cff','border'=>'#7c489a','max_bonus'=>60,'class'=>'q3'],
4=>['name'=>'Легендарный','color'=>'#ffb14a','border'=>'#a45d18','max_bonus'=>90,'class'=>'q4'],
5=>['name'=>'Божественный','color'=>'#ffdf61','border'=>'#b99a25','max_bonus'=>90,'class'=>'q5'],
6=>['name'=>'Сверхбожественный','color'=>'#ff6666','border'=>'#9f3333','max_bonus'=>90,'class'=>'q6'],
7=>['name'=>'Мифический','color'=>'#58f0e8','border'=>'#278d88','max_bonus'=>90,'class'=>'q7'],
];
return $map[max(0,min(7,$quality))];
}
/** Синхронизация качества: магазин является источником качества для продаваемых вещей. by Метриум (Стэлп) */
function game_item_quality_sync_catalog(): void {
static $done=false; if($done) return; $done=true;
try {
db_query("UPDATE `items` i INNER JOIN `shop` s ON s.`id`=i.`id` SET i.`quality`=s.`quality` WHERE i.`quality`<>s.`quality`");
} catch (Throwable $e) { error_log('[ITEM_QUALITY_SYNC] '.$e->getMessage()); }
}
function game_item_quality_from_owned(array $inv, ?array $item=null): int {
if(array_key_exists('quality',$inv)) return max(0,min(7,(int)$inv['quality']));
return max(0,min(7,(int)($item['quality']??0)));
}
function game_item_quality_color(int $quality): string { return game_item_quality_info($quality)['color']; }
function game_item_quality_class(int $quality): string { return game_item_quality_info($quality)['class']; }
function game_item_bonus_max(int $quality): int { return (int)game_item_quality_info($quality)['max_bonus']; }
/** В inv параметры уже содержат руну/заточку/бонус/звезды; повторно их не прибавляем. */
function game_item_stats(array $inv): array {
return [
'str'=>(int)($inv['_str']??0), 'vit'=>(int)($inv['_vit']??0),
'agi'=>(int)($inv['_agi']??0), 'def'=>(int)($inv['_def']??0),
];
}
function game_stats_sum(array $stats): int { return (int)($stats['str']??0)+(int)($stats['vit']??0)+(int)($stats['agi']??0)+(int)($stats['def']??0); }
function game_user_power(array $u): int {
return max(0,(int)($u['str']??0)) + max(0,(int)($u['vit']??0))*2 + max(0,(int)($u['agi']??0)) + max(0,(int)($u['def']??0));
}
function game_equipment_summary(int $uid): array {
$out=['str'=>0,'vit'=>0,'agi'=>0,'def'=>0,'items'=>0,'smith'=>0,'bonus'=>0,'stars'=>0,'runes'=>0];
if($uid<=0) return $out;
$r=db_query('SELECT `_str`,`_vit`,`_agi`,`_def`,`smith`,`bonus`,`stars`,`rune` FROM `inv` WHERE `user`='.(int)$uid.' AND `equip`=1');
while($x=db_fetch_assoc($r)){
foreach(['str','vit','agi','def'] as $k) $out[$k]+=(int)($x['_'.$k]??0);
$out['items']++; $out['smith']+=(int)($x['smith']??0); $out['bonus']+=(int)($x['bonus']??0);
$out['stars']+=(int)($x['stars']??0); if((int)($x['rune']??0)>0)$out['runes']++;
}
return $out;
}