Exemplo n.º 1
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);
}
Exemplo n.º 2
0
function check_ex_inf_infliction(&$pa, &$pd, $active, $key)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys', 'ex_dmg_att', 'wound', 'logger'));
    //判定造成异常状态
    $inf_rate = calculate_ex_inf_rate($pa, $pd, $active, $key) + get_ex_inf_rate_modifier($pa, $pd, $active, $key);
    $inf_dice = rand(0, 99);
    if ($inf_dice < $inf_rate) {
        $infkey = array_search($ex_inf[$key], $infskillinfo);
        if ($active) {
            $log .= "并造成{$pd['name']}{$infname[$infkey]}了!";
        } else {
            $log .= "并造成你{$infname[$infkey]}了!";
        }
        \wound\get_inf($infkey, $pd);
        addnews($now, 'inf', $pa['name'], $pd['name'], $infkey);
    }
}
Exemplo n.º 3
0
function search_area()
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys', 'map', 'player', 'logger'));
    if ($weather == 13) {
        $damage = round($mhp / 12) + rand(0, 20);
        $hp -= $damage;
        $log .= "被<span class=\"blue\">冰雹</span>击中,生命减少<span class=\"red\">{$damage}</span>点!<br>";
        if ($hp <= 0) {
            $state = 17;
            \player\update_sdata();
            $sdata['selflag'] = 1;
            \player\kill($sdata, $sdata);
            return;
        }
    } else {
        if ($weather == 14) {
            $dice = rand(0, 9);
            if ($dice == 0 && strpos($inf, 'e') === false) {
                $log .= "空气中充斥着的<span class=\"linen\">狂暴电磁波</span>导致你<span class=\"yellow\">身体麻痹</span>了!<br>";
                \wound\get_inf('e');
            } elseif ($dice == 1 && strpos($inf, 'w') === false) {
                $log .= "空气中充斥着的<span class=\"linen\">狂暴电磁波</span>导致你<span class=\"grey\">混乱</span>了!<br>";
                \wound\get_inf('w');
            } else {
                $log .= "空气中充斥着狂暴的电磁波……<br>";
            }
        } else {
            if ($weather == 15) {
                $dice = rand(0, 9);
                if ($dice == 0) {
                    $mhpdown = rand(4, 8);
                    if ($mhp > $mhpdown) {
                        $log .= "空气中弥漫着的<span class=\"green\">放射性尘埃</span>导致你的生命上限减少了<span class=\"red\">{$mhpdown}</span>点!<br>";
                        $mhp -= $mhpdown;
                        if ($hp > $mhp) {
                            $hp = $mhp;
                        }
                    }
                } else {
                    $log .= "空气中弥漫着放射性尘埃……<br>";
                }
            } else {
                if ($weather == 16) {
                    $dice = rand(0, 9);
                    if ($dice == 0) {
                        $defdown = rand(3, 6);
                        if ($def > $defdown) {
                            $log .= "高强度的<span class=\"purple\">紫外线照射</span>导致你的防御力减少了<span class=\"red\">{$defdown}</span>点!<br>";
                            $def -= $defdown;
                        }
                    } elseif ($dice == 1 && strpos($inf, 'u') === false) {
                        $log .= "高强度的<span class=\"purple\">紫外线照射</span>导致你<span class=\"red\">烧伤</span>了!<br>";
                        \wound\get_inf('u');
                    } else {
                        $log .= "高强度的紫外线灼烧着大地……<br>";
                    }
                }
            }
        }
    }
    $chprocess();
}
Exemplo n.º 4
0
function itemuse(&$theitem)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys', 'player', 'itemmain', 'logger'));
    $itm =& $theitem['itm'];
    $itmk =& $theitem['itmk'];
    $itme =& $theitem['itme'];
    $itms =& $theitem['itms'];
    $itmsk =& $theitem['itmsk'];
    if (strpos($itmk, 'P') === 0) {
        if (strpos($itmk, '2') === 2) {
            $damage = round($itme * 2);
        } elseif (strpos($itmk, '1') === 2) {
            $damage = round($itme * 1.5);
        } else {
            $damage = round($itme);
        }
        if (defined('MOD_WOUND')) {
            \wound\get_inf('p');
        }
        $hp -= $damage;
        $playerflag = 0;
        if ($itmsk && is_numeric($itmsk)) {
            $playerflag = 1;
        }
        $selflag = 0;
        if ($playerflag && $itmsk == $pid) {
            $selflag = 1;
        }
        if ($playerflag) {
            $wdata = \player\fetch_playerdata_by_pid($itmsk);
            $wprefix = '<span class="yellow">' . $wdata['name'] . '</span>';
            if ($selflag) {
                $wprefix = '你自己';
            }
            $log .= "糟糕,<span class=\"yellow\">{$itm}</span>中被{$wprefix}掺入了毒药!你受到了<span class=\"dmg\">{$damage}</span>点伤害!<br>";
            addnews($now, 'poison', $name, $wdata['name'], $itm);
            if (!$selflag) {
                send_poison_enemylog($itm, $itmsk);
            }
        } else {
            $log .= "糟糕,<span class=\"yellow\">{$itm}</span>有毒!你受到了<span class=\"dmg\">{$damage}</span>点伤害!<br>";
        }
        if ($hp <= 0) {
            $state = 26;
            \player\update_sdata();
            if ($playerflag && !$selflag) {
                $sdata['bid'] = $itmsk;
                $log .= "你被<span class=\"red\">" . $wdata['name'] . "</span>毒死了!";
            } else {
                if ($playerflag) {
                    $sdata['bid'] = $itmsk;
                    $wdata =& $sdata;
                    $log .= "你被毒死了!";
                } else {
                    $wdata =& $sdata;
                    $sdata['sourceless'] = 1;
                    $log .= "你被毒死了!";
                }
            }
            $wdata['attackwith'] = $itm;
            $killmsg = \player\kill($wdata, $sdata);
            if (isset($sdata['sourceless'])) {
                unset($sdata['sourceless']);
            }
            if ($killmsg) {
                $log .= "<span class=\"yellow\">{$wdata['name']}对你说:“{$killmsg}”</span><br>";
            }
            if ($playerflag && !$selflag) {
                \player\player_save($wdata);
            }
            \player\player_save($sdata);
            \player\load_playerdata($sdata);
        }
        \itemmain\itms_reduce($theitem);
        return;
    }
    if ((strpos($itmk, 'Y') === 0 || strpos($itmk, 'Z') === 0) && $itm == '毒药') {
        include template(MOD_POISON_POISON);
        $cmd = ob_get_contents();
        ob_clean();
        return;
    }
    $chprocess($theitem);
}
Exemplo n.º 5
0
function search_area()
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys', 'map', 'player', 'logger'));
    if ($weather == 13) {
        deal_hailstorm_weather_damage();
        if ($hp <= 0) {
            return;
        }
    } else {
        if ($weather == 14) {
            $dice = rand(0, 9);
            if ($dice == 0 && strpos($inf, 'e') === false) {
                $log .= "空气中充斥着的<span class=\"linen\">狂暴电磁波</span>导致你<span class=\"yellow\">身体麻痹</span>了!<br>";
                \wound\get_inf('e');
            } elseif ($dice == 1 && strpos($inf, 'w') === false) {
                $log .= "空气中充斥着的<span class=\"linen\">狂暴电磁波</span>导致你<span class=\"grey\">混乱</span>了!<br>";
                \wound\get_inf('w');
            } else {
                $log .= "空气中充斥着狂暴的电磁波……<br>";
            }
        } else {
            if ($weather == 15) {
                $dice = rand(0, 9);
                if ($dice == 0) {
                    $mhpdown = rand(4, 8);
                    if ($mhp > $mhpdown) {
                        $log .= "空气中弥漫着的<span class=\"green\">放射性尘埃</span>导致你的生命上限减少了<span class=\"red\">{$mhpdown}</span>点!<br>";
                        $mhp -= $mhpdown;
                        if ($hp > $mhp) {
                            $hp = $mhp;
                        }
                    }
                } else {
                    $log .= "空气中弥漫着放射性尘埃……<br>";
                }
            } else {
                if ($weather == 16) {
                    $dice = rand(0, 9);
                    if ($dice == 0) {
                        $defdown = rand(3, 6);
                        if ($def > $defdown) {
                            $log .= "高强度的<span class=\"purple\">紫外线照射</span>导致你的防御力减少了<span class=\"red\">{$defdown}</span>点!<br>";
                            $def -= $defdown;
                        }
                    } elseif ($dice == 1 && strpos($inf, 'u') === false) {
                        $log .= "高强度的<span class=\"purple\">紫外线照射</span>导致你<span class=\"red\">烧伤</span>了!<br>";
                        \wound\get_inf('u');
                    } else {
                        $log .= "高强度的紫外线灼烧着大地……<br>";
                    }
                }
            }
        }
    }
    $chprocess();
}
Exemplo n.º 6
0
function post_traphit_events(&$pa, &$pd, $tritm, $damage)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    $chprocess();
    eval(import_module('player', 'logger', 'ex_dmg_att', 'wound'));
    if (strpos($tritm['itm'], '毒性') !== false) {
        \wound\get_inf('p');
        $log .= "敌人的陷阱还使你{$infname['p']}了!<br>";
    }
    if (strpos($tritm['itm'], '电气') !== false) {
        \wound\get_inf('e');
        $log .= "敌人的陷阱还使你{$infname['e']}了!<br>";
    }
}