Вход Регистрация
Файл: battle_mobs.php
Строк: 169
<?php

include_once("settings.php");
include_once(
"game_header.php");
include_once(
"player_battle.php");
include_once(
"player.php");
include_once(
"creature.php");
include_once(
"thing.php");
include_once(
"player_thing.php");

if(!isset(
$mode)) $mode="";

//get current round
$round $player->getRound();
$round++;
$player->setRound($round);

//get mobs for fight
$mob $player->getObject();
$creature = new CCreature($db,$mob);

//get all player things
$player_things = new CPlayerThings($db,$vnum);

//get uuid player
$uuid=$player->getUuid();
$log_player = new CLogPlayers($db,$vnum,$uuid);

//check mobs alive
if($creature->mobExists()==false){
    
$player->setState(STATE_STAND);
    
header("Location: area.php");
    exit();
}

switch (
$mode)
{
    
//player try flee
    
case "flee":
        
$player->setState(STATE_STAND);
        
$creature->setState(STATE_STAND);
        
header("Location: area.php");
        exit();
        break;
}

//get info about round
$smarty->assign('ROUND',$round);

//get player info
$player_hp $player->getHP();

$player_max_hp $player->getMaxHP();
$smarty->assign('PLAYER_MAX_HP',$player_max_hp);

//get creature
$creature_name $creature->getName();
$smarty->assign('MOB_NAME',$creature_name);
$creature_hp $creature->getCurHP();

$creature_hp_max $creature->getMaxHP();
$smarty->assign('MOB_HP_MAX',$creature_hp_max);

//calculate battle damage
$player_battle = new CPlayerBattle($db,$vnum);
$weapon $player_battle->getWeaponDamage();
$ac_player $player_battle->getAC();
$ac_mob $creature->getAC();

//player hit mobs
//check player have 2 hand weapon
if(isset($weapon[WEAR_TWO_HAND])){
    
$dm=phpmud_get_d_value($weapon[WEAR_TWO_HAND][3]);
    
$chance_player=$weapon[WEAR_TWO_HAND][2];
    
$chance_cubic=rand(0,100);
    if(
$chance_cubic<=$chance_player){
        
//player hit mobs
        
$ac_mob_cur=mt_rand(0,$ac_mob);
        
$dm_diff=$dm-$ac_mob_cur;
        
//descrease tool durability
        
$tool $player_things->getWearThing(WEAR_TWO_HAND);
        
$player_things->decreaseDurability($tool);
        if(
$dm_diff<1){
            
//armor mobs take damage on it
            
$msg="фПМУФБС ЫЛХТБ РТПФЙЧОЙЛБ ЧЩДЕТЦБМБ ХДБТ";
            
$smarty->append("battle_msg",$msg);
            
$log_player->addLogMsg($msg,$round);
        }else{
            
//calculate damage
            
$msg="чЩ ОБОЕУМЙ ЧТБЗХ РПЧТЕЦДЕОЙК ОБ <b>$dm_diff hp</b>.";
            
$smarty->append("battle_msg",$msg);
            
$log_player->addLogMsg($msg,$round);
            
//update player exp
            
$player_battle->updateExp($weapon[WEAR_TWO_HAND][1],$dm_diff);
            
$creature_hp=$creature_hp-$dm_diff;
        }
    }else{
        
//player fail hit mobs
        
$msg="чЩ РТПНБИОХМЙУШ";
        
$smarty->append("battle_msg",$msg);
        
$log_player->addLogMsg($msg,$round);
    }
}else{
    
$battle_msg="";
    
$dm_left=phpmud_get_d_value($weapon[WEAR_LEFT_HAND][3]);
    
$dm_right=phpmud_get_d_value($weapon[WEAR_RIGHT_HAND][3]);
    
    
$chance_player_left=$weapon[WEAR_LEFT_HAND][2];
    
$chance_player_right=$weapon[WEAR_RIGHT_HAND][2];
    
    
$chance_cubic_left=mt_rand(0,100);
    
$chance_cubic_right=mt_rand(0,100);
    
    
//check damage left hand
    
if($chance_cubic_left<=$chance_player_left){
        
//player hit mobs left hand
        
$ac_mob_cur=mt_rand(0,$ac_mob);
        
$dm_diff=$dm_left-$ac_mob_cur;
        
//descrease tool durability
        
$tool $player_things->getWearThing(WEAR_LEFT_HAND);
        
$player_things->decreaseDurability($tool);
        if(
$dm_diff<1){
            
//armor mobs take damage on it
            
$battle_msg.="чБЫ ХДБТ У МЕЧПК ТХЛЙ ПЛБЪБМУС ОБРТБУОЩН. <br><br>";    
        }else{
            
//calculate damage
            
$battle_msg.="чЩ ОБОЕУМЙ ЧТБЗХ РПЧТЕЦДЕОЙК ОБ <b>$dm_diff hp</b> МЕЧПК ТХЛПК. <br><br>";
            
//update player exp
            
$player_battle->updateExp($weapon[WEAR_LEFT_HAND][1],$dm_diff);
            
$creature_hp=$creature_hp-$dm_diff;
        }
    }else{
        
$battle_msg.="чЩ РЩФБМЙУШ ХДБТЙФШ УМЕЧБ, ОП РТПНБИОХМЙУШ. <br><br>";
    }
    
    
//check damage left hand
    
if($chance_cubic_right<=$chance_player_right){
        
//player hit mobs left hand
        
$ac_mob_cur=mt_rand(0,$ac_mob);
        
$dm_diff=$dm_right-$ac_mob_cur;
        
//descrease tool durability
        
$tool $player_things->getWearThing(WEAR_RIGHT_HAND);
        
$player_things->decreaseDurability($tool);
        if(
$dm_diff<1){
            
//armor mobs take damage on it
            
$battle_msg.="чБЫ ХДБТ У РТБЧПК ТХЛЙ ПЛБЪБМУС ОБРТБУОЩН. <br><br>";    
        }else{
            
//calculate damage
            
$battle_msg.="чЩ ОБОЕУМЙ ЧТБЗХ РПЧТЕЦДЕОЙК ОБ <b>$dm_diff hp</b> РТБЧПК ТХЛПК. <br><br>";
            
//update player exp
            
$player_battle->updateExp($weapon[WEAR_RIGHT_HAND][1],$dm_diff);
            
$creature_hp=$creature_hp-$dm_diff;
        }
    }else{
        
$battle_msg.="чЩ РЩФБМЙУШ ХДБТЙФШ РТБЧБ, ОП РТПНБИОХМЙУШ. <br><br>";
    }
    
    
$smarty->append("battle_msg",$battle_msg);
    
$log_player->addLogMsg($battle_msg,$round);
}

//check mobs dead
//player kill mobs
if($creature_hp<1){
            
session_register("creature_name");
            
//add player mob things
            
$thing_id $creature->getMobThings();
            
//creature dead
            
$creature->removeMob();
            
//stop player battle
            
$player->setState(STATE_STAND);

            if(
$thing_id!=0){
                
$player_things = new CPlayerThings($db,$vnum);
                
$player_things->addThing($thing_id);

                
$thing = new CThing($db,$thing_id);
                
$thing_name $thing->getName();

                
session_register("thing_name");
            }

            
header("location: battle_ok.php");

            exit();
        }else{
            
$creature->setCurHP($creature_hp);
}


//mobs attack
$dm_mob $creature->getDM();

//calculate ramdomize
$ac_player_cur=mt_rand(0,$ac_player);
$chance_mob=50;
$chance_cubic=mt_rand(0,100);

if(
$chance_cubic<=$chance_mob){
    
//mobs hit player
    
$diff_dm=$dm_mob-$ac_player;
    
    
//damage armor player
    
$wear_things=$player_things->getWearThings();
    
    
//take only armor
    
$armor_things=array();
    
    foreach(
$wear_things as $v){
        
$thing = new CThing($db,$v['obj_id']);
        
$thing_type $thing->getType();
        if(
$thing_type=="armor"){
            
$armor_things[]=$v;
        }
    }
    
    
$count_player_armor=count($armor_things);
    
    if(
$count_player_armor>0){
        
//player have armor
        
$armor_id=mt_rand(0,$count_player_armor-1);
        
$armor_id=$armor_things[$armor_id]['vnum'];
        
        
//take damage armor
        
$player_things->decreaseDurability($armor_id);
        
    }
    
    
    if(
$diff_dm<1){
        
$msg="чТБЗ РПРЩФБМУС ХДБТЙФШ РП ЧБН, ОП ЧБЫБ ВТПОС ЧЩДЕТЦБМБ ХДБТ.";
        
$smarty->append("battle_msg",$msg);
        
$log_player->addLogMsg($msg,$round);
    }else{
        
$msg="чТБЗ ХДБТЙМ РП ЧБН Й ОБОЕУ РПЧТЕЦДЕОЙК ОБ <b>$diff_dm hp</b>.";
        
$smarty->append("battle_msg",$msg);
        
$log_player->addLogMsg($msg,$round);
        
$player_hp=$player_hp-$diff_dm;
        
//mobs kill player
        
if($player_hp<1){
            
session_register("creature_name");
            
$player_hp=1;//player dead
            //transform player into start room
            
$player->setHP($player_hp);
            
$player->setRoom(1);
            
$player->setState(STATE_STAND);
            
$creature->setState(STATE_STAND);
            
header("location: battle_fail.php");
            exit();
        }else{
            
$player->setHP($player_hp);
        }
    }
}else{
    
//mob fail hit player
    
$msg="чБЫ ЧТБЗ РТПНБИОХМУС.";
    
$smarty->append("battle_msg",$msg);
    
$log_player->addLogMsg($msg,$round);
}

$smarty->assign('MOB_HP',$creature_hp);
$smarty->assign('PLAYER_HP',$player_hp);

$battle_txt=$smarty->fetch($templ_path.'/battle_mobs.tpl');

$smarty->assign('MAIN',$battle_txt);

echo(
$smarty->fetch($templ_path.'/game.tpl'));

?>
Онлайн: 0
Реклама