示例#1
0
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;
}
示例#2
0
function c_inf()
{
    return (int) get_inf();
}
示例#3
0
文件: main.php 项目: winddramon/dts
function apply_weapon_wound_real(&$pa, &$pd, $active, $hurtposition)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('wound', 'logger'));
    if ($active) {
        $log .= "{$pd['name']}的<span class=\"red\">" . $infinfo[$hurtposition] . "</span>部受伤了!<br>";
    } else {
        $log .= "你的<span class=\"red\">" . $infinfo[$hurtposition] . "</span>部受伤了!<br>";
    }
    if (get_inf($hurtposition, $pd)) {
        addnews($now, 'inf', $pa['name'], $pd['name'], $hurtposition);
    }
}