Просмотр файла game/2/f_attackf1.dat

Размер файла: 9.84Kb
  1. <?
  2. global $l_i,$l_tt,$g_destroy,$g_crim,$g_exp,$PHP_SELF,$game;
  3. // проверки
  4. if ((substr($from,0,2)!='u.' && substr($from,0,2)!='n.') || (substr($to,0,2)!='u.' && substr($to,0,2)!='n.') || !isset($l_i[$loc][$from]) || !isset($l_i[$loc][$to]) || $from==$to) return;
  5. $fchar=explode("|",$l_i[$loc][$from]["char"]);
  6. if (substr($from,0,2)=='u.' && $fchar[8]) {if ($answer) addjournal($loc,$from,"Вы призрак");return;}
  7.  
  8. $loct=$loc;
  9. $aloct=explode("|",$l_tt[$loc]["d"]);
  10. $tchar=explode("|",$l_i[$loct][$to]["char"]);
  11. if (substr($to,0,2)=='u.' && $tchar[8]) {if ($answer) addjournal($loc,$from,"Нельзя атаковать призрака"); return;}
  12. $twar=explode("|",$l_i[$loct][$to]["war"]);
  13.  
  14. if ($fchar[6]-time()>300) $fchar[6]=time()-1;
  15. if (!$rmagic && time()<=$fchar[6]) {
  16. if ($answer) addjournal($loc,$from,"Вы должны отдохнуть ".round($fchar[6]-time()+1)." сек");
  17. return;
  18. }
  19. if ($l_i[$loc][$to]["def"]) $tdef=explode("|",$l_i[$loc][$to]["def"]); else $tdef=array("","",0);
  20. if ($tdef[2] && time()>$tdef[2]) {$l_i[$loc][$to]["def"]=""; $tdef=array("","",0);}
  21. if ($ptitle_v) $ptitle_v=" (".$ptitle_v.")";
  22. $tloc=explode("x",$loc);
  23. if ($magic) $fwar=explode("|",$magic); else $fwar=explode("|",$l_i[$loc][$from]["war"]);
  24. if ($answer) {$fchar[6]=time()+$fwar[3]; $l_i[$loc][$from]["char"]=implode("|",$fchar);}
  25. if ($fwar[12]=="мaгиeй") $fwar[12]="магией"; //eng a,e
  26. if (substr($from,0,2)!='u.' && rand(0,100)>"92" && $fwar[12]!="молнией") $fwar[12]="магией";
  27. if ($rmagic || $fwar[12]=="магией" || $fwar[12]=="молнией") {
  28. if ($tdef[0]=="p.d.z" && rand(0,100)<=$tdef[3]*0.10) {if (substr($l_i[$loc][$from]["def"],0,5)=="p.d.c") {$fdef=explode("|",$l_i[$loc][$from]["def"]); $fdef=$fdef[3];} else $fdef=0; if (rand(0,100)>$fdef) $fwar[0]=0;}
  29. if (substr($l_i[$loc][$from]["def"],0,5)=="p.d.c") $l_i[$loc][$from]["def"]="";
  30. if ($tdef[0]=="p.d.z") {$l_i[$loc][$to]["def"]=""; $t2=$tdef[1];}
  31. $uklon=$twar[9];$parring=$twar[10];$shield=$twar[11];
  32. } else {
  33. $uklon=$twar[6];$parring=$twar[7];$shield=$twar[8];
  34. if ($tdef[0]=="p.d.u" && $fwar[4]) {if(rand(0,100)<=$tdef[3]) $uklon+=35; $l_i[$loc][$to]["def"]=""; $t2=$tdef[1];}
  35. if ($tdef[0]=="p.d.re") {if(rand(0,100)<=$tdef[3]) $uklon+=20; $l_i[$loc][$to]["def"]=""; $t2=$tdef[1];}
  36. if ($tdef[0]=="p.d.p") {if(rand(0,100)<=$tdef[3]) $parring*=2; $l_i[$loc][$to]["def"]=""; $t2=$tdef[1];}
  37. }
  38.  
  39. if ($priem=="p.g" && $tdef[0]=="p.d.g") {if(rand(0,100)<=$tdef[3]) {$fwar[1]=0;$fwar[2]=0;} $l_i[$loc][$to]["def"]=""; $t2=$tdef[1];}
  40. if (substr($l_i[$loc][$from]["def"],0,6)=="p.d.re") {$fwar[1]=round($fwar[1]*0.6);$fwar[2]=round($fwar[2]*0.6);}
  41. if ($tdef[0]=="p.d.o" && !$rmagic) {if(rand(0,100)<=$tdef[3]) {$fwar[1]=round($fwar[1]*0.4);$fwar[2]=round($fwar[2]*0.4);} $t2=$tdef[1];}
  42. if ($priem=="p.n" && $tdef[0]=="p.d.n" || $priem=="p.r" && $tdef[0]=="p.d.r" || $priem=="p.vs" && $tdef[0]=="p.d.s" || $priem=="p.vw" && strpos($l_i[$loc][$to]["equip"],"i.a.s.")!==false) $t2=$tdef[1];
  43. if($t2) $t2=" (".$t2.")";
  44.  
  45.  
  46. // крим если атакует не крима или животное в городе
  47. $fstp=strpos($fchar[0],"*");
  48. $tstp=strpos($tchar[0],"*");
  49. if ($fstp===false) $clan1=""; else $clan1=substr($fchar[0],$fstp+1,strrpos($fchar[0],"*")-$fstp-1);
  50. if ($tstp===false) $clan=""; else $clan=substr($tchar[0],$tstp+1,strrpos($tchar[0],"*")-$tstp-1);
  51. $fcrim = $fchar[9] || substr($from,0,4)=="n.c.";
  52. $tcrim = $tchar[9] || substr($to,0,4)=="n.c." || $to=="n.w.Veelzevul" || $to=="n.whitewolf" || $game["floc"]==$loc && $game["fid"]==$to;
  53. if ($tloc[2]>=1099) {$tcrim = $tcrim || $tchar[14]=="p" || substr($to,0,4)=="n.p." || $fchar[14]=="p" && $tchar[14]=="t";}
  54. if($fchar[13]) $wife=$to==substr($fchar[13],0,strlen($to)); else $wife=0;
  55. if ($from!=$to && !$fcrim && $tchar[7]!=$from && !$tcrim && (!$clan1 || ($clan1 && $clan1!=$clan)) && !$wife && $from!="u." && $to!="u." && $from!="u." && $to!="u." && $from!="u." && $to!="u.") {
  56. if (isset($l_i[$loc][$to]["owner"])) docrim($loc,$from,"живодер"); //$aloct[1] && substr($to,0,4)=="n.a." ||
  57. else if (substr($to,0,4)!="n.a.") docrim($loc,$from,"бандит");
  58. $fchar=explode("|",$l_i[$loc][$from]["char"]);
  59. }
  60.  
  61. // патроны
  62. if ($fwar[14])
  63. if (strpos($l_i[$loc][$from]["items"],$fwar[14].":")!==false) {
  64. additem($loc,$from,"",$fwar[14],1,"items","",0);
  65. if (strpos($l_i[$loc][$from]["items"],$fwar[14].":")===false) addjournal($loc,$from,"Боеприпасы кончились");
  66. }else {addjournal($loc,$from,"Нет боеприпасов"); return;}
  67. // цель конник
  68. if (substr($to,0,2)=="u." && $tchar[12] && !$rmagic && $fwar[12]!="магией") $fwar[0]-=10;
  69. if (substr($to,0,4)=="n.c." )
  70. if (strpos($l_i[$loc][$from]["equip"],"i.a.m.vlast")!==false) {$fwar[1]=$fwar[1]*2;$fwar[2]=$fwar[2]*2;}
  71.  
  72. // заклинание сорвалось?
  73. if ($fwar[0] || !$fwar[0] && !$rmagic && $fwar[12]!="магией") {
  74. // попадание
  75. if (rand(0,100)<=$fwar[0]) {
  76. // урон
  77. $damage=round(rand($fwar[1],$fwar[2]));
  78. //**мод**урон в замке**//
  79. if (substr($loc,0,4)=="c.1." || substr($loc,0,4)=="c.2." || substr($loc,0,4)=="c.3." || substr($loc,0,4)=="c.4." || substr($loc,0,4)=="c.5.") {
  80. $gate=substr($loc,0,4)."gate";
  81. $d=explode("|",$l_tt[$gate]["d"]);
  82. if (strpos($d[0],"*")===false) $clanc=""; else $clanc=substr($d[0],strpos($d[0],"*")+1,strrpos($d[0],"*")-strpos($d[0],"*")-1);
  83. if ($clanc==$clan1) $damage+=rand(0,10); }
  84. require "f_time.dat";
  85. if ($tchar[9] && ($time >= 20.00 and $time <= 00.00) || ($time = 00.00 and $time < 08.00)) $damage+=rand(0,5); else $damage-=rand(0,5);
  86. // уклон
  87. if (rand(0,100)>$uklon) {
  88. // щит
  89. if ($parring && $shield) if (rand(0,100)<=$parring) {if (!$rmagic && $fwar[12]!="магией" && $fwar[12]!="молнией") {$damage-=$shield; $t1=" (щит ".$shield.")";} else {$resist=round($damage*$shield/100); if ($resist) $tsh=rand(0,$resist); else $tsh=0; $damage-=$tsh; $t1=" (сопр. магии ".$tsh.")";}}
  90. // броня
  91. if (!$rmagic && $fwar[12]!="магией" && $twar[5] && $fwar[12]!="молнией" && $twar[5]) $damage-=round(rand(0,$twar[5])); // armor
  92. if ($damage<0) $damage=0;
  93. if ($fwar[4]) $skrit=8; else if ($rmagic || $fwar[12]=="магией" || $fwar[12]=="молнией") $skrit=1; else $skrit=2;
  94. if ($damage && rand(0,100)<$skrit) {$damage*=2; $tkrit=" критически";} else $tkrit="";
  95. if ($l_i[$loct][$to]["god"]) $damage=0; // БОГ
  96. // урон
  97. $tchar[1]-=$damage;
  98. $tchar[5]=time();
  99. if ($tchar[1]<0) $tchar[1]=0;
  100. if (!$answer && !$rmagic) {
  101. addjournal($loc,$from,"вы".$ptitle_v.$tkrit." ".$fwar[12]." ".$damage.$t1.$t2,"","",", ");
  102. addjournal($loc,"all",$fchar[0].$ptitle_v.$tkrit." ".$fwar[12]." ".$damage.$t1.$t2,$from,"",", ");}
  103. else {
  104. addjournal($loc,$from,"Вы".$ptitle_v." по ".$tchar[0].$tkrit." ".$fwar[12]." ".$damage.$t1.$t2);
  105. addjournal($loc,$to,$fchar[0].$ptitle_v." по вам".$tkrit." ".$fwar[12]." ".$damage.$t1.$t2);
  106. addjournal($loc,"all",$fchar[0].$ptitle_v." по ".$tchar[0].$tkrit." ".$fwar[12]." ".$damage.$t1.$t2,$from,$to);
  107. }
  108.  
  109. // жена/муж
  110. if(substr($to,0,2)=="u." && $tchar[13] && $tchar[1]<$tchar[2]) {
  111. $tm=explode(":",$tchar[13]);
  112. if(time()>$tm[1] && file_exists("online/".$tm[0]) && filesize("online/".$tm[0])!=1) {
  113. $tmf=file("online/".$tm[0]);
  114. $tmf=trim($tmf[0]);
  115. if($tmf!=$loc) {
  116. loadloc($tmf);
  117. $tup=explode("|",$l_i[$tmf][$tm[0]]["user"]);
  118. if (strpos($aloct[0],"*")!==false) $aloct[0]=substr($aloct[0],0,strpos($aloct[0],"*"));
  119. if($tup[2]=="m") $ts="Ваша жена (".$aloct[0].") ранена!"; else $ts="Ваш муж (".$aloct[0].") ранен!";
  120. addjournal($tmf,$tm[0],"<a href=\"$PHP_SELF?sid=".$tm[0]."&p=".$tup[0]."&stele=1\">".$ts."</a>");
  121. $tm[1]=time()+300;
  122. $tchar[13]=implode(":",$tm);
  123. }
  124. }
  125. }
  126. // если убили, добавим труп
  127. if ($tchar[1]<1) {
  128. include "f_kill.dat";
  129. } else $l_i[$loct][$to]["char"]=implode("|",$tchar); // иначе сохраним в f_kill.dat
  130.  
  131. } else {if (!$answer) {
  132. if (!$rmagic && $fwar[12]!="магией" && $fwar[12]!="молнией") {
  133. addjournal($loct,$from,"вы".$ptitle_v." мимо (уклон)".$t2,"","",", ");
  134. addjournal($loct,"all",$fchar[0].$ptitle_v." мимо (уклон)".$t2,$from,"",", ");
  135. } else {
  136. addjournal($loct,$from,"вы".$ptitle_v." мимо (уклон от магии)".$t2,"","",", ");
  137. addjournal($loct,"all",$fchar[0].$ptitle_v." мимо (уклон от магии)".$t2,$from,"",", ");
  138. }
  139. } else {
  140. if (!$rmagic && $fwar[12]!="магией" && $fwar[12]!="молнией") {
  141. addjournal($loct,$from,"Вы".$ptitle_v." по ".$tchar[0]." мимо (уклон)".$t2);
  142. addjournal($loct,$to,$fchar[0]." по вам мимо (уклон)");
  143. addjournal($loct,"all",$fchar[0].$ptitle_v." по ".$tchar[0]." мимо (уклон)".$t2,$from,$to);
  144. }else {
  145. addjournal($loct,$from,"Вы".$ptitle_v." по ".$tchar[0]." мимо (уклон от магии)".$t2);
  146. addjournal($loct,$to,$fchar[0].$ptitle_v." по вам мимо (уклон от магии)".$t2);
  147. addjournal($loct,"all",$fchar[0].$ptitle_v." по ".$tchar[0]." мимо (уклон от магии)".$t2,$from,$to);
  148. }
  149. }
  150. }
  151. } else {if (!$answer && !$rmagic) {
  152. addjournal($loc,$from,"вы".$ptitle_v." мимо".$t2,"","",", ");
  153. addjournal($loc,"all",$fchar[0].$ptitle_v." мимо".$t2,$from,"",", ");
  154. } else {
  155. addjournal($loc,$from,"Вы".$ptitle_v." по ".$tchar[0]." мимо".$t2);
  156. addjournal($loc,$to,$fchar[0].$ptitle_v." по вам мимо".$t2);
  157. addjournal($loc,"all",$fchar[0].$ptitle_v." по ".$tchar[0]." мимо".$t2,$from,$to);
  158. }}
  159. }// заклинание сорвалось
  160.  
  161. // если npc свободен, то атакует
  162. if(isset($l_i[$loc][$from]) && ($answer || $rmagic)) {$fchar[7]=$to; $l_i[$loc][$from]["char"]=implode("|",$fchar);}
  163. if(isset($l_i[$loc][$from]) && isset($l_i[$loct][$to]) && $from!=$to && ($fwar[0] || !$fwar[0] && !$rmagic && $fwar[12]!="магией" && $fwar[12]!="молнией")) {
  164. if (substr($to,0,2)=="n." && !$tсhar[7]) {$tchar[7]=$from; $l_i[$loct][$to]["char"]=implode("|",$tchar);}
  165. if ($answer) attack($loct,$to,$from,0,0);
  166. }