Вход Регистрация
Файл: system/v36_features.php
Строк: 120
<?php
/* Общие исправления v36: трофеи, сохранение и расчёты. by Метриум (Стэлп) */
declare(strict_types=1);

function 
game_trophy_tasks_v36(array $user,int $tier): array {
    
$tier=max(1,min(9,$tier));
    
$uid=(int)$user['id'];

    
// Первые трофеи специально лёгкие: игрок знакомится с режимами и быстро
    // получает первые награды. С 4-го трофея требования растут постепенно.
    
$questGoals=[1=>3,2=>7,3=>15,4=>30,5=>60,6=>120,7=>250,8=>500,9=>900];
    
$arenaGoals=[1=>5,2=>12,3=>25,4=>60,5=>120,6=>250,7=>600,8=>1200,9=>2500];
    
$skillGoals=[1=>5,2=>10,3=>20,4=>35,5=>55,6=>85,7=>125,8=>180,9=>250];
    
$undyingGoals=[1=>0,2=>0,3=>2,4=>5,5=>12,6=>25,7=>60,8=>120,9=>250];
    
$smithNeeds=[1=>0,2=>0,3=>3,4=>5,5=>7,6=>9,7=>11,8=>13,9=>15];
    
$bonusGoals=[1=>0,2=>0,3=>10,4=>25,5=>50,6=>90,7=>140,8=>220,9=>320];

    
$tasks=[];
    
$tasks[]=['text'=>'Выполни '.n_f($questGoals[$tier]).' заданий','progress'=>min($questGoals[$tier],(int)($user['quests']??0)),'goal'=>$questGoals[$tier],'link'=>'/quest/'];
    
$tasks[]=['text'=>'Проведи '.n_f($arenaGoals[$tier]).' боёв на арене','progress'=>min($arenaGoals[$tier],(int)($user['boy_arena']??0)),'goal'=>$arenaGoals[$tier],'link'=>'/arena/'];
    
$tasks[]=['text'=>'Подними мастерство тренировки до '.$skillGoals[$tier],'progress'=>min($skillGoals[$tier],(int)($user['skill']??0)),'goal'=>$skillGoals[$tier],'link'=>'/train/'];

    if(
$tier>=3){
        
$tasks[]=['text'=>'Победи '.$undyingGoals[$tier].' врагов в Долине бессмертных','progress'=>min($undyingGoals[$tier],(int)($user['undying']??0)),'goal'=>$undyingGoals[$tier],'link'=>'/undying/'];
    }
    if(
$tier>=3){
        
$smith=(int)(db_result(db_query("SELECT COUNT(*) FROM `inv` WHERE `user`=$uid AND `equip`=1 AND `smith`>=".$smithNeeds[$tier]),0)?:0);
        
$tasks[]=['text'=>'Надень '.min(8,$tier).' предметов с заточкой +'.$smithNeeds[$tier].' или выше','progress'=>min(min(8,$tier),$smith),'goal'=>min(8,$tier),'link'=>'/smith/smith/'];
    }
    if(
$tier>=4){
        
$bonusSum=(int)(db_result(db_query("SELECT COALESCE(SUM(`bonus`),0) FROM `inv` WHERE `user`=$uid AND `equip`=1"),0)?:0);
        
$tasks[]=['text'=>'Набери суммарный бонус экипировки '.$bonusGoals[$tier],'progress'=>min($bonusGoals[$tier],$bonusSum),'goal'=>$bonusGoals[$tier],'link'=>'/smith/bonus/'];
    }
    if(
$tier>=5){
        
$runeNeed=max(1,min(6,$tier-4));
        
$runes=(int)(db_result(db_query("SELECT COUNT(*) FROM `inv` WHERE `user`=$uid AND `equip`=1 AND `rune`>0"),0)?:0);
        
$tasks[]=['text'=>'Установи руны в '.$runeNeed.' предмет'.($runeNeed===1?'':'а'),'progress'=>min($runeNeed,$runes),'goal'=>$runeNeed,'link'=>'/smith/runes/'];
    }
    if(
$tier>=6){
        
$abilityNeed=min(3,$tier-5);
        
$abilityCount=0; for($i=1;$i<=5;$i++) if((int)($user['ability_'.$i.'_quality']??0)>=2$abilityCount++;
        
$tasks[]=['text'=>'Улучши '.$abilityNeed.' умени'.($abilityNeed===1?'е':'я').' до редкого качества','progress'=>min($abilityNeed,$abilityCount),'goal'=>$abilityNeed,'link'=>'/ability/'.$uid.'/'];
    }
    if(
$tier>=7){
        
$petNeed=[7=>15,8=>25,9=>40][$tier];
        
$petLevel=(int)(db_result(db_query("SELECT COALESCE(MAX(LEAST(`lvl_str`,`lvl_vit`,`lvl_agi`,`lvl_def`)),0) FROM `pet_u` WHERE `user_id`=$uid"),0)?:0);
        
$tasks[]=['text'=>'Прокачай любого питомца до '.$petNeed.' уровня','progress'=>min($petNeed,$petLevel),'goal'=>$petNeed,'link'=>'/petshop/'];
    }
    if(
$tier>=8){
        
$relicTop=(int)(db_result(db_query("SELECT COUNT(*) FROM `tournament_archive` WHERE `kind`='relic' AND `entity_id`=$uid AND `position`<=10"),0)?:0)>0;
        
$tasks[]=['text'=>'Попади в десятку турнира реликвий хотя бы один раз','progress'=>(int)$relicTop,'goal'=>1,'link'=>'/relictournament/'];
    }
    if(
$tier>=9){
        
$clanId=(int)(db_result(db_query("SELECT `clan` FROM `clan_memb` WHERE `user`=$uid LIMIT 1"),0)?:0);
        
$clanTop=$clanId>&& (int)(db_result(db_query("SELECT COUNT(*) FROM `tournament_archive` WHERE `kind`='crystal' AND `entity_id`=$clanId AND `position`<=5"),0)?:0)>0;
        
$tasks[]=['text'=>'Помоги клану попасть в пятёрку кланового турнира','progress'=>(int)$clanTop,'goal'=>1,'link'=>'/clantournament/'];
    }
    return 
$tasks;
}
function 
game_trophy_requirements_met_v36(array $user,int $tier): bool {
    foreach(
game_trophy_tasks_v36($user,$tier) as $t) if((int)$t['progress'] < (int)$t['goal']) return false;
    return 
true;
}
Онлайн: 4
Реклама