function strike_prepare(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('weapon', 'logger')); if ($active) { $log .= "使用{$pa['wep']}<span class=\"yellow\">" . $attinfo[$pa['wep_kind']] . "</span>{$pd['name']}!<br>"; } else { $log .= "{$pa['name']}使用{$pa['wep']}<span class=\"yellow\">" . $attinfo[$pa['wep_kind']] . "</span>你!<br>"; } $pd['deathmark'] = $wepdeathstate[$pa['wep_kind']]; $pa['attackwith'] = $pa['wep']; $pa['fin_skill'] = get_skill($pa, $pd, $active); $pa['fin_hitrate'] = get_hitrate($pa, $pd, $active); $chprocess($pa, $pd, $active); }
function defend($w_wep_kind = 'N', $active = 0) { global $now, $nosta, $log, $infobbs, $infinfo, $attinfo, $skillinfo, $wepimprate, $specialrate; global $w_name, $w_lvl, $w_gd, $w_pid, $pls, $w_hp, $w_sp, $w_rage, $w_exp, $w_club, $w_att, $w_inf; global $w_wep, $w_wepk, $w_wepe, $w_weps, $w_wepsk; global $arbe, $arbsk, $arhe, $arae, $arfe, $wepk; global $w_artk, $w_arhsk, $w_arbsk, $w_arask, $w_arfsk, $w_artsk; global $hp, $rage, $lvl, $pid, $gd, $name, $inf, $att, $def, $club; global $wepsk, $arhsk, $arask, $arfsk, $artsk, $artk; global $w_type, $w_sNo, $w_killnum, $mhp; global $w_wp, $w_wk, $w_wc, $w_wg, $w_wf, $w_wd, $w_skills, $skills, $skillpoint, $w_skillpoint, $w_rp; include_once GAME_ROOT . './include/game/clubskills.func.php'; //npc_changewep(); $watt = -1; $w_wep_temp = $w_wep; $is_wpg = false; if ((strpos($w_wepk, 'G') == 1 || strpos($w_wepk, 'J') == 1) && $w_wep_kind == 'P') { $watt = round($w_wepe / 5); $is_wpg = true; } $log .= "{$w_name}使用{$w_wep}<span class=\"yellow\">{$attinfo[$w_wep_kind]}</span>你!<br>"; $w_att_key = getatkkey($w_wepsk, $w_arhsk, $w_arbsk, $w_arask, $w_arfsk, $w_artsk, $w_artk, $is_wpg); $def_key = getdefkey($wepsk, $arhsk, $arbsk, $arask, $arfsk, $artsk, $artk); $mdr = $skdr = $sldr = false; if (strpos($w_att_key . $def_key, '-') !== false) { $mdr = true; } //精抽 if (strpos($w_att_key . $def_key, '*') !== false) { $sldr = true; } //魂抽 if (strpos($w_att_key . $def_key, '+') !== false) { $skdr = true; } //技抽 if ($mdr || $sldr || $skdr) { list($wsk, $hsk, $bsk, $ask, $fsk, $tsk, $tk) = array($wepsk, $arhsk, $arbsk, $arask, $arfsk, $artsk, $artk); list($wwsk, $whsk, $wbsk, $wask, $wfsk, $wtsk, $wtk) = array($w_wepsk, $w_arhsk, $w_arbsk, $w_arask, $w_arfsk, $w_artsk, $w_artk); if ($mdr) { $log .= "<span class=\"yellow\">精神抽取使双方的防具属性全部失效!</span><br>"; $hsk = $bsk = $ask = $fsk = $whsk = $wbsk = $wask = $wfsk = ''; } if ($sldr) { $log .= "<span class=\"yellow\">灵魂抽取使双方的武器和饰物属性全部失效!</span><br>"; $wsk = $tsk = $tk = $wwsk = $wtsk = $wtk = ''; } if ($skdr) { $log .= "<span class=\"yellow\">技能抽取使双方的武器熟练度在战斗中大幅下降!</span><br>"; //$bsk = $ask = $fsk = $wbsk = $wask = $wfsk = ''; } $w_att_key = getatkkey($wwsk, $whsk, $wbsk, $wask, $wfsk, $wtsk, $wtk, $is_wpg); $def_key = getdefkey($wsk, $hsk, $bsk, $ask, $fsk, $tsk, $tk); } if (strpos($w_att_key, "X") !== false && $w_type && !$type && rand(1, 100) > 90) { if ($w_wep == '燕返262') { $log .= "<img src=\"img/other/262.png\"><br>"; } $damage = $mhp; $log .= "造成<span class=\"red\">{$damage}</span>点伤害!<br>"; checkdmg($w_name, $name, $damage); $hp = 0; $w_killnum++; include_once GAME_ROOT . './include/state.func.php'; $killmsg = death($w_wep_kind, $w_name, $w_type, $w_wep_temp); $log .= npc_chat($w_type, $w_name, 'kill'); return $damage; } global ${'w_' . $skillinfo[$w_wep_kind]}; $w_add_skill =& ${'w_' . $skillinfo[$w_wep_kind]}; if ($w_club == 18) { $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); } else { $w_wep_skill = ${'w_' . $skillinfo[$w_wep_kind]}; } if ($skdr) { $w_wep_skill = sqrt($w_wep_skill); } if ($watt == -1) { if ($w_wep_kind == 'N') { global $w_wp; $watt = round($w_wep_skill * 2 / 3); } else { $watt = $w_wepe * 2; } } $hitrate = get_hitrate($w_wep_kind, $w_wep_skill, $w_club, $w_inf); $hitrate *= get_clubskill_bonus_hitrate($w_club, $w_skills, 'w_', $club, $skills, ''); $damage_p = get_damage_p($w_rage, $w_att_key, $w_type, $w_name, $w_club); $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, '')); if ($hit_time[1] > 0) { if (strpos($w_att_key, 'R') !== false) { //随机伤害无视一切伤害计算 $maxdmg = $mhp > $wepe ? $wepe : $mhp; $damage = rand(1, $maxdmg); $log .= "武器随机造成了<span class=\"red\">{$damage}</span>点伤害!<br>"; } else { $gender_dmg_p = check_gender($w_name, '你', $w_gd, $gd, $w_att_key); if ($gender_dmg_p == 0) { $damage = 1; } else { global $w_att; $w_active = 1 - $active; $attack = $w_att + $watt; $defend = checkdef($def, $arbe + $arhe + $arae + $arfe, $w_att_key); $damage = get_original_dmg('w_', '', $attack, $defend, $w_wep_skill, $w_wep_kind); if ($w_wep_kind == 'F') { if ($sldr) { $log .= "<span class=\"red\">由于灵魂抽取的作用,灵系武器伤害大幅降低了!</span><br>"; } else { $damage = round(($w_wepe + $damage) * get_WF_p('w_', $w_club, $w_wepe)); //get_spell_factor ( 1, $w_club, $w_att_key, $w_sp, $w_wepe ) ); } } if ($w_wep_kind == 'J') { $adddamage = $mhp / 3; if ($adddamage > 20000) { $adddamage = 10000; } $damage += round($w_wepe * 2 / 3 + $adddamage); } checkarb($damage, $w_wep_kind, $w_att_key, $def_key); $damage *= $damage_p; $damage = $damage > 1 ? round($damage) : 1; $damage *= $gender_dmg_p; } if ($wepk == 'WJ') { $log .= "<span class=\"red\">由于你手中的武器过于笨重,受到的伤害大增!真是大快人心啊!</span><br>"; $damage += round($damage * 0.5); } if ($hit_time[1] > 1) { $d_temp = $damage; if ($hit_time[1] == 2) { $dmg_p = 2; } elseif ($hit_time[1] == 3) { $dmg_p = 2.8; } else { $dmg_p = 2.8 + 0.6 * ($hit_time[1] - 3); } //$dmg_p = $hit_time[1] - ($hit_time[1]-1)*0.2; $damage = round($damage * $dmg_p); $log .= "造成{$d_temp}×{$dmg_p}=<span class=\"red\">{$damage}</span>点伤害!<br>"; } else { $log .= "造成<span class=\"red\">{$damage}</span>点伤害!<br>"; } $pdamage = $damage; $damage += get_ex_dmg("你", 1, $w_club, $inf, $w_att_key, $w_wep_kind, $w_wepe, $w_wep_skill, $def_key); $damage = checkdmgdef($damage, $w_att_key, $def_key, 0); //好人卡特别活动 $gm = ceil(count_good_man_card(1) * rand(80, 120) / 100); if ($gm) { $log .= "在你身上的<span class=\"yellow\">好人卡</span>的作用下,你受到的伤害增加了<span class=\"red\">{$gm}</span>点!<br>"; $damage += $gm; } $bonus_dmg = get_clubskill_bonus_dmg_rate($w_club, $w_skills, $club, $skills) * 100; if ($bonus_dmg < 100) { $log .= "<span class=\"yellow\">由于技能效果的作用,伤害下降至" . $bonus_dmg . "%!</span><br>"; $damage = round($damage * $bonus_dmg / 100); } if ($damage != $pdamage) { $log .= "<span class=\"yellow\">造成的总伤害:<span class=\"red\">{$damage}</span>。</span><br>"; } } checkdmg($w_name, $name, $damage); get_dmg_punish($w_name, $damage, $w_hp, $w_att_key); get_inf('你', $hit_time[2], $w_wep_kind); check_KP_wep($w_name, $hit_time[3], $w_wep, $w_wepk, $w_wepe, $w_weps, $w_wepsk); exprgup($w_lvl, $lvl, $w_exp, 0, $rage); $hp -= $damage; if ($hp <= 0) { $tmp_club = $club; $hp = 0; $w_killnum++; $rpup = 20; if ($w_club == 19) { $rpdec = 30; $rpdec += get_clubskill_rp_dec($w_club, $w_skills); $w_rp += round($rpup * (100 - $rpdec) / 100); } else { $w_rp += $rpup; } include_once GAME_ROOT . './include/state.func.php'; $killmsg = death($w_wep_kind, $w_name, $w_type, $w_wep_temp); $log .= npc_chat($w_type, $w_name, 'kill'); if ($tmp_club == 99) { $log .= '<span class="yellow">由于你及时按了BOMB键,你原地满血复活了!</span><br>'; } } } else { $damage = 0; $log .= "但是没有击中!<br>"; } check_GCDF_wep($w_name, $hit_time[0], $w_wep, $w_wep_kind, $w_wepk, $w_wepe, $w_weps, $w_wepsk); addnoise($w_wep_kind, $w_wepsk, $now, $pls, $w_pid, $pid, $w_wep_kind); if ($w_club == 10) { $w_add_skill += 2; } else { $w_add_skill += 1; } return $damage; }