Вход Регистрация
Файл: attackf.php
Строк: 46
//<?
        
if ((substr($fromid,0,5)!='user.' && substr($fromid,0,4)!='npc.') || (substr($toid,0,5)!='user.' && substr($toid,0,4)!='npc.')) return;    // только игроки и нпс
    
$from=&$game["loc"][$loc][$fromid];
    if (!
$from || $from["ghost"]) return;
    
//проверим время отдыха (кроме когда отвечаем)
    
if (!$answer && time()<=$from["time_speed"]) return;
    if (
$magic$fromwar=split("|",$magic); else $fromwar=split("|",$from["war"]);
    if (
$answer$from["time_speed"]=time()+$fromwar[3];    // время для отдыха
    
$hit=$fromwar[0];
    
$b=0;
    
$loc1=split("|",$locations[$loc]);
    if (!isset(
$game["loc"][$loc][$toid]) && $fromwar[4]) {    // если ranged и не магией, то ищем в соседних локациях
        
for ($i=3;$i<count($loc1);$i+=2) if (isset($game["loc"][$loc1[$i]][$toid])) {
        
$b=1$to=&$game["loc"][$loc1[$i]][$toid]; $hit-=10; if ($hit<0$hit=0; break;
        }    
//нашли, штраф к меткости
        
}
    if (!
$b && !isset($game["loc"][$loc][$toid])) {addjournal($fromid,"Цель недоступна"); return;}
    
$to=&$game["loc"][$loc][$toid];
    if (
$to["ghost"]) return;
    
$towar=split("|",$to["war"]);

if (
$magic) {
    
$uklon     $towar[9];    // вероятность уклониться 0..100%
    
$parring     $towar[10];    // вероятность уменьшить урон на $shield
    
$shield    $towar[11];
    } else {
        
$uklon     $towar[6];
        
$parring     $towar[7];
        
$shield    $towar[8];
        }

    
// если напали на хорошего (не крим и не атакует вас), кроме животных вне охраняемой зоны (для охоты), то становимся кримами
    
$crim=$to["crim"] || substr($toid,0,9)=='npc.crim.' || (substr($toid,0,11)=='npc.animal.' && !$loc1[1]);
    if (!
$crim && $to["attack"]!=$fromiddocrim($fromid);

    
// проверим, а есть ли стрелы или что там нужно...
    
$needok=1;
    if (
$fromwar[14]) {
        if (isset(
$from["items"][$fromwar[14]])) {
            
// тратим 1 патрон
            
$item=split("|",$from["items"][$fromwar[14]]);
            
$item[1]=$item[1]-1;
            if (
$item[1]>=1) {
                
$from["items"][$fromwar[14]]=implode("|",$item);
                }else {    
// патроны кончились, заново расчет параметров
                    
unset($from["items"][$fromwar[14]]);
                    unset(
$from["equip"]["arm"]);    // убираем с рук
                    
calcparam($fromid);
                    }
            } else 
$needok=0;
        }

    if (
$needok) {
        
// проверим, попали ли
        
if (rand(0,100)<=$hit) {
            
// урон
            
$damage=rand($fromwar[1],$fromwar[2]);
            
// уклон
            
if (rand(0,100)>$uklon) {
                
// щит
                
if ($parring && $shield) if (rand(0,100)<=$parring) {if (!$magic) {$damage-=$shieldaddjournalall($loc,$to["title"]." парировал щитом");} else {$damage-=$damage*$shield/100addjournalall($loc,$to["title"]." сопротивляется магии");}}
                
// броня
                
if (!$magic && $towar[5]) $damage-=$towar[5];    // есть броня, гасим на armor, но не для магии
                
if ($damage<0$damage=0;
                if (
$fromwar[12]) $skrit=5;   //крит
                
if ($fromwar[14]) $skrit=15;  //крит лучникам
                
if ($damage && rand(0,100)<$skrit) {$damage*=2$tkrit="<b> критически</b>";} else $tkrit="";
                if (
$to["god"]) $damage=0;    // режим БОГА
                // наносим урон
                
$to["life"]-=$damage;
                if (
$to["life"]<0$to["life"]=0;
                
addjournal($fromid,"Вы нанесли ".$to["title"]." урон ".$tkrit." ".$fromwar[12]." ".$damage);
                
addjournal($toid,$from["title"]." нанес вам урон ".$tkrit." ".$fromwar[12]." ".$damage);
                
addjournalall($loc,$from["title"]." нанес ".$to["title"]." урон ".$tkrit." ".$fromwar[12]." ".$damage,$fromid,$toid);
                
// если убили, добавим труп
                
if ($to["life"]<1) {
                    include
"kill.php";
                    }
                } else {
addjournal($toid,"Вы уклонились"); addjournalall($loc,$to["title"]." уклонился",$toid);}
            } else {
addjournal($fromid,"Вы промахнулись");addjournalall($loc,$from["title"]." промахнулся",$fromid);}
        } else 
addjournal($fromid,"Нет патронов: ".$fromwar[15]);

    
// если оба живы, то обороняющийся отвечает (кроме магии)
    
if(isset($game["loc"][$loc][$fromid]) && isset($game["loc"][$loc][$toid]) && $fromid!=$toid) {
        if (!isset(
$to["attack"])) $to["attack"]=$fromid;
        if (
$answer && !$magicattack($loc,$toid,$fromid,0,0);
        }
Онлайн: 0
Реклама