Example #1
0
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;
}
Example #2
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);
}
Example #3
0
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();
}
Example #4
0
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;
}
Example #5
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);
}
Example #6
0
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);
}
Example #7
0
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);
}
Example #8
0
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();
}
Example #9
0
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);
}
Example #10
0
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']);
    }
}
Example #11
0
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>";
    }
}
Example #12
0
function check_rapid(&$pa, &$pd, $active)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    $r = \attrbase\get_ex_attack_array($pa, $pd, $active);
    return $r;
}
Example #13
0
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);
}