function check_ex_dmg_nullify(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('ex_dmg_att', 'logger')); $ex_att_array = \attrbase\get_ex_attack_array($pa, $pd, $active); $ex_def_array = \attrbase\get_ex_def_array($pa, $pd, $active); //有属性攻击才进入判断 $flag = 0; $exnum = 0; foreach ($ex_attack_list as $key) { if (in_array($key, $ex_att_array)) { $flag = 1; $exnum++; } } if ($flag && in_array('b', $ex_def_array)) { $proc_rate = get_ex_dmg_nullify_proc_rate($pa, $pd, $active); $dice = rand(0, 99); if ($dice < $proc_rate) { $log .= "<span class=\"red\">属性攻击的力量完全被防具吸收了!</span>只造成了<span class=\"red\">{$exnum}</span>点伤害!<br>"; $pa['ex_dmg_dealt'] = $exnum; $pd['exdmg_nullify_success'] = 1; return 1; } else { $log .= "纳尼?防具使属性攻击无效化的属性竟然失效了!<br>"; return 0; } } return 0; }
function weapon_WJ_addnoise(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (in_array('S', \attrbase\get_ex_attack_array($pa, $pd, $active))) { return; } $chprocess($pa, $pd, $active); }
function check_gender_proc(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('logger')); $ex_att_array = \attrbase\get_ex_attack_array($pa, $pd, $active); //无对应属性直接返回 if (!in_array('l', $ex_att_array) && !in_array('g', $ex_att_array)) { return array(); } //有一方无性别时直接返回 if ($pa['gd'] === 0 || $pd['gd'] === 0) { return array(); } //都出现时视为l if (in_array('l', $ex_att_array)) { $ty = 1; } else { $ty = 0; } if ($ty == 1 && $pa['gd'] != $pd['gd'] || $ty == 0 && $pa['gd'] == $pd['gd']) { //判迷惑 $proc_rate = get_gender_bewitch_proc_rate($pa, $pd, $active); $dice = rand(0, 99); if ($dice < $proc_rate) { //迷惑触发,视为伤抹成功 if ($active) { $log .= "<span class=\"red\">你被{$pd['name']}迷惑,无法全力攻击!</span><br>"; } else { $log .= "<span class=\"red\">{$pa['name']}被你迷惑,无法全力攻击!</span><br>"; } $pd['physical_nullify_success'] = 1; } } else { //判激怒 $proc_rate = get_gender_enrage_proc_rate($pa, $pd, $active); $dice = rand(0, 99); if ($dice < $proc_rate) { //激怒触发,伤害*2 if ($active) { $log .= "<span class=\"red\">你被{$pd['name']}激怒,伤害加倍!</span><br>"; } else { $log .= "<span class=\"red\">{$pa['name']}被你激怒,伤害加倍!</span><br>"; } return array(2); } } return array(); }
function check_charge_proc(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('logger')); $ex_att_array = \attrbase\get_ex_attack_array($pa, $pd, $active); if (in_array('N', $ex_att_array)) { $proc_rate = get_ex_charge_proc_rate($pa, $pd, $active); $dice = rand(0, 99); if ($dice < $proc_rate) { $pa['physical_charge_success'] = 1; return 1; } } return 0; }
function calculate_ex_attack_dmg(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if ($pa['bskill'] == 222) { $ex_att_array = \attrbase\get_ex_attack_array($pa, $pd, $active); if (in_array('p', $ex_att_array)) { eval(import_module('logger')); if ($active) { $log .= '<span class="yellow">「催化」使你造成的毒性伤害提高了50%!</span><br>'; } else { $log .= '<span class="yellow">「催化」使敌人造成的毒性伤害提高了50%!</span><br>'; } } } return $chprocess($pa, $pd, $active); }
function calculate_ex_attack_dmg(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (!\skillbase\skill_query(54, $pd) || !check_unlocked54($pd)) { return $chprocess($pa, $pd, $active); } if (count(\attrbase\get_ex_attack_array($pa, $pd, $active)) > 0) { eval(import_module('logger')); if ($active) { $log .= '<span class="yellow">技能「圣盾」降低了敌人受到的属性伤害!</span><br>'; } else { $log .= '<span class="yellow">技能「圣盾」降低了你受到的属性伤害!</span><br>'; } } return $chprocess($pa, $pd, $active); }
function strike_finish(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (\skillbase\skill_query(27, $pa) && check_unlocked27($pa) && $pa['is_hit']) { eval(import_module('skill27', 'armor', 'wound', 'logger')); if ($pa['bskill'] == 26) { $target = $armor_equip_list; if (\skillbase\skill_getvalue(26, 'lvl', $pa)) { $damage = 2; } else { $damage = 3; } } else { $target = array($armor_equip_list[rand(0, count($armor_equip_list) - 1)]); $damage = 0; if (in_array('u', \attrbase\get_ex_attack_array($pa, $pd, $active))) { $damage += 1; } if (in_array('f', \attrbase\get_ex_attack_array($pa, $pd, $active))) { $damage += 2; } } if ($damage > 0) { foreach ($target as $key) { if (in_array($key, $armor_equip_list) && isset($pd[$key . 'e']) && $pd[$key . 'e'] > 0) { //有防具 $pa['attack_wounded_' . substr($key, 2)] += $damage; } else { if (!\skillbase\skill_query(6, $pd)) { if ($active) { $log .= '流火技能' . $infname['u'] . '了敌人!'; } else { $log .= '你被敌人的流火技能' . $infname['u'] . '了!'; } \wound\get_inf('u', $pd); } } } } } $chprocess($pa, $pd, $active); }
function check_pierce_proc(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('logger')); $ex_att_array = \attrbase\get_ex_attack_array($pa, $pd, $active); if (in_array('n', $ex_att_array)) { $proc_rate = get_ex_pierce_proc_rate($pa, $pd, $active); $dice = rand(0, 99); if ($dice < $proc_rate) { if ($active) { $log .= "<span class=\"yellow\">你的攻击贯穿了{$pd['name']}的防具!</span><br>"; } else { $log .= "<span class=\"yellow\">{$pa['name']}的攻击贯穿了你的防具!</span><br>"; } $pa['physical_pierce_success'] = 1; } } return array(); }
function strike_prepare(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if ($pa['bskill'] != 48) { return $chprocess($pa, $pd, $active); } if (!\skillbase\skill_query(48, $pa) || !check_unlocked48($pa)) { eval(import_module('logger')); $log .= '你尚未解锁这个技能!'; $pa['bskill'] = 0; } else { $rcost = get_rage_cost48($pa); if ($pa['rage'] >= $rcost && $pa['wep_kind'] == 'C') { eval(import_module('logger')); if ($active) { $log .= "<span class=\"lime\">你对{$pd['name']}发动了技能「附魔」!</span><br>"; } else { $log .= "<span class=\"lime\">{$pa['name']}对你发动了技能「附魔」!</span><br>"; } $pa['rage'] -= $rcost; addnews(0, 'bskill48', $pa['name'], $pd['name']); //更新附魔发动次数 $ori_val = (int) \skillbase\skill_getvalue(48, 'tot', $pa); $ori_val++; \skillbase\skill_setvalue(48, 'tot', $ori_val, $pa); eval(import_module('ex_dmg_att', 'skill48')); $lis = array(); $ex_attack_array = \attrbase\get_ex_attack_array($pa, $pd, $active); foreach ($ex_attack_list as $key) { if (in_array($key, $ex_attack_array)) { if (isset($skill48_ex_map[$key])) { array_push($lis, $skill48_ex_map[$key]); } else { array_push($lis, $key); } } } if (count($lis) > 0) { $pa['skill48_flag'] = $lis[rand(0, count($lis) - 1)]; } else { unset($pa['skill48_flag']); } } else { if ($active) { eval(import_module('logger')); $log .= '怒气不足或其他原因不能发动。<br>'; } $pa['bskill'] = 0; } } $chprocess($pa, $pd, $active); }
function add_ex_att_noise(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (defined('MOD_NOISE') && in_array('d', \attrbase\get_ex_attack_array($pa, $pd, $active))) { \noise\addnoise($pa['pls'], 'd', $pa['pid'], $pd['pid']); } }
function weapon_strike(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (!in_array('r', \attrbase\get_ex_attack_array($pa, $pd, $active))) { $chprocess($pa, $pd, $active); return; } //开始连击属性特效 eval(import_module('weapon', 'ex_rapid_attr', 'logger')); $rapid_times = get_rapid_times($pa, $pd, $active); $pa['actual_rapid_time'] = 0; $pa['actual_hit_time'] = 0; $is_hit = 0; for ($cur_rapid_time = 0; $cur_rapid_time < $rapid_times; $cur_rapid_time++) { $pa['actual_rapid_time']++; $dice = rand(0, 99); if ($dice < $pa['fin_hitrate']) { $is_hit = 1; $pa['actual_hit_time']++; \weapon\post_weapon_strike_events($pa, $pd, $active, 1); } else { \weapon\post_weapon_strike_events($pa, $pd, $active, 0); } if ($pa['weps'] != $nosta && $pa['wepimp'] >= $pa['weps']) { break; } //武器损坏时停止连击 $pa['fin_hitrate'] *= get_rapid_accuracy_loss($pa, $pd, $active); //命中率随连击次数降低 } $pa['is_hit'] = $is_hit; if ($is_hit) { //计算物理伤害 \weapon\calculate_physical_dmg($pa, $pd, $active); } else { $log .= "但是没有击中!<br>"; } }
function check_rapid(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } $r = \attrbase\get_ex_attack_array($pa, $pd, $active); return $r; }
function calculate_ex_attack_dmg(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if ($pa['bskill'] == 205) { if (count(\attrbase\get_ex_attack_array($pa, $pd, $active)) > 0) { eval(import_module('logger')); if ($active) { $log .= '<span class="yellow">「咆哮」使你造成的属性伤害提高了80%!</span><br>'; } else { $log .= '<span class="yellow">「咆哮」使敌人造成的属性伤害提高了80%!</span><br>'; } } } return $chprocess($pa, $pd, $active); }