Вход Регистрация
Файл: app/Http/Controllers/CampaignController.php
Строк: 1005
<?php

namespace AppHttpControllers;

use 
AppModelsCampaignTempModel;
use 
AppModelsCardModel;
use 
AppModelsCardUserModel;
use 
AppModelsUserModel;
use 
AppServicesServices;
use 
IlluminateHttpRequest;
use 
Auth;
use 
AppModelsCampaignRankModel;
use 
Session;

class 
CampaignController extends Controller
{
    public function 
index()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        
$nextRank = CampaignRankModel::where('rank', (Auth::user()->campaign_rank+1))->first();
        if(
$campaignChapter[1] == '0')
        {
            return 
view('game.campaign.index', ['cc' => $campaignChapter, 'rank' => $nextRank]);
        }
        else
        {
            
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
            
$campaignUser = json_decode(Auth::user()->campaign_temp);
            if(
$campaignInfo['type'] == 'raid')
            {
                
$campaignT = CampaignTempModel::where('user', Auth::user()->id)->first();
                if(isset(
$campaignT)) return redirect('/campaign/battle');
                if(
$campaignUser->battle == 0 && $campaignUser->cooldown <= time())
                {
                    
$campaignUser->battle = 1;
                    
$campaignUser->cooldown = 0;
                    
$user = UserModel::find(Auth::user()->id);
                    
$user->campaign_temp = json_encode($campaignUser);
                    
$user->save();
                    return 
redirect('/campaign');
                }
                if(
count((array) $campaignUser->enemies_left) == 1)
                {
                    
$user = UserModel::find(Auth::user()->id);
                    
$campaignUser->complete = 1;
                    
$user->campaign_temp = json_encode($campaignUser);
                    
$user->save();
                    return 
redirect('/campaign/next');
                }
            }
            elseif(
$campaignInfo['type'] == 'village')
            {
                if(
$campaignUser->count >= 160)
                {
                    
$user = UserModel::find(Auth::user()->id);
                    
$campaignUser->complete = 1;
                    
$user->campaign_temp = json_encode($campaignUser);
                    
$user->save();
                    return 
redirect('/campaign/next');
                }
            }
            elseif(
$campaignInfo['type'] == 'opposition')
            {
                if(
$campaignUser->cooldown <= time() && $campaignUser->find == 0)
                {
                    
$campaignUser->find = 1;
                    
$user = UserModel::find(Auth::user()->id);
                    
$user->campaign_temp = json_encode($campaignUser);
                    
$user->save();
                    return 
redirect('/campaign');
                }
                if(
$campaignUser->complete == 1) return redirect('/campaign/next');
                if(
$campaignUser->battle == 1 && $campaignUser->destruct_cooldown < time())
                {
                    if(
$campaignUser->myHealth > 0 && $campaignUser->enemyHealth <= 0) return self::oppositionResult('win');
                    elseif(
$campaignUser->myHealth <= 0 && $campaignUser->enemyHealth > 0) return self::oppositionResult('lose');
                    elseif(
$campaignUser->myHealth <= 0 && $campaignUser->enemyHealth <= 0) return self::oppositionResult('lose');
                }
            }
            return 
view('game.campaign.process', ['ci' => (object) $campaignInfo, 'cu' => (object) $campaignUser, 'rank' => $nextRank]);
        }
    }

    public function 
start($campaign)
    {
        if(
Auth::user()->campaign_stage != $campaign.'.0') return back();
        
$campaignInfo = config('campaign.chapter'.$campaign.'.stage1');
        
$user = UserModel::find(Auth::user()->id);
        
$user->campaign_stage = $campaign.'.1';
        
$user->campaign_temp = json_encode($campaignInfo['user']);
        
$user->save();
        return 
redirect('/campaign');
    }

    public function 
next()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        if(
$campaignUser->complete == 1)
        {
            
$nextStage = explode('.', $campaignInfo['next']);
            
$nextStageInfo = config('campaign.chapter'.$nextStage[0].'.stage'.$nextStage[1]);
            
$user = UserModel::find(Auth::user()->id);
            
$user->campaign_stage = $campaignInfo['next'];
        
$nextStageInfoUser = $nextStageInfo['user'];
            
$nextStageInfoUser['cooldown'] = time()+60*$campaignInfo['cooldown'];
            
$user->campaign_temp = json_encode($nextStageInfoUser);
        if(
$campaignInfo['type'] == 'text-with-reward')
            {
                
$user->exp += $campaignInfo['reward']['exp'];
if(isset(
$campaignInfo['reward']['diamonds'])) $user->diamonds += $campaignInfo['reward']['diamonds'];
               if(isset(
$campaignInfo['reward']['campaign_exp'])) $user->campaign_exp += $campaignInfo['reward']['campaign_exp'];
                
$user->valmers += $campaignInfo['reward']['valmers'];
            }
            
$user->save();
            return 
redirect('/campaign');
        }
    }

    public function 
raid()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return redirect('/campaign');
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$campaignT = CampaignTempModel::where('user', Auth::user()->id)->first();
        if(
$campaignT != null) return redirect('/campaign/battle');
        if(
$campaignUser->raid != 0) return redirect('/campaign');
        
$enemiesLeft = (array) $campaignUser->enemies_left;
        
$randEnemy = array_rand($enemiesLeft);
        
$campaignUser->raid = 1;
        
$campaignUser->cooldown = time()+3600;
        if(
count($enemiesLeft) >= 7)
        {
            
$campaignUser->enemy = $enemiesLeft[$randEnemy];
        }
        else
        {
            
$campaignUser->enemy = $campaignUser->enemies_left->{$randEnemy};
        }
        
$user = UserModel::find(Auth::user()->id);
        
$user->campaign_temp = json_encode($campaignUser);
        
$user->save();
        return 
redirect('/campaign');
    }

    public function 
startBattle()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$campaignT = CampaignTempModel::where('user', Auth::user()->id)->first();
        if(
$campaignUser->raid == 0 || $campaignUser->battle == 0) return redirect('/campaign');
        if(isset(
$campaignT)) return redirect('/campaign/battle');
        if(isset(
$campaignUser->battle) || $campaignUser->battle == 1)
        {
            
$mob = $campaignInfo['enemies'][$campaignUser->enemy];
            
$info = [
                
'health' => $mob['health'],
                
'card' => $mob['card'],
                
'myCard1' => 0,
                
'cooldown1' => 0,
                
'myHealth1' => 0,
                
'myCard2' => 0,
                
'cooldown2' => 0,
                
'myHealth2' => 0
            
];
            
CampaignTempModel::create([
                
'user' => Auth::user()->id,
                
'info' => json_encode($info)
            ]);
            return 
redirect('/campaign/battle');
        }
        return 
back();
    }

    public function 
battle()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$campaignT = CampaignTempModel::where('user', Auth::user()->id)->firstOrFail();
        
$campaignTemp = json_decode($campaignT->info);
        if(!isset(
$campaignUser->battle) && $campaignUser->battle == 0) return back();
        if((
$campaignTemp->myCard1 == 0 && $campaignTemp->myCard2 == 0) || ($campaignTemp->myCard1 > 0 && $campaignTemp->myCard2 == 0)) return redirect('/campaign/pick');
        
$card1 = CardModel::find($campaignTemp->card);
        
$card2 = CardUserModel::with('getCardInfo')->findOrFail($campaignTemp->myCard1);
        
$card3 = CardUserModel::with('getCardInfo')->findOrFail($campaignTemp->myCard2);
        if((
$campaignTemp->myHealth1 > 0 || $campaignTemp->myHealth2 > 0) && $campaignTemp->health <= 0) $status = 'win';
        elseif((
$campaignTemp->myHealth1 <= 0 && $campaignTemp->myHealth2 <= 0) && $campaignTemp->health > 0) $status = 'lose';
        elseif(
$campaignTemp->myHealth1 <= 0 && $campaignTemp->myHealth2 <= 0 && $campaignTemp->health <= 0) $status = 'lose';
        else 
$status = 'battle';
        if(
$status != 'battle')
        {
            
$user = UserModel::find(Auth::user()->id);
            if(
$status == 'win')
            {
                
$user->wins++;
                
$user->valmers += $campaignInfo['enemies'][$campaignUser->enemy]['reward']['valmers'];
                
$user->exp += $campaignInfo['enemies'][$campaignUser->enemy]['reward']['exp'];
                
$user->campaign_exp += $campaignInfo['enemies'][$campaignUser->enemy]['reward']['campaign_exp'];
                if(
$campaignUser->enemy != 7)
                {
                    
$enemiesLeft = (array) $campaignUser->enemies_left;
                    
$key = array_search($campaignUser->enemy, $enemiesLeft);
                    if(
count($enemiesLeft) >= 7)
                    {
                        unset(
$enemiesLeft[$key]);
                        
$campaignUser->enemies_left = $enemiesLeft;
                    }
                    else unset(
$campaignUser->enemies_left->{$key});
                    
$result = $campaignInfo['text_if_success'];
                    
$result .= ' Награда:'.$campaignInfo['enemies'][$campaignUser->enemy]['reward']['valmers'].' вальмер, ';
                    
$result .= $campaignInfo['enemies'][$campaignUser->enemy]['reward']['exp'].' монет и ';
                    
$result .= $campaignInfo['enemies'][$campaignUser->enemy]['reward']['campaign_exp'].' опыта кампании!';
                }
                else
                {
                    
$result = $campaignInfo['text_if_success_pupil'];
                    
$result .= ' Награда:'.$campaignInfo['enemies'][$campaignUser->enemy]['reward']['valmers'].' вальмер, ';
                    
$result .= $campaignInfo['enemies'][$campaignUser->enemy]['reward']['exp'].' монет и ';
                    
$result .= $campaignInfo['enemies'][$campaignUser->enemy]['reward']['campaign_exp'].' опыта кампании!';
                }
            }
            else
            {
                
$result = $campaignInfo['text_if_fail'];
                
$user->loses++;
            }
            
$campaignUser->enemy = 0;
            
$campaignUser->raid = 0;
            
$campaignUser->battle = 0;
            
$user->campaign_temp = json_encode($campaignUser);
            
$user->save();
            
$campaignT->delete();
            
Session::put('result', $result);
            return 
redirect('/campaign');
        }
        return 
view('game.campaign.battle', ['ci' => $campaignInfo, "cu" => $campaignUser, 'ct' => $campaignTemp, 'c1' => $card1, 'c2' => $card2, 'c3' => $card3]);
    }

    public function 
attack($card)
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$campaignT = CampaignTempModel::where('user', Auth::user()->id)->firstOrFail();
        
$campaignTemp = json_decode($campaignT->info);
        
$cooldown = 'cooldown'.$card;
        
$myHealth = 'myHealth'.$card;
        
$myCard = 'myCard'.$card;
        if(
$campaignTemp->$cooldown > time()) return back();
        if(!isset(
$campaignUser->battle) && $campaignUser->battle == 0) return back();
        if(
$campaignTemp->$myCard == 0) return redirect('/campaign/pick');
        
$card = CardUserModel::with('getCardInfo')->findOrFail($campaignTemp->$myCard);
        
$myDamage = Services::getCardDamage(round($card->getCardInfo->min_attack+Services::getUpgradeBonus($card->getCardInfo->min_attack, $card->upgrade_level)), round($card->getCardInfo->min_attack+Services::getUpgradeBonus($card->getCardInfo->min_attack, $card->upgrade_level)), $campaignInfo['enemies'][$campaignUser->enemy]['armor']);
        
$botDamage = Services::getCardDamage(($campaignInfo['enemies'][$campaignUser->enemy]['attack']-20), $campaignInfo['enemies'][$campaignUser->enemy]['attack'], round($card->getCardInfo->armor+Services::getUpgradeBonus($card->getCardInfo->armor, $card->upgrade_level)));
        
$campaignTemp->health -= $myDamage;
        
$campaignTemp->$myHealth -= $botDamage;
        
$campaignTemp->$cooldown = time()+$card->getCardInfo->cooldown;
        
$campaignT->info = json_encode($campaignTemp);
        
$campaignT->save();
        return 
back();
    }

    public function 
pick()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        if(!isset(
$campaignUser->battle) && $campaignUser->battle == 0) return back();
        
$campaignT = CampaignTempModel::where('user', Auth::user()->id)->firstOrFail();
        
$campaignTemp = json_decode($campaignT->info);
        if(
$campaignTemp->myCard1 > 0 && $campaignTemp->myCard2 > 0) return redirect('/campaign/battle');
        if(
$campaignTemp->myCard1 > 0) $myCards = CardUserModel::with('getCardInfo')->where('id', '<>', $campaignTemp->myCard1)->where('user', Auth::user()->id)->where('status', 'redeemed')->paginate(10);
        else 
$myCards = CardUserModel::with('getCardInfo')->where('user', Auth::user()->id)->where('status', 'redeemed')->paginate(10);
        return 
view('game.campaign.pick', ['cards' => $myCards, 'ct' => $campaignTemp]);
    }

    public function 
pickCard($id)
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        
$campaignT = CampaignTempModel::where('user', Auth::user()->id)->firstOrFail();
        
$campaignTemp = json_decode($campaignT->info);
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        if(!isset(
$campaignUser->battle) && $campaignUser->battle == 0) return back();
        if(
$campaignTemp->myCard1 > 0 && $campaignTemp->myCard2 > 0) return redirect('/campaign/battle');
        
$card = CardUserModel::with('getCardInfo')->findOrFail($id);
        if(
$campaignTemp->myCard1 == $id) return back();
        if(
$campaignTemp->myCard1 > 0)
        {
            
$campaignTemp->myCard2 = $id;
            
$campaignTemp->myHealth2 = round($card->getCardInfo->health+Services::getUpgradeBonus($card->getCardInfo->health, $card->upgrade_level));
        }
        else
        {
            
$campaignTemp->myCard1 = $id;
            
$campaignTemp->myHealth1 = round($card->getCardInfo->health+Services::getUpgradeBonus($card->getCardInfo->health, $card->upgrade_level));
        }
        
$campaignT->info = json_encode($campaignTemp);
        
$campaignT->save();
        return 
redirect('/campaign/battle');
    }

    public function 
up()
    {
        
$nextRank = CampaignRankModel::where('rank', (Auth::user()->campaign_rank+1))->first();
        if(
Auth::user()->campaign_exp < $nextRank->exp) return back();
        
$message = 'Ранг повышен! Получено: '.$nextRank->reward.' вальмер!';
        
$user = UserModel::find(Auth::user()->id);
        
$user->valmers += $nextRank->reward;
        
$user->campaign_exp = 0;
        
$user->campaign_rank++;
        
$user->save();
        return 
back()->with('ok', $message);
    }

    public function 
findVillage()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        if(
Auth::user()->campaign_stage != '2.2') return redirect('/');
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$attackChance = rand(1,10);
        if(
$attackChance == 9) $village = rand(7,9);
        else 
$village = $campaignUser->next_village;
        
$campaignUser->cooldown = time()+3600;
        
$campaignUser->find = 1;
        if(
$campaignUser->village == 0)
        {
            
$campaignUser->village = $village;
            
$campaignUser->next_village++;
        }
        
$user = UserModel::find(Auth::user()->id);
        
$user->campaign_temp = json_encode($campaignUser);
        
$user->save();
        return 
back()->with('ok', 'Поиск деревни начался!');
    }

    public function 
startAttackVillage()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        if(
Auth::user()->campaign_stage != '2.2') return redirect('/');
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        
$campaignUser->battle = 1;
        
$campaignUser->villageHealth = $campaignInfo['villages'][$campaignUser->village]['health'];
        
$campaignUser->attacks = $campaignInfo['villages'][$campaignUser->village]['max_attacks'];
        
$campaignUser->myAttack = Services::getAllParameters('attack', Auth::user()->id);
        
$campaignUser->myHealth = Services::getAllParameters('health', Auth::user()->id);
        
$campaignUser->myArmor = Services::getAllParameters('armor', Auth::user()->id);
        
$user = UserModel::find(Auth::user()->id);
        
$user->campaign_temp = json_encode($campaignUser);
        
$user->save();
        return 
redirect('/campaign');
    }

    public function 
leaveVillage()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        if(
Auth::user()->campaign_stage != '2.2') return redirect('/');
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$campaignUser->find = 0;
        
$campaignUser->village = 0;
        
$user = UserModel::find(Auth::user()->id);
        
$user->campaign_temp = json_encode($campaignUser);
        
$user->save();
        return 
back()->with('ok', 'Вы обошли деревню!');
    }

    public function 
attackVillage()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        if(
Auth::user()->campaign_stage != '2.2') return redirect('/');
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        if(
$campaignUser->attacks <= 0) return back()->with('error', 'Недостаточно ударов!');
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        
$myDamage = Services::getCardDamage($campaignUser->myAttack, $campaignUser->myAttack, $campaignInfo['villages'][$campaignUser->village]['armor']);
        
$villageDamage = $campaignInfo['villages'][$campaignUser->village]['attack'] > 0 ? Services::getCardDamage($campaignInfo['villages'][$campaignUser->village]['attack'], $campaignInfo['villages'][$campaignUser->village]['attack'], $campaignUser->myArmor) : 0;
        
$campaignUser->myHealth -= $villageDamage;
        
$campaignUser->villageHealth -= $myDamage;
        
$campaignUser->attacks--;
        
$user = UserModel::find(Auth::user()->id);
        
$user->campaign_temp = json_encode($campaignUser);
        
$user->save();
        if(
$campaignUser->villageHealth <= 0 && $campaignUser->myHealth > 0)
        {
            
$message = 'Деревня разрушена! Получено: '.$campaignInfo['villages'][$campaignUser->village]['reward']['count'].' эйронита, '.$campaignInfo['villages'][$campaignUser->village]['reward']['exp'].' монет и '.$campaignInfo['villages'][$campaignUser->village]['reward']['campaign_exp'].' опыта кампании!';
            
$campaignUser->count += $campaignInfo['villages'][$campaignUser->village]['reward']['count'];
            
$user = UserModel::find(Auth::user()->id);
            
$user->campaign_exp += $campaignInfo['villages'][$campaignUser->village]['reward']['campaign_exp'];
            
$user->exp += $campaignInfo['villages'][$campaignUser->village]['reward']['exp'];
            
$campaignUser->find = 0;
            
$campaignUser->battle = 0;
            
$campaignUser->village = 0;
            
$user->campaign_temp = json_encode($campaignUser);
            
$user->save();
            return 
back()->with('ok', $message);
        }
        elseif(
$campaignUser->villageHealth > 0 && $campaignUser->myHealth <= 0)
        {
            
$message = 'Карты разрушены жителями деревни! Получено: '.round($campaignInfo['villages'][$campaignUser->village]['reward']['exp']/20).' монет и '.round($campaignInfo['villages'][$campaignUser->village]['reward']['campaign_exp']/20).' опыта кампании!';
            
$user = UserModel::find(Auth::user()->id);
            
$user->campaign_exp += round($campaignInfo['villages'][$campaignUser->village]['reward']['campaign_exp']/20);
            
$user->exp += round($campaignInfo['villages'][$campaignUser->village]['reward']['exp']/20);
            
$campaignUser->find = 0;
            
$campaignUser->battle = 0;
            
$campaignUser->village = 0;
            
$user->campaign_temp = json_encode($campaignUser);
            
$user->save();
            return 
back()->with('ok', $message);
        }
        return 
back();
    }

    public function 
startOpposition()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        if(
Auth::user()->campaign_stage != '3.2') return redirect('/');
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        if(
$campaignUser->find == 0) return back();
        
$campaignUser->destruct_cooldown = time()+60;
        
$campaignUser->myHealth = Services::getAllParameters('health', Auth::user()->id);
        
$campaignUser->enemyHealth = $campaignInfo['enemies'][$campaignUser->enemy]['health'];
        
$campaignUser->battle = 1;
        
$user = UserModel::find(Auth::user()->id);
        
$user->campaign_temp = json_encode($campaignUser);
        
$user->save();
        return 
redirect('/campaign');
    }

    public function 
attackEnemy()
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        if(
Auth::user()->campaign_stage == $campaignChapter[0].'0') return back();
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        if(
$campaignUser->attackCooldown >= time()) return back()->with('error', 'Откат!');
        
$attack = Services::getAllParameters('attack', Auth::user()->id);
        
$armor = Services::getAllParameters('armor', Auth::user()->id);
        
$myDamage = Services::getCardDamage($attack, $attack, $campaignInfo['enemies'][$campaignUser->enemy]['armor']);
        
$botDamage = Services::getCardDamage($campaignInfo['enemies'][$campaignUser->enemy]['attack'], $campaignInfo['enemies'][$campaignUser->enemy]['attack'], $armor);
        if(
$campaignUser->myHealth > 0 && $campaignUser->enemyHealth <= 0) return self::oppositionResult('win');
        elseif(
$campaignUser->myHealth <= 0 && $campaignUser->enemyHealth > 0) return self::oppositionResult('lose');
        elseif(
$campaignUser->myHealth <= 0 && $campaignUser->enemyHealth <= 0) return self::oppositionResult('lose');
        
$campaignUser->enemyHealth -= $myDamage;
        
$campaignUser->myHealth -= $botDamage;
        
$campaignUser->attackCooldown = time()+3;
        
$user = UserModel::find(Auth::user()->id);
        
$user->campaign_temp = json_encode($campaignUser);
        
$user->save();
        return 
back();
    }

    public function 
oppositionResult($result)
    {
        
$campaignChapter = explode('.', Auth::user()->campaign_stage);
        
$campaignInfo = config('campaign.chapter'.$campaignChapter[0].'.stage'.$campaignChapter[1]);
        
$campaignUser = json_decode(Auth::user()->campaign_temp);
        
$user = UserModel::find(Auth::user()->id);
        if(
$result == 'win')
        {
            if(
$campaignUser->enemy < 4)
            {
                
$campaignUser->enemy++;
                
$campaignUser->myHealth = Services::getAllParameters('health', Auth::user()->id);
                
$campaignUser->enemyHealth = $campaignInfo['enemies'][$campaignUser->enemy]['health'];
                
$campaignUser->attackCooldown = 0;
                
$user->campaign_exp += $campaignInfo['enemies'][$campaignUser->enemy]['reward']['campaign_exp'];
                
$user->valmers += $campaignInfo['enemies'][$campaignUser->enemy]['reward']['valmers'];
                
$message = 'Враг уничтожен!';
            }
            else
            {
                
$campaignUser->complete = 1;
                
$message = 'Вы уничтожили всех врагов!';
            }
        }
        else
        {
            
$campaignUser->cooldown = time()+1800;
            
$campaignUser->enemy = 1;
            
$campaignUser->battle = 0;
            
$campaignUser->find = 0;
            
$campaignUser->myHealth = Services::getAllParameters('health', Auth::user()->id);
            
$message = 'Вы потерпели поражение!';
        }
        
$user->campaign_temp = json_encode($campaignUser);
        
$user->save();
        
Session::put('result', $message);
        return 
redirect('/campaign');
    }
}
Онлайн: 2
Реклама