<?php
#die('Пожжалуйста, Подожждите. Через полчаса починим.');
#update users set login='Riffle_old' where login='Riffle';
#update users set login='Riffle' where login='Rambest';
#update chat set nick='Riffle_old' where nick='Riffle';
#update chat set nick='Riffle' where nick='Rambest';

include_once("database.php");
include_once('game_functions.php');
function usemagick($value) { # Ссылка на использование магии (для шмоток) return $text
global $myinfo,$edit;
  switch($value->zakl?$value->zakl:$value->vzakl) {
  case 'attack':$use="<A HREF=\"JavaScript:magicklogin('Нападение', 'main.php?edit=".$edit."', 'attack', ".$value->id_thing.", '".$myinfo->name."', '', ',,,,,,')\">исп-ть</A><BR>";break;
  case 'cure1':
  if (checkneeds($myinfo,$value)) {
    $use="<A HREF=\"JavaScript:magicklogin('Лечение легких травм', 'main.php?edit=".$edit."', 'cure1', ".$value->id_thing.", '".$myinfo->name."', '', ',,,,,,')\">исп-ть</A><BR>";
  }
  break;
  case 'cure2':
  if (checkneeds($myinfo,$value)) {
    $use="<A HREF=\"JavaScript:magicklogin('Лечение средних травм', 'main.php?edit=".$edit."', 'cure2', ".$value->id_thing.", '".$myinfo->name."', '', ',,,,,,')\">исп-ть</A><BR>";
  }
  break;
  case 'antimirrorrrrr':
  if (checkneeds($myinfo,$value)) {
    $use="<A HREF=\"JavaScript:magicklogin('Переманить клона', 'battle.php', 'antimirror', ".$value->id_thing.", 'клон', '', ',,,,,,')\">исп-ть</A><BR>";
  }
  break;
  case 2: $use="<A HREF=\"JavaScript:UseMagick('Лечение тяжелых травм','main.php', 'cure3', '', ".$value->id_thing.", '', ',,,,,,')\">исп-ть</A><BR>"; break;
  case 111:$use="<A HREF=\"JavaScript:magicklogin('Кровавое нападение', 'main.php', 'attackb', ".$value->id_thing.", 'login', '', ',,,,,,')\">исп-ть</A><BR>";break;
  }
  return $use;
}
#-----------------------------------------------------------------------------------------------------
class ActivePriems {
  var $priems;
  function ActivePriems($id_person){
    $res=db_use('query',"select * from person_on where type=3 and id_person='".$id_person."'");
    $arr=array ();
    unset($i);while ($i<mysql_num_rows($res)) {
      $i++;$s=mysql_fetch_array($res);
      $arr[$s['pr_name']]['active']=$s['pr_active'];
      $arr[$s['pr_name']]['uses']=$s['pr_cur_uses'];
      $arr[$s['pr_name']]['wait']=$s['pr_wait_for'];
    }
    $this->priems=$arr;
}

}
#-----------------------------------------------------------------------------------------------------
class prieminfo{
  var $id_priem;
  var $name;
  var $type;
  var $priem;
  var $n_block;
  var $n_counter;
  var $n_hit;
  var $n_hp;
  var $n_krit;
  var $n_parry;
  var $minlevel;
  var $wait;
  var $maxuses;
  var $minhp;
  var $sduh_proc;
  var $sduh;
  var $hod;
  var $intel;
  var $mana;
  var $opisan;
  var $m_magic1;
  var $m_magic2;
  var $m_magic3;
  var $m_magic4;
  var $m_magic5;
  var $m_magic6;

  var $m_magic7;
  var $needsil;
  var $needvyn;
  function prieminfo($s,$priem) { # либо по id ($s) либо по названию $priem
    if ($s) {
      $res=db_use('array',"select * from priem where id_priem='".$s."';");
    }else{
      $res=db_use('array',"select * from priem where priem='".$priem."';");
    }
    $this->id_priem=$res['id_priem'];#$id_priem;
    $this->name=$res['name'];
    $this->type=$res['type'];
    $this->priem=$res['priem'];
    $this->n_block=$res['n_block'];
    $this->n_counter=$res['n_counter'];
    $this->n_hit=$res['n_hit'];
    $this->n_hp=$res['n_hp'];
    $this->n_krit=$res['n_krit'];
    $this->n_parry=$res['n_parry'];
    $this->minlevel=$res['minlevel'];
    $this->wait=$res['wait'];
    $this->maxuses=$res['maxuses'];
    $this->minhp=$res['minhp'];
    $this->sduh_proc=$res['sduh_proc'];
    $this->sduh=$res['sduh'];
    $this->hod=$res['hod'];
    $this->intel=$res['intel'];
    $this->mana=$res['mana'];
    $this->opisan=$res['opisan'];
    $this->m_magic1=$res['m_magic1'];
    $this->m_magic2=$res['m_magic2'];
    $this->m_magic3=$res['m_magic3'];
    $this->m_magic4=$res['m_magic4'];
    $this->m_magic5=$res['m_magic5'];
    $this->m_magic6=$res['m_magic6'];
    $this->m_magic7=$res['m_magic7'];
    $this->needsil=$res['need_sil'];
    $this->needvyn=$res['need_vyn'];
  }
  function check_hars($myinfo,$n) { # проверка. n=0: все хар-ки n=1: только жизнь и мана
    if($n==0) {
      if(($this->minlevel<=$myinfo->level) && ($this->intel<=$myinfo->sumall('intel')) && ($this->needsil<=$myinfo->sumall('sil')) && ($this->needvyn<=$myinfo->sumall('vyn')) && ($this->m_magic1<=$myinfo->sumall('m_magic1')) && ($this->m_magic2<=$myinfo->sumall('m_magic2')) && ($this->m_magic3<=$myinfo->sumall('m_magic3')) && ($this->m_magic4<=$myinfo->sumall('m_magic4')) && ($this->m_magic5<=$myinfo->sumall('m_magic5')) && ($this->m_magic6<=$myinfo->sumall('m_magic6')) && ($this->m_magic7<=$myinfo->sumall('m_magic7')) ) {
        return true;
      }else{return false;}
    }elseif($n==1){
      if($this->check_hars($myinfo,0) && ($this->mana<=$myinfo->mana) && ($this->minhp<=$myinfo->life)) {
        return true;     # !!!!!!!!!!!!!!!! НЕ ДОДЕЛАНО !!!!!!!!!!!!!!!!!!!!!!
      }else{return false;}
    }
  }
  function checkbattlehars($myinfo,$hit,$krit,$parry,$counter,$block,$s_duh) { # влад магией, статы + хар-ки битвы
  if (
  $hit>=$this->n_hit &&
  $krit>=$this->n_krit &&
  $parry>=$this->n_parry &&
  $counter>=$this->n_counter &&
  $hp>=$this->n_hp &&
  $block>=$this->n_block &&
  $myinfo->level>=$this->minlevel &&
  $myinfo->life>=$this->minhp &&
  ($s_duh && ($s_duh>=$this->sduh OR $this->sduh_proc)) &&
  $myinfo->sumall('intel')>=$this->intel &&
  $myinfo->mana>=$this->mana &&
  $myinfo->sumall('m_magic1')>=$this->m_magic1 &&
  $myinfo->sumall('m_magic2')>=$this->m_magic2 &&
  $myinfo->sumall('m_magic3')>=$this->m_magic3 &&
  $myinfo->sumall('m_magic4')>=$this->m_magic4 &&
  $myinfo->sumall('m_magic5')>=$this->m_magic5 &&
  $myinfo->sumall('m_magic6')>=$this->m_magic6 &&
  $myinfo->sumall('m_magic7')>=$this->m_magic7 &&
  $myinfo->sumall('sil')>=$this->needsil &&
  $myinfo->sumall('vyn')>=$this->needvyn ) {
  return true;}
  }
  }
#-----------------------------------------------------------------------------------------------------
function printinfo($thing,$myinfo,$check,$ok_needs_text,$text_use,$price) { # вывод инфо о вещи на экран
global $harnames,$cityname,$edit;
  unset ($s,$v,$v2);
  if ($thing->minlevel) {
    if ($thing->minlevel>$myinfo->level) {$v=true; } else {$v=false;};if ($v) {$v2=true;}
    $s=$s."&bull; ".($v?"<FONT COLOR=RED>":"")."Уровень: ".$thing->minlevel."<BR>".($v?"</FONT>":"");
  }
  foreach ($thing->needstats as $key1 => $thing1) {
    if ($thing1>$myinfo->sumall($key1)) {$v=true;} else {$v=false;};if ($v) {$v2=true;}
    $s=$s."&bull; ".($v?"<FONT COLOR=RED>":"").$harnames[$key1].": ".viewvalue($key1,$thing1,0)."<BR>".($v?"</FONT>":"");
  }
  $s.=($thing->person?"&bull; ".($myinfo->name!=$thing->person?"<FONT COLOR=RED>":"")."Логин: ".$thing->person."".($myinfo->name!=$thing->person?"</FONT>":"")."<BR>":"");
  $s.=($thing->clan?"&bull; ".($myinfo->clanname!=$thing->clan?"<FONT COLOR=RED>":"")."Клан: ".$thing->clan."".($myinfo->clanname!=$thing->clan?"</FONT>":"")."<BR>":"");
  $textout.="<TD align=center><IMG SRC=\"../i/items/".$thing->pic.".gif\" ".widhei($thing->type2)." ><BR>";
  #$ok_needs_text - если параметры ОК
  #$text_use - ваще
  if (!$v2) {$textout.= $ok_needs_text;}
  if (!$thing->gift && $thing->id_thing && $thing->type1==4 && $thing->type2==16){
    $textout.="<br />
<a href=# onclick=\"findlogin('Подарить', 'main.php?podarit=".$thing->id_thing."', 'komu', '',1,'Поздравление:<br /><INPUT TYPE=text name=coment width=100>')\">Подарить</a><br />";
  }
  if ($thing->id_thing && $thing->type2==14 && $thing->type1==3 && $thing->maxsrok>$thing->srok && $thing->die_time>time()){
    global $session;
    $textout.="<br />
<a href=# onclick=\"if (confirm('Использовать сейчас?')) document.location.href='main.php?edit=3&elixir=".$thing->id_thing."&mdt=".md5($myinfo->id_person.':'.$session->started_session.':'.$thing->id_thing)."';\">выпить</a><br />";
  }
  if ($thing->id_thing && ( ($thing->zakl=='hidden' && $thing->maxsrok>$thing->srok) OR ($thing->vzakl=='hidden'&& $thing->vmaxsrok>$thing->vsrok)) ){
    global $session;
    $textout.="<br />
<a href=# onclick=\"if (confirm('Использовать сейчас?')) document.location.href='main.php?edit=2&svitself=".$thing->id_thing."&mdt=".md5($myinfo->id_person.':'.$session->started_session.':'.$thing->id_thing)."';\">использовать</a><br />";
  }

  if ($thing->gift){
    $res=db_use('array',"select u.login,p.persname,p.sex from users u LEFT JOIN person p on p.id_person=u.id_person where u.id_person='".$thing->gift."'");
    $giftstring="Этот предмет вам подарил".($res['sex']?'а':'')." ".($res['login']?$res['login']:$res['persname']).". Вы не сможете передать этот предмет кому-либо еще.";
  }
  $textout.=$text_use."</TD>
    <TD valign=top><A HREF=\"/encicl/object/".$thing->pic.".html\" target=_blank>".$thing->name."</a>
    ".($thing->clan?"<img src=../i/klan/".$thing->clan.".gif>":'')."
    <IMG SRC=\"../i/align".$thing->align.".gif\" WIDTH=12 HEIGHT=15>".($thing->art?"<IMG SRC=\"../i/artefact.gif\" WIDTH=18 HEIGHT=16>":"").($thing->gift?"<IMG SRC=\"../i/podarok.gif\" WIDTH=18 HEIGHT=16 ALT=\"".$giftstring."\">":"")."
      (Масса: ".$thing->weight.")
        <BR>
    <b>Цена: ".$price."</b> <BR>      Долговечность: ".($thing->maxsrok && isset($thing->srok)?$thing->srok:'0')."/".($thing->maxsrok?$thing->maxsrok:$thing->maxsrok_default)."</FONT><BR> ".($thing->stats['versr']?"Вероятность срабатывания: ".$thing->stats['versr']."%<br>":"");
  switch ($thing->zakl){
  case 'attack':$x='внезапность';break;
  case 'chesnok':$x='защита от вампиров';break;
  case 'cure1':$x='лечение';break;
  case 'cure2':$x='лечение';break;
  case 'cureHP600':$x='HP +600';break;
  case 'cureHP1200':$x='HP +1200';break;
  case 'mirror':$x='порождение клона';break;
  case 'hidden':$x='невидимость';break;
  case 'antimirror':$x='переманивание клона';break;
  }
  if ($x) { $textout.='<FONT COLOR=880000>Наложены заклятия:</FONT> '.$x.'<br>';}
  $textout.="
  <B>Требуется минимальное:</B><BR>";
if (
($myinfo->clanname==$thing->clan && $thing->clan!='') or
($myinfo->name==$thing->person && $thing->person!='') or $myinfo->id_person==12
or ($thing->clan=='' && ($thing->person=='' or $thing->person=='ничейная'))) {
  $textout.=$s;unset($s);
  if (true) {
    $textout.="<B>Действует на:</B><BR>";
    foreach ($thing->stats as $key1 => $thing1) {
      if ($key1!='versr') {
        $textout.="&bull; ".$harnames[$key1].": ".viewvalue($key1,$thing1,1)."<BR>";
      }
    }

    $textout.= ($thing->dmin?"&bull; Минимальное повреждение: ".$thing->dmin."<br />":'');
    $textout.= ($thing->dmax?"&bull; Максимальное повреждение: ".$thing->dmax."<br />":'');
    $textout.= ($thing->plushp?"&bull; Уровень жизни (HP): ".($thing->plushp>0?"+":"").$thing->plushp."<BR>":"");
    if ($thing->vzakl!='') {
      $textout.= "<b>Встроена магия</b>: <img src=../i/items/".($thing->vzakl).".gif WIDTH=40 HEIGHT=25> ".(!$v2?usemagick($thing):'');
      if ($thing->vzakl=='mirror') {
        $textout.= "<small></small>";
        $date=$thing->vdaytime;
        if ($date!=date('Y-m-d',time())) {$isp=0;}else{$isp=$thing->vsrok;}
        if ($thing->id_thing>0) {
          $textout.= " (".strval($isp+0).'/'.($thing->id_thing?$thing->vmaxsrok:$thing->vmaxsrok_default).")<BR>";
        }else{
          $textout.= " (".$thing->vmaxsrok_default." )<BR>";
        }
      }else{
      $textout.= " (".strval($thing->vsrok+0).'/'.($thing->id_thing?$thing->vmaxsrok:$thing->vmaxsrok_default).")<BR>";
      }
    }
  }
  if ($thing->srokgodn) {
    $textout.= "<small><font color=brown>Срок годности ".$thing->srokgodn." сут.</font></small><br />";
  }
  if ($thing->type1==1 && $thing->type2==2 && $thing->type3==3) {
    $textout.= "<small><font color=brown>второе оружие</font></small><br />";
  }elseif ($thing->type1==1 && $thing->type2==2 && $thing->type3==2) {
    $textout.= "<small><font color=brown>двуручное оружие</font></small><br />";
  }elseif ($thing->type1==1 && $thing->type2==3 && $thing->type3==3) {
    $textout.= "<small><font color=brown>футболка</font></small><br />";
  }elseif ($thing->type1==1 && $thing->type2==3 && $thing->type3==2) {
    $textout.= "<small><font color=brown>легкая броня</font></small><br />";
  }elseif ($thing->type1==1 && $thing->type2==3 && $thing->type3==1) {
    $textout.= "<small><font color=brown>тяжелая броня</font></small><br />";
  }elseif ($thing->type1==1 && $thing->type2==12) {
    $textout.= "<small><font color=brown>карманная вещь</font></small><br />";
  }
  if ($thing->die_time) {
    if ($thing->die_time<time()) { #испорчено
    $textout.= "<small><font color=red>Срок годности истек</font></small><br />";
    }else{
    $r=$thing->die_time-time();
    $days=(int)($r/(60*60*24));
    $hours=(int)(($r-$days*60*60*24)/(60*60));
    $mins=(int)(($r-$days*60*60*24-$hours*60*60)/(60));
    $textout.= "<small><font color=brown>Срок годности еще: ".($days?$days." дн. ":'').$hours." ч. ".($days?'':$mins.' мин.')."</font></small><br />";
    }
  }
  if ($thing->opisan) {$textout.= "<small><font color=black style=\"background-color:#F3F0D9;\">".$thing->opisan."</font></small><br />";}
  if ($thing->opisan) {$textout.= "<small><font color=black style=\"background-color:#f3d9e6;\">".$thing->coment."</font></small><br />";}
  $textout.= "<small>Сделано в ".$cityname[1]."</small><BR>   ".($thing->noremont?"<small><font color=brown>Предмет не подлежит ремонту</font></small><BR>":'')." </small>";
}else{
  if($thing->clan) {
    $textout.= "Параметры являются клановой тайной <b>".$thing->clan."</b><br />";
  }elseif($thing->person) {
    $textout.= "Параметры являются тайной персонажа <b>".$thing->person."</b><br />";
  }else{
    $textout.= "Ошибка. Обратитесь к администратору<br />";
  }
}

echo $textout;
return $textout;
}
class thinginfo {
  var $id_thing; # Номер в таблице
  var $id_thing2; # Номер в таблице
  var $name; # Название предмета
  var $type1; # тип в инвентаре
  var $type2; # тип вещи
  var $type3; # подтип
  var $type4; # тип оружия
  var $pic; # англ название
  var $gos_price; # гос цена
  var $ekr; # гос цена
  var $art; # гос цена
  #---- Влияния ----
  var $stats; # влияние на статы
  var $plushp; # + НР
  #---- Требования ----
  var $needstats; # минимальные требования статов
  var $minlevel; # минимальный уровень
  var $maxsrok_default;
  var $align;
  #+++++++++++++++++++++++++++
  var $gift;
  var $id_city;
  var $srok;
  var $maxsrok;

  var $zakl;
  #srok/maxsrok
  var $vzakl;
  var $vsrok;
  var $vmaxsrok;

  var $weight;
  var $dmin;
  var $dmax;
  var $noremont;
  var $person;
  var $clan;
  function thinginfo($id_thing2) { # инфо по id_thing2
    $res=db_use('array',"select * from thing_har where id_thing2='".$id_thing2."';");
    $this->id_thing2=$id_thing2;
    $this->name=$res['name'];
    $this->type1=$res['type1'];
    $this->type2=$res['type2'];
    $this->type3=$res['type3'];
    $this->type4=$res['type4'];
    $this->pic=($res['legit']>0?$res['newpic']:$res['pic']);
    $this->gos_price=$res['gos_price'];
    $this->art=$res['artefact'];
    $this->ekr=$res['ekr'];
    $this->plushp=$res['plushp'];
    $this->minlevel=$res['minlevel'];

    $this->zakl=$res['zakl'];
    $this->maxsrok_default=$res['maxsrok_default'];

    $this->vzakl=$res['vzakl'];
    $this->vmaxsrok_default=$res['vmaxsrok_default'];

    $this->srokgodn=$res['srokgodn'];
    $this->opisan=$res['opisan'];

    $this->align=$res['align'];
    $this->noremont=$res['noremont'];
    $this->weight=$res['weight'];
    $this->dmin=$res['dam1'];
    $this->dmax=$res['dam2'];
    $this->person=$res['person'];
    $this->clan=$res['clan'];
    $res=db_use('query',"select h.har,t.value from thing_stat t LEFT JOIN har h on h.id_har=t.id_har where id_thing2='".$id_thing2."';");
    $a = array();
    while ($i<mysql_num_rows($res)) {
      $i++;$s=mysql_fetch_array($res);
      $a[$s['har']]=$s['value'];
     } unset($i);
    $this->stats=$a;  unset($a);
    $res=db_use('query',"select h.har,t.value from thing_needstat t LEFT JOIN har h on h.id_har=t.id_har where id_thing2='".$id_thing2."';");
    $a = array();
    while ($i<mysql_num_rows($res)) {
      $i++;$s=mysql_fetch_array($res);
      $a[$s['har']]=$s['value'];
     } unset($i);
    $this->needstats=$a;
  }
  function thinginfoall($id_thing) { # добавляет доп инфу по id_thing
    $res=db_use('array',"select * from thing where id_thing='".$id_thing."';");
    $this->gift=$res['isgift'];
    $this->coment=$res['coment'];
    $this->id_city=$res['id_city'];
    $this->srok=$res['srok'];
    $this->maxsrok=$res['maxsrok'];
    $this->vzakl=$res['vzakl'];
    $this->vsrok=$res['vsrok'];
    $this->vmaxsrok=$res['vmaxsrok'];
    $this->vdaytime=$res['vdaytime'];
    $this->id_thing=$id_thing;
    $this->id_thing2=$res['id_thing2'];
    $this->die_time=$res['die_time'];
  }
}

#-----------------------------------------------------------------------------------------------------
function fullthing($id_thing) { # авто инфа по id_thing если неизвестная id_thing2 (id_thing2, id_thing)
  $res=db_use('array',"select id_thing2 from thing where id_thing='".$id_thing."';");
  $a=new thinginfo($res['id_thing2']);
  $a->thinginfoall($id_thing);
  return $a;
}
function getcitiesnames() { # все города из city id=>name
  $res=db_use('query',"select id_city,cityname from city order by id_city;");
    while ($i<mysql_num_rows($res)) {
      $i++;$s=mysql_fetch_array($res);
    $h[$s['id_city']]=$s['cityname'];
  }
  return $h;
}
function getharnames() { # названия характеристик
  $h=array(
'obkdur'=>'',
'hp'=>'Уровень жизни (HP)',
'sil'=>'Сила',
'lov'=>'Ловкость',
'intu'=>'Интуиция',
'vyn'=>'Выносливость',
'intel'=>'Интеллект',
'mudr'=>'Мудрость',
'duh'=>'Духовность',
'vol'=>'Воля',
'svob'=>'Свобода духа',
'boj'=>'Божественность',
'kr'=>'Мф. крит. удара',
'mkr'=>'Мф. мощности крит. удара',
'prkr'=>'Мф. против крит. удара',
'uv'=>'Мф. увертывания',
'pruv'=>'Мф. против увертывания',
'kud'=>'Мф. контрудара',
'par'=>'Мф. парирования',
'bls'=>'Мф. блока щитом',
'masw4'=>'Мастерство владения мечами',
'masw3'=>'Мастерство владения дубинами, булавами',
'masw5'=>'Мастерство владения магическими посохами',
'masw1'=>'Мастерство владения ножами, кастетами',
'masw2'=>'Мастерство владения топорами, секирами',
'm_magic1'=>'Мастерство владения стихией Огня',
'm_magic2'=>'Мастерство владения стихией Воды',
'm_magic3'=>'Мастерство владения стихией Воздуха',
'm_magic4'=>'Мастерство владения стихией Земли',
'm_magic5'=>'Мастерство владения магией Света',
'm_magic6'=>'Мастерство владения серой магией',
'm_magic7'=>'Мастерство владения магией Тьмы',
'dec_transfer'=>'Изворотливый',
'dec_travma'=>'Стойкий',
'fast_homeworld'=>'Быстрый',
'inc_expr'=>'Сообразительный',
'inc_friends'=>'Дружелюбный',
'inc_hobby'=>'Общительный',
'max_inventory'=>'Запасливый',
'num_transfer'=>'Коммуникабельный',
'speed_HP'=>'Двужильный',
'speed_mana'=>'Здравомыслящий',
'mur'=>'Мф. мощности урона (%)',
'antimur'=>'Мф. сопротивление (%)',
'mms'=>'Мф. мощности магии стихий (%)',
'decmana'=>'Уменьшение расхода маны (%)',
'defmagic'=>'Защита от магии',
'defogn'=>'Защита от магии огня',
'defzem'=>'Защита от магии земли',
'defvod'=>'Защита от магии воды',
'defvoz'=>'Защита от магии воздуха',
'defdark'=>'Защита от магии тьмы',
'defsvet'=>'Защита от магии света',
'zur'=>'Защита от урона',
'defdrob'=>'Защита от дробящего урона',
'defrez'=>'Защита от режущего урона',
'defkol'=>'Защита от колющего урона',
'defrub'=>'Защита от рубящего урона',
'podav_defmag'=>'Подавление защиты от магии',
'br1'=>'Броня головы',
'br2'=>'Броня корпуса',
'br3'=>'Броня пояса',
'br4'=>'Броня ног',
'atdark'=>'Атаки тьмой',
'atlight'=>'Атаки светом',
'atkol'=>'Колющие атаки',
'atrez'=>'Режущие атаки',
'atrub'=>'Рубящие атаки',
'atdrob'=>'Дробящие атаки',
'atogn'=>'Огненные атаки',
'atled'=>'Ледяние атаки',
'atelec'=>'Электрические атаки',
'atzem'=>'Земляные атаки',
'versr'=>'Вероятность срабатывания (%)',
'magic_timeout'=>'Продолжительность действия магии',
'h81'=>'(неизвестный параметр)',
'br4min'=>'Броня ног (мин)',
'br2min'=>'Броня корпуса (мин)',
'br1min'=>'Броня головы (мин)',
'masweap'=>'Мастерство владения оружием',
'zoneblock'=>'зона блокирования',
'mosh_rez'=>'Мощность режущего удара',
'skv_brn'=>'МФ удара сквозь броню',
'plusmana'=>'увеличивает уровень Маны',
'plus_hpspeed'=>'Скорость восстановления HP',
'plus_manaspeed'=>'Скорость восстановления маны',
'mosh_drob'=>'Мощность дробящего урона',
'mosh_kol'=>'Мощность колющего урона',
'mosh_rub'=>'Мощность рубящего урона',
'mosh_voz'=>'Мощность магии воздуха',
'mosh_ogn'=>'Мощность магии огня',
'mosh_vod'=>'Мощность магии воды',
'mosh_zem'=>'Мощность магии земли',
'br3min'=>'Броня пояса (мин)',
'obkur'=>'Обкуренность',
'goodnast'=>'Хорошее настроение',
'dopwei'=>'Вместимость рюкзака'
  );
  return $h;
}
#-----------------------------------------------------------------------------------------------------
function typeofmf($mf) { # тип модификатора по названию sil: 1-статовый, 2-мф, 3-мастерство оружием, 4-мастерство магией, 6-mur hp mms decmana???
  if ($mf=='sil' OR $mf=='lov' OR $mf=='intu' OR $mf=='vyn' OR $mf=='intel' OR $mf=='mudr' OR $mf=='duh' OR $mf=='vol' OR $mf=='svob' OR $mf=='boj') {$type=1;}
  if ($mf=='kr' OR $mf=='mkr' OR $mf=='prkr' OR $mf=='uv' OR $mf=='pruv' OR $mf=='kud' OR $mf=='par' OR $mf=='bls') {$type=2;}
  if ($mf=='masw4' OR $mf=='masw3' OR $mf=='masw5' OR $mf=='masw1' OR $mf=='masw2') {$type=3;}
  if ($mf=='m_magic1' OR $mf=='m_magic2' OR $mf=='m_magic3' OR $mf=='m_magic4' OR $mf=='m_magic5' OR $mf=='m_magic6' OR $mf=='m_magic7') {$type=4;}
  if ($mf=='mur' OR $mf=='hp' OR $mf=='mms' OR $mf=='decmana') {$type=6;}
  return $type;
}
class botinfo { #name id_maskperson id_bot life
var $name;
var $id_maskperson;
var $id_bot;
var $life;
function botinfo ($id_bot) {
$res=db_use('array',"select * from bots where id_bot='".$id_bot."';");
$this->name=$res['name'];
$this->id_maskperson=$res['id_maskperson'];
$this->id_bot=$res['id_bot'];
$this->life=$res['life'];
}
}
class Persinfo {
  var $name;  var $id_person; var $level; var $align; var $clanname; var $clanzvan; var $hars; #???-?? (??????) sil->20 lov->20
  var $id_city; var $id_step; var $id_clan; var $blocked;
  var $puton; var $sex; var $shadow;  var $money; var $regeneration;  var $life;
  var $mana;  var $expir; var $bwins; var $bloss; var $bnich; var $stat_points; var $mast_points;
  var $osob_points; var $roomname; var $cityborn; var $dateborn; var $online; var $citycurname;
  var $battle; var $userbirthday;
  # get_chat_params
  var $id_room;

  var $chatcolor;

  # anketa_adds()
  var $realname;  var $cityreal;  var $icq; var $hide_icq;
  var $homepage; var $about; var $hobby; var $email;

  var $travma_type; var $travma_id; var $travma_time;

  var $veteran;
function battle_vars() { #b.*,bu.id_enemy,bu.s_duh,bu.hit,bu.krit,bu.block,bu.counter,bu.parry,bu.hp,bu.team
  $battle=db_use('array',"SELECT b.*,bu.id_enemy,bu.s_duh,bu.hit,bu.krit,bu.block,bu.counter,bu.parry,bu.hp,bu.team,bu.exp
FROM battle_units bu
LEFT JOIN battle b on b.id_battle=bu.id_battle
WHERE bu.id_person='".strval($this->id_person)."' AND b.id_battle='".strval($this->id_battle)."';");
  $this->battle_var=$battle;
}

function sumall($mf) { # усиления + модификаторы
$a=$this->usilen($mf);#echo $mf;
 #if ($mf=='max') {echo '>'.$a[$mf].'<'.$this->sumstat($mf).':('.$mf.')<br />';}
 return $a[$mf]+$this->sumstat($mf)+$this->hars[typeofmf($mf)][$mf]+($mf=='mur'?$this->sumall('vol'):0)+($mf=='antimur'?$this->sumall('duh'):0);
}
function usilen($mf) { # все усиления от статов и предметов
  $sil=$this->sumstat('sil');
  $lov=$this->sumstat('lov');
  $intu=$this->sumstat('intu');
  $vyn=$this->sumstat('vyn');
  $intel=$this->sumstat('intel');
  $mudr=$this->sumstat('mudr');
  $vol=$this->sumstat('vol');
  $duh=$this->sumstat('duh');


  if ($this->travma_time>time()) {
    switch ($this->travma_type) {
    case 1:
      switch ($this->travma_id) {
      case 1:$lov+=-10;$a['lov']+=-10;break;
      case 2:$sil+=-10;$a['sil']+=-10;$intu+=-5;$a['intu']+=-5;$intel+=-10;$a['intel']+=-10;break;
      case 3:$intu+=-10;$a['intu']+=-10;break;
      }
      break;
    case 2:
      switch ($this->travma_id) {
      case 1:$sil+=-20;$a['sil']+=-20;$intu+=-10;$a['intu']+=-10;break;
      }
      break;
    }
  }
  if ($this->is_bot) {
    $res=db_use('query',"select * from obkast where id_person = '".$this->id_maskperson."' and obend>'".time()."' order by obtime asc");
  }
  else{
    $res=db_use('query',"select * from obkast where id_person = '".$this->id_person."' and obend>'".time()."' order by obtime asc");
    if ($this->id_person>100000) $res=db_use('query',"select * from obkast where id_person = '".$this->id_maskperson."' and obend>'".time()."' order by obtime asc");
  }
  unset($i);while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);
      switch ($s['har']) {
      case 'sil': if (!$statel) { $sil+=$s['value']; $a[$s['har']]+=$s['value'];$statel=true;}break;
      case 'lov': if (!$statel) {$lov+=$s['value']; $a[$s['har']]+=$s['value'];$statel=true;} break;
      case 'intu': if (!$statel) {$intu+=$s['value']; $a[$s['har']]+=$s['value'];$statel=true;} break;
      case 'vyn': if (!$statel) {$vyn+=$s['value'];  $a[$s['har']]+=$s['value'];$statel=true;}break;
      case 'intel': if (!$statel) {$intel+=$s['value']; $a[$s['har']]+=$s['value'];$statel=true;} break;
      case 'mudr': if (!$statel) {$mudr+=$s['value'];  $a[$s['har']]+=$s['value'];$statel=true;}break;
      case 'duh': if (!$statel) {$duh+=$s['value'];  $a[$s['har']]+=$s['value'];$statel=true;}break;
      case 'vol': if (!$statel) {$vol+=$s['value'];  $a[$s['har']]+=$s['value'];$statel=true;}break;
      default: $a[$s['har']]+=$s['value']; break;
      }

  }

    #Чудовищная Сила
  if ($sil>=100) {$a['mur']+=25;}
  elseif ($sil>=75) {$a['mur']+=17;}
  elseif ($sil>=50) {$a['mur']+=10;}
  elseif ($sil>=25) {$a['mur']+=5;}
  #Стальное Тело
  if ($vyn>=100) {$a['hp']+=250;}
  elseif ($vyn>=75) {$a['hp']+=175;}
  elseif ($vyn>=50) {$a['hp']+=100;}
  elseif ($vyn>=25) {$a['hp']+=50;}
  #Скорость Молнии
  if ($lov>=100) {$a['par']+=15;$a['prkr']+=30;$a['uv']+=70;}
  elseif ($lov>=75) {$a['par']+=15;$a['prkr']+=15;$a['uv']+=35;}
  elseif ($lov>=50) {$a['par']+=5;$a['prkr']+=15;$a['uv']+=35;}
  elseif ($lov>=25) {$a['par']+=5;}
  #Разум
  if ($intel>=100) {$a['mms']+=25;}
  elseif ($intel>=75) {$a['mms']+=17;}
  elseif ($intel>=50) {$a['mms']+=10;}
  elseif ($intel>=25) {$a['mms']+=5;}
  #Сила Мудрости
  if ($mudr>=100) {$a['decmana']+=12;}
  elseif ($mudr>=75) {$a['decmana']+=8;}
  elseif ($mudr>=50) {$a['decmana']+=5;}
  elseif ($mudr>=25) {$a['decmana']+=2;}
  #Предчувствие
  if ($intu>=100) {$a['mkr']+=12;$a['kr']+=70;$a['pruv']+=30;}
  elseif ($intu>=75) {$a['mkr']+=8;$a['kr']+=35;$a['pruv']+=15;}
  elseif ($intu>=50) {$a['mkr']+=10;$a['kr']+=35;$a['pruv']+=15;}
  elseif ($intu>=25) {$a['mkr']+=10;}

  return $a;
}
function travmtext() {
  if ($this->travma_time>time()) {
    switch ($this->travma_type) {
    case 0:
      switch ($this->travma_id) {
      case 0:return 'буээ';break;
      }
    break;
    case 1:
      switch ($this->travma_id) {
      case 0:return 'буэээээ';break;
      case 1:return 'трахнули по голове';break;
      case 2:return 'отпинали ногами за маринад';break;
      case 3:return 'дали в морду';break;
      }
    break;
    case 2:
      switch ($this->travma_id) {
      case 1:return 'ахтунг';break;
      case 2:return 'фингал';break;
      }
    break;
    }
  }
}
function count_attacks() {
return (($this->puton['3']->id_thing && $this->puton['10']->type3==3 && $this->puton['10']->id_thing)?2:1);
}
function get_chat_params() {
  $res=db_use('array',"select p.id_room,p.chatcolor from person p where p.id_person='".$this->id_person."';");
  $this->id_room=$res['id_room'];
  $this->chatcolor=$res['chatcolor'];
}
function Persinfo ($id_person) {
  if ($id_person>100000) {
    $bot=new botinfo($id_person);
    if (!$bot->id_bot) {echo "ошибка botclass";die;}
    $this->is_bot=true;
    $this->id_maskperson=$bot->id_maskperson;
    $this->name=$bot->name;
    $this->id_person=$id_person;#echo $id_person;
    $id_person=$bot->id_maskperson;
    $this->life=$bot->life;
  }else{
    checkuplevel($id_person);
  }
  $res=db_use('array',"select u.userbirthday,p.osob_points,p.id_battle,p.travma_type,p.`2007`,p.veteran,p.travma_id,p.travma_time,p.unchaos_timestamp,u.email,p.stat_points,p.mast_points,p.dateborn,p.money,p.gold,p.wins,p.loss,p.nich,p.exp,p.regen_timestamp,p.regeneration,p.life,p.mana,p.sex,p.shadow,u.login,p.blocked, p.id_city, p.persname, p.id_person, p.level, p.align,c.clanname,c.clanalign,p.id_clan,p.clanzvan,ct.cityname,ctt.cityname as citycurname,po.id_person as inv from person p
            LEFT JOIN clans c on p.id_clan=c.id_clan
            LEFT JOIN users u on p.id_person=u.id_person
            LEFT JOIN city ct on ct.id_city=p.id_cityborn
            LEFT JOIN city ctt on ctt.id_city=p.id_city
            LEFT JOIN person_on po on po.id_person=u.id_person and po.type=5
            where p.id_person='".$id_person."';");
  # установка клановых образов
  global $clanobraz;
  if ($clanobraz[$res[id_clan]] && $res['shadow']!=$clanobraz[$res[id_clan]] && (strval($res[shadow])>0 && $res[shadow][0]!='0') ) {
    echo "<script>alert('Установка кланового образа');</script>";
    #db_use('query',"update person set shadow='{$clanobraz[$res[id_clan]]}' where id_person='".$id_person."'");
  }else{
    $key=array_search($res[shadow],array_values($clanobraz));
    if ($key && $this->id_clan!=$key) {
      echo "<script>alert('Снятие кланового образа');</script>";
      #db_use('query',"update person set shadow='0.jpg' where id_person='".$id_person."'");
    }unset($key);
  }

  if (!$this->is_bot) {
    $this->name=($res['persname']?$res['persname']:$res['login']);
    $this->id_person=$res['id_person'];
    $this->life=$res['life'];
  }
  $this->level=0+$res['level'];
    $this->podarok=$res['2007'];
  $this->align=$res['align'];
  $this->id_city=$res['id_city'];
    $this->id_clan=$res['id_clan'];
    $this->clanname=$res['clanname'];
    $this->clanalign=$res['clanalign'];
    $this->clanzvan=$res['clanzvan'];
  $this->cityborn=$res['cityname'];
  $this->citycurname=$res['citycurname'];
  $this->dateborn=$res['dateborn'];
  $this->sex=$res['sex'];
  $this->shadow=$res['shadow'];
  $this->expir=$res['exp'];
  $this->id_step=$res['id_step'];
  $this->invis=($res['inv']?1:0);

    $this->bwins=$res['wins'];
    $this->bloss=$res['loss'];
    $this->bnich=$res['nich'];
  $this->money=$res['money'];
  $this->gold=$res['gold'];
    $this->stat_points=$res['stat_points'];
    $this->mast_points=$res['mast_points'];
    $this->osob_points=$res['osob_points'];
  $this->regeneration=$res['regeneration'];
  $regen_timestamp=$res['regen_timestamp'];
  $this->mana=$res['mana'];
  $this->blocked=$res['blocked'];
  $this->userbirthday=$res['userbirthday'];
  $this->email=$res['email'];
    $this->travma_time=$res['travma_time'];
    $this->travma_id=$res['travma_id'];
    $this->travma_type=$res['travma_type'];
  $this->veteran=$res['veteran'];
  $this->id_battle=$res['id_battle'];
  # зназ зодиака
  $year=substr($res['userbirthday'],0,4);
  $month=substr($res['userbirthday'],5,2);
  $day=substr($res['userbirthday'],8,2);
  if (($month==3 && $day>=21) OR ($month==4 && $day<=20)) {$this->znak=1;}
  elseif (($month==4 && $day>=21) OR ($month==5 && $day<=21)) {$this->znak=2;}
  elseif (($month==5 && $day>=22) OR ($month==6 && $day<=21)) {$this->znak=3;}
  elseif (($month==6 && $day>=22) OR ($month==7 && $day<=23)) {$this->znak=4;}
  elseif (($month==7 && $day>=24) OR ($month==8 && $day<=23)) {$this->znak=5;}
  elseif (($month==8 && $day>=24) OR ($month==9 && $day<=23)) {$this->znak=6;}
  elseif (($month==9 && $day>=24) OR ($month==10 && $day<=23)) {$this->znak=7;}
  elseif (($month==10 && $day>=24) OR ($month==11 && $day<=22)) {$this->znak=8;}
  elseif (($month==11 && $day>=23) OR ($month==12 && $day<=21)) {$this->znak=9;}
  elseif (($month==12 && $day>=22) OR ($month==1 && $day<=20)) {$this->znak=10;}
  elseif (($month==1 && $day>=21) OR ($month==2 && $day<=19)) {$this->znak=11;}
  elseif (($month==2 && $day>=20) OR ($month==3 && $day<=20)) {$this->znak=12;}
  if ((int)$res['align']==2 && $res['unchaos_timestamp']<time() && $res['unchaos_timestamp']>0) { # выход из хаоса
    $this->align=0;
    db_use('query',"update person set align=0,unchaos_timestamp=NULL where id_person='".$id_person."'");
    if ($res['align']==2) {
    db_use('query',"insert into pals_delo(id_person,id_paladin,level,align,message,type) values('".$id_person."','','','','Персонаж вышел из Хаоса (срок)','5')");
    }else{
    db_use('query',"insert into pals_delo(id_person,id_paladin,level,align,message,type) values('".$id_person."','','','','Персонаж вышел из Истинного Хаоса (срок)','5')");
      }
  }
  # Характеристики
  $hars1 = array();
  $res=db_use('array',"select sil,lov,intu,vyn,intel,mudr,duh,vol,svob,boj
  ,masw1,masw2,masw3,masw4,masw5,m_magic1,m_magic2,m_magic3,m_magic4,m_magic5,m_magic6,m_magic7,
  dec_transfer,dec_travma,fast_homeworld,inc_expr,inc_friends,
  inc_hobby,max_inventory,num_transfer,speed_HP,speed_mana ,id_battle

  from person where id_person='".$id_person."';");
  $this->id_battle=$res['id_battle'];
  $hars1[1]['sil']=$res['sil'];
  $hars1[1]['lov']=$res['lov'];
  $hars1[1]['intu']=$res['intu'];
  $hars1[1]['vyn']=$res['vyn'];
  if ($this->level>=4) { $hars1[1]['intel']=$res['intel']; }
  if ($this->level>=7) { $hars1[1]['mudr']=$res['mudr']; }
  if ($this->level>=9) { $hars1[1]['duh']=$res['duh']; }
  if ($this->level>=12) {   $hars1[1]['vol']=$res['vol']; }
  if ($this->level>=18) {   $hars1[1]['svob']=$res['svob']; }
  if ($this->level>=21) {   $hars1[1]['boj']=$res['boj']; }

  $hars1[3]['masw1']=$res['masw1'];
  $hars1[3]['masw2']=$res['masw2'];
  $hars1[3]['masw3']=$res['masw3'];
  $hars1[3]['masw4']=$res['masw4'];
  $hars1[3]['masw5']=$res['masw5'];
  $hars1[4]['m_magic1']=$res['m_magic1'];
  $hars1[4]['m_magic2']=$res['m_magic2'];
  $hars1[4]['m_magic3']=$res['m_magic3'];
  $hars1[4]['m_magic4']=$res['m_magic4'];
  $hars1[4]['m_magic5']=$res['m_magic5'];
  $hars1[4]['m_magic6']=$res['m_magic6'];
  $hars1[4]['m_magic7']=$res['m_magic7'];

  $hars1[5]['dec_transfer']=$res['dec_transfer'];
  $hars1[5]['dec_travma']=$res['dec_travma'];
  $hars1[5]['fast_homeworld']=$res['fast_homeworld'];
  $hars1[5]['inc_expr']=$res['inc_expr'];
  $hars1[5]['inc_friends']=$res['inc_friends'];
  $hars1[5]['inc_hobby']=$res['inc_hobby'];
  $hars1[5]['max_inventory']=$res['max_inventory'];
  $hars1[5]['num_transfer']=$res['num_transfer'];
  $hars1[5]['speed_HP']=$res['speed_HP'];
  $hars1[5]['speed_mana']=$res['speed_mana'];
    $this->hars=$hars1;

  $battle=db_use('array',"SELECT b.id_battle,bu.inv FROM battle_units bu LEFT JOIN battle b on b.id_battle=bu.id_battle WHERE bu.id_person='".$id_person."' AND b.complete=1;");
  if ($battle['id_battle'] && !$this->is_bot)  # если это не бот - обновить юзера
    db_use('query',"update person set id_battle='".$battle['id_battle']."' where id_person='".$id_person."'");

  # В битве невидимы все кто вошел с невидимостью, если включена невидимость уже в бою - не влияет
  if ($battle['id_battle'] && $battle['inv']) {$this->invis=1;}
   elseif ($battle['id_battle'] && !$battle['inv']) {$this->invis=0;}

  $this->setputon();
  if (!$this->id_battle) $this->id_battle=$battle['id_battle'];

  # расчет HP
  $maxlife=$this->maxlife();
  if (!$this->is_bot)
    db_use('query',"update person set maxlife='".$maxlife."' where id_person='".$id_person."'");

  if (!$battle['id_battle'] && !$this->is_bot) {
    $curtime=time();
    $plushp=($curtime-$regen_timestamp)/8; # прошло циклов по 18 секунд
    $regenplus=$this->sumall('plus_hpspeed');
    if ($regenplus>100) {$regenplus=100;}
    $pr1=($maxlife/100)*(($this->regeneration+$regenplus)/1000); #1%
    $tkHP = $this->life+$pr1*$plushp*10;
    if ($tkHP>$maxlife) {$tkHP=$maxlife;}
    $this->life=$tkHP;
    $res=db_use('query',"update person set regen_timestamp='".$curtime."' where id_person='".$id_person."' and id_battle>0;");
    $res=db_use('query',"update person set regen_timestamp='".$curtime."', life='".$tkHP."' where id_person='".$id_person."' and id_battle<1;");
  }elseif ($this->is_bot) {
    $res=db_use('array',"select b.id_battle from battle b left join battle_units bu on bu.id_battle=b.id_battle where b.complete=1 and (bu.id_person='".$this->id_person."')");
    $this->id_battle=$res[id_battle];
  }elseif($battle['id_battle'] && !$this->is_bot) {
    if ($this->life>$maxlife) {
      $curtime=time();
      $this->life=$maxlife;
      $res=db_use('query',"update person set regen_timestamp='".$curtime."',life='".$this->life."' where id_person='".$id_person."';");
    }
  }

}
function anketa_adds() {
  $res=db_use('array',"select p.masszat,p.vip,p.chatcolor,p.homepage,p.deviz,p.hobby,p.icq,p.hide_icq,p.realname,c.cityname as cityreal,r.roomname,s.session_id from person p
  LEFT JOIN cityreal c on c.id_cityreal=p.id_cityreal
            LEFT JOIN users u on p.id_person=u.id_person
            LEFT JOIN room r on r.id_room=p.id_room and r.id_city=p.id_city
            LEFT JOIN sessions s ON s.username = u.login
            where p.id_person='".$this->id_person."';");
  $this->realname=$res['realname'];
  $this->cityreal=$res['cityreal'];
  $this->icq=$res['icq'];
  $this->hide_icq=$res['hide_icq'];
  $this->homepage=$res['homepage'];
  $this->about=$res['deviz'];
  $this->hobby=$res['hobby'];
  $this->chatcolor=$res['chatcolor'];
  $this->roomname=$res['roomname'];
  $this->online=($res['session_id']?TRUE:FALSE);
  $res=db_use('array',"select id_person from person_on where id_person='".$this->id_person."' and type=5");
  if ($res[id_person]) $this->online=FALSE;
  $this->masszat=$res['masszat'];
  $this->vip=$res['vip'];
}
function setputon() { #201...210 - приемы
  $res=db_use('query',"select th.id_thing2,p.slot,t.id_thing from puton p
  LEFT JOIN thing t on t.id_thing=p.id_thing
  LEFT JOIN thing_har th on th.id_thing2=t.id_thing2
 where p.id_person=".($this->is_bot?"'".$this->id_maskperson."'":"'".$this->id_person."'")." order by id_thing;");
    while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);
    if ($s['slot']<201 OR $s['slot']>210) {
      $this->puton[$s['slot']]=new thinginfo($s['id_thing2']);
      $this->puton[$s['slot']]->thinginfoall($s['id_thing']);
      if ($this->puton[$s['slot']]->srok>$this->puton[$s['slot']]->maxsrok) {
        db_use('query',"delete from puton where id_thing='".$this->puton[$s['slot']]->id_thing."'");
        db_use('query',"insert into inv(id_person,id_thing) values ('".$this->id_person."','".$this->puton[$s['slot']]->id_thing."')");
        unset($this->puton[$s['slot']]);
      }
    }
  }unset($i);
  $res=db_use('query',"select slot,id_thing from puton where id_person='".$this->id_person."' and slot>=201 and slot<=210;");
  while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);
    $this->puton[$s['slot']]=new prieminfo($s['id_thing'],0);
  }
}
function maxlife() {  return (int) (($this->hars[1]['vyn']*6+$this->sumstat('vyn')*6+$this->sumall('hp') )*( ($this->level>=3?(($this->level+1)/3):1) ));
}

function sumstat($stat){ # сумма параметра по вещам (мин-макс с учетом базового)
  if ($stat=='hp') {
    for ($i=1;$i<=16;$i++) {
      $sumst=$sumst+$this->puton[$i]->plushp;
    }$sumst=$sumst+$this->puton[40]->plushp+$this->puton[41]->plushp; #плюсы футболки + плаща
  }elseif ($stat=='min' OR $stat=='max') {
    for ($i=1;$i<=16;$i++) {
      $sumst=$sumst+($stat=='min'?$this->puton[$i]->dmin:$this->puton[$i]->dmax);
    } #плюсы инвентаря по мин или макс
    #echo $stat.':';
    #echo 'inv='.$sumst;
    $sumst=$sumst+($stat=='min'?basemin($this->hars[1]['sil']+$this->sumstat('sil')):basemax($this->hars[1]['sil']+$this->sumstat('sil')));
    #echo 'basemin='.basemin($this->hars[1]['sil']+$this->sumstat('sil'));
    #echo 'inv+sil='.$sumst;
    $sumst=$sumst+$this->puton[40]->stats[$stat]+$this->puton[41]->stats[$stat]; #плюсы футболки + плаща
    #echo 'inv+sil+rub='.$sumst;
  }else{
    for ($i=1;$i<=16;$i++) {
      $sumst=$sumst+$this->puton[$i]->stats[$stat];
    }$sumst=$sumst+$this->puton[40]->stats[$stat]+$this->puton[41]->stats[$stat]; #плюсы футболки + плаща
  }
  return $sumst;
}
function alttext($index) { # alttext на картинке вещи puton[$index]
$s=$s.($this->puton[$index]->plushp?"HP: ".$this->puton[$index]->plushp."\n":"");
$s=$s."Долговечность: ".$this->puton[$index]->srok."/".$this->puton[$index]->maxsrok;
return $s;
}

}
#-----------------------------------------------------------------------------------------------------
function basemin($sil) {
$i = 0; $s = $sil - 4;
while ($s>2) {
$s = $s - 3; $i++;
} return $i + 2;
}
function basemax($sil) {
$i = 0; $s = $sil - 4;
while ($s>2) {
$s = $s - 3; $i++;
$i=(($i==0 && $s<0)?"-1":"");
} return $i + 6;
}
#-----------------------------------------------------------------------------------------------------
class complect {
  var $slot;
  var $name;
  function complect($id_complect) { # $this->slot[$s['slot']]=fullthing($s['id_thing']);
    $res=db_use('query',"select * from complect_data where id_complect='".$id_complect."';");
      while ($i<mysql_num_rows($res)) {
      $i++;$s=mysql_fetch_array($res);
      $this->slot[$s['slot']]=fullthing($s['id_thing']);
    }
  }
}
#-----------------------------------------------------------------------------------------------------
function oldwidhei($type2) {
  switch ($type2){
  case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 10: case 11: case 14: $w=60; break;
  case 9: $w=20; break;
  case 12: case 13: $w=40; break;
  case 16: $w=80;break;
  }
  switch ($type2){
  case 3: $h=80; break;
  case 1: case 2: case 10: case 14: $h=60; break;
  case 4: case 7: case 8: case 11: $h=40; break;
  case 5: case 6: case 9: case 12: $h=20; break;
  case 13: $h=25; break;
  case 16: $h=75; break;
  }
  return 'WIDTH="'.$w.'" HEIGHT="'.$h.'"';
}
function widhei($type2) {
  switch ($type2){
  case 14: $w=60; break;
  case 12: $w=33; break;
  case 16: $w=80; break;
  case 1: case 2: case 3:  case 4: $w=75; break;
  case 5: case 10: case 11: case 8: case 7: case 6: $w=75; break;
  case 9: $w=25;break;
  case 13: $w=38;break;
  }
  switch ($type2){
  case 14: $h=60; break;
  case 12: $h=19; break;
  case 13: $h=24; break;
  case 16: $h=75; break;
  case 1: $h=60;break;
  case 2: $h=84; break;
  case 3: $h=117; break;
  case 4: $h=32; break;
  case 5: $h=24; break;
  case 6: $h=30; break;
  case 7: $h=47; break;
  case 8: $h=37; break;
  case 9: $h=23; break;
  case 10: $h=84; break;
  case 11: $h=48; break;
  }
  #if ($type2!=12)
  return oldwidhei($type2);
  #return 'WIDTH="'.$w.'" HEIGHT="'.$h.'"';
}
function slottotype2($slot) {
switch ($slot) {
case 9: $type2=1;break;
case 3: $type2=2;break;
case 4: case 40: case 41: $type2=3;break;
case 5: $type2=4;break;
case 1: $type2=5;break;
case 2: $type2=6;break;
case 13: $type2=7;break;
case 11: $type2=8;break;
case 6: case 7: case 8: $type2=9;break;
case 10: $type2=10;break;
case 12: $type2=11;break;
case 14: case 15: case 16: $type2=12;break;
}
if ($slot>=100 && $slot<=111) {$type2=13;}
return $type2;
}
function type2toslot($type2) {
switch ($type2) {
case 1: $slot=9;break;
case 4: $slot=5;break;
case 5: $slot=1;break;
case 6: $slot=2;break;
case 7: $slot=13;break;
case 8: $slot=11;break;
case 10: $slot=10;break;
case 11: $slot=12;break;
}
return $slot;
}
#-----------------------------------------------------------------------------------------------------
class inv { var $weight; var $count_all; var $things;
  function inv($type1,$id_person) {
  global $boxsortasc,$boxsort,$edit;
    switch($edit){
    case 1:$dopwhere=' and th.type1=1';break;
    case 2:$dopwhere=' and th.type1=2';break;
    case 3:$dopwhere=' and th.type1=3';break;
    case 4:$dopwhere=' and th.type1=4';break;
    default:$dopwhere='';break;
    }
    if ($boxsort=='cost') {$s=', th.gos_price';}
    elseif ($boxsort=='name') {$s=', th.name';}
    elseif ($boxsort=='type') {
      if($edit=1) {$s=', th.type2';}
      elseif($edit=2) {$s=', th.type3';}
      elseif($edit=3) {$s=', th.type3';}
      elseif($edit=4) {$s=', th.type3';}
    }
    $res=db_use('query',"select t.id_thing,th.id_thing2,th.weight,i.*,th.type1 from inv i
    LEFT JOIN thing t on t.id_thing=i.id_thing
      LEFT JOIN thing_har th on th.id_thing2=t.id_thing2
      where i.id_person='".$id_person."' ".$dopwhere." order by th.type1".$s.",i.id_thing ".$boxsortasc.";");
      $this->count_all=0+mysql_num_rows($res);
    while ($i<$this->count_all) {
      $i++;$s=mysql_fetch_array($res);
      $w=$w+$s['weight'];
      if (($type1>0 && $s['type1']==$type1) OR ($type1==0)) {
        $n++;
        $this->things[$n]=new thinginfo($s['id_thing2']);
        $this->things[$n]->thinginfoall($s['id_thing']);
      }#/if
    }#/whil
    $this->weight=0+$w;
  } #/func
}
#-----------------------------------------------------------------------------------------------------
function showpic1($myinfo,$slot,$n) {
global $edit;
if ($myinfo->puton[$slot]){
if ($n==2) {echo "<a href=\"/main.php?setdown=w".$slot."&edit=".$edit."&".rand(0,50000000)."\">";}
#if ($n==3) {echo "<a href=\"/encicl/object/".$myinfo->puton[$slot]->pic.".html\">";}
if ($n==3) {echo "<a href=\"libitem.php?id2=".($myinfo->puton[$slot]->id_thing)."\">";}
if ($n==4) {
  if (checkneeds($myinfo,$myinfo->puton[$slot])==1){
    if (($myinfo->puton[$slot]->zakl=='cureHP600' && $myinfo->life<$myinfo->maxlife() )or $myinfo->puton[$slot]->zakl=='mirror') {
      $n4=true;
      echo "<a href=battle.php?usezakl=".$myinfo->puton[$slot]->zakl.'&idth='.$myinfo->puton[$slot]->id_thing.'>';
    }elseif (($myinfo->puton[$slot]->zakl=='cureHP1200' && $myinfo->life<$myinfo->maxlife() )or $myinfo->puton[$slot]->zakl=='mirror') {
      $n4=true;
      echo "<a href=battle.php?usezakl=".$myinfo->puton[$slot]->zakl.'&idth='.$myinfo->puton[$slot]->id_thing.'>';

    }elseif($myinfo->puton[$slot]->vzakl=='mirror') {
      if ($myinfo->puton[$slot]->vdaytime!=date('Y-m-d',time())) {
        $myinfo->puton[$slot]->vdaytime==date('Y-m-d',time());#$myinfo->puton[$slot]->vsrok=0;
      }
      if ($myinfo->puton[$slot]->vsrok<$myinfo->puton[$slot]->vmaxsrok) {
        $n4=true;
        switch ($myinfo->puton[$slot]->vzakl) {
        case 'mirror':$n5='Породить клона ('.$myinfo->puton[$slot]->vsrok.'/'.$myinfo->puton[$slot]->vmaxsrok.')';break;
        default:$n5='глюк крутой';break;
        }
        echo "<a href=battle.php?usezakl=".$myinfo->puton[$slot]->vzakl.'&idth='.$myinfo->puton[$slot]->id_thing.'>';
      }
    }elseif($myinfo->puton[$slot]->vzakl=='antimirror') {
      if ($myinfo->puton[$slot]->vdaytime!=date('Y-m-d',time())) {
        $myinfo->puton[$slot]->vdaytime==date('Y-m-d',time());#$myinfo->puton[$slot]->vsrok=0;
      }
      if ($myinfo->puton[$slot]->vsrok<$myinfo->puton[$slot]->vmaxsrok) {
        $n4=true;
        switch ($myinfo->puton[$slot]->vzakl) {
        case 'antimirror':$n5='Переманить клона ('.$myinfo->puton[$slot]->vsrok.'/'.$myinfo->puton[$slot]->vmaxsrok.')';break;
        default:$n5='глюк крутой';break;
        }
        echo "<A HREF=\"JavaScript:magicklogin('Переманить клона', 'battle.php', 'antimirror', ".$myinfo->puton[$slot]->id_thing.", 'клон', '', ',,,,,,')\">";
      }
    }elseif ($myinfo->puton[$slot]->zakl=='antimirror') {
      $n4=true;
      echo "<A HREF=\"JavaScript:magicklogin('Переманить клона', 'battle.php', 'antimirror', ".$myinfo->puton[$slot]->id_thing.", 'клон', '', ',,,,,,')\">";
    }elseif($myinfo->puton[$slot]->vzakl=='cureHP600') {
      if ($myinfo->puton[$slot]->vsrok<$myinfo->puton[$slot]->vmaxsrok) {
        $n4=true;
        switch ($myinfo->puton[$slot]->vzakl) {
        case 'cureHP600':$n5='Восстановить здоровье +600 ('.$myinfo->puton[$slot]->vsrok.'/'.$myinfo->puton[$slot]->vmaxsrok.')';break;
        default:$n5='глюк крутой';break;
        }
        echo "<a href=battle.php?usezakl=".$myinfo->puton[$slot]->vzakl.'&idth='.$myinfo->puton[$slot]->id_thing.'>';
      }
    }elseif($myinfo->puton[$slot]->vzakl=='cureHP1200') {
      if ($myinfo->puton[$slot]->vsrok<$myinfo->puton[$slot]->vmaxsrok) {
        $n4=true;
        switch ($myinfo->puton[$slot]->vzakl) {
        case 'cureHP600':$n5='Восстановить здоровье +1200 ('.$myinfo->puton[$slot]->vsrok.'/'.$myinfo->puton[$slot]->vmaxsrok.')';break;
        default:$n5='глюк крутой';break;
        }
        echo "<a href=battle.php?usezakl=".$myinfo->puton[$slot]->vzakl.'&idth='.$myinfo->puton[$slot]->id_thing.'>';
      }
    }
  }
}
echo "<img src=\"../i/items/".$myinfo->puton[$slot]->pic.".gif\" ".($myinfo->puton[$slot]->vzakl?' style="background-color: #cfcbfc"':'')." alt=\"";
if ($n5) {
echo $n5;
}else{
echo ($n==2?"Снять ":($n4?'Использовать ':'')).$myinfo->puton[$slot]->name."\n".$myinfo->alttext($slot);
}
echo"\"
 ".widhei($myinfo->puton[$slot]->type2)." ".(($n==1 && $slot==3)?" oncontextmenu=\"document.location.href='/zayavka.php?a=&rand=".rand(1,5000000)."'; event.returnValue=false;\"":"border=\"0\" class=\"\"").">";
if ($n==2 OR $n==3) {echo "</a>";}elseif ($n==4 && $n4) {echo "</a>";}
}else {
switch ($slot) {
case 9: $s="слот шлем";break;
case 3: $s="слот оружие";break;
case 4: case 40: case 41: $s="слот броня";break;
case 5: $s="слот пояс";break;
case 14: $s="слот правый карман";break;
case 15: $s="карман";break;
case 16: $s="слот левый карман";break;
case 1: $s="слот серьги";break;
case 2: $s="слот ожерелье";break;
case 13: $s="слот наручи";break;
case 11: $s="слот перчатки";break;
case 6:case 7:case 8: $s="слот кольцо";break;
case 10: $s="слот щит";break;
case 12: $s="слот обувь";break;
}
if ($slot>=100 && $slot<=111) {$slot2=109;}
elseif ($slot==16) {$slot2=15;}
elseif ($slot==40) {$slot2=4;}
elseif ($slot==41) {$slot2=4;}
elseif ($slot>=6 && $slot<=8) {$slot2=6;}
else {$slot2=$slot;}
echo "<img src=\"../i/items/bkw/w".$slot2.".gif\" ".widhei(slottotype2($slot))." alt=\"Пустой ".$s."\">";}
}
#-----------------------------------------------------------------------------------------------------
function checkneeds($myinfo,$thing){ # требуется $harnames
global $harnames;
  $s=1;
  if (
  /* требуется склоность + моя склонность не та, склонность чистая без точек */
  ($thing->align>0 && (int)$myinfo->align!=$thing->align && $thing->align==(int)$thing->align)
  OR
  /* склонность с точками моя склонность не та ваще*/
  ($thing->align!=(int)$thing->align && (int)$myinfo->align!=(int)$thing->align)
  OR
  /* склонность с точками моя склонность меньше, тип склонности совпадает */
  ($thing->align!=(int)$thing->align && $myinfo->align<$thing->align && (int)$thing->align==(int)$myinfo->align)
   ) {
    $s='Требуется специальная склонность';
  }
  if ($thing->die_time<time() && $thing->die_time>0) {$s='Срок годности истек';}
  if ($thing->person && $thing->person!=$myinfo->name) {$s='Это именная вещь персонажа '.$thing->person;}
  if ($thing->sex && $thing->sex-1!=$myinfo->sex) {$s='Не тот пол';}
  if ($thing->clan && $thing->clan!=$myinfo->clanname) {$s='Это клановая вещь '.$thing->clan;}
  foreach ($thing->needstats as $key => $value) {
    if ($key) {
      if ($myinfo->sumall($key)<$value) {$n++;$s='Недостаточно развита характеристика "'.$harnames[$key].'"';}
    }
  }
  if ($myinfo->level<$thing->minlevel) {$n++;$s='Необходим более высокий уровень игрока ';}
  if ($n>1) {$s='Недостаточно развиты характеристики';}
  if ($thing->srok>=$thing->maxsrok) {$n++;$s='Предмет испорчен ('.$thing->srok.'/'.$thing->maxsrok.')';}
  return $s;
}
function specialvalue($har,$value) { # цифровое конечное значение для особенностей персонажа
  switch ($har) {
  case 'dec_transfer':$s=$value*0.1;break;
  case 'dec_travma':$s=$value*5;break;
  case 'fast_homeworld':$s=$value*5;break;
  case 'inc_expr':$s=$value;break;
  case 'inc_friends':$s=$value*5;break;
  case 'inc_hobby':$s=$value*200;break;
  case 'max_inventory':$s=$value*10;break;
  case 'num_transfer':$s=$value*20;break;
  case 'speed_HP':$s=$value*5;break;
  case 'speed_mana':$s=$value*5;if ($value==5) {$s=25;} break;
  }return $s;
}
function c_uv($inf) {
# return ($inf->sumall('lov'))*5 + $inf->sumall('uv') + ($inf->sumall('intu'))*3;
 return ($inf->sumall('lov'))*3 + $inf->sumall('uv');
}
function c_pruv($inf) {
# return ($inf->sumall('lov'))*5 + $inf->sumall('pruv') + ($inf->sumall('intu'))*3; #+($inf->sumall('intu'))*3 + $inf->sumall('pruv')
 return $inf->sumall('pruv') + ($inf->sumall('intu'))*3; #+($inf->sumall('intu'))*3 + $inf->sumall('pruv')
}
function verud12($inf1,$inf2) { # кто кого
  #уворот= уворот второго - противоуворот первого
  $raz=c_uv($inf2)/(1.50)-c_pruv($inf1);
  if ($raz<0) $raz=0; # 0 уворота если противоуворот жжет
  #echo '<small><font color=gray>'.$inf1->name.": Вероятность ударить ".$inf2->name." = ".(50 + ($raz<0?0:$raz)).'%</font></small><br>';
  # вер ударить 100% минус уворот
  $verud=100 - $raz;
  if ($verud<20) $verud=20;
  if ($verud>100) $verud=100;
  return $verud;
}
/*
function raspr($mf,$val) {
if ($mf=='intu') {$d=3; }
if ($val<10) { $d=
}*/
function c_kr($inf) {
# return ($inf->sumall('intu'))*2 + $inf->sumall('kr');
 return ($inf->sumall('intu'))*3 + $inf->sumall('kr');
}
function c_prkr($inf) {
# return ($inf->sumall('intu'))*2 + $inf->sumall('prkr');#($inf->sumall('lov'))*4 + $inf->sumall('prkr');
 return ($inf->sumall('lov'))*3+ $inf->sumall('prkr');#($inf->sumall('lov'))*4 + $inf->sumall('prkr');
}
function rnd1($k, $n) { # влияние мастерства (рандомное) koef first (1 to 10), 1 - right for all
$k=(int)$k;
if ($k <= 1) { $k1 = 0.1;}
elseif ($k = 2) { $k1 = 0.2;}
elseif ($k = 3) { $k1 = 0.3;}
elseif ($k = 4) { $k1 = 0.5;}
elseif ($k = 5) { $k1 = 0.7;}
elseif ($k = 6) { $k1 = 1;}
elseif ($k = 7) { $k1 = 2;}
elseif ($k = 8) { $k1 = 4;}
elseif ($k = 9) { $k1 = 6;}
elseif ($k >= 10) { $k1 = 8;}
return (int) ( (rand(1,100)/100) ^ $k1 * (int) (rand(1,100) * ($n + 2))/20 );
}
function isblocked ($attack,$block2) {
if ((($attack==1 OR $attack==2) && $block2==1) OR
      (($attack==2 OR $attack==3) && $block2==2) OR
      (($attack==3 OR $attack==4) && $block2==3) OR
      (($attack==4 OR $attack==5) && $block2==4) OR
      (($attack==1 OR $attack==5) && $block2==5)) {return true; } else {return false;}
}
function logwrite1($id_battle,$id_event,$type_att,$kuda,$dam,$inf,$typelog){# запись события с фразами
  # обновить время
  $res=db_use('query',"UPDATE battle_event SET event_logtype='".$typelog."',timestamp=".time().",damage='".$dam."',hpold='".$inf->life."' WHERE id_battle='".$id_battle."' AND id_event='".$id_event."'");
  $lifenew=$inf->life+$dam;$maxlife=$inf->maxlife();
  $lifenew=($lifenew>$maxlife?$maxlife:$lifenew);
  $lifenew=($lifenew<0?0:$lifenew);
  if ($lifenew!=$inf->life) {
    if ($inf->is_bot) {
      $res=db_use('query',"UPDATE bots set life='".$lifenew."' WHERE id_bot='".$inf->id_person."'");
    }else{
      $res=db_use('query',"UPDATE person set life='".$lifenew."' WHERE id_person='".$inf->id_person."'");
    }

  }
        $inf->life=$lifenew; # МОЖЕТ НЕ СРАБОТАТЬ (не рассчитываем на это)
  if ($typelog==1) {
#00:01 Ленусик В Тапках засмотрелась на <вырезано цензурой>, но вдруг, неожиданно Пустынник Атаман проснувшись рубанул ятаганом левую почку соперника. -7 [526/539]
  insert_event(1,$id_battle,$id_event); # испугался
  insert_event(2,$id_battle,$id_event); # но вдруг
  insert_event(3,$id_battle,$id_event); # злобный
  insert_event(4,$id_battle,$id_event); # сдуру
  #рассек ятаганом (оружие - 6789) / вломил грубый рассекающий удар (руки либо оружие)
  # не "удар":
  if (rand(1,100)>50) {$udar=true;} else {$udar=false;}
  if (!$udar) {
    $a=phrase_protknul($type_att);
    insert_event($a,$id_battle,$id_event); # проткнул/рассек
  }else{
    insert_event(34,$id_battle,$id_event); # приложил/приложил
    insert_event(10,$id_battle,$id_event); # грубый
    $a=phrase_type_att($type_att);
    insert_event($a,$id_battle,$id_event); # разбивающий удар
  }
  insert_event(17,$id_battle,$id_event); # пальцем # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ТИП ОРУЖИЯ
  $a=phrase_kuda($kuda);
  insert_event($a,$id_battle,$id_event); # по ногам
  insert_event(30,$id_battle,$id_event); # противника
}elseif ($typelog==2) {
#00:01 brener старалась провести удар, но непобедимый Пустынник Атаман поставил блок на секущий удар лезвием топора в нос."
  insert_event(38,$id_battle,$id_event); # потерял момент
  insert_event(39,$id_battle,$id_event); # , вследствие чего
  insert_event(3,$id_battle,$id_event); # злобный
  insert_event(36,$id_battle,$id_event); # отбил
  insert_event(10,$id_battle,$id_event); # грубый
  $a=phrase_type_att($type_att);
  insert_event($a,$id_battle,$id_event); # разбивающий удар
  insert_event(17,$id_battle,$id_event); # пальцем # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ТИП ОРУЖИЯ
  $a=phrase_kuda($kuda);
  insert_event($a,$id_battle,$id_event); # по ногам
}elseif ($typelog==3) {
#00:01 Пустынник Атаман поскользнулся и восхитительная brener ушла вправо от удара кривой саблей по крестцу.
  insert_event(38,$id_battle,$id_event); # потерял момент
  insert_event(39,$id_battle,$id_event); # , вследствие чего
  insert_event(3,$id_battle,$id_event); # злобный
  insert_event(40,$id_battle,$id_event); # ушла вправо от удара
  insert_event(17,$id_battle,$id_event); # пальцем # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ТИП ОРУЖИЯ
  $a=phrase_kuda($kuda);
  insert_event($a,$id_battle,$id_event); # по ногам
}elseif ($typelog==4) {
#00:01 Пустынник Атаман испугался, и тут brener, приняв боевые 100 грамм, укусила за пятку соперника. -67 [158/375]
  insert_event(1,$id_battle,$id_event); # испугался
  insert_event(2,$id_battle,$id_event); # но вдруг
  insert_event(3,$id_battle,$id_event); # злобный
  if (rand(1,100)>50) {$udar=true;} else {$udar=false;}
  if (!$udar) {
    insert_event(41,$id_battle,$id_event); # приняв боевые 100 грамм
    insert_event(43,$id_battle,$id_event); # укусила за пятку
  }else{
    insert_event(34,$id_battle,$id_event); # нанес
    insert_event(42,$id_battle,$id_event); # о<вырезано цензурой>ный
    $a=phrase_type_att($type_att);
    insert_event($a,$id_battle,$id_event); # разбивающий удар
    insert_event(17,$id_battle,$id_event); # пальцем # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ТИП ОРУЖИЯ
    $a=phrase_kuda($kuda);
    insert_event($a,$id_battle,$id_event); # по ногам
  }
    insert_event(30,$id_battle,$id_event); # противника
}elseif ($typelog==5) {
#00:00 Проклятье Глубин высморкался, как вдруг Daemon V провел рассекающий удар гардой, пробив блок, по <вырезано цензурой> врага. -53 [389/500]
  insert_event(1,$id_battle,$id_event); # испугался
  insert_event(2,$id_battle,$id_event); # но вдруг
  insert_event(3,$id_battle,$id_event); # злобный
  insert_event(34,$id_battle,$id_event); # нанес
  insert_event(42,$id_battle,$id_event); # о<вырезано цензурой>ный
  $a=phrase_type_att($type_att);
  insert_event($a,$id_battle,$id_event); # разбивающий удар
  insert_event(17,$id_battle,$id_event); # пальцем # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ТИП ОРУЖИЯ
  $a=phrase_kuda($kuda);
  insert_event($a,$id_battle,$id_event); # по ногам
  insert_event(30,$id_battle,$id_event); # противника
}
  return $lifenew;
}#/function

function insert_event($a,$id_battle,$id_event) {
  $n=phrases($a);
  $res=db_use('query',"INSERT INTO battle_log(id_battle,id_event,id_phrase,type_event) VALUES (".$id_battle.",".$id_event.",".rand(1,$n).",'".$a."')");
  #echo "INSERT INTO battle_log(id_battle,id_event,id_phrase".($type_id_ev?",type_event":'').") VALUES (".$id_battle.",".$id_event.",(SELECT id_phrase FROM phrases WHERE type_phrase=".$a." ORDER BY RAND() LIMIT 1) ".($type_id_ev?",'".$type_id_ev."'":'').")";

}
include_once('z_phrases.php');
function logprint($id_bat,$user_filter,$enab_filter,$hilite,$asc) {
  #die('пардон идет настройка сервера');
  $battle=db_use('array',"select * from battle where id_battle='".$id_bat."'");

  $ended=($battle['complete']==2?TRUE:FALSE);$timeout=($battle['timeout_win']?TRUE:FALSE);$winner=$battle['team_winner'];
  $st_time=$battle['start_time'];$endtime=$battle['end_time'];
  $res=db_use('query',"select bl.* from battle_log bl where (bl.type_event=44 or bl.type_event=32 or bl.type_event=1) and bl.id_battle='".$id_bat."'");
  $start_text='{часы} {игроки} {бросили вызов}';
  unset($i);while ($i<mysql_num_rows($res)) {
      $i++;$s=mysql_fetch_array($res);
      #if ($s['type_phrase']==44) {$start_text=str_replace('{часы}',$s['phrasem'],$start_text);}
      #if ($s['type_phrase']==32) {$start_text=str_replace('{бросили вызов}',$s['phrasem'],$start_text);}
      if ($s['type_event']==44) {$start_text=str_replace('{часы}',phrase(0,44,1,0),$start_text);}
      if ($s['type_event']==32) {$start_text=str_replace('{бросили вызов}',phrase(0,32,2,0),$start_text);}
      #echo $s['id_phrase'];
  }
  $start_text=str_replace('{datetime}','<span class="date">'.date('d.m.Y H:i',$st_time).'</span>',$start_text);
  # инфа о игроках
  $res=db_use('query',"select COALESCE(u.login,b.name) as login,bu.userlevel,bu.starthp,bu.team,bu.id_person ,bu.inv
  from battle_units bu
  LEFT JOIN users u on u.id_person=bu.id_person
  LEFT JOIN bots b on b.id_bot=bu.id_person
  where bu.id_battle='".$id_bat."'");
  unset($i);while ($i<mysql_num_rows($res)) {
  echo ($id_bat==728653333?'a'.microtime().'<br />':'');
    $i++;$s=mysql_fetch_array($res);
    $pls_startchat[$s['team']]=$pls_startchat[$s['team']].($pls_startchat[$s['team']]?", ":'').(!$s['inv']?$s['login']:'невидимка').' ['.$s['userlevel'].']';
  # $pls['name'][$s['team']]=$pls['name'][$s['team']].($pls['name'][$s['team']]?", ":'').$s['login'];
  # $pls['id'][$s['team']]=$pls['id'][$s['team']].($pls['id'][$s['team']]?", ":'').$s['id_person'];
    $pls_hp[$s['id_person']]=$s['starthp'];
    #echo $s['login'].'('.$s['id_person'].') '.$pls_hp[$s['id_person']].'<br />';
  }
  $start_text=str_replace('{игроки}',"<B>".$pls_startchat[1]."</B> и <B>".$pls_startchat[2]."</B>",$start_text);
  if ($asc=='asc') {echo $start_text."<BR>";} else {
    if ($ended) {
      echo "<span class=date>".date('H:i',$endtime)."</span> Бой закончен".($timeout?' по таймауту':'').'. '.($winner?'Победа за <B>'.$pls_startchat[$winner].'</B>':'Ничья.').'<br />';
    }
  }

  echo ($id_bat==728653333?'b'.microtime().'<br />':'');
  $steps=db_use('query',"
  SELECT distinct bs.*,min(be.timestamp) FROM battle_step bs
  right join battle_event be on be.id_battle=bs.id_battle and be.id_bstep=bs.id_bstep
  WHERE be.id_battle='".$id_bat."' group BY bs.id_bstep ".$asc." order by timestamp ".$asc."");

  /*echo "SELECT distinct bs.*,be.timestamp
  FROM `battle_event` be LEFT JOIN battle_step bs on bs.id_battle=be.id_battle and bs.id_bstep=be.id_bstep
  WHERE be.id_battle='".$id_bat."'
  ORDER BY be.timestamp ".$asc.", be.id_event ".$asc."";*/
  unset($i);while ($i<mysql_num_rows($steps)) {  # шаги в порядке результа
    $i++;$s=mysql_fetch_array($steps);#echo "id_bstep=".$s['id_bstep']."<br />";




  echo ($id_bat==728653333?'c'.microtime().'<br />':'');




  #   echo $s['timestamp'].' ';
    # инфо о противниках
    # Проход по Events
    unset($block1,$block2);$block1=array();$block2=array();
  echo ($id_bat==728653333?'d'.microtime().'<br />':'');
    $events=db_use('query',"select * from battle_event where event_logtype>0 and id_battle='".$id_bat."' and id_bstep='".$s['id_bstep']."' order by id_event ".$asc."");
  echo ($id_bat==728653333?'e'.microtime().'<br />':'');
    #echo "select * from battle_event where event_logtype>0 and id_battle='".$id_bat."' and id_bstep='".$s['id_bstep']."' order by id_event ".$asc." [blc]<br />";
    unset($ie);while ($ie<mysql_num_rows($events)) {
      $ie++;$e=mysql_fetch_array($events);
  echo ($id_bat==728653333?'f'.microtime().'<br />':'');
      # анализируем eventы. нужно - узнать блоки того и другого
      if ($e['type1']==1 && $e['type2']<1) {$block1[]=$e['block'];}
      if ($e['type1']==2 && $e['type2']<1) {$block2[]=$e['block'];}
    }
    if ($ie) {  echo '<hr>';}
    # второй проход по events
    $events=db_use('query',"select * from battle_event where event_logtype>0 and id_battle='".$id_bat."' and id_bstep='".$s['id_bstep']."' order by id_event ".$asc."");
    #echo "select * from battle_event where event_logtype>0 and id_battle='".$id_bat."' and id_bstep='".$s['id_bstep']."' order by id_event ".$asc." [evs2]<br />";
  echo ($id_bat==728653333?'g'.microtime().'<br />':'');
    unset($ie);while ($ie<mysql_num_rows($events)) {
      $ie++;$e=mysql_fetch_array($events);
      $type=$e['event_logtype'];$id_ev=$e['id_event'];
      #$bs=$e['id_bstep']);
      $r1=db_use('array',"
      SELECT bs.id_person1,bs.id_person2,
      p.persname as pn1,
      u.login as lo1,
      p.sex as sex1,
      b1.name as bname1,
      pb1.sex as sexb1,

      bu.team as team1,bu.inv as inv1,
      bu2.team as team2,bu2.inv as inv2,

      p1.persname as pn2,
      u1.login as lo2,
      p1.sex as sex2,
      b2.name as bname2,
      pb2.sex as sexb2

       FROM battle_step bs
      LEFT JOIN person p on p.id_person=bs.id_person1
      LEFT JOIN users u on u.id_person=p.id_person
      LEFT JOIN bots b1 on b1.id_bot=bs.id_person1
      LEFT JOIN person pb1 on pb1.id_person=b1.id_maskperson

      LEFT JOIN person p1 on p1.id_person=bs.id_person2
      LEFT JOIN users u1 on u1.id_person=p1.id_person
      LEFT JOIN bots b2 on b2.id_bot=bs.id_person2
      LEFT JOIN person pb2 on pb2.id_person=b2.id_maskperson

      LEFT JOIN battle_units bu on bu.id_person=bs.id_person1 and bu.id_battle=bs.id_battle
      LEFT JOIN battle_units bu2 on bu2.id_person=bs.id_person2 and bu2.id_battle=bs.id_battle

      WHERE bs.id_battle='".$id_bat."' and bs.id_bstep='".$e['id_bstep']."'
      ;");
  echo ($id_bat==728653333?'h'.microtime().'<br />':'');
      if ($r1['id_person1']>10000) {$r1['lo1']=$r1['bname1'];$r1['pn1']='';$r1['sex1']=$r1['sexb1'];}
      if ($r1['id_person2']>10000) {$r1['lo2']=$r1['bname2'];$r1['pn2']='';$r1['sex2']=$r1['sexb2'];}
      if ($e['type1']==1) { # 1->2
        # ударяет первый второго - значит смотрим блок2
        # искать есть ли в массиве блоков блок2 тот что блочит удар $e['udar'] его
        if (in_array('1',$block2)) {$bl='12';}
        if (in_array('2',$block2)) {$bl='23';}
        if (in_array('3',$block2)) {$bl='34';}
        if (in_array('4',$block2)) {$bl='45';}
        if (in_array('5',$block2)) {$bl='51';}
        if ($e['udar']==1) {
          if (in_array('1',$block2)) {$bl='12';}
          if (in_array('5',$block2)) {$bl='51';}
        }elseif ($e['udar']==2) {
          if (in_array('1',$block2)) {$bl='12';}
          if (in_array('2',$block2)) {$bl='23';}
        }elseif ($e['udar']==3) {
          if (in_array('2',$block2)) {$bl='23';}
          if (in_array('3',$block2)) {$bl='34';}
        }elseif ($e['udar']==4) {
          if (in_array('3',$block2)) {$bl='34';}
          if (in_array('4',$block2)) {$bl='45';}
        }elseif ($e['udar']==5) {
          if (in_array('4',$block2)) {$bl='45';}
          if (in_array('5',$block2)) {$bl='51';}
        }
      }else{
        if (in_array('1',$block1)) {$bl='12';}
        if (in_array('2',$block1)) {$bl='23';}
        if (in_array('3',$block1)) {$bl='34';}
        if (in_array('4',$block1)) {$bl='45';}
        if (in_array('5',$block1)) {$bl='51';}
        if ($e['udar']==1) {
          if (in_array('1',$block1)) {$bl='12';}
          if (in_array('5',$block1)) {$bl='51';}
        }elseif ($e['udar']==2) {
          if (in_array('1',$block1)) {$bl='12';}
          if (in_array('2',$block1)) {$bl='23';}
        }elseif ($e['udar']==3) {
          if (in_array('2',$block1)) {$bl='23';}
          if (in_array('3',$block1)) {$bl='34';}
        }elseif ($e['udar']==4) {
          if (in_array('3',$block1)) {$bl='34';}
          if (in_array('4',$block1)) {$bl='45';}
        }elseif ($e['udar']==5) {
          if (in_array('4',$block1)) {$bl='45';}
          if (in_array('5',$block1)) {$bl='51';}
        }
      }
      $uname1=($r1['pn1']?$r1['pn1']:$r1['lo1']);
      $uname1=($r1['inv1']?'невидимка':$uname1);
      $sex1=$r1['sex1'];
      $uname2=($r1['pn2']?$r1['pn2']:$r1['lo2']);
      $uname2=($r1['inv2']?'невидимка':$uname2);
      $sex2=$r1['sex2'];
      $team1=($r1['team1']?$r1['team1']:($r1['team2']==1?2:1));
      $team2=($r1['team2']?$r1['team2']:($r1['team1']==1?2:1));
      $ktoteam=($e['type1']==1?$team1:$team2);
      $kogoteam=($e['type1']==2?$team1:$team2);
        $kto=($e['type1']==1?$uname1:$uname2);
        $kogo=($e['type1']==2?$uname1:$uname2);
        if ($user_filter) {
          if ($kto==$user_filter OR $kogo==$user_filter) {
            $show=true;if ($hilite) {$hilite_enab=true;}
          }else{$show=false;if ($hilite) {$hilite_enab=false;}}
        }else{$show=true;}
        if ($hilite && $hilite_enab) {
          echo "<script>hilite = true;</script>";
        }elseif ($hilite && !$hilite_enab) {
          echo "<script>hilite = false;</script>";
        }
      $st='';$st1='';
      if ($type==1) { # удар
        $st="{adh} {span kogo}{КогоБьем}</span> {испугался}{2}, {и вдруг} {злобный}{1} {span kto}{КтоБьет}</span> {сдуру} {проткнул}{1} {пальцем} {по ногам} {врага}. <b>{dam}</b> [{стало}/{было}]<br />";
        $st1="{adh} {span kogo}{КогоБьем}</span> {испугался}{2}, {и вдруг} {злобный}{1} {span kto}{КтоБьет}</span> {сдуру} {приложил}{1} {грубый} {разбивающий удар} {по ногам} {врага}. <b>{dam}</b> [{стало}/{было}]<br />";
      }elseif($type==2) { # блок
        $st="{adh} {span kto}{КтоБьет}</span> {потерял момент}{1} {вследствие чего} {злобный}{2} {span kogo}{КогоБьем}</span> {отбил}{2} {грубый} {разбивающий удар} {пальцем} {по ногам}.<br />";
      }elseif($type==3) { # уверт
        $st="{adh} {span kto}{КтоБьет}</span> {потерял момент}{1} {вследствие чего} {злобный}{2} {span kogo}{КогоБьем}</span> {ушла вправо от удара}{2} {пальцем} {по ногам}.<br />";
      }elseif($type==4) { # крит
        $st="{adh} {span kogo}{КогоБьем}</span> {испугался}{2}, {и вдруг} {злобный}{1} {span kto}{КтоБьет}</span>, {приняв боевые 100 грамм}, {укусила за пятку}{1} {врага}. <Font Color=red><b>{dam}</b></Font> [{стало}/{было}]<br />";
        $st1="{adh} {span kogo}{КогоБьем}</span> {испугался}{2}, {и вдруг} {злобный}{1} {span kto}{КтоБьет}</span>, {приложил}{1} {вырезано цензурный} {разбивающий удар} {пальцем} {по ногам} {врага}. <Font Color=red><b>{dam}</b></Font> [{стало}/{было}]<br />";
      }elseif($type==5) { # крит пробив блок
        $st="{adh} {span kogo}{КогоБьем}</span> {испугался}{2}, {и вдруг} {злобный}{1} {span kto}{КтоБьет}</span>, {приняв боевые 100 грамм}, пробив блок, {укусила за пятку}{1} {врага}. <Font Color=red><b>{dam}</b></Font> [{стало}/{было}]<br />";
        $st1="{adh} {span kogo}{КогоБьем}</span> {испугался}{2}, {и вдруг} {злобный}{1} {span kto}{КтоБьет}</span>, {приложил}{1} {вырезано цензурный} {разбивающий удар}, пробив блок, {пальцем} {по ногам} {врага}. <Font Color=red><b>{dam}</b></Font> [{стало}/{было}]<br />";
      }elseif($type==6) { # вмешался
        $st="{time} {span kto}{КтоБьет}</span> {вмешался} в поединок.<br />";
      }elseif($type==7) { # убит
        $st="{time} {span kto}{КтоБьет}</span> {убит}{1}.<br />";
      }elseif($type==8) { # прием
        $st="{time} {span kto}{КтоБьет}</span> {поняла что надо прием}{1}, {что поможет прием}{1} \"<b>{priem}</b>\".<br />";
        #12:04 Кроличья лапка, подкова в перчатке и прием "Призрачная защита" помогли Галлюциногенова продержаться ещё немного.
      }elseif($type==9) { # подобрал
        $st="{time} {подобрал}{1}.<br />";
      }elseif($type==10) { # переманил клона
        $st="{time} {span kto}{КтоБьет}</span> {переманил}{1} {span kogo}{КогоБьем}</span>.<br />";
      }else{$st='sssssssssssssss<br>';}
      $r2=db_use('query',"select bl.id_phrase,bl.type_event from battle_log bl where bl.id_battle='".$id_bat."' and bl.id_event='".$id_ev."'");


    # echo $id_ev.' ';




  /*
      $r2=db_use('query',"select bl.id_phrase,p.type_phrase,p.phrasem,p.phrasew,bl.type_event from battle_log bl LEFT JOIN phrases p on p.id_phrase=bl.id_phrase where bl.id_battle='".$id_bat."' and bl.id_event='".$id_ev."'");

  */    $tmp='';$j=0;
      while ($j<mysql_num_rows($r2)) {
        $j++;$o=mysql_fetch_array($r2);#echo '$j';
        if ($o['type_event']>0) {$tf=$o['type_event'];} else{ $tf=$o['type_phrase'];}
        unset($rer);
        if ( ($tf>4 and $tf<10) ) {  $rer="проткнул"; }
        if ( ($tf>10 and $tf<17) OR $tf==35 ) {  $rer="разбивающий удар"; }
        if ( ($tf>24 and $tf<30) ) {  $rer="по ногам"; }
        switch ($tf) {
          case 1: $rer="испугался";break;
          case 2: $rer="и вдруг";break;
          case 3: $rer="злобный";break;
          case 4: $rer="сдуру";break;
          case 10: $rer="грубый";break;
          case 34: $rer="приложил";break;
          case 30: $rer="врага";break;
          case 36: $rer="отбил";break;
          case 38: $rer="потерял момент";break;
          case 39: $rer="вследствие чего";break;
          case 17: $rer="пальцем";break;
          case 40: $rer="ушла вправо от удара";break;
          case 43: $rer="укусила за пятку";break;
          case 41: $rer="приняв боевые 100 грамм";break;
          case 42: $rer="вырезано цензурный";break;
          case 45: $rer="что поможет прием";break;
          case 46: $rer="поняла что надо прием";break;
          case 31: $rer="убит";break;
          case 49: $rer="подобрал";break;
          case 50: $rer="переманил";break;
        }#echo '['.$o['type_phrase'].' '.$rer.']';
        if ($rer) {
          $rer='{'.$rer.'}';
          if ($o['type_event']) {
            $t1=phrase($sex1,$tf,$o['id_phrase'],0);
            $t2=phrase($sex2,$tf,$o['id_phrase'],0);
            $t0=phrase(0,$tf,$o['id_phrase'],0);
          }else{
            $t1=phrase($sex1,$tf,0,$o['id_phrase']);
            $t2=phrase($sex2,$tf,0,$o['id_phrase'],0);
            $t0=phrase(0,$tf,0,$o['id_phrase']);
          }
          $st=str_replace($rer.'{1}',$t1,$st);
          $st=str_replace($rer.'{2}',$t2,$st);
          $st=str_replace($rer,$t0,$st);
          $st1=str_replace($rer.'{1}',$t1,$st1);
          $st1=str_replace($rer.'{2}',$t2,$st1);
          $st1=str_replace($rer,$t0,$st1);
        }else{
          echo '['.$o['type_phrase'].' '.$rer.']';
        }
        $rer='';
      }
      $st=str_replace('{span kto}',"<span class=\"b".$ktoteam."\">",$st);
      $st1=str_replace('{span kto}',"<span class=\"b".$ktoteam."\">",$st1);
      $st=str_replace('{span kogo}',"<span class=\"b".$kogoteam."\">",$st);
      $st1=str_replace('{span kogo}',"<span class=\"b".$kogoteam."\">",$st1);
      $st=str_replace('{adh}',"<SCRIPT>adh(".$e['udar'].",".$bl.",\"".date('H:i',$e['timestamp'])."\",".$ktoteam.")</SCRIPT>",$st);
      $st=str_replace('{dam}',$e['damage'],$st);
      $st=str_replace('{time}','<span class="date">'.date('H:i',$e['timestamp']).'</span>',$st);
      $st=str_replace('{было}',($e['type1']==1?$pls_hp[$r1['id_person2']]:$pls_hp[$r1['id_person1']]),$st);
      #echo $e['id_bstep'];
      $st=str_replace('{стало}',$e['hpold']+$e['damage'],$st);
      $st=str_replace('{КтоБьет}',$kto,$st);
      $st=str_replace('{вмешался}',($sex1?'вмешалась':'вмешался'),$st);
      $st=str_replace('{КогоБьем}',$kogo,$st);
      $st1=str_replace('{adh}',"<SCRIPT>adh(".$e['udar'].",".$bl.",\"".date('H:i',$e['timestamp'])."\",".$e['type1'].")</SCRIPT>",$st1);
      $st1=str_replace('{dam}',$e['damage'],$st1);
      $st1=str_replace('{time}','<span class="date">'.date('H:i',$e['timestamp']).'</span>',$st1);
      $st1=str_replace('{было}',($e['type1']==1?$pls_hp[$r1['id_person2']]:$pls_hp[$r1['id_person1']]),$st1);
      $st1=str_replace('{стало}',$e['hpold']+$e['damage'],$st1);
      $st1=str_replace('{КтоБьет}',$kto,$st1);
      $st1=str_replace('{КогоБьем}',$kogo,$st1);
      if(strpos($st,'{priem}')) {
        $resp=db_use('array',"select name from priem where id_priem='".$e['id']."'");
        $st=str_replace('{priem}',$resp['name'],$st);unset($resp);
      }
      if ($show) {$prints++;if (strpos($st,"{")) { echo $st1; } else { echo $st; } }
      #echo $e['event_logtype'];
  if ($prints>20 && strtoupper($asc)=='DESC') {
    break;
  }
    } #while event
  if ($prints>20 && strtoupper($asc)=='DESC') {
    break;
  }
  }# while bstep

  if ($prints>20 && strtoupper($asc)=='DESC') {
  echo "Урезано шоб меньше трафа жрало. <a target=_blank href=logs.php?log=".$id_bat.">Полный лог боя</a><br />";
  }else{
  if ($asc=='desc') {echo '<hr>';echo $start_text."<BR>";} else {
    if ($ended) {
      echo "<span class=date>".date('H:i',$endtime)."</span> Бой закончен".($timeout?' по таймауту':'').'. '.($winner?'Победа за <B>'.$pls_startchat[$winner].'</B>':'Ничья.');
    }
  }

  }
}
function end_game($id_battle,$team_winner,$timeout) {
global $myinfo;

  $return=0;
  $res=db_use('array',"select complete,roomitem from battle where id_battle='".$id_battle."'");
  if ($res[complete]!=1) {
    return 0;die;
  }
  db_use('query',"update battle set complete=2 where id_battle='".$id_battle."'");
  db_use('query',"delete from chat where type=6 and text='".$id_battle."'");

if ($res[roomitem] && !$timeout && $team_winner!=3) {
  $id_winneritem=$res[roomitem];
  $res=db_use('query',"SELECT id_person FROM battle_units where id_person<100000 and team='".strval($team_winner)."' and id_battle='".$id_battle."'");
  unset($i);while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);$winners[]=$s[id_person];
  }
  $id_winner=$winners[rand(0,count($winners))];
  $th=db_use('array',"select * from thing_har where id_thing2='".$id_winneritem."'");
  db_use('query',"insert into thing(id_thing2,id_city,maxsrok,die_time)values
    ('".$id_winneritem."','1','".$th['maxsrok_default']."','')");
  $id_thing=mysql_insert_id();
  db_use('query',"insert into inv (id_person,id_thing)
      values ('".$id_winner."','".$id_thing."')");
  db_use('query',"insert into chat (timestamp,id_room,nick,text,color,type) values(".time().",'','".$id_winner."','<SPAN class=p>".$th[name]."</SPAN> В вашем рюкзаке.','','5')");
}

/*
Формула опыта:
Твой уровень - x.
Уровень противника - y.
Стоимость одетых вещей (элексиров, обкастов и т.п.) на тебе - a (если ничего нет то считаем как 1).
Стоимость одетых вещей (элексиров, обкастов и т.п.) на противнике - b (если ничего нет то считаем как 1)..
Суммая твоих родных статов - m.
Сумма родных статов противника - n.
Базовый опыт (значение которого сейчас не знаю) - o.
Кол-во урона нанесенного противнику - z.
100% - максимальное кол-во хп у противника, не то что есть на начало боя а сколько у него может максимально быть (без учета обкастов).

(100%-z1% )*(o*((y1\b1+n1)\(x\a+m))) + (100%-z2% )*(o*((y2\b2+n2)\(x\a+m))) + (100%-z3% )*(o*((y3\b3+n3)\(x\a+m))) = опыт
*//*
  $res=db_use('query',"
  (select p.level,u.login,bu.id_person,bu.team from battle_units bu
  LEFT JOIN users u on u.id_person=bu.id_person
  LEFT JOIN person p on p.id_person=bu.id_person
  where bu.id_battle='".$id_battle."' and bu.id_person<100000)
  union
  (select p.level,b.name as login,bu.id_person,bu.team from battle_units bu
  LEFT JOIN bots b on b.id_bot=bu.id_person
  LEFT JOIN person p on p.id_person=b.id_maskperson
  where bu.id_battle='".$id_battle."' and bu.id_person>100000)
  ");
  unset($i);while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);$expir=0;$s1='';
  }

*/
  $res=db_use('query',"select p.level,p.exp,p.align,be.baseexp,u.login,bu.id_person,bu.team
  from battle_units bu
  LEFT JOIN users u on u.id_person=bu.id_person
  LEFT JOIN person p on p.id_person=bu.id_person
  LEFT JOIN base_exp be on be.level=p.level
  where bu.id_battle='".$id_battle."' and bu.id_person<100000");
  $endtime=time();
  db_use('query',"update battle set end_time='".$endtime."',complete=2, team_winner='".($team_winner==3?'0':$team_winner)."',timeout_win=".($timeout?1:0)." where id_battle='".$id_battle."'");

  unset($i);while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);$expir=0;$s1='';
    db_use('query',"delete from person_on where type=3 and id_person='".$s['id_person']."'");
    $pls_startchat[$s['team']]=$pls_startchat[$s['team']].($pls_startchat[$s['team']]?", ":'').$s['login'];
    if ($team_winner==$s['team']) { # выиграл
      # выиграл - дать опыт
      #$baseexp=$s['baseexp']; # o
#     echo "базовый=".$baseexp.' ';
      # x = $s['level']
      $mysumprice=db_use('array',"select sum(th.gos_price) as sumputon from puton po
      LEFT JOIN thing t on t.id_thing=po.id_thing
      LEFT JOIN thing_har th on th.id_thing2=t.id_thing2 where po.id_person='".$s['id_person']."'");
      $mysumprice=($mysumprice['sumputon']?$mysumprice['sumputon']:1); # a (одетые вещи $$$)
#     echo "одетые вещи ".$mysumprice.'кр ';
      $m=db_use('array',"select sil,lov,intu,vyn,intel,mudr,duh,vol,svob,boj
      from person where id_person='".$s['id_person']."'");
      $mysumstat=$m['sil']+$m['lov']+$m['intu']+$m['vyn']+$m['intel']+$m['mudr']+$m['duh']+$m['vol']+$m['svob']+$m['boj'];
       # m
#     echo "сумма статов ".$mysumstat.' ';
      $myexp=0;
      $plsx=db_use('query',"

      (select p.level,bx.baseexp*2 as baseexp,p.id_person,0 as id_maskperson from battle_units bu
      LEFT JOIN person p on p.id_person=bu.id_person
      LEFT JOIN base_exp bx on bx.level=p.level
      where bu.id_battle='".$id_battle."' and bu.id_person<100000
      and   team not in (select team from battle_units where id_person='".$s['id_person']."' and id_battle='".$id_battle."')
      )
      union
      (select p.level,bx.baseexp as baseexp,b.id_bot as id_person,b.id_maskperson from battle_units bu
      LEFT JOIN bots b on b.id_bot=bu.id_person
      LEFT JOIN person p on p.id_person=b.id_maskperson
      LEFT JOIN base_exp bx on bx.level=p.level
      where bu.id_battle='".$id_battle."' and bu.id_person>100000
       and team not in (select team from battle_units where id_person='".$s['id_person']."' and id_battle='".$id_battle."')
      )
      ");
      #and  b.name not like '%(клон%'
      /*echo "
      (select p.level,p.id_person,0 as id_maskperson from battle_units bu
      LEFT JOIN person p on p.id_person=bu.id_person
      where bu.id_battle='".$id_battle."' and bu.id_person<100000
      and   team not in (select team from battle_units where id_person='".$s['id_person']."' and id_battle='".$id_battle."')
      )
      union
      (select p.level,b.id_bot as id_person,b.id_maskperson from battle_units bu
      LEFT JOIN bots b on b.id_bot=bu.id_person
      LEFT JOIN person p on p.id_person=b.id_maskperson
      where bu.id_battle='".$id_battle."' and bu.id_person>100000
      and     team not in (select team from battle_units where id_person='".$s['id_person']."' and id_battle='".$id_battle."')
      )
      ";*/

      # все противники и их левелы
      #echo ">>".mysql_num_rows($plsx)."<<";
      unset($i2);while ($i2<mysql_num_rows($plsx)) {
        $i2++;$spl=mysql_fetch_array($plsx);
#echo '---['.$spl['id_person'].']---<br />';
#print_r($spl);#die;
        # y=$spl['level']
#       echo "<br>противник ".$spl['id_person'].' ';
        $myuron=db_use('array',"select sum(be.damage) as uron from battle_event be
      LEFT JOIN battle_step bs on be.id_bstep=bs.id_bstep
      where bs.id_battle='".$id_battle."' and be.id_battle='".$id_battle."' and ((be.type1=1 and bs.id_person1='".$s['id_person']."' and bs.id_person2='".$spl['id_person']."') or (be.type1=2 and bs.id_person2='".$s['id_person']."' and bs.id_person1='".$spl['id_person']."'))");$myuron=-$myuron['uron'];

        # z мой урон противнику
#       echo "<br>мой урон ему ".$myuron.' ';
#echo '---['.$spl['id_person'].']---<br />';

      if ($spl['id_person']>100000) {
#     echo "enemy bot<br />";
      $sumprice=db_use('array',"select sum(th.gos_price) as sumputon from puton po
      LEFT JOIN thing t on t.id_thing=po.id_thing
      LEFT JOIN thing_har th on th.id_thing2=t.id_thing2 where po.id_person='".$spl['id_maskperson']."'");
#       echo "<br>сумма его вещей ".$sumprice.'кр ';
      $sumprice=($sumprice['sumputon']>0?$sumprice['sumputon']:1); # b (одетые вещи $$$)
      if ($timeout) {$myuron=0;}
      $m=db_use('array',"select sil,lov,intu,vyn,intel,mudr,duh,vol,svob,boj
      from person where id_person='".$spl['id_maskperson']."'");
      $sumstat=$m['sil']+$m['lov']+$m['intu']+$m['vyn']+$m['intel']+$m['mudr']+$m['duh']+$m['vol']+$m['svob']+$m['boj'];
#       echo "<br>сумма его статов ".$sumstat.' ';
      }else{
#     echo "enemy human<br />";
      $sumprice=db_use('array',"select sum(th.gos_price) as sumputon from puton po
      LEFT JOIN thing t on t.id_thing=po.id_thing
      LEFT JOIN thing_har th on th.id_thing2=t.id_thing2 where po.id_person='".$spl['id_person']."'");
      $sumprice=($sumprice['sumputon']>0?$sumprice['sumputon']:1); # b (одетые вещи $$$)
#       echo "<br>сумма его вещей ".$sumprice.'кр ';
      $m=db_use('array',"select sil,lov,intu,vyn,intel,mudr,duh,vol,svob,boj
      from person where id_person='".$spl['id_person']."'");
      $sumstat=$m['sil']+$m['lov']+$m['intu']+$m['vyn']+$m['intel']+$m['mudr']+$m['duh']+$m['vol']+$m['svob']+$m['boj'];
      }
        #/x /y /a /b /m /n /o /z
        $enemy=new persinfo($spl['id_person']);
#       echo "<br>его макс жизнь ".$enemy->maxlife().' ';

$otn=(1+$mysumprice)/(1+$sumprice);
# он не одет (плохо одет) otn=1000/1 >= 2 - давать меньше опыта
# он одет 1000/600 = 1.5 давать больше
# он одет лучше otn=1000/2000 < 2 - давать больше опыта
if ($otn>=2) { $otn=2; }
else {}
$ur11=($myuron/$enemy->maxlife());
if ($ur11>1) $ur11=1;

      /* echo 'exp='.$myexp.'+'.'
        (('.$ur11.')) * (
          '.$spl['baseexp'].' * (
            ( '.$spl['level'].' / '.$sumprice.' + '.$sumstat.')
                      /
            ('.$s['level'].' / '.$mysumprice.' + '.$mysumstat.')
                )
                  ) ;';
                  */
        $myexp=$myexp+
      (
        (
        ($ur11) * (
          $s['baseexp'] * (
            ( $spl['level'] / $sumprice + $sumstat)
                      /
            ($s['level'] / $mysumprice + $mysumstat)
                )
                )*( ((int)$s['align'])==2?0.5:1 ))
      )* ($spl['id_person']>100000?1:2)
                 ;
echo "опыт=".$myexp.'+('.
        $ur11.' * ('.
          $s['baseexp'].' * (
            ( '.$spl['level'].' / '.$sumprice.' + '.$sumstat.')
                      /
            ('.$s['level'].' / '.$mysumprice.' + '.$mysumstat.')
                )
                  )*( '.((int)$s['align']==2?0.5:1 ).($spl['id_person']>100000?'':'*2 (за людей в два раза больше)').'<br />' ;
                # if ((int)$s['align'])


#       echo $myexp;

      #db_use('array',"select baseexp from base_exp where level='".$s['level']."'");  $baseexp=$baseexp['baseexp'];

      # мои: level,sum$,sumstats
      # для каждого кому нанесен урон
      # level,sum$,sumstats

      }
      global $incexp;
      $inf=new persinfo($s[id_person]);
      $expir=(int)$myexp*
      (1+
        (($incexp+specialvalue('inc_expr',$inf->hars[5]['inc_expr']))/100)
      ); echo "<br />".$inf->name." получил ".$expir."XP";
      if ($s['id_person']==$myinfo->id_person) {$return=$expir;}
      $s1=", exp=exp+'".(((int)$expir)>0?((int)$expir):0)."'";
      #echo "ВЫИГРАЛА КОМАНДА ".$team_winner." ".$s['id_person'];die;
    }elseif ($team_winner==3){ # ничья
      # ничья
    }else{ # проиграл
      if ($timeout) {
        # проиграл по таймауту
          # узнать базовый опыт чела
          #$bo=db_use('array',"SELECT baseexp FROM base_exp WHERE level=(SELECT level FROM person WHERE id_person='".($s['id_person'])."')");
          $bo=$s[baseexp];
          $ne=db_use('array',"SELECT need_exp FROM exptable WHERE id_step=(SELECT id_step FROM person WHERE id_person='".($s['id_person'])."')");
          $ne=$ne[need_exp];
          if ($s['exp']-$bo < $ne) { $bo=$s['exp']-$ne; }
          # узнать сколько отнять до апа
          $expir=$bo;
          if ($s['id_person']==$myinfo->id_person) {$return=$expir;}
          $s1=", exp=exp-'".((int)$expir)."'";
          $expir=-$expir;
        # команде что слила по тайму (последний удар не ее)
      }
      # проиграл - ломать вещи
      db_use('query',"update thing set srok=srok+1 where id_thing in (select id_thing from puton where id_person='".$s['id_person']."' and slot<100)");
      # пройтись по вещам и найти сломаные для вывода конца лога с рекламой мастерской
      # предположительно остается 10% и меньше либо осталась единичка
      $shmot=db_use('query',"select t.*,th.name from puton po LEFT JOIN thing t on t.id_thing=po.id_thing LEFT JOIN thing_har th on th.id_thing2=t.id_thing2 where (t.maxsrok-t.srok<=t.maxsrok/10 or t.maxsrok=t.srok+1) and t.maxsrok>=10 and po.id_person='".$s['id_person']."'");
      unset($shi);while ($shi<mysql_num_rows($shmot)) { # предупреждение только для вещей где осталось 10% или для вещей где осталась одна единичка годности
        $shi++;$shs=mysql_fetch_array($shmot);
        if ($shs['maxsrok']>=$shs['srok']) { # полная негодность

        }else{ # негодность

        }
      }
    }
    if ($timeout) {
#     db_use('query',"update person set life=0 where id_person in (select id_person from battle_units where id_battle='".$id_battle."'".($team_winner==3?'and team=33':" and team<>'".$team_winner."'").")");
      if ($s['team']==$team_winner) { # проигравшему по тайму - травма и сброс хп до половины
        db_use('query',"update person set life=life/2,travma_id=3,travma_type=1,travma_time='".(time()+60*60*3)."' where id_person in (select id_person from battle_units where id_battle='".$id_battle."' and team<>'".$team_winner."')");
      }
    }
    db_use('query',"update person set regen_timestamp='".time()."'".($team_winner==$s['team']?', wins=wins+1':($team_winner==3?', nich=nich+1':', loss=loss+1')).' '.$s1." where id_person='".$s['id_person']."'");
    db_use('query',"update battle_units set exp='".$expir."' where id_person='".$s['id_person']."' and id_battle='".$id_battle."'");
    checkuplevel($s['id_person']);
  }
  #----------------- ЧИСТКА БАЗЫ БИТВ
  # найти минимальную битву (первую)


  $res=db_use('array',"select min(id_battle) as m from battle where id_battle>0 and id_battle!='".$id_battle."';");
  $idbt=$res['m'];
  # удалить ее ботов
  $res=db_use('query',"select id_person from battle_units where id_person>100000 and id_battle='".$idbt."'");
  unset($i);while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);
    db_use('query',"delete from bots where id_bot='".$s['id_person']."'");
  }
  # удалить все о битве из базы
  db_use('query',"begin;");
  db_use('query',"set FOREIGN_KEY_CHECKS=0;");
  db_use('query',"delete from battle_log where id_battle='".$idbt."';");
  db_use('query',"set FOREIGN_KEY_CHECKS=1;");
  db_use('query',"commit;");
  $res=db_use('query',"select id_event from battle_event where id_battle='".$idbt."'");
  unset($i);while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);
    db_use('query',"begin;");
  db_use('query',"set FOREIGN_KEY_CHECKS=0;");
  db_use('query',"delete from battle_event where id_battle='".$idbt."' and id_event='".$s['id_event']."';");
  db_use('query',"set FOREIGN_KEY_CHECKS=1;");
  db_use('query',"commit; ");
  }
  $res=db_use('query',"select id_bstep from battle_step where id_battle='".$idbt."'");
  unset($i);while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);
    db_use('query',"begin;");
  db_use('query',"set FOREIGN_KEY_CHECKS=0;");
  db_use('query',"delete from battle_step where id_battle='".$idbt."' and id_bstep='".$s['id_bstep']."';");
  db_use('query',"set FOREIGN_KEY_CHECKS=1;");
  db_use('query',"commit; ");
  }
  db_use('query',"begin;");
  db_use('query',"set FOREIGN_KEY_CHECKS=0;");
  db_use('query',"delete from battle_units where id_battle='".$idbt."'; ");
  db_use('query',"set FOREIGN_KEY_CHECKS=1;");
  db_use('query',"commit;");
  db_use('query',"begin;");
  db_use('query',"set FOREIGN_KEY_CHECKS=0;");
  db_use('query',"delete from battle where id_battle='".$idbt."';");
  db_use('query',"set FOREIGN_KEY_CHECKS=1;");
  db_use('query',"commit; ");


  db_use('query',"update person set id_battle=0 where id_battle not in (select id_battle from battle);");

  db_use('query',"insert into chat (timestamp,id_room,nick,text,color,type) values(".$endtime.",'".$myinfo->id_room."','',' Бой между <B>".$pls_startchat[1]."</B>".($team_winner==1?'<IMG SRC="../i/flag.gif" WIDTH=20 HEIGHT=20 BORDER=0 ALT="победитель">':'')." и <B>".$pls_startchat[2]."</B>".($team_winner==2?'<IMG SRC="../i/flag.gif" WIDTH=20 HEIGHT=20 BORDER=0 ALT="победитель">':'')." закончен.','','4')");
return $return;
}#/func
function getinroom($roomt,$id_city) {
$res=db_use('array',"select count(*) as coun from sessions s
LEFT JOIN users u on u.login=s.username
LEFT JOIN person p on p.id_person=u.id_person
where p.id_room=(select id_room from room where roomtype='".$roomt."' and id_city='".$id_city."')");
return $res['coun'];
}
function start_battle($id_battle,$my_id) { # сделать все необходимые UPDATE для начала битвы. я в битве - вернется true
      unset($units1,$units2);
      $res1=db_use('query',"select id_person,team from battle_units where id_battle='".$id_battle."'");
      unset($i2);while ($i2<mysql_num_rows($res1)) {
        $i2++;$s2=mysql_fetch_array($res1);
        if ($s2['team']==1) { $units1[]=$s2['id_person']; } else { $units2[]=$s2['id_person']; }
        if ($s2['id_person']==$my_id) { $enable_startbattle=true; }
      }
      # в какой команде больше игроков?
      if (count($units1)>=count($units2)) { $team_r=false;$u1=&$units1;$u2=&$units2; } else {$team_r=true;$u1=&$units2;$u2=&$units1;}
      $i3=-1;
      for ($i2=0;$i2<count($u1);$i2++ ) {
        $i3++; if ($i3>=count($u2) ) {$i3=0;}
        db_use('query',"update battle_units set id_enemy='".$u2[$i3]."',s_duh=1000,hit=0,krit=0,block=0,counter=0,parry=0,hp=0 where id_person='".$u1[$i2]."' and id_battle='".$id_battle."'");
        db_use('query',"update battle_units set id_enemy='".$u1[$i2]."',s_duh=1000,hit=0,krit=0,block=0,counter=0,parry=0,hp=0 where id_person='".$u2[$i3]."' and id_battle='".$id_battle."'");
        db_use('query',"INSERT INTO battle_step (id_battle,id_person1,id_person2,is_result) VALUES (".$id_battle.",".(!$team_r?$u1[$i2]:$u2[$i3]).",".($team_r?$u1[$i2]:$u2[$i3]).",0)");
      }unset($i3,$i2,$u1,$u2,$units1,$units2);
      db_use('query',"UPDATE battle SET complete=1 WHERE id_battle='".$id_battle."';");
      echo "[!!!!]";
      db_use('query',"UPDATE person set id_battle='".$id_battle."' where id_person in (select id_person from battle_units where id_battle='".$id_battle."');");
  return $enable_startbattle;
}
function viewvalue($mf,$v,$x) { # название модификатора atrub, значение, ставить ли "плюс" на не "ничтожно редки" - значениях
  if ($mf=='magic_timeout') return $v.' мин.';
  elseif ($mf[0]=='a' && $mf[1]=='t') {
    if ($v==0) {return 'нет';}
    elseif ($v==1) {return 'ничтожно редки';}
    elseif ($v==2) {return 'редки';}
    elseif ($v==4) {return 'временами';}
    elseif ($v==3) {return 'малы';}
    elseif ($v==5) {return 'регулярны';}
    elseif ($v==6) {return 'часты';}
    elseif ($v==7) {return 'всегда';}
  #(0 нет,1 ничтожно редки,2 редки,3 малы,4 временами 5 регулярны,6 часты,7 всегда
  #(0 нет,1 ничтожно редки,11 редки,25 малы,49 временами 69 регулярны,89 часты,100 всегда
  }else {return ($x && $v>0?"+":"").$v;}
}
# ###############################################################
function get_next_enemy($myid,$myteam,$pls_id,$pls_hp,$id_cur_enemy) {
  $antimyteam=($myteam==1?2:1);
  for ($i=0;$i<count($pls_id[$antimyteam]);$i++) {
    if ($pls_id[$antimyteam][$i]==$id_cur_enemy) {$num_en=$i;} # текущий противник

  if ($myid) {
    $res=db_use('array',"select be.id_event from battle_event be
    LEFT JOIN battle_step bs on bs.id_bstep=be.id_bstep and bs.id_battle=be.id_battle
    LEFT JOIN battle_units bu on bu.id_battle=bs.id_battle
    where bu.id_person='".$myid."' and bs.is_result=0 and bs.id_person1='".($myteam==1?$myid:$pls_id[$antimyteam][$i])."' and bs.id_person2='".($myteam==2?$myid:$pls_id[$antimyteam][$i])."' and be.event_logtype=0");
    if ($res['id_event']>0) {echo "[0]";$pls_hp[$antimyteam][$i]=0;}
    }

      if ($pls_hp[$antimyteam][$i]>0) {
        $havehp=true; # кто-то еще жифф
        #echo 'havehp!';
        if (!$fixed_first_alive) {$first_alive=$i;$fixed_first_alive=true;} # нашли первого живого
        if ($i>$num_en && !$fixednew) {$fixednew=true;$next_enemy=$i; } # все противники после текущего, нет найденного живого после текущего
      }
  }
  # проанализировали всех. варианты: 1) нашли живого после 2) нет живого после
  if (!$fixednew) { # после нет живого - ваще есть живые?
    if ($havehp) {  $id_enemy1=$pls_id[$antimyteam][$first_alive];}
  }else{
    if ($havehp){ # если есть живой
      $id_enemy1=$pls_id[$antimyteam][$next_enemy];#echo "!!!new=".$pls_id[$antimyteam][$next_enemy].'('.$next_enemy;
    }else{ # бить не по кому - attack=false;
      $id_enemy1=0;#echo "нет HP";
    }
  }
  return $id_enemy1;
}#/function
# ###############################################################
include_once('pers_battfunc.php');

function createbot($id_maskperson,$botname,$id_battle,$team,$life,$maxhp,$level) { #return id_bot
#
  $res=db_use('query',"INSERT INTO bots(name,id_maskperson,life) values ('".$botname."','".$id_maskperson."','".$life."');");
  $id_bot=mysql_insert_id();
  db_use('query',"INSERT INTO battle_units (id_battle,id_person,team,s_duh,hit,krit,block,counter,parry,hp,userlevel,starthp)
      VALUES ('".$id_battle."','".$id_bot."',".$team.",0,0,0,0,0,0,0,'".$level."','".$maxhp."');");
  #$res=db_use('array',"select count(*) as coun from battle;");
  if($res['coun']>6000) {
    #$m=db_use('array',"select max(id_battle) as m from battle where id_battle>0");
    #$max=$m['m'];
    #db_use('query',"delete from battle_log where id_battle<'".($max-5500)."' and id_battle>'".($max-6000)."';");
    #db_use('query',"delete from battle_event where id_battle<'".($max-5500)."' and id_battle>'".($max-6000)."';");
    #db_use('query',"delete from battle_step where id_battle<'".($max-5500)."' and id_battle>'".($max-6000)."';");
    #db_use('query',"delete from battle_units where id_battle<'".($max-5500)."' and id_battle>'".($max-6000)."';");
    #db_use('query',"delete from battle where id_battle<'".($max-5500)."' and id_battle>'".($max-6000)."';");
  }

return $id_bot;
}
function ispal($align) {if ((int)$align==1 && $align!='1.001') return true; }

function bstep_new($id_battle,$id_person1,$id_person2,$is_result) { # новый BSTEP для двоих. результат произволен
  db_use('query',"INSERT INTO battle_step (id_battle,id_person1,id_person2,is_result)
  VALUES (".$id_battle.",".$id_person1.",".$id_person2.",'".(0+$is_result)."')");
  return mysql_insert_id();
}
function bstep_find($id_battle,$id_person1,$id_person2,$is_result){ # поиск BSTEP для двоих с указанным result
  $res=db_use('array',"select id_bstep from battle_step where id_battle='".$id_battle."' and id_person1='".$id_person1."' and id_person2='".$id_person2."' and is_result='".(0+$is_result)."'");
  if ($id_battle==9145) {
  # echo "select id_bstep from battle_step where id_battle='".$id_battle."' and id_person1='".$id_person1."' and id_person2='".$id_person2."' and is_result='".(0+$is_result)."'";
  }
  return $res['id_bstep'];
}
function bstep_checknoresult($id_battle,$id_person1,$id_person2){ # есть ли несрезультенный BSTEP для двоих
  $res=db_use('array',"select id_bstep from battle_step where id_battle='".$id_battle."' and id_person1='".$id_person1."' and id_person2='".$id_person2."' and is_result=0");
  return ($res['id_bstep']?true:false);
}
function bstep_setresult($id_battle,$id_bstep){ # срезультить BSTEP
  db_use('query',"update battle_step set is_result=1 where id_battle='".$id_battle."' and id_bstep='".$id_bstep."'");
}
function setnextenemy($id_battle,$id_person,$id_enemy) { # поставить нового противника по умолчанию
  db_use('query',"update battle_units set id_enemy='".$id_enemy."' where id_person='".$id_person."' and id_battle='".$id_battle."'");
}
function newevent($id_battle,$id_bstep,$myteam,$attack,$defend,$logtype) { # создать событие
    $res=db_use('array',"select max(id_event) as max1 FROM battle_event WHERE id_battle='".$id_battle."'");
    db_use('query',"INSERT INTO battle_event (id_battle,id_event,id_bstep,timestamp,type1,udar,block,event_logtype)
    VALUES ('".$id_battle."','".($res['max1']+1)."','".$id_bstep."','".time()."','".$myteam."','".$attack."','".$defend."','".(0+$logtype)."');");
    db_use('query',"update battle set last_event='".time()."', last_team='".(0+$myteam)."' where id_battle='".$id_battle."'");
    return ($res['max1']+1);
}
include_once('c_abils.php');
function usezakl($zakl,$param,$doattack,$attackc,$n) {
global $myinv,$myinfo;
#echo "usezakl";
#doattack - если вещь не юзается (нападение)
#attackc-значит param=id
    # для нападений
    $okuse=true;
    if ($zakl=='attack') {
      if ($attackc) {
        if ($param>100000){
          $res=db_use('array',"select b.id_bot as id_person,b.name as username,p.level from
          bots b
          LEFT JOIN person p on p.id_person=b.id_maskperson
          where b.id_bot='".mysql_escape_string($param)."'");
        }else{
          $res=db_use('array',"select p.id_person,s.username,p.level from person p
          LEFT JOIN users u on u.id_person=p.id_person
          LEFT JOIN sessions s on s.username=u.login
          where p.id_person='".mysql_escape_string($param)."'");
        }

      }else{
      $res=db_use('array',"select p.id_person,s.username,p.level from person p LEFT JOIN sessions s on s.username='".mysql_escape_string($param)."' where p.persname='".mysql_escape_string($param)."' or p.id_person=(select id_person from users where login='".mysql_escape_string($param)."')");

      }
      $id_person_x=$res['id_person'];
      if ($res['username']=='') {
        $message='Персонаж не находится в клубе';$okuse=false;
      }elseif ($id_person_x==$myinfo->id_person) {
        $message="На себя нельзя напасть"; $okuse=false;
      }else{
        if (!$id_person_x) {$message='Персонаж не найден';$okuse=false;} elseif ($res['level']<1){
          $message='Новички находятся под защитой мироздателя';$okuse=false;
          db_use('query',"update person set life=0 where id_person='".$myinfo->id_person."'");
        }
      }
    }elseif ($zakl=='cure1' or $zakl=='cure2') {
    $okuse=true;
      $res=db_use('array',"select p.id_person,s.username,p.level,p.travma_type,p.travma_time from person p LEFT JOIN sessions s on s.username='".mysql_escape_string($param)."' where p.persname='".mysql_escape_string($param)."' or p.id_person=(select id_person from users where login='".mysql_escape_string($param)."')");
      $id_person_x=$res['id_person'];
      if (!$res['username']) {
        $message='Персонаж не находится в клубе';$okuse=false;
      }elseif($zakl=='cure1' && ($res['travma_time']<time() OR $res['travma_type']!=1)){
        $message='На персонаже нет легкой травмы';$okuse=false;
      }elseif($zakl=='cure2' && ($res['travma_time']<time() OR $res['travma_type']!=2)){
        $message='На персонаже нет средней травмы';$okuse=false;
      }
      if (!$id_person_x) {$message='Персонаж не найден';$okuse=false;}
      #echo ($okuse?'ok':'nook');
      #echo ($doattack?'doattack':'nodoattack');
    }else{$okuse=false;
    }
    #--------------------------------------------------------------
    if ($okuse) {
      if(!$doattack){

        # проверка характеристик вещи
        $res=db_use('array',"select id_thing from inv where id_thing='".$n."' and id_person='".$myinfo->id_person."'");
        if ($res[id_thing]) { $set_found=true; }
        else{
          $res=db_use('array',"select id_thing from puton where id_thing='".$n."' and id_person='".$myinfo->id_person."'");
          if ($res[id_thing]) { $set_found=true; }
        }

/*        for ($ix=0;$ix<=count($myinv->things);$ix++) {
          if ($myinv->things[$ix]->id_thing==$n) {
            $set_found=true;$n=$ix;break;
          }#if ($myinv->things[$ix]->id_thing==$n) {
        }#/for ($ix=0;$ix<=count($myinv->things);$ix++) {
*/
      }
      #print_r($_REQUEST);
      #echo ($set_found?'set_found':'noset_found');#die;
      if ($set_found or $doattack) {
        $ok=true;
        if (!$doattack) { # свиток
          $thing=fullthing($n);

          #$thing=&$myinv->things[$n];
          if ($thing->zakl!=$zakl && $thing->type2==13) { $ok=false; } # не то, свиток
          if ($thing->vzakl!=$zakl && $thing->type2!=13) { $ok=false; } # не то, встройка
          if ($thing->vzakl==$zakl && $thing->type2!=13
          && $thing->vsrok>=$thing->vmaxsrok) { $message='Все заряды потрачены';$ok=false; }
          if ($thing->zakl==$zakl && $thing->type2==13
          && $thing->srok>=$thing->maxsrok) { $message='Свиток более непригоден';$ok=false;
          }
          $ok2=checkneeds($myinfo,$thing);
          if ($ok2!=1) {$ok=false; $message=$ok2;};
        }#echo $message;
      #echo ($ok?'ok':'nook');die;
         if ($ok) {
          if($zakl=='attack') {

            if ($thing->stats['versr']<1) $thing->stats['versr']=100;
            $messx=napast($id_person_x,($doattack?3:2));
          if ($messx=='') { #echo $thing->zakl;
            if (!$doattack) {
                        # versr plus
        if ($myinfo->sumall('intel')>$thing->needstats['intel'] && $thing->needstats['intel']>0) {
          $k=$myinfo->sumall('intel')/$thing->needstats['intel'];
          $raz=100-$thing->stats['versr'];
          $value->stats['versr']=$thing->stats['versr']+( $raz*($k-1) ) ;
          # 1.1 1.6 -1 = 0.6        # 20%
        }
              if (rand(1,100)<$thing->stats['versr']) {
              }else{
                $message='Не сработало';
              }
              if ($thing->zakl==$zakl) {
                db_use('query',"update thing set srok=srok+1 where id_thing='".$thing->id_thing."'");
                $thing->srok++;
                if ($thing->srok>=$thing->maxsrok) {
                  db_use('query',"delete from thing where id_thing='".$thing->id_thing."'");
                }
              }else{
                db_use('query',"update thing set vsrok=vsrok+1 where id_thing='".$thing->id_thing."'");
                $thing->vsrok++;
              }#/if ($thing->zakl==$zakl) {
              $regeninv=true;
            }
          } else{
            $message=$messx;
          }#if ($messx=='') { #echo $thing->zakl;

          }elseif ($zakl=='cure1' or $zakl=='cure2') {
            if ($thing->stats['versr']<1) $thing->stats['versr']=100;
                        # versr plus
        if ($myinfo->sumall('intel')>$thing->needstats['intel'] && $thing->needstats['intel']>0) {
          $k=$myinfo->sumall('intel')/$thing->needstats['intel'];
          $raz=100-$thing->stats['versr'];
          $value->stats['versr']=$thing->stats['versr']+( $raz*($k-1) ) ;
          # 1.1 1.6 -1 = 0.6        # 20%
        } echo 'Вероятность срабатывания: '.$thing->stats['versr'].'%';
            if (rand(1,100)<$thing->stats['versr']) {
              db_use('query',"update person set travma_id=0,travma_time=0,travma_type=0 where id_person='".$id_person_x."'");
              $message='Персонаж успешно излечен от травмы.';
              new_chat_message5($id_person_x,"Вас излечил".($myinfo->sex?'а':'').' от травмы '.$myinfo->name.'['.$myinfo->level.']'."");
            }else{
              $message='Не сработало';
            }
            if ($thing->zakl==$zakl) {
              db_use('query',"update thing set srok=srok+1 where id_thing='".$thing->id_thing."'");
              $thing->srok++;
              if ($thing->srok==$thing->maxsrok) {
                db_use('query',"delete from thing where id_thing='".$thing->id_thing."'");
              }
            }else{
              db_use('query',"update thing set vsrok=vsrok+1 where id_thing='".$thing->id_thing."'");
              $thing->vsrok++;
            }#/if ($thing->zakl==$zakl) {
            $regeninv=true;
          }#/zakl
        }#/ok
      }else{
        $message='Предмет не найден в рюкзаке';
      }#/set found
  }#/okuse
return $message;
}#/func
function result_bstep($id_bstep,$inf1,$inf2,$k,$id_battle) {
  $res=db_use('query',"select * from battle_event where id_bstep='".$id_bstep."' and event_logtype=0");
  unset($i);while ($i<mysql_num_rows($res)) {
    $i++;$s=mysql_fetch_array($res);
    if ($s['type1']==1) {$block1=$s['block'];}else{$block2=$s['block'];}
    if ($s['type1']==1) {$att1[]=$s['udar'];$ev1[]=$s['id_event'];}
    else{$att2[]=$s['udar'];$ev2[]=$s['id_event'];}
  }
  for ($i=0;$i<count($att1);$i++) {
    doudar($inf1,$inf2,($i+1),$att1[$i],$block2,$block1,$ev1[$i],$k,$id_battle,$id_bstep,1);
  }
  for ($i=0;$i<count($att1);$i++) {
    doudar($inf2,$inf1,($i+1),$att2[$i],$block1,$block2,$ev2[$i],$k,$id_battle,$id_bstep,2);
  }
  db_use('query',"update battle_step set is_result=1 where id_bstep='".$id_bstep."'");
}
function doudar($myinfo,$enemy,$attnum,$myatt,$enblock,$myblock,$myevent1,$k,$id_battle,$id_bstep,$myteam) {
  $uv2=c_uv($enemy);  $pruv1=c_pruv($myinfo); $kr2=c_kr($enemy);  $prkr1=c_prkr($myinfo);
  $pruv2x=100/ ($uv2/$pruv1); $veruv2=100-$pruv2x;$veruv2=($veruv2<0?0:$veruv2);
  $prkr2x=100/ ($kr2/$prkr1); $verkr2=100-$prkr2x;$verkr2=($verkr2<0?0:$verkr2);
  # 100-15=85
  #мой удар
  $r2=rand(0,100);if ($r2>$veruv2) {$verud12=true;} else {$verud12=false;}
  $r2=rand(0,100);if ($r2>$verkr2) {$verkr12=true;} else {$verkr12=false;}
  include_once('udar.php');
  $enemy->life=udar12($myinfo,$enemy, $myatt,$enblock,$myevent1,0,
  $verud12,$verkr12,$attnum,$k,$id_battle,$id_bstep,$myteam,0,0);
}
function perezar_cost($zakl) {
  switch ($zakl) {
  case 'cureHP600':$price=10;break;
  case 'cureHP1200':$price=15;break;
  case 'mirror':$price=8;break;
  default:$price=5;break;
}
return $price;
}
# BATTLE FUNCTIONS =======================================================================
function person_in_battle ($id_person)
{
  $res=db_use('array',"select id_battle from person where id_person='".strval($id_person)."';");
  return $res['id_battle'];
}
function start_battle_now($id_battle,$k) # начать битву: время старта, снять все для кулачных, часы показывали return $start_time;
{
  $start_time=time();
  db_use('query',"update battle set start_time='".strval($start_time)."' where id_battle='".strval($id_battle)."'");
  # при кулачном бое - снять все с игроков
  if ($k==1) {
    unputon_all_from_persons_in_battle($id_battle);
  }
  insert_event(44,$id_battle,0); # Начало боя - часы показывали
  insert_event(32,$id_battle,0); # Начало боя - часы показывали
  return $start_time;
}
function unputon_all_from_persons_in_battle($id_battle)
{
  $res=db_use('query',"select * from puton where id_person in (select id_person from battle_units where id_battle='".strval($id_battle)."')");
  unset($i);while ($i<mysql_num_rows($res))
  {
    $i++;$s=mysql_fetch_array($res);
    db_use('query',"delete from puton where id_person='".strval($s['id_person'])."' and id_thing='".strval($s['id_thing'])."';");
    db_use('query',"insert into inv (id_person,id_thing) values ('".strval($s['id_person'])."','".strval($s['id_thing'])."');");
  }
}
function is_in_battle($id_person) # находится ли в битве complete=0
{
  $x=db_use("array","select b.id_battle from battle b
  LEFT JOIN battle_units bu on bu.id_battle=b.id_battle where b.complete=0 and bu.id_person='".strval($id_person)."'");
  return $x[id_battle];
}
# /BATTLE FUNCTIONS =======================================================================
# ============================== CHAT MESSAGES ===================
  function new_chat_message5($id_person_x,$message) # личные системные сообщения ВНИМАНИЕ
  {
    db_use('query',"insert into chat (timestamp,id_room,nick,text,color,type)
    values(".time().",'0','".strval($id_person_x)."','".mysql_escape_string($message)."','Black','5')");
  }
# ///////////////============================== CHAT MESSAGES ===================

include_once('!gameconfig.php');
?>
