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

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