View file game/1/f_mobpriem.dat

File size: 5.74Kb
<?php
// использование приемов

		if (strpos($l_i[$loc][$from]["equip"],"i.w.r.")!==false) msg("Приемы можно использовать только в рукопашном бою или с холодным оружием ближнего боя");

		if ($use{2}>0 && $use{2}<10) {
			$tm=explode("|",$l_i[$loc][$from]["priem"]);
			$tc=intval($use{2})-1;
			if ($tm[$tc]) {$use=substr($tm[$tc],0,strpos($tm[$tc],":"));$l_i[$loc][$from]["macrol"]="use|$use|to|$to";} else msg("У вас нет приема под номером ".($tc+1));
			}

		if (file_exists("items/".$use)) $priem=explode("|",implode("",file("items/".$use))); else die("err: no items/".$use);
		if (strpos($l_i[$loc][$from]["priem"],$use.":")===false) msg("Вы не знаете прием ".$magic[0].", найдите NPC, который поможет его изучить.");
		if ($to==$from || !$to) msg("Нельзя применять прием к самому себе");

		// для боевых всегда нужна цель, для защитных не действует период
		if (substr($use,0,4)=="p.d." || substr($use,0,4)!="p.d." && isset($l_i[$loc][$to])) {
			if (substr($use,0,4)=="p.d." || time()>intval(preg_replace('/.*'.$use.':(\d+).*/',"\\1",$l_i[$loc][$from]["priem"]))) {
			$skills=explode("|",$l_i[$loc][$from]["skills"]);
			$war=explode("|",$l_i[$loc][$from]["war"]);
			// флаг
			if ($game["fid"]==$from && $game["floc"]==$loc) $war[0]+=10;
			$ihit=($skills[2]-1)*10;	// штраф по интеллекту
			if($char[12]) $ihit+=10;	// штраф если на коне
			// боевой
			if (substr($use,0,4)!="p.d.") {
				// период
				$l_i[$loc][$from]["priem"]=preg_replace('/'.$use.':(\d+)/',$use.":".(time()+$priem[1]),$l_i[$loc][$from]["priem"]);
				$magic=$war;
				$magic[0]-=$ihit;

				if ($use=="p.b") {$magic[1]=round($magic[1]*0.7);$magic[2]=round($magic[2]*0.7); $magic[3]=round($magic[3]*0.5);}
				if ($use=="p.d") {$magic[0]-=15;$magic[3]=-1;}
				if ($use=="p.me") {$magic[0]-=10;$magic[3]=-1;}
				if ($use=="p.m") {$magic[1]=round($magic[1]*0.7);$magic[2]=round($magic[2]*0.7);$magic[0]+=40;}
				if ($use=="p.n") {$magic[1]=round($magic[1]*0.6);$magic[2]=round($magic[2]*0.6);}
				if ($use=="p.r") {$magic[1]=round($magic[1]*0.4);$magic[2]=round($magic[2]*0.4);}
				if ($use=="p.vw") {$magic[1]=round($magic[1]*0.2);$magic[2]=round($magic[2]*0.2);}
				if ($use=="p.vs") {$magic[1]=round($magic[1]*0.2);$magic[2]=round($magic[2]*0.2);}
				if ($use=="p.g") {$magic[0]-=30;if (strpos($l_i[$loc][$from]["equip"],"i.w.")!==false) {$magic[1]+=$skills[0]*2+$skills[9];$magic[2]+=$skills[0]*2+$skills[9];} else {$magic[1]+=$skills[0]+$skills[8];$magic[2]+=$skills[0]+$skills[8];}}
				if ($use=="p.p") {$magic[0]-=20;if (strpos($l_i[$loc][$from]["equip"],"i.w.")!==false) $magic[2]+=$skills[0]*3+$skills[9]*2; else $magic[2]+=$skills[0]*2+$skills[8];}
				if ($use=="p.s") {$magic[0]-=10;if (strpos($l_i[$loc][$from]["equip"],"i.w.")!==false) $magic[2]+=$skills[0]*2+$skills[9]; else $magic[2]+=$skills[0]+$skills[8];}

				if($magic[0]<1) $magic[0]=5;
				if($magic[0]>95) $magic[0]=95;
				if($magic[1]<0) $magic[1]=0;
				if($magic[2]<0) $magic[2]=0;

				attack($loc,$from,$to,implode("|",$magic),1,0,$use,$priem[0]);
				$char=explode("|",$l_i[$loc][$from]["char"]);
				if ($use=="p.d") {attack($loc,$from,$to,implode("|",$magic),1,0,$use,$priem[0]);$char=explode("|",$l_i[$loc][$from]["char"]); $char[6]=time()+$war[3];$l_i[$loc][$from]["char"]=implode("|",$char);}
				if ($use=="p.me") {foreach($l_i[$loc] as $key=>$i) if($key!=$from && $key!=$to) {attack($loc,$from,$key,implode("|",$magic),1,0,$use,$priem[0]);} $char=explode("|",$l_i[$loc][$from]["char"]); $char[6]=time()+$war[3]*2;$l_i[$loc][$from]["char"]=implode("|",$char);}

				// проверки на выбивание
				if (isset($l_i[$loc][$to])) {
					if ($l_i[$loc][$to]["def"]) $tdef=explode("|",$l_i[$loc][$to]["def"]); else $tdef=array(0,"","");
					if($use=="p.n") {if(rand(0,100)<=$magic[0]-40 && ($tdef[0]!="p.d.n" || $tdef[0]=="p.d.n" && rand(0,100)>$tdef[3])) {addjournal($loc,$to,"Вас оглушили!"); addjournal($loc,"all",substr($to,2)." оглушен!",$to); $tc=explode("|",$l_i[$loc][$to]["char"]);$tc[6]=time()+15;$l_i[$loc][$to]["char"]=implode("|",$tc);} if ($tdef[0]=="p.d.n") $l_i[$loc][$to]["def"]="";}
					if($use=="p.r") {if(rand(0,100)<=$magic[0]-70 && ($tdef[0]!="p.d.r" || $tdef[0]=="p.d.r" && rand(0,100)>$tdef[3]) && strpos($l_i[$loc][$to]["equip"],"i.w.")!==false) {addjournal($loc,$to,"У вас выбито оружие!"); addjournal($loc,"all","У ".substr($to,2)." выбито оружие!",$to); additem($loc,$to,'loc',preg_replace('/.*?(i\.w\.[^\|]+).*/',"\\1",$l_i[$loc][$to]["equip"]),1,"items","items",1,-1,1); $tc=explode("|",$l_i[$loc][$to]["char"]);$tc[6]=time()+5;$l_i[$loc][$to]["char"]=implode("|",$tc);}  if ($tdef[0]=="p.d.r") $l_i[$loc][$to]["def"]="";}
					if($use=="p.vw") {if(rand(0,100)<=$magic[0]-40 && strpos($l_i[$loc][$to]["equip"],"i.a.s.")!==false) {addjournal($loc,$to,"У вас выбит щит!"); addjournal($loc,"all","У ".substr($to,2)." выбит щит!",$to); additem($loc,$to,'loc',preg_replace('/.*?(i\.a\.s\.[^\|]+).*/',"\\1",$l_i[$loc][$to]["equip"]),1,"items","items",1,-1,1); $tc=explode("|",$l_i[$loc][$to]["char"]);$tc[6]=time()+5;$l_i[$loc][$to]["char"]=implode("|",$tc);}}
					if($use=="p.vs") {if(rand(0,100)<=$magic[0]-50 && ($tdef[0]!="p.d.s" || $tdef[0]=="p.d.s" && rand(0,100)>$tdef[3])) {$tatk=1; require("plugin/m.kon.dat");}  if ($tdef[0]=="p.d.s") $l_i[$loc][$to]["def"]="";}
					}

				} else {	// защитные
					if ($use=="p.d.p" && strpos($l_i[$loc][$from]["equip"],"i.a.s.")===false) msg("Щит должен находиться у вас в руках");
					$l_i[$loc][$from]["def"]=$use."|".$priem[0]."|".(time()+$priem[1])."|".($use=="p.d.c"?$skills[2]*16:($war[0]-$ihit));
					if ($use=="p.d.o") {$char[6]=time()+$priem[1];$l_i[$loc][$from]["char"]=implode("|",$char);}
					}

			}else addjournal($loc,$from,"Период ".$priem[0]." не истек (еще ".(round((intval(preg_replace('/.*'.$use.':(\d+).*/',"\\1",$l_i[$loc][$from]["priem"]))-time())/60)+1)." минут)");
			}else addjournal($loc,$from,"Нет цели");