<?php
// кастинг заклинаний
if ($use{2}>0 && $use{2}<10) {
$tm=explode("|",$l_i[$loc][$login]["magic"]);
$tc=intval($use{2})-1;
if ($tm[$tc]) {$use=substr($tm[$tc],0,strpos($tm[$tc],":"));$l_i[$loc][$login]["macrol"]="use|$use|to|$to";} else msg("В вашей книге заклинаний нет заклинания под номером ".($tc+1));
}
if (file_exists("items/".$use)) $magic=explode("|",implode("",file("items/".$use))); else die("err: no items/".$use);
if (!$scroll) if (strpos($l_i[$loc][$login]["magic"],$use.":")===false) msg("В вашей книге заклинаний нет ".$magic[0].", найдите NPC, который поможет его изучить.");
// нужна ли цель
if (($magic[6] && $to) || !$magic[6]) {
if ($magic[6] && $to && !isset($l_i[$loc][$to]) && strpos($l_i[$loc][$login]["items"],$to.":")===false || substr($use,0,6)=="m.w.a." && count($l_i[$loc])==1) addjournal($loc,$login,"Нет цели");
else {
// хватает ли маны
if ($char[3]>=$magic[1]) {
// из книги
if ($scroll || !$scroll && time()>intval(preg_replace('/.*'.$use.':(\d+).*/',"\\1",$l_i[$loc][$login]["magic"]))) {
$skills=explode("|",$l_i[$loc][$login]["skills"]);
// вероятность кастинга
$cast=($skills[13]*0.5+$skills[2]*1.5)*10-$magic[2]*10+10-(max($skills[0],2)-2)*4;
if ($char[12]) $cast-=10;
if ($game["fid"]==$login && $game["floc"]==$loc) $cast+=20; // флаг
if ($cast>95) $cast=95;
if ($login=="u.qv") {$skills[0]=1; $cast=100;}
if ($login=="u.admin") {$skills[0]=1; $cast=100;}
if ($login=="u.qw") {$skills[0]=1; $cast=100;}
if ($login=="u.kv") {$skills[0]=1; $cast=100;}
if ($login=="u.scream") {$skills[0]=1; $cast=100;}
if ($cast>0 && $skills[13]) {
$char[3]-=$magic[1];
$char[6]=time()+$magic[8]+3-$skills[1]+(max($skills[0],2)-2)*4;
$l_i[$loc][$login]["char"]=implode("|",$char);
// обновляем период
if (!$scroll) {if (substr($use,0,4)=="m.w.") $tper=time()+$magic[9]+(max($skills[0],2)-2)*1200; else $tper=time()+$magic[9]; $l_i[$loc][$login]["magic"]=preg_replace('/'.$use.':(\d+)/',$use.":".$tper,$l_i[$loc][$login]["magic"]);}
// удаляем скролл
if ($scroll && substr($scroll,0,4)=='i.m.') additem($loc,$login,"",$scroll,1,"items","items",1,-1,1);
// произносим заклинание
if ($magic[3]) {
$tw=$char[0].": ".$magic[3];
if (substr($use,0,4)=="m.w." && substr($l_i[$loc][$login]["def"],0,5)=="p.d.c") $tw.="(концентрация)";
addjournal($loc,"all",$tw);
}
if (rand(0,100)<=$cast) { // удалось
// все заклинания
if (substr($use,0,4)=="m.w.") include "plugin/m.w.dat";
else
if (substr($use,0,6)=="m.heal") include "plugin/m.heal.dat";
else
if (substr($use,0,4)=="m.s.") include "plugin/m.s.dat";
else if (file_exists("plugin/".$use.".dat")) include "plugin/".$use.".dat"; else die("err: no plugin/".$use.".dat"); // остальные в файлах
}else {addjournal($loc,$login,"Заклинание сорвалось"); addjournal($loc,"all",$char[0]. "(заклинание сорвалось)",$login); $loss=1; if (substr($use,0,4)=="m.w.") include "plugin/m.w.dat";}
}else addjournal($loc,$login,"Слишком слабый навык магии");
}else addjournal($loc,$login,"Период ".$magic[0]." не истек (еще ".(round((intval(preg_replace('/.*'.$use.':(\d+).*/',"\\1",$l_i[$loc][$login]["magic"]))-time())/60)+1)." минут)");
}else addjournal($loc,$login,"Недостаточно маны");
}// нет цели
} else {$list='all';} // нужна цель