View file f_useskill.dat

File size: 6.72Kb
// использование скиллов

		$skills=split("\|",$player["skills"]);
			if ($use=='skill.ingen') {
				if (!$to) {$list='all';} else { //?возможно "inv"
				if (!isset($player["items"][$to])) msg("Этого предмета у вас нет");
				if (substr($to,0,11)!="item.chert.") msg("Применить навык можно только на <b>чертеж предмета</b>");
				$chert=split("\|",$player["items"][$to]);
				//проверки ресурсов
				if (!isset($player["items"]["item.res.wood"])) msg("У вас нет <b>дерева</b>");
				if (!isset($player["items"]["item.res.kam"])) msg("У вас нет <b>камня</b>");

				if ($chert[3]==0){$der=$chert[14];$kam=$chert[15];} //оружие
				if ($chert[3]==1){$der=$chert[8];$kam=$chert[9];} //броня

				$der2=split("\|",$player["items"]["item.res.wood"]);
				$der1=$der2[1];
				$kam2=split("\|",$player["items"]["item.res.kam"]);
				$kam1=$kam2[1];

				if ($der1<$der) msg("Мало ресурсов. Необходимо <b>$der дерева</b>");
				if ($kam1<$kam) msg("Мало ресурсов. Необходимо <b>$kam камня</b>");
				//проверяем умения
				if ($skills[24]<$chert[6]) msg("У вас слишком низкий навык <b>кузнец</b>");
				if ($skills[2]<$chert[5]) msg("У вам слишком низкий <b>интеллект</b>");
				//уменьшаем ресурсы и удаляем 1 чертеж
				$der2[1]-=$der;
				$kam2[1]-=$kam;
				if ($der2[1]==0) unset($player["items"]["item.res.wood"]); else $player["items"]["item.res.wood"]=implode("|",$der2);
				if ($kam2[1]==0) unset($player["items"]["item.res.kam"]); else $player["items"]["item.res.kam"]=implode("|",$kam2);
				$chert[1]-=1;
				if ($chert[1]==0) unset($player["items"][$to]); else $player["items"][$to]=implode("|",$chert);
				//возможность ошибиться
				if (rand(0,$chert[4])>$skills[1]) msg("У вас ничего не получилось. Возможно, стоит развить <b>ловкость</b>");
				//все ок, создаем предмет
				$i_lbl=substr($chert[0],7,strlen($chert[0])-8);
				$i_name=substr($to,11);
				$i_price=$chert[2]+round($chert[2]/100*20);//+20% к цене чертежа
				if ($chert[3]==0){ //оружие
					$new="$i_lbl|1|$i_price|$chert[7]|$chert[8]|$chert[9]|$chert[10]|$chert[11]|$chert[12]|$chert[13]";
					$i_name="item.weapon.".$i_name;
				}
				if ($chert[3]==1){ //броня
					$new="$i_lbl|1|$i_price|$chert[7]";
					$i_name="item.armor.".$i_name;
				}
				if (isset($player["items"][$i_name])){
					$old=split("\|",$player["items"][$i_name]);
					$old[1]+=1;
					$player["items"][$i_name]=implode("|",$old);
				}else $player["items"][$i_name]=$new;
				msg ("Вы создали <b>$i_lbl</b>");
			}
			}
		if ($use=='skill.meditation') {
			if (rand(0,100)<=$skills[5]*15 && $player["mana"]<$player["mana_max"]){
				if ( !isset($player["tskmed"]) || $player["tskmed"]<time() ){
					$player["tskmed"] = time() + rand(2,4);
					$player["mana"]+=1;
					addjournal($login,"Мана +1");
				}
				else addjournal($login,"Слишком часто медитируете");
			}
			else addjournal($login,"Медитация прервалась");
			}
		if ($use=='skill.animaltaming') {
			if (!$to) {$list='all';} else {
			if (!isset($game["loc"][$player["loc"]][$to]) || substr($use,0,4)=="npc.") msg("<p>Некого приручать");
			if ($game["loc"][$player["loc"]][$to]["tame"]) {
				$tame=10*($skills[7]+1-$game["loc"][$player["loc"]][$to]["tame"]);
				if ($tame>0 && $skills[20]>0) {
					if (rand(0,100)<=$tame) { $game["loc"][$player["loc"]][$to]["guard"]=$login; unset($player["attack"]); unset($game["loc"][$player["loc"]][$to]["attack"]);  $game["loc"][$player["loc"]][$to]["owner"]=$login; $game["loc"][$player["loc"]][$to]["follow"]=$login; $ta=60; if ($login=="user.admin") $ta=600000; $game["loc"][$player["loc"]][$to]["time_owner"]=time()+$ta+rand(0,$skills[20]*10*60); addjournal($login,"Вы приручили ".$game["loc"][$player["loc"]][$to]["title"]);} else addjournal($login,"Не получилось приручить ".$game["loc"][$player["loc"]][$to]["title"]);
					}else addjournal($login,"Слишком низкие навыки изучения и приручения животных");
				}else addjournal($login,"Это существо невозможно приручить");
			}
			}
		if ($use=='skill.steal') {
			if (!$to) {$list='all';} else {
			if ($to==$login) msg("<p>Нельзя воровать у самого себя");
			if (substr($to,0,4)=='npc.') msg("<p>Воровать можно только у других игроков");
			if (!isset($game["loc"][$player["loc"]][$to]) || substr($use,0,5)=="user.") msg("<p>Не у кого воровать (можно только у игроков)");
			if ($player["loc"]=="loc.bank") msg("<p>Нельзя воровать на охраняемой территории");
			$skillsto=split("\|",$game["loc"][$player["loc"]][$to]["skills"]);
//			$skillsto=split("\|",$game["loc"][$player["loc"]][$to]);

			if (!$id) {	// выведем список инвентори
				if (rand(0,100)<5*($skills[1]+$skills[19]-$skillsto[18])) {
					if (count($game["loc"][$player["loc"]][$to]["items"])==0) msg("<p>У этого игрока ничего нет");
					$stmp="<p>Предметы:";
					foreach(array_keys($game["loc"][$player["loc"]][$to]["items"]) as $i) {
						$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&use=skill.steal&to=".$to."&id=".$i."\">";
						$k=split("\|",$game["loc"][$player["loc"]][$to]["items"][$i]);
						if ($k[1]>1) $stmp.=$k[0]." (".$k[1].")"; else $stmp.=$k[0];
						$stmp.="</a>";
						}
					msg($stmp,$game["loc"][$player["loc"]][$to]["title"]);
					} else { $time_crim = 10*60; docrim($login); addjournal($login,"Вас заметили!"); addjournal($to,$player["title"]." пытался подглядеть в ваш рюкзак!");}
				} else {	// воруем предмет $id, причем не спрашивая кол-во
					$steal=5*($skills[1]+$skills[6]-3);
					if ($steal>0) {
						if (rand(0,100)<5*($skills[1]+$skills[6]-$skillsto[18]*1.5)) {
						      if (isset($player["tV"]) && time()<$player["tV"]) msg("<p>Воровать можно один раз в минуту!");
							$player["tV"]=time()+60;
							if (!isset($game["loc"][$player["loc"]][$to]["items"][$id])) msg("<p>У игрока нет такого предмета");
							if (strpos($id,".imen.")) msg("<p>Слишком рискованное занятие!");
							if (array_search($id,$game["loc"][$player["loc"]][$to]["equip"])) { $time_crim = 20*60; docrim($login); addjournal($login,"Вас застали за воровством!"); addjournal($to,$player["title"]." пытался вас обворовать!"); msg("<p>Вы пытались украсть одетый предмет");}
							if (isset($player["items"][$id])) {
								$k=split("\|",$game["loc"][$player["loc"]][$to]["items"][$id]);
								$k1=split("\|",$player["items"][$id]);
								$k1[1]+=$k[1];
								$player["items"][$id]=implode("|",$k1);
								} else $player["items"][$id]=$game["loc"][$player["loc"]][$to]["items"][$id];
							unset($game["loc"][$player["loc"]][$to]["items"][$id]);
							calcparam($to);
							}else { $time_crim = 20*60; docrim($login); addjournal($login,"Вас застали за воровством!"); addjournal($to,$player["title"]." пытался вас обворовать!");}
						}else addjournal($login,"Слишком низкие навыки воровства и подглядывания");
					}//воруем предмет
			}
			}//skill.steal