Вход Регистрация
Файл: 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))*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;
}
Онлайн: 2
Реклама