3 if (! defined (
'IN_GAME' )) {
4 exit (
'Access Denied' );
7 function combat($active = 1, $wep_kind =
'') {
8 global
$log, $mode,
$main,
$cmd, $battle_title,
$db,
$tablepre, $pls, $message,
$now, $w_log,
$nosta,
$hdamage,
$hplayer;
9 global $pid, $name, $club,
$inf, $lvl, $exp, $killnum, $bid, $tactic, $pose, $hp,$mhp;
10 global $wep, $wepk, $wepe, $weps, $wepsk;
11 global $edata, $w_pid, $w_name, $w_pass, $w_type, $w_endtime,$w_deathtime, $w_gd, $w_sNo, $w_icon, $w_club, $w_hp, $w_mhp, $w_sp, $w_msp, $w_att, $w_def, $w_pls, $w_lvl, $w_exp, $w_money, $w_bid, $w_inf, $w_rage, $w_pose, $w_tactic, $w_killnum, $w_state, $w_wp, $w_wk, $w_wg, $w_wc, $w_wd, $w_wf, $w_teamID, $w_teamPass;
12 global $w_wep, $w_wepk, $w_wepe, $w_weps, $w_arb, $w_arbk, $w_arbe, $w_arbs, $w_arh, $w_arhk, $w_arhe, $w_arhs, $w_ara, $w_arak, $w_arae, $w_aras, $w_arf, $w_arfk, $w_arfe, $w_arfs, $w_art, $w_artk, $w_arte, $w_arts, $w_itm0, $w_itmk0, $w_itme0, $w_itms0, $w_itm1, $w_itmk1, $w_itme1, $w_itms1, $w_itm2, $w_itmk2, $w_itme2, $w_itms2, $w_itm3, $w_itmk3, $w_itme3, $w_itms3, $w_itm4, $w_itmk4, $w_itme4, $w_itms4, $w_itm5, $w_itmk5, $w_itme5, $w_itms5,$w_itm6, $w_itmk6, $w_itme6, $w_itms6, $w_wepsk, $w_arbsk, $w_arhsk, $w_arask, $w_arfsk, $w_artsk, $w_itmsk0, $w_itmsk1, $w_itmsk2, $w_itmsk3, $w_itmsk4, $w_itmsk5, $w_itmsk6;
14 global $rp,$w_rp,
$action,$w_action,$achievement,$w_achievement,$skills,$w_skills,$skillpoint,$w_skillpoint;
16 $battle_title =
'战斗发生';
19 $w1 = substr ( $wepk, 1, 1 );
20 $w2 = substr ( $wepk, 2, 1 );
21 if ((($w1 ==
'G')||($w1==
'J')) && ($weps == $nosta)) {
22 $wep_kind = $w2 ? $w2 :
'P';
26 }
elseif (strpos($wepk,$wep_kind)===
false && $wep_kind !=
'back'){
27 $wep_kind = substr ( $wepk, 1, 1 );
32 include_once
GAME_ROOT.
'./include/game/clubskills.func.php';
35 if ($wep_kind ==
'back') {
41 $enemyid = $active ? str_replace(
'enemy',
'',$action) : $bid;
42 if(!$enemyid || strpos($action,
'enemy')===
false){
43 $log .=
"<span class=\"yellow\">你没有遇到敌人,或已经离开战场!</span><br>";
49 $result = $db->query (
"SELECT * FROM {$tablepre}players WHERE pid='$enemyid'" );
50 if (! $db->num_rows (
$result )) {
57 $edata = $db->fetch_array (
$result );
59 if ($edata [
'pls'] != $pls) {
60 $log .=
"<span class=\"yellow\">" . $edata [
'name'] .
"</span>已经离开了<span class=\"yellow\">$plsinfo[$pls]</span>。<br>";
64 }
elseif ($edata [
'hp'] <= 0) {
66 $log .=
"<span class=\"red\">" . $edata [
'name'] .
"</span>已经死亡,不能被攻击。<br>";
67 if($edata[
'endtime'] < $now -$corpseprotect && $gamestate < 40){
68 $action =
'corpse'.$edata[
'pid'];
69 include_once
GAME_ROOT .
'./include/game/battle.func.php';
82 $log .=
"<span class=\"lime\">你对{$edata ['name']}大喊:{$message}</span><br>";
83 if (! $edata [
'type']) {
84 $w_log =
"<span class=\"lime\">{$name}对你大喊:{$message}</span><br>";
85 logsave ( $edata [
'pid'], $now, $w_log ,
'c');
89 extract ( $edata, EXTR_PREFIX_ALL,
'w' );
91 include_once
GAME_ROOT .
'./include/game/attr.func.php';
93 $log .=
"你向<span class=\"red\">$w_name</span>发起了攻击!<br>";
94 $att_dmg =
attack ( $wep_kind, 1 );
100 if (($w_hp > 0) && ($w_tactic != 4) && ($w_pose != 5)) {
102 $w_w1 = substr ( $w_wepk, 1, 1 );
103 $w_w2 = substr ( $w_wepk, 2, 1 );
104 if ((($w_w1 ==
'G')||($w_w1==
'J')) && ($w_weps == $nosta)) {
105 $w_wep_kind = $w_w2 ? $w_w2 :
'P';
110 if ($rangeinfo [$wep_kind] <= $rangeinfo [$w_wep_kind] && $rangeinfo [$wep_kind] !== 0) {
111 $counter =
get_counter ( $w_wep_kind, $w_tactic, $w_club, $w_inf );
114 $counter_dice = rand ( 0, 99 );
115 if ($counter_dice < $counter) {
116 $log .=
"<span class=\"red\">{$w_name}的反击!</span><br>";
118 $log .=
npc_chat ( $w_type,$w_name,
'defend' );
120 $def_dmg =
defend ( $w_wep_kind );
123 $log .=
npc_chat ( $w_type,$w_name,
'escape' );
125 $log .=
"<span class=\"red\">{$w_name}处于无法反击的状态,逃跑了!</span><br>";
129 $log .=
npc_chat ( $w_type,$w_name,
'cannot' );
131 $log .=
"<span class=\"red\">{$w_name}攻击范围不足,不能反击,逃跑了!</span><br>";
135 $log .=
"<span class=\"red\">{$w_name}逃跑了!</span><br>";
138 $result = $db->query (
"SELECT * FROM {$tablepre}players WHERE pid='$bid'" );
139 $edata = $db->fetch_array (
$result );
140 extract ( $edata, EXTR_PREFIX_ALL,
'w' );
142 include_once
GAME_ROOT .
'./include/game/attr.func.php';
144 $log .=
"<span class=\"red\">$w_name</span>突然向你袭来!<br>";
147 $log .=
npc_chat ( $w_type,$w_name,
'attack' );
150 $w_w1 = substr ( $w_wepk, 1, 1 );
151 $w_w2 = substr ( $w_wepk, 2, 1 );
152 if ((($w_w1 ==
'G')||($w_w1==
'J')) && ($w_weps == $nosta)) {
153 $w_wep_kind = $w_w2 ? $w_w2 :
'P';
157 $def_dmg =
defend ( $w_wep_kind, 1 );
158 if (($hp > 0) && ($tactic != 4) && ($pose != 5)) {
160 if ($rangeinfo [$wep_kind] >= $rangeinfo [$w_wep_kind] && $rangeinfo [$w_wep_kind] !== 0) {
161 $counter =
get_counter ( $wep_kind, $tactic, $club, $inf );
164 $counter_dice = rand ( 0, 99 );
165 if ($counter_dice < $counter) {
166 $log .=
"<span class=\"red\">你的反击!</span><br>";
167 $wep_kind = substr ( $wepk, 1, 1 );
168 $att_dmg =
attack ( $wep_kind );
171 $log .=
"<span class=\"red\">你处于无法反击的状态,逃跑了!</span><br>";
174 $log .=
"<span class=\"red\">你攻击范围不足,不能反击,逃跑了!</span><br>";
177 $log .=
"<span class=\"red\">你逃跑了!</span><br>";
181 if($hp == 0 && !$w_action){$w_action =
'pacorpse'.$pid;}
183 $att_dmg = $att_dmg ? $att_dmg : 0;
184 $def_dmg = $def_dmg ? $def_dmg : 0;
190 foreach ( $exdmginf as $inf_ky => $w_inf_words ) {
191 if (strpos ( $w_combat_inf, $inf_ky ) !==
false) {
192 $w_inf_log .=
"敌人的攻击造成你{$w_inf_words}了!<br>";
198 $w_log =
"手持<span class=\"red\">$wep_temp</span>的<span class=\"yellow\">$name</span>向你袭击!<br>你受到其<span class=\"yellow\">$att_dmg</span>点攻击,对其做出了<span class=\"yellow\">$def_dmg</span>点反击。<br>$w_inf_log";
200 $w_log =
"你发现了手持<span class=\"red\">$wep_temp</span>的<span class=\"yellow\">$name</span>并且先发制人!<br>你对其做出<span class=\"yellow\">$def_dmg</span>点攻击,受到其<span class=\"yellow\">$att_dmg</span>点反击。<br>$w_inf_log";
203 $w_log .=
"<span class=\"yellow\">$name</span><span class=\"red\">被你杀死了!</span><br>";
208 logsave ( $w_pid, $now, $w_log ,
'b');
211 if (($att_dmg > $hdamage) && ($att_dmg >= $def_dmg)) {
215 }
elseif (($def_dmg > $hdamage) && (! $w_type)) {
223 if ($w_hp <= 0 && $w_club != 99) {
226 if ($w_type==0){$killnum ++;};
228 include_once
GAME_ROOT .
'./include/state.func.php';
229 $killmsg =
kill ( $wep_kind, $w_name, $w_type, $w_pid, $wep_temp );
230 $log .=
npc_chat ( $w_type,$w_name,
'death' );
232 include_once
GAME_ROOT.
'./include/game/achievement.func.php';
235 $log .=
"<span class=\"red\">{$w_name}被你杀死了!</span><br>";
238 if(!$w_type){$rpup = $w_rp;}
243 $rp += round($rpup*(100-$rpdec)/100);
249 if($killmsg){$log .=
"<span class=\"yellow\">你对{$w_name}说:“{$killmsg}”</span><br>";}
250 include_once
GAME_ROOT .
'./include/game/battle.func.php';
251 $result = $db->query (
"SELECT * FROM {$tablepre}players WHERE pid='$w_pid'" );
252 $cdata = $db->fetch_array (
$result );
253 $action =
'corpse'.$edata[
'pid'];
260 $log .=
npc_chat ( $w_type,$w_name,
'death' );
261 include_once
GAME_ROOT .
'./include/system.func.php';
262 $npcdata =
evonpc ($w_type,$w_name);
263 $log .=
'<span class="yellow">'.$w_name.
'却没死去,反而爆发出真正的实力!</span><br>';
265 addnews($now ,
'evonpc',$w_name, $npcdata[
'name'], $name);
266 foreach($npcdata as $key => $val){
273 include_once
GAME_ROOT .
'./include/state.func.php';
274 $killmsg =
kill ( $wep_kind, $w_name, $w_type, $w_pid, $wep_temp );
275 $log .=
'<span class="yellow">'.$w_name.
'由于其及时按了BOMB键而原地满血复活了!</span><br>';
283 include
template(
'battleresult');
285 $cmd = ob_get_contents();
294 function attack($wep_kind =
'N', $active = 0) {
296 global $name, $lvl, $gd, $pid, $pls, $hp, $sp, $rage, $exp, $club, $att,
$inf, $message,$w_mhp;
297 global $wep, $wepk, $wepe, $weps, $wepsk;
298 global $w_arbe, $w_arbsk, $w_arhe, $w_arae, $w_arfe,$w_wepk;
299 global $artk, $arhsk, $arbsk, $arask, $arfsk, $artsk;
300 global $w_hp, $w_rage, $w_lvl, $w_pid, $w_gd, $w_name, $w_type, $w_inf, $w_def;
301 global $w_wepsk, $w_arhsk, $w_arask, $w_arfsk, $w_artsk, $w_artk;
302 global $wp,$wk,$wc,$wg,$wd,$wf,$skills,$w_skills,$w_club,$skillpoint,$w_skillpoint,$rp,$w_rp;
303 include_once
GAME_ROOT.
'./include/game/clubskills.func.php';
307 if (((strpos ( $wepk,
'G' ) == 1)||(strpos($wepk,
'J')==1)) && ($weps == $nosta)) {
308 if (($wep_kind ==
'G') || ($wep_kind ==
'P')||($wep_kind==
'J')) {
311 $watt = round ( $wepe / 5 );
317 $log .=
"使用{$wep}<span class=\"yellow\">$attinfo[$wep_kind]</span>{$w_name}!<br>";
319 $att_key =
getatkkey ( $wepsk, $arhsk, $arbsk, $arask, $arfsk, $artsk, $artk, $is_wpg );
320 $w_def_key =
getdefkey ( $w_wepsk, $w_arhsk, $w_arbsk, $w_arask, $w_arfsk, $w_artsk, $w_artk );
321 $mdr = $skdr = $sldr =
false;
322 if(strpos($att_key.$w_def_key,
'-')!==
false){$mdr =
true;}
323 if(strpos($att_key.$w_def_key,
'*')!==
false){$sldr =
true;}
324 if(strpos($att_key.$w_def_key,
'+')!==
false){$skdr =
true;}
326 if($mdr || $sldr || $skdr){
327 list($wsk,$hsk,$bsk,$ask,$fsk,$tsk,$tk)=Array($wepsk, $arhsk, $arbsk, $arask, $arfsk, $artsk, $artk);
328 list($wwsk,$whsk,$wbsk,$wask,$wfsk,$wtsk,$wtk)=Array( $w_wepsk, $w_arhsk, $w_arbsk, $w_arask, $w_arfsk, $w_artsk, $w_artk);
330 $log .=
"<span class=\"yellow\">精神抽取使双方的防具属性全部失效!</span><br>";
331 $hsk = $bsk = $ask = $fsk = $whsk = $wbsk = $wask = $wfsk =
'';
334 $log .=
"<span class=\"yellow\">灵魂抽取使双方的武器和饰物属性全部失效!</span><br>";
335 $wsk = $tsk = $tk = $wwsk = $wtsk = $wtk =
'';
338 $log .=
"<span class=\"yellow\">技能抽取使双方的武器熟练度在战斗中大幅下降!</span><br>";
341 $att_key =
getatkkey ( $wsk,$hsk,$bsk,$ask,$fsk,$tsk,$tk, $is_wpg );
342 $w_def_key =
getdefkey ( $wwsk,$whsk,$wbsk,$wask,$wfsk,$wtsk,$wtk );
347 if(strpos($att_key,
'X')!==
false){
352 $log .=
"<span class=\"red\">你手中的武器忽然失去了控制,喀吧一声就斩断了什么。你发现那似乎是你的死线。</span><br>";
353 include_once
GAME_ROOT .
'./include/state.func.php';
354 death(
'gg',
'',
'',$wep);
372 global ${$skillinfo [$wep_kind]};
373 $add_skill = & ${$skillinfo [$wep_kind]};
375 $wep_skill=round(${$skillinfo [$wep_kind]}*0.7+($wp+$wk+$wc+$wg+$wd+$wf)*0.3);
377 $wep_skill=${$skillinfo [$wep_kind]};
380 $wep_skill=sqrt($wep_skill);
383 if ($wep_kind ==
'N') {
384 $watt = round ($wep_skill*2/3);
390 $hitrate =
get_hitrate ( $wep_kind, $wep_skill, $club, $inf );
395 $damage_p =
get_damage_p ( $rage, $att_key, 0,
'你' , $club, $message);
396 $hit_time =
get_hit_time ( $att_key, $wep_skill, $hitrate, $wep_kind, $weps, $infobbs [$wep_kind] *
get_clubskill_bonus_imfrate($club,$skills,
'',$w_club,$w_skills,
'w_'),
get_clubskill_bonus_imftime($club,$skills,
'',$w_club,$w_skills,
'w_'), $wepimprate [$wep_kind] *
get_clubskill_bonus_imprate($club,$skills,
'',$w_club,$w_skills,
'w_'), $is_wpg,
get_clubskill_bonus_hitrate($club,$skills,
'',$w_club,$w_skills,
'w_'));
397 if ($hit_time [1] > 0) {
398 if(strpos($att_key,
'R')!==
false){
399 $maxdmg = $w_mhp > $wepe ? $wepe : $w_mhp;
400 $damage = rand(1,$maxdmg);
401 $log .=
"武器随机造成了<span class=\"red\">$damage</span>点伤害!<br>";
403 $gender_dmg_p =
check_gender (
'你', $w_name, $gd, $w_gd, $att_key );
404 if ($gender_dmg_p == 0) {
407 $w_active = 1 - $active;
408 $attack = $att + $watt;
409 $defend =
checkdef($w_def , $w_arbe + $w_arhe + $w_arae + $w_arfe , $att_key, 1);
413 $damage =
get_original_dmg (
'',
'w_', $attack, $defend, $wep_skill, $wep_kind );
415 if ($wep_kind ==
'F') {
417 $log.=
"<span class=\"red\">由于灵魂抽取的作用,灵系武器伤害大幅降低了!</span><br>";
419 $damage = round ( ($wepe + $damage) *
get_WF_p (
'', $club, $wepe) );
423 if ($wep_kind ==
'J') {
425 if ($adddamage>20000) {$adddamage=10000;}
426 $damage += round($wepe*2/3+$adddamage);
428 checkarb ( $damage, $wep_kind, $att_key, $w_def_key ,1);
429 $damage *= $damage_p;
431 $damage = $damage > 1 ? round ( $damage ) : 1;
432 $damage *= $gender_dmg_p;
435 $log.=
"<span class=\"red\">由于{$w_name}手中的武器过于笨重,受到的伤害大增!真是大快人心啊!</span><br>";
436 $damage+=round($damage*0.5);
441 if ($hit_time [1] > 1) {
443 if ($hit_time [1] == 2) {
445 }
elseif ($hit_time [1] == 3) {
448 $dmg_p = 2.8 + 0.6 * ($hit_time [1] - 3);
451 $damage = round ( $damage * $dmg_p );
452 $log .=
"造成{$d_temp}×{$dmg_p}=<span class=\"red\">$damage</span>点伤害!<br>";
454 $log .=
"造成<span class=\"red\">$damage</span>点伤害!<br>";
457 $damage +=
get_ex_dmg ( $w_name, 0, $club, $w_inf, $att_key, $wep_kind, $wepe, $wep_skill, $w_def_key );
458 $damage =
checkdmgdef($damage, $att_key,$w_def_key,1);
463 $log .=
"在{$w_name}身上的<span class=\"yellow\">好人卡</span>的作用下,{$w_name}受到的伤害增加了<span class=\"red\">$gm</span>点!<br>";
468 if($bonus_dmg < 100){
469 $log.=
"<span class=\"yellow\">由于技能效果的作用,伤害下降至".$bonus_dmg.
"%!</span><br>";
470 $damage = round($damage * $bonus_dmg / 100);
474 $log .=
"<span class=\"yellow\">由于技能的影响,对方受到了<span class=\"red\">$rpdmg</span>点额外伤害。</span><br>";
478 if($pdamage != $damage){
479 $log .=
"<span class=\"yellow\">造成的总伤害:<span class=\"red\">$damage</span>。</span><br>";
483 checkdmg ( $name, $w_name, $damage );
487 get_inf ( $w_name, $hit_time [2], $wep_kind);
489 check_KP_wep (
'你', $hit_time [3], $wep, $wepk, $wepe, $weps, $wepsk );
491 exprgup ( $lvl, $w_lvl, $exp, 1, $w_rage );
495 $log .=
"但是没有击中!<br>";
497 check_GCDF_wep (
'你', $hit_time [0], $wep, $wep_kind, $wepk, $wepe, $weps, $wepsk );
499 addnoise ( $wep_kind, $wepsk, $now, $pls, $pid, $w_pid, $wep_kind );
508 function defend($w_wep_kind =
'N', $active = 0) {
510 global $w_name, $w_lvl, $w_gd, $w_pid, $pls, $w_hp, $w_sp, $w_rage, $w_exp, $w_club, $w_att, $w_inf;
511 global $w_wep, $w_wepk, $w_wepe, $w_weps, $w_wepsk;
512 global $arbe, $arbsk, $arhe, $arae, $arfe,$wepk;
513 global $w_artk, $w_arhsk, $w_arbsk, $w_arask, $w_arfsk, $w_artsk;
514 global $hp, $rage, $lvl, $pid, $gd, $name,
$inf, $att, $def, $club;
515 global $wepsk, $arhsk, $arask, $arfsk, $artsk, $artk;
516 global $w_type, $w_sNo, $w_killnum,$mhp;
517 global $w_wp,$w_wk,$w_wc,$w_wg,$w_wf,$w_wd,$w_skills,$skills,$skillpoint,$w_skillpoint,$w_rp;
518 include_once
GAME_ROOT.
'./include/game/clubskills.func.php';
521 $w_wep_temp = $w_wep;
523 if (((strpos ( $w_wepk,
'G' ) == 1)||(strpos($w_wepk,
'J')==1)) && ($w_wep_kind ==
'P')) {
524 $watt = round ( $w_wepe / 5 );
528 $log .=
"{$w_name}使用{$w_wep}<span class=\"yellow\">$attinfo[$w_wep_kind]</span>你!<br>";
530 $w_att_key =
getatkkey ( $w_wepsk, $w_arhsk, $w_arbsk, $w_arask, $w_arfsk, $w_artsk, $w_artk, $is_wpg );
531 $def_key =
getdefkey ( $wepsk, $arhsk, $arbsk, $arask, $arfsk, $artsk, $artk );
532 $mdr = $skdr = $sldr =
false;
533 if(strpos($w_att_key.$def_key,
'-')!==
false){$mdr =
true;}
534 if(strpos($w_att_key.$def_key,
'*')!==
false){$sldr =
true;}
535 if(strpos($w_att_key.$def_key,
'+')!==
false){$skdr =
true;}
536 if($mdr || $sldr || $skdr){
537 list($wsk,$hsk,$bsk,$ask,$fsk,$tsk,$tk)=Array($wepsk, $arhsk, $arbsk, $arask, $arfsk, $artsk, $artk);
538 list($wwsk,$whsk,$wbsk,$wask,$wfsk,$wtsk,$wtk)=Array( $w_wepsk, $w_arhsk, $w_arbsk, $w_arask, $w_arfsk, $w_artsk, $w_artk);
540 $log .=
"<span class=\"yellow\">精神抽取使双方的防具属性全部失效!</span><br>";
541 $hsk = $bsk = $ask = $fsk = $whsk = $wbsk = $wask = $wfsk =
'';
544 $log .=
"<span class=\"yellow\">灵魂抽取使双方的武器和饰物属性全部失效!</span><br>";
545 $wsk = $tsk = $tk = $wwsk = $wtsk = $wtk =
'';
548 $log .=
"<span class=\"yellow\">技能抽取使双方的武器熟练度在战斗中大幅下降!</span><br>";
551 $w_att_key =
getatkkey ( $wwsk,$whsk,$wbsk,$wask,$wfsk,$wtsk,$wtk, $is_wpg );
552 $def_key =
getdefkey ( $wsk,$hsk,$bsk,$ask,$fsk,$tsk,$tk );
558 if ((strpos($w_att_key,
"X")!==
false)&&($w_type)&&(!$type)&&(rand(1,100)>90)){
559 if ($w_wep==
'燕返262'){
560 $log.=
"<img src=\"img/other/262.png\"><br>";
563 $log .=
"造成<span class=\"red\">$damage</span>点伤害!<br>";
564 checkdmg ( $w_name, $name, $damage );
567 include_once
GAME_ROOT .
'./include/state.func.php';
568 $killmsg =
death ( $w_wep_kind, $w_name, $w_type, $w_wep_temp );
569 $log .=
npc_chat ( $w_type,$w_name,
'kill' );
573 global ${
'w_' . $skillinfo [$w_wep_kind]};
574 $w_add_skill = & ${
'w_' . $skillinfo [$w_wep_kind]};
576 $w_wep_skill=round(${
'w_' .$skillinfo [$w_wep_kind]}*0.5+($w_wp+$w_wk+$w_wc+$w_wg+$w_wd+$w_wf)*0.5);
578 $w_wep_skill=${
'w_' .$skillinfo [$w_wep_kind]};
581 $w_wep_skill=sqrt($w_wep_skill);
585 if ($w_wep_kind ==
'N') {
587 $watt = round ($w_wep_skill*2/3);
595 $hitrate =
get_hitrate ( $w_wep_kind, $w_wep_skill, $w_club, $w_inf );
598 $damage_p =
get_damage_p ( $w_rage, $w_att_key, $w_type, $w_name , $w_club);
599 $hit_time =
get_hit_time ( $w_att_key, $w_wep_skill, $hitrate, $w_wep_kind, $w_weps, $infobbs [$w_wep_kind] *
get_clubskill_bonus_imfrate($w_club,$w_skills,
'w_',$club,$skills,
''),
get_clubskill_bonus_imftime($w_club,$w_skills,
'w_',$club,$skills,
''), $wepimprate[$w_wep_kind] *
get_clubskill_bonus_imprate($w_club,$w_skills,
'w_',$club,$skills,
''), $is_wpg,
get_clubskill_bonus_hitrate($w_club,$w_skills,
'w_',$club,$skills,
'') );
601 if ($hit_time [1] > 0) {
602 if(strpos($w_att_key,
'R')!==
false){
603 $maxdmg = $mhp > $wepe ? $wepe : $mhp;
604 $damage = rand(1,$maxdmg);
605 $log .=
"武器随机造成了<span class=\"red\">$damage</span>点伤害!<br>";
607 $gender_dmg_p =
check_gender ( $w_name,
'你', $w_gd, $gd, $w_att_key );
608 if ($gender_dmg_p == 0) {
612 $w_active = 1 - $active;
613 $attack = $w_att + $watt;
614 $defend =
checkdef($def , $arbe + $arhe + $arae + $arfe,$w_att_key);
617 $damage =
get_original_dmg (
'w_',
'', $attack, $defend, $w_wep_skill, $w_wep_kind );
619 if ($w_wep_kind ==
'F') {
621 $log.=
"<span class=\"red\">由于灵魂抽取的作用,灵系武器伤害大幅降低了!</span><br>";
623 $damage = round ( ($w_wepe + $damage) *
get_WF_p (
'w_', $w_club, $w_wepe) );
628 if ($w_wep_kind ==
'J') {
630 if ($adddamage>20000) {$adddamage=10000;}
631 $damage +=round($w_wepe*2/3+$adddamage);
633 checkarb ( $damage, $w_wep_kind, $w_att_key, $def_key );
634 $damage *= $damage_p;
636 $damage = $damage > 1 ? round ( $damage ) : 1;
637 $damage *= $gender_dmg_p;
640 $log.=
"<span class=\"red\">由于你手中的武器过于笨重,受到的伤害大增!真是大快人心啊!</span><br>";
641 $damage+=round($damage*0.5);
646 if ($hit_time [1] > 1) {
648 if ($hit_time [1] == 2) {
650 }
elseif ($hit_time [1] == 3) {
653 $dmg_p = 2.8 + 0.6 * ($hit_time [1] - 3);
656 $damage = round ( $damage * $dmg_p );
657 $log .=
"造成{$d_temp}×{$dmg_p}=<span class=\"red\">$damage</span>点伤害!<br>";
659 $log .=
"造成<span class=\"red\">$damage</span>点伤害!<br>";
662 $damage +=
get_ex_dmg (
"你", 1, $w_club, $inf, $w_att_key, $w_wep_kind, $w_wepe, $w_wep_skill, $def_key );
663 $damage =
checkdmgdef($damage, $w_att_key, $def_key, 0);
667 $log .=
"在你身上的<span class=\"yellow\">好人卡</span>的作用下,你受到的伤害增加了<span class=\"red\">$gm</span>点!<br>";
671 if($bonus_dmg < 100){
672 $log.=
"<span class=\"yellow\">由于技能效果的作用,伤害下降至".$bonus_dmg.
"%!</span><br>";
673 $damage = round($damage * $bonus_dmg / 100);
675 if($damage != $pdamage){
676 $log .=
"<span class=\"yellow\">造成的总伤害:<span class=\"red\">$damage</span>。</span><br>";
680 checkdmg ( $w_name, $name, $damage );
684 get_inf (
'你', $hit_time [2], $w_wep_kind);
686 check_KP_wep ( $w_name, $hit_time [3], $w_wep, $w_wepk, $w_wepe, $w_weps, $w_wepsk );
688 exprgup ( $w_lvl, $lvl, $w_exp, 0, $rage );
700 $w_rp += round($rpup*(100-$rpdec)/100);
706 include_once
GAME_ROOT .
'./include/state.func.php';
707 $killmsg =
death ( $w_wep_kind, $w_name, $w_type, $w_wep_temp );
708 $log .=
npc_chat ( $w_type,$w_name,
'kill' );
710 $log .=
'<span class="yellow">由于你及时按了BOMB键,你原地满血复活了!</span><br>';
714 $log .=
"但是没有击中!<br>";
717 check_GCDF_wep ( $w_name, $hit_time [0], $w_wep, $w_wep_kind, $w_wepk, $w_wepe, $w_weps, $w_wepsk );
719 addnoise ( $w_wep_kind, $w_wepsk, $now, $pls, $w_pid, $pid, $w_wep_kind );
732 global ${$w1 .
'pose'}, ${$w1 .
'tactic'}, ${$w1 .
'club'}, ${$w1 .
'inf'}, ${$w1 .
'active'}, ${$w2 .
'pose'}, ${$w2 .
'tactic'}, ${$w2 .
'club'}, ${$w2 .
'inf'}, ${$w2 .
'active'},${$w2 .
'skills'},${$w1 .
'skills'};
733 include_once
GAME_ROOT.
'./include/game/clubskills.func.php';
734 get_clubskill_bonus(${$w1 .
'club'},${$w1 .
'skills'},$w1,${$w2 .
'club'},${$w2 .
'skills'},$w2,$att1,$def1);
735 $att+=$att1; $def+=$def1;
736 $attack_p =
get_attack_p ( $weather, $pls, ${$w1 .
'pose'}, ${$w1 .
'tactic'}, ${$w1 .
'club'}, ${$w1 .
'inf'}, ${$w1 .
'active'} );
737 $att_pow = $att * $attack_p;
738 $defend_p =
get_defend_p ( $weather, $pls, ${$w2 .
'pose'}, ${$w2 .
'tactic'}, ${$w2 .
'club'}, ${$w2 .
'inf'}, ${$w2 .
'active'} );
739 $def_pow = $def * $defend_p;
740 get_clubskill_bonus_p(${$w1 .
'club'},${$w1 .
'skills'},$w1,${$w2 .
'club'},${$w2 .
'skills'},$w2,$attfac,$deffac);
743 if($def_pow <= 0){$def_pow = 0.01;}
744 $damage = ($att_pow / $def_pow) * $ws * $skill_dmg [$wp_kind];
746 $dfluc = $dmg_fluc [$wp_kind];
749 $dmg_factor = (100 + rand ( - $dfluc, $dfluc )) / 100;
751 $damage = round ( $damage * $dmg_factor * rand ( 4, 10 ) / 10 );
756 $cri_dice = rand ( 0, 99 );
760 if (!empty($msg) || $rg >= 255) {
779 if (strpos ( $atkcdt,
"c" ) !==
false) {
780 $rg_m = $cl == 9 ? 20 : 10;
781 if ($max_dice != 0) {
785 if ($cri_dice <= $max_dice && $rg >= $rg_m) {
788 $log .=
npc_chat ( $type,$nm,
'critical' );
791 $log .=
"{$nm}消耗<span class=\"yellow\">$rg_m</span>点怒气,<span class=\"red\">{$cri_word}</span>!";
793 $log .=
"{$nm}<span class=\"red\">{$cri_word}</span>!";
837 if (($d >= 100) && ($d < 150)) {
838 $words =
"{$p1}对{$p2}施加了一定程度的伤害。(100-150)";
839 }
elseif (($d >= 150) && ($d < 200)) {
840 $words =
"{$p1}拿了什么神兵?{$p2}所受的损伤已经不可忽略了。(150-200)";
841 }
elseif (($d >= 200) && ($d < 250)) {
842 $words =
"{$p1}简直不是人!{$p2}只能狼狈招架。(200-250)";
843 }
elseif (($d >= 250) && ($d < 300)) {
844 $words =
"{$p1}发出会心一击!{$p2}瞬间损失了大量生命!(250-300)";
845 }
elseif (($d >= 300) && ($d < 400)) {
846 $words =
"{$p1}使出浑身解数奋力一击!{$p2}想必凶多吉少!(300-400)";
847 }
elseif (($d >= 400) && ($d < 500)) {
848 $words =
"{$p1}使出武器中内藏的力量!可怜的{$p2}已经承受不住凶残的攻击了!(400-500)";
849 }
elseif (($d >= 500) && ($d < 600)) {
850 $words =
"{$p1}眼色一变使出绝招!{$p2}无法抵挡,只能任人宰割!(500-600)";
851 }
elseif (($d >= 600) && ($d < 750)) {
852 $words =
"{$p1}手中的武器闪耀出七彩光芒!{$p2}的身躯几乎融化在光芒中!(600-750)";
853 }
elseif (($d >= 750) && ($d < 1000)) {
854 $words =
"{$p1}受到天神的加护,打出惊天动地的一击!{$p2}此刻已不成人形!(750-1000)";
855 }
elseif (($d >= 1000) && ($d < 5000)) {
856 $words =
"{$p1}燃烧自己的生命得到了不可思议的力量!{$p2},你还活着吗?(1000-5000)";
857 }
elseif (($d >= 5000) && ($d < 10000)) {
858 $words =
"{$p1}超越自己的极限爆发出了震天动地的力量!受此神力摧残的{$p2}化作了一颗流星!(5000-10000)";
859 }
elseif (($d >= 10000) && ($d < 50000)) {
860 $words =
"{$p1}运转百万匹周天,吐气扬声,一道霸气的光束直逼{$p2},后者的身躯瞬间被力量的洪流所吞没!(10000-50000)";
861 }
elseif (($d >= 50000) && ($d < 200000)) {
862 $words =
"{$p1}已然超越了人类的极限!【{$d}】点的伤害——疾风怒涛般的攻击令大地崩塌,而{$p2}几乎化为齑粉!";
863 }
elseif (($d >= 200000) && ($d < 500000)) {
864 $words =
"鬼哭神嚎!风暴既逝,{$p1}仍然屹立在战场上,而受到了【{$d}】点伤害的{$p2}想必已化为宇宙的尘埃了!";
865 }
elseif ( $d >= 500000) {
866 $words =
"残虐的攻击已经无法用言语形容!将{$p2}击飞出【{$d}】点伤害的英雄——{$p1}!让我们记住他的名字吧!";
871 addnews ( 0,
'damage', $words );
876 function checkdef($def, $ardef, $aky, $active = 0){
878 $defend = $def + $ardef;
879 if(strpos($aky,
'N')!==
false){
881 if($Ndice < $specialrate[
'N']){
882 $defend = $def + round($ardef / 2);
883 $log .= $active ?
"<span class=\"yellow\">你的攻击隔着{$w_name}的防具造成了伤害!</span><br>" :
"<span class=\"yellow\">{$w_name}的攻击隔着你的防具造成了伤害!</span><br>";
889 function checkarb(&$dmg, $w, $aky, $dky, $active = 0) {
892 if (strpos ( $aky,
'n' ) !==
false && (strpos ( $dky,
'B' ) !==
false || strpos ( $dky, $w ) !==
false)) {
893 $dice = rand ( 0, 99 );
894 if ($dice < $specialrate[
'n']) {
895 $log .= $active ?
"<span class=\"yellow\">你的攻击贯穿了{$w_name}的防具!</span><br>" :
"<span class=\"yellow\">{$w_name}的攻击贯穿了你的防具!</span><br>";
899 if (strpos ( $dky,
'B' ) !==
false) {
900 $dice = rand ( 0, 99 );
901 if ($dice < $specialrate[
'B']) {
903 $log .= $active ?
"<span class=\"yellow\">你的攻击完全被{$w_name}的装备吸收了!</span><br>" :
"<span class=\"yellow\">{$w_name}的攻击完全被你的装备吸收了!</span><br>";
906 $log .= $active ?
"纳尼?你的装备使攻击无效化的属性竟然失效了!<br>" :
"纳尼?{$w_name}的装备使攻击无效化的属性竟然失效了!<br>";
909 if (strpos ( $dky, $w ) !==
false && !$dmginv) {
910 $dice = rand ( 0, 99 );
913 $log .= $active ?
"<span class=\"yellow\">{$w_name}的装备使你的攻击伤害减半了!</span><br>" :
"<span class=\"yellow\">你的装备使{$w_name}的攻击伤害减半了!</span><br>";
916 $log .= $active ?
"{$w_name}的装备没能发挥减半伤害的效果!<br>" :
"你的装备没能发挥减半伤害的效果!<br>";
923 global
$log, $name, $w_name;
928 if (strpos ( $dky,
'h' ) !==
false){
929 if($active){$nm = $w_name;}
934 $dice = rand ( 0, 99 );
935 if($dmg > 1950 + $dice){
938 $log .=
"在{$nm}的装备的作用下,攻击伤害被限制了!<br>";
941 $log .=
"{$nm}的装备没能发挥限制攻击伤害的效果!<br>";
950 if (strpos ( $ar,
'B' ) !==
false) {
951 $dice = rand ( 0, 99 );
954 $log .=
"<span class=\"red\">攻击的力量被完全吸收了!</span>";
956 $log .=
"防具使攻击无效化的效果失败了!";
962 function getatkkey($w, $ah, $ab, $aa, $af, $at, $atkind, $is_wpg) {
965 $eqpkey = $w . $ah . $ab . $aa . $af . $at . substr ( $atkind, 1, 1 );
966 foreach(Array(
'c',
'l',
'g',
'H',
'h',
'N',
'n',
'X',
'L',
'-',
'*',
'+') as $value){
967 if (strpos ( $eqpkey, $value ) !==
false) {
968 $atkcdt .=
'_'.$value;
972 foreach(Array(
'r',
'R') as $value){
973 if (strpos ( $w, $value ) !==
false) {
974 $atkcdt .=
'_'.$value;
978 foreach ($ex_attack as $value) {
979 if (strpos ( $w, $value ) !==
false && ! $is_wpg) {
980 $atkcdt .=
'_'.$value;
987 function get_hit_time($ky, $ws, $htr, $wk, $lmt, $infr, $inft, $wimpr, $is_wpg =
false, $hitratebonus) {
989 if ($lmt == $nosta) {
995 if (strpos ( $ky,
'r' ) !==
false) {
996 $atk_t = $ws >= 800 ? 6 : 2 + floor ( $ws / 200 );
997 if ($wk ==
'C' || $wk ==
'D' || $wk ==
'F') {
998 if ($lmt == $nosta) {
1001 if ($atk_t > $lmt) {
1005 if ($wk ==
'G' && $atk_t > $lmt) {
1013 for(
$i = 1;
$i <= $atk_t;
$i ++) {
1014 $dice = rand ( 0, 99 );
1015 $dice2 = rand ( 0, 99 );
1016 $dice3 = rand ( 0, 99 );
1019 if ($dice2 < $infr) {
1022 if ($dice3 < $wimpr) {
1026 $htr *= 0.8 * $hitratebonus;
1028 $wimpr *= $wimpr <= 0 ? 1 : 1.2;
1035 $dice = rand ( 0, 99 );
1036 $dice2 = rand ( 0, 99 );
1037 $dice3 = rand ( 0, 99 );
1040 if ($dice2 < $infr) {
1043 if ($dice3 < $wimpr) {
1048 if ($atk_t > 1 && $ht_t > 0) {
1049 $log .=
"{$atk_t}次连续攻击命中<span class=\"yellow\">{$ht_t}</span>次!";
1051 return Array ($atk_t, $ht_t, $inf_t, $wimp_t );
1057 $eqpkey = $w . $ah . $ab . $aa . $af . $at . substr ( $atkind, 1, 1 );
1058 foreach(Array(
'B',
'b',
'h',
'R',
'-',
'*',
'+') as $value){
1059 if (strpos ( $eqpkey, $value ) !==
false) {
1060 $defcdt .=
'_'.$value;
1063 if (strpos ( $eqpkey,
'A' ) !==
false) {
1064 $defcdt .=
'_P_K_G_C_D_F_J';
1066 foreach(Array(
'P',
'K',
'G',
'C',
'D',
'F') as $value){
1067 if (strpos ( $eqpkey, $value ) !==
false) {
1068 $defcdt .=
'_'.$value;
1071 if (strpos($eqpkey,
'G')!==
false){
1075 foreach ($ex_dmg_def as $value) {
1076 if (strpos ( $eqpkey, $value ) !==
false || strpos ( $eqpkey,
'a' ) !==
false) {
1077 $defcdt .=
'_'.$value;
1086 global
$ex_dmg_def,
$ex_base_dmg,
$ex_max_dmg,
$ex_wep_dmg,
$ex_skill_dmg,
$ex_dmg_fluc,
$ex_inf,
$ex_inf_r,
$ex_max_inf_r,
$ex_skill_inf_r,
$ex_inf_punish,
$ex_good_wep,
$ex_good_club;
1090 foreach ( $ex_attack as $ex_dmg_sign ) {
1091 if (strpos ( $ky, $ex_dmg_sign ) !==
false){
1092 $ex_list[] = $ex_dmg_sign;
1095 if (strpos ( $dky,
'b' ) !==
false && !empty($ex_list)){
1096 $dice = rand ( 0, 99);
1097 if ($dice < $specialrate[
'b']) {
1098 $ex_final_dmg = 1;$exnum = 0;
1099 foreach ( $ex_attack as $ex_dmg_sign ) {
1100 if (strpos ( $ky, $ex_dmg_sign ) !==
false) {
1104 $log .=
"<span class=\"red\">属性攻击的力量完全被防具吸收了!</span>只造成了<span class=\"red\">{$exnum}</span>点伤害!<br>";
1107 $log .=
"纳尼?防具使属性攻击无效化的属性竟然失效了!<br>";
1111 foreach ( $ex_list as $ex_dmg_sign ) {
1112 $dmgnm = $exdmgname [$ex_dmg_sign];
1113 $def = $ex_dmg_def [$ex_dmg_sign];
1114 $bdmg = $ex_base_dmg [$ex_dmg_sign];
1115 $mdmg = $ex_max_dmg [$ex_dmg_sign];
1116 $wdmg = $ex_wep_dmg [$ex_dmg_sign];
1117 $sdmg = $ex_skill_dmg [$ex_dmg_sign];
1118 $fluc = $ex_dmg_fluc [$ex_dmg_sign];
1119 if (in_array($ex_dmg_sign,array_keys($ex_inf))) {
1120 $dmginf = $exdmginf [$ex_inf[$ex_dmg_sign]];
1121 $ex_inf_sign = $ex_inf [$ex_dmg_sign];
1122 $infr = $ex_inf_r [$ex_inf_sign];
1123 $minfr = $ex_max_inf_r [$ex_inf_sign];
1124 $sinfr = $ex_skill_inf_r [$ex_inf_sign];
1125 $punish = $ex_inf_punish [$ex_dmg_sign];
1126 $e_htr = $ex_good_club [$ex_inf_sign] == $clb ? 20 : 0;
1132 $wk_dmg_p = $ex_good_wep [$ex_dmg_sign] == $wk ? 2 : 1;
1133 $e_dmg = $bdmg + $we/$wdmg + $ws/$sdmg;
1134 if(($mdmg>0)&&($wk!=
'H')){
1136 $e_dmg = round($wk_dmg_p*$mdmg*($e_dmg/($e_dmg+$mdmg/2))*rand(100 - $fluc, 100 + $fluc)/100);
1138 $e_dmg = round($wk_dmg_p*$e_dmg*rand(100 - $fluc, 100 + $fluc)/100);
1141 $ex_def_dice = rand(0,99);
1142 if (strpos ( $dky, $def ) ===
false || $ex_def_dice > 90) {
1143 if(strpos ( $dky, $def ) !==
false){
1144 $log .=
"属性防御装备没能发挥应有的作用!";
1147 if ($ex_inf_sign && strpos (
$inf, $ex_inf_sign ) !==
false && $punish > 1) {
1148 $log .=
"由于{$nm}已经{$dmginf},{$dmgnm}伤害倍增!";
1150 }
elseif ($ex_inf_sign && strpos (
$inf, $ex_inf_sign ) !==
false && $punish < 1) {
1151 $log .=
"由于{$nm}已经{$dmginf},{$dmgnm}伤害减少!";
1154 $e_htr += $infr + $ws * $sinfr;
1155 $e_htr = $e_htr > $minfr ? $minfr : $e_htr;
1157 $e_dmg = round($e_dmg);
1158 $log .=
"{$dmgnm}造成了<span class=\"red\">{$e_dmg}</span>点额外伤害!<br>";
1159 if (!empty($ex_inf_sign) && (strpos (
$inf, $ex_inf_sign ) ===
false)) {
1160 $dice = rand ( 0, 99 );
1161 if ($dice < $e_htr) {
1162 $inf .= $ex_inf_sign;
1164 global $w_combat_inf;
1165 $w_combat_inf .= $ex_inf_sign;
1167 $log .=
"并造成{$nm}{$dmginf}了!<br>";
1168 global $name,$w_name;
1170 addnews($now,
'inf',$w_name,$name,$ex_inf_sign);
1172 addnews($now,
'inf',$name,$w_name,$ex_inf_sign);
1177 $e_dmg = round ( $e_dmg / 2 );
1178 $log .=
"{$dmgnm}被防御效果抵消了!造成了<span class=\"red\">{$e_dmg}</span>点额外伤害!<br>";
1182 $ex_final_dmg += $e_dmg;
1186 return $ex_final_dmg;
1258 global
$log, ${$w .
'sp'}, ${$w .
'skills'};
1259 if (! empty ( $w )) {
1262 $we = $we > 0 ? $we : 1;
1264 include_once
GAME_ROOT.
'./include/game/clubskills.func.php';
1267 $spd0 = round ( 0.25*$we);
1269 if ($spd0 >= ${$w .
'sp'}) {
1270 $spd = ${$w .
'sp'} - 1;
1274 $factor = 0.5 + $spd / $spd0 / 2;
1275 $f = round ( 100 * $factor );
1276 $log .=
"你消耗{$spd}点体力,发挥了灵力武器{$f}%的威力!";
1277 ${$w .
'sp'} -= $spd;
1284 if ($ht > 0 && $ws == $nosta) {
1287 $log .=
"{$nm}的{$wp}的攻击力下降了{$ht}!<br>";
1290 $log .=
"{$nm}的<span class=\"red\">$wp</span>使用过度,已经损坏,无法再装备了!<br>";
1297 }
elseif ($ht > 0 && $ws != $nosta) {
1300 $log .=
"{$nm}的{$wp}的耐久度下降了{$ht}!<br>";
1303 $log .=
"{$nm}的<span class=\"red\">$wp</span>使用过度,已经损坏,无法再装备了!<br>";
1316 if ((($wp_kind ==
'C') || ($wp_kind ==
'D')|| ($wp_kind ==
'F')) && ($ws != $nosta)) {
1319 $log .=
"{$nm}用掉了{$ht}个{$wp}。<br>";
1322 $log .=
"{$nm}的<span class=\"red\">$wp</span>用光了!<br>";
1329 }
elseif ((($wp_kind ==
'G')||($wp_kind ==
'J')) && ($ws != $nosta)) {
1332 $log .=
"{$nm}的{$wp}的弹药数减少了{$ht}。<br>";
1335 $log .=
"{$nm}的<span class=\"red\">$wp</span>的弹药用光了!<br>";
1345 $infatt_dice = rand ( 1, 4 );
1346 if (($infatt_dice == 1) && (strpos ( $infatt [$wp_kind],
'b' ) !==
false)) {
1348 }
elseif (($infatt_dice == 2) && (strpos ( $infatt [$wp_kind],
'h' ) !==
false)) {
1350 }
elseif (($infatt_dice == 3) && (strpos ( $infatt [$wp_kind],
'a' ) !==
false)) {
1352 }
elseif (($infatt_dice == 4) && (strpos ( $infatt [$wp_kind],
'f' ) !==
false)) {
1361 global
$log, ${$w .
'ar' . $inf_att}, ${$w .
'ar' . $inf_att .
'k'}, ${$w .
'ar' . $inf_att .
'e'}, ${$w .
'ar' . $inf_att .
's'}, ${$w .
'ar' . $inf_att .
'sk'};
1362 if (${$w .
'ar' . $inf_att .
's'}) {
1363 ${$w .
'ar' . $inf_att .
's'} -= $ht;
1365 $log .=
"你的${$w.'ar'.$inf_att}的耐久度下降了{$ht}!<br>";
1367 if (${$w .
'ar' . $inf_att .
's'} <= 0) {
1368 $log .=
"{$nm}的<span class=\"red\">${$w.'ar'.$inf_att}</span>受损过重,无法再装备了!<br>";
1369 ${$w .
'ar' . $inf_att} = ${$w .
'ar' . $inf_att .
'k'} = ${$w .
'ar' . $inf_att .
'sk'} =
'';
1370 ${$w .
'ar' . $inf_att .
'e'} = ${$w .
'ar' . $inf_att .
's'} = 0;
1374 if (strpos ( ${$w .
'inf'}, $inf_att ) ===
false) {
1375 ${$w .
'inf'} .= $inf_att;
1377 global ${$w .
'combat_inf'};
1378 ${$w .
'combat_inf'} .= $inf_att;
1380 $log .=
"{$nm}的<span class=\"red\">$infinfo[$inf_att]</span>部受伤了!<br>";
1398 $hp_d = floor ( $hp / 2 );
1400 $hp_d = floor ( $hp * 2 / 3 );
1402 $hp_d = floor ( $hp * 4 / 5 );
1404 if (strpos ( $a_ky,
'H' ) !=
false) {
1405 $hp_d = floor ( $hp_d / 10 );
1407 $log .=
"惨无人道的攻击对{$nm}自身造成了<span class=\"red\">$hp_d</span>点<span class=\"red\">反噬伤害!</span><br>";
1413 function exprgup(&$lv_a, $lv_d, &$exp, $isplayer, &$rg) {
1415 $expup = round ( ($lv_d - $lv_a) / 3 );
1416 $expup = $expup > 0 ? $expup : 1;
1426 if ($exp >= $nl_exp) {
1427 include_once
GAME_ROOT .
'./include/state.func.php';
1428 lvlup ( $lv_a, $exp, $isplayer );
1430 $rgup = round ( ($lv_a - $lv_d) / 3 );
1431 $rg += $rgup > 0 ? $rgup : 1;
1435 function addnoise($wp_kind, $wsk, $ntime, $npls, $nid1, $nid2, $nmode) {
1436 if ((($wp_kind ==
'G') && (strpos ( $wsk,
'S' ) ===
false)) || ($wp_kind ==
'F')) {
1438 $noisetime = $ntime;
1442 $noisemode = $nmode;
1444 }
elseif (strpos ( $wsk,
'd' ) !==
false){
1446 $noisetime = $ntime;
1453 if (strlen($wp_kind)>=3){
1455 $noisetime = $ntime;
1459 $noisemode = $wp_kind;
1468 if ((((strpos ( $a_ky,
"l" ) !==
false) && ($gd_a != $gd_d)) || ((strpos ( $a_ky,
"g" ) !==
false) && ($gd_a == $gd_d))) && (! rand ( 0, 4 ))) {
1470 $log .=
"<span class=\"red\">{$nm_a}被{$nm_d}迷惑,无法全力攻击!</span>";
1472 }
elseif ((((strpos ( $a_ky,
"l" ) !==
false) && ($gd_a == $gd_d)) || ((strpos ( $a_ky,
"g" ) !==
false) && ($gd_a != $gd_d))) && (! rand ( 0, 4 ))) {
1474 $log .=
"<span class=\"red\">{$nm_a}被{$nm_d}激怒,伤害加倍!</span>";
1481 global
$now,
$log,$w_name,$w_type,$w_club,$w_wep, $w_wepk, $w_wepe, $w_weps, $w_itm0, $w_itmk0, $w_itme0, $w_itms0, $w_itm1, $w_itmk1, $w_itme1, $w_itms1, $w_itm2, $w_itmk2, $w_itme2, $w_itms2, $w_itm3, $w_itmk3, $w_itme3, $w_itms3, $w_itm4, $w_itmk4, $w_itme4, $w_itms4, $w_itm5, $w_itmk5, $w_itme5, $w_itms5,$w_itm6, $w_itmk6, $w_itme6, $w_itms6, $w_wepsk, $w_arbsk, $w_arhsk, $w_arask, $w_arfsk, $w_artsk, $w_itmsk0, $w_itmsk1, $w_itmsk2, $w_itmsk3, $w_itmsk4, $w_itmsk5, $w_itmsk6;
1482 global $w_arb, $w_arbk, $w_arbe, $w_arbs, $w_arh, $w_arhk, $w_arhe, $w_arhs, $w_ara, $w_arak, $w_arae, $w_aras, $w_arf, $w_arfk, $w_arfe, $w_arfs, $w_art, $w_artk, $w_arte, $w_arts;
1484 if(!$w_name || !$w_type || $w_club != 98){
return;}
1489 $wepklist = Array($w_wepk);$weplist2 = array();
1491 if(${
'w_itms'.$i} && ${
'w_itme'.$i} && strpos(${
'w_itmk'.$i},
'W')===0){
1492 $weplist[] = Array(
$i,${
'w_itm'.$i},${
'w_itmk'.$i},${
'w_itme'.$i},${
'w_itms'.$i},${
'w_itmsk'.$i});
1493 $wepklist[] = ${
'w_itmk'.$i};
1496 if(!empty($weplist)){
1497 $wepklist = array_unique($wepklist);
1498 $temp_def_key =
getdefkey($wepsk,$arhsk,$arbsk,$arask,$arfsk,$artsk,$artk);
1499 $wepkAI = $wepskAI =
true;
1500 if(strpos($temp_def_key,
'_P_K_G_C_D_F')!==
false || strpos($temp_def_key,
'B')!==
false){$wepkAI =
false;}
1501 if(count($wepklist)<=1){$wepkAI =
false;}
1502 if(strpos($temp_def_key,
'_q_U_I_D_E')!==
false || strpos($temp_def_key,
'b')!==
false){$wepskAI =
false;}
1505 if(!$wepk){$wepk_temp =
'WN';}
else{$wepk_temp = $wepk;}
1506 foreach($weplist as $val){
1507 if($rangeinfo[substr($val[2],1,1)] >= $rangeinfo[substr($wepk_temp,1,1)] && strpos($temp_def_key,substr($val[2],1,1))===
false){
1512 $weplist = $weplist2;
1515 if($wepskAI && $weplist){
1517 foreach($weplist as $val){
1518 foreach($ex_dmg_def as $key => $val2){
1519 if(strpos($val[5],$key)!==
false && strpos($temp_def_key,$val2)!==
false){
1525 if(count($minus) < count($weplist)){
1526 $weplist = array_diff($weplist,$minus);
1536 if(!empty($weplist)){
1539 $chosen = $weplist[0];$c = $chosen[0];
1541 ${
'w_itm'.$c} = $w_wep;${
'w_itmk'.$c} = $w_wepk;${
'w_itme'.$c} = $w_wepe;${
'w_itms'.$c} = $w_weps;${
'w_itmsk'.$c} = $w_wepsk;
1542 $w_wep = $chosen[1]; $w_wepk = $chosen[2]; $w_wepe = $chosen[3];$w_weps = $chosen[4];$w_wepsk = $chosen[5];
1544 $log .=
"<span class=\"yellow\">{$w_name}</span>将手中的<span class=\"yellow\">{$oldwep}</span>卸下,装备了<span class=\"yellow\">{$w_wep}</span>!<br>";
1552 if ($npcchaton && in_array($type,$npccanchat)) {
1553 global
$npcchat, $w_itmsk0, $w_hp, $w_mhp;
1554 $chatcolor = $npcchat[$type][$nm][
'color'];
1555 if(!empty($chatcolor)){
1556 $npcwords =
"<span class = \"{$chatcolor}\">";
1558 $npcwords =
'<span>';
1562 if (empty ( $w_itmsk0 )) {
1563 $npcwords .=
"{$npcchat[$type][$nm][0]}";
1565 }
elseif ($w_hp > ($w_mhp / 2)) {
1566 $dice = rand ( 1, 2 );
1567 $npcwords .=
"{$npcchat[$type][$nm][$dice]}";
1569 $dice = rand ( 3, 4 );
1570 $npcwords .=
"{$npcchat[$type][$nm][$dice]}";
1574 if (empty ( $w_itmsk0 )) {
1575 $npcwords .=
"{$npcchat[$type][$nm][0]}";
1577 }
elseif ($w_hp > ($w_mhp / 2)) {
1578 $dice = rand ( 5, 6 );
1579 $npcwords .=
"{$npcchat[$type][$nm][$dice]}";
1581 $dice = rand ( 7, 8 );
1582 $npcwords .=
"{$npcchat[$type][$nm][$dice]}";
1586 $npcwords .=
"{$npcchat[$type][$nm][9]}";
1589 $npcwords .=
"{$npcchat[$type][$nm][10]}";
1592 $npcwords .=
"{$npcchat[$type][$nm][11]}";
1595 $npcwords .=
"{$npcchat[$type][$nm][12]}";
1598 $npcwords .=
"{$nm}对你说道:{$npcchat[$type][$nm][13]}";
1601 $npcwords .=
'</span><br>';
1603 }
elseif ($mode ==
'death') {
1605 if (is_array ( $lwinfo [$type] )) {
1606 $lastword = $lwinfo [$type] [$nm];
1608 $lastword = $lwinfo [$type];
1610 $npcwords =
"<span class=\"yellow\">“{$lastword}”</span><br>";
1620 global $itm0,$itmk0,$itms0,$itm1,$itmk1,$itms1,$itm2,$itmk2,$itms2,$itm3,$itmk3,$itms3,$itm4,$itmk4,$itms4,$itm5,$itmk5,$itms5,$itm6,$itmk6,$itms6;
1623 if(${
'itms'.$i} && ${
'itm'.$i} ==
'好人卡' && ${
'itmk'.$i} ==
'Y'){
1624 $goodmancard += ${
'itms'.$i};
1628 global $w_itm0,$w_itmk0,$w_itms0,$w_itm1,$w_itmk1,$w_itms1,$w_itm2,$w_itmk2,$w_itms2,$w_itm3,$w_itmk3,$w_itms3,$w_itm4,$w_itmk4,$w_itms4,$w_itm5,$w_itmk5,$w_itms5,$w_itm6,$w_itmk6,$w_itms6;
1631 if(${
'w_itms'.$i} && ${
'w_itm'.$i} ==
'好人卡' && ${
'w_itmk'.$i} ==
'Y'){
1632 $goodmancard += ${
'w_itms'.$i};
1636 return $goodmancard;
attack($wep_kind= 'N', $active=0)
npc_chat($type, $nm, $mode)
get_clubskill_bonus_fluc($aclub, $askl, $prefix1, $bclub, $bskl, $prefix2)
get_clubskill_bonus_hitrate($aclub, $askl, $prefix1, $bclub, $bskl, $prefix2)
check_battle_achievement($n, $is_npc, $killname, $wp)
get_clubskill_bonus_imprate($aclub, $askl, $prefix1, $bclub, $bskl, $prefix2)
get_clubskill_bonus_spd($clb, $skl)
defend($w_wep_kind= 'N', $active=0)
get_clubskill_bonus($aclub, $askl, $prefix1, $bclub, $bskl, $prefix2, &$att, &$def)
if(!defined('IN_GAME')) $hdamage
get_damage_p(&$rg, $atkcdt, $type, $nm, $cl=0, $msg= '')
get_inf($nm, $ht, $wp_kind)
checkdmgdef($dmg, $aky, $dky, $active)
get_attack_p($weather=0, $pls=0, $pose=0, $tactic=0, $club=0, $inf= '', $active=1)
get_defend_p($weather=0, $pls=0, $pose=0, $tactic=0, $club=0, $inf= '', $active=1)
checkdef($def, $ardef, $aky, $active=0)
get_clubskill_bonus_dmg_val($club, $skl, $rp, $w_rp)
lvlup(&$lvl, &$exp, $isplayer=1)
check_gender($nm_a, $nm_d, $gd_a, $gd_d, $a_ky)
checkarb(&$dmg, $w, $aky, $dky, $active=0)
logsave($pid, $time, $log= '', $type= 's')
addnews($t=0, $n= '', $a='', $b='', $c= '', $d= '', $e= '')
get_clubskill_bonus_imfrate($aclub, $askl, $prefix1, $bclub, $bskl, $prefix2)
if(PHP_VERSION< '4.3.0') $action
get_clubskill_bonus_p($aclub, $askl, $prefix1, $bclub, $bskl, $prefix2, &$att, &$def)
get_original_dmg($w1, $w2, $att, $def, $ws, $wp_kind)
get_clubskill_bonus_imftime($aclub, $askl, $prefix1, $bclub, $bskl, $prefix2)
kill($death, $dname, $dtype=0, $dpid=0, $annex= '')
【生存者数:<?php echo $alivenum?> 人】< input type="button"value="显示全部幸存者"onClick="$('alivemode').value='all';$('gbmode').value='none';postCmd('alive','alive.php');"></p > if($gamblingon &&$gamestate >=20) elseif($gamblingon &&$gamestate<=10)
getdefkey($w, $ah, $ab, $aa, $af, $at, $atkind)
get_hitrate($wkind= 'N', $skill=0, $club=0, $inf= '')
addnoise($wp_kind, $wsk, $ntime, $npls, $nid1, $nid2, $nmode)
get_counter($wkind= 'N', $tactic=0, $club=0, $inf= '')
get_clubskill_bonus_dmg_rate($aclub, $askl, $bclub, $bskl)
get_dmg_punish($nm, $dmg, &$hp, $a_ky)
check_KP_wep($nm, $ht, &$wp, &$wk, &$we, &$ws, &$wsk)
exprgup(&$lv_a, $lv_d, &$exp, $isplayer, &$rg)
getatkkey($w, $ah, $ab, $aa, $af, $at, $atkind, $is_wpg)
get_ex_dmg($nm, $sd, $clb, &$inf, $ky, $wk, $we, $ws, $dky)
check_GCDF_wep($nm, $ht, &$wp, $wp_kind, &$wk, &$we, &$ws, &$wsk)
checkdmgreflex(&$dmg, $ar)
count_good_man_card($active)
get_clubskill_bonus_counter($aclub, $askl, $prefix1, $bclub, $bskl, $prefix2)
get_hit_time($ky, $ws, $htr, $wk, $lmt, $infr, $inft, $wimpr, $is_wpg=false, $hitratebonus)
if(!defined( 'IN_GAME')) death($death, $kname= '', $ktype=0, $annex= '')
if(!$cuser||!$cpass) $result
if(!defined( 'IN_GAME')) combat($active=1, $wep_kind= '')
get_clubskill_rp_dec($clb, $skl)