View file game/2/f_usemagic.dat

File size: 3.38Kb
<?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';}	// нужна цель