Exemplo n.º 1
0
function apply_attack_exp_gain(&$pa, &$pd, $active)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    $chprocess($pa, $pd, $active);
    eval(import_module('lvlctl'));
    if ($pa['physical_dmg_dealt'] <= 0 && \skillbase\skill_query(213, $pa) && check_unlocked213($pa) && $pa['wep_kind'] == 'D') {
        //如果没有伤害,则获得1点经验
        \lvlctl\getexp(1, $pa);
    }
}
Exemplo n.º 2
0
function trap_use(&$theitem)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    if (\skillbase\skill_query(19)) {
        eval(import_module('player'));
        $wd += rand(1, 2);
        \lvlctl\getexp(rand(1, 2));
    }
    $chprocess($theitem);
}
Exemplo n.º 3
0
function apply_attack_exp_gain(&$pa, &$pd, $active)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    $chprocess($pa, $pd, $active);
    //不命中没有经验
    eval(import_module('lvlctl'));
    if ($pa['physical_dmg_dealt'] > 0 && \skillbase\skill_query(226, $pa) && check_unlocked226($pa)) {
        \lvlctl\getexp(1, $pa);
    }
}
Exemplo n.º 4
0
function act()
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys', 'map', 'player', 'logger', 'metman', 'input', 'weapon'));
    if ($mode == 'combat') {
        if ($command == 'back') {
            if (\skillbase\skill_query(437) && check_unlocked437()) {
                ${$skillinfo[substr($wepk, 1, 1)]} += 3;
                \lvlctl\getexp(2);
            }
        }
    }
    $chprocess();
}
Exemplo n.º 5
0
function itemmix_success()
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys', 'player'));
    if (\skillbase\skill_query(431)) {
        $wp += 3;
        $wk += 3;
        $wc += 3;
        $wf += 3;
        $wg += 3;
        $wd += 2;
        \lvlctl\getexp(3);
    }
    $chprocess();
}
Exemplo n.º 6
0
function player_kill_enemy(&$pa, &$pd, $active)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    if (\skillbase\skill_query(64, $pa) && check_unlocked64($pa)) {
        eval(import_module('weapon'));
        if ($pa['bskill'] == 60) {
            $arr = array(0, 1, 2, 3);
        } else {
            $arr = array(rand(0, 3));
        }
        for ($i = 0; $i <= 3; $i++) {
            if (in_array($i, $arr)) {
                $dice = rand(3, 5);
                if ($i == 0) {
                    //命体上限
                    $pa['mhp'] += $dice;
                    $pa['msp'] += $dice;
                }
                if ($i == 1) {
                    //经验值
                    \lvlctl\getexp($dice, $pa);
                }
                if ($i == 2) {
                    //全系熟练
                    foreach (array_unique(array_values($skillinfo)) as $key) {
                        $pa[$key] += $dice;
                    }
                }
                if ($i == 3) {
                    //基础攻防
                    $pa['att'] += $dice;
                    $pa['def'] += $dice;
                }
            }
        }
    }
    $chprocess($pa, $pd, $active);
}
Exemplo n.º 7
0
function trap_use(&$theitem)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys', 'player', 'logger'));
    $itm =& $theitem['itm'];
    $itmk =& $theitem['itmk'];
    $itme =& $theitem['itme'];
    $itms =& $theitem['itms'];
    $itmsk =& $theitem['itmsk'];
    $trapk = str_replace('TN', 'TO', $itmk);
    $db->query("INSERT INTO {$tablepre}maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('{$itm}', '{$trapk}', '{$itme}', '1', '{$pid}', '{$pls}')");
    $log .= "设置了陷阱<span class=\"red\">{$itm}</span>。<br>小心,自己也很难发现。<br>";
    \lvlctl\getexp(1);
    $wd++;
    \itemmain\itms_reduce($theitem);
}
Exemplo n.º 8
0
function player_kill_enemy(&$pa, &$pd, $active)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    $chprocess($pa, $pd, $active);
    if ($pa['bskill'] == 71) {
        eval(import_module('logger'));
        $expgain = calculate_skill71_expgain($pa, $pd, $active);
        if ($active) {
            $log .= '<span class="yellow">「解构」使你获得了额外' . $expgain . '点经验!</span><br>';
        } else {
            $log .= '<span class="yellow">「解构」使敌人获得了额外' . $expgain . '点经验!</span><br>';
        }
        \lvlctl\getexp($expgain, $pa);
    }
}
Exemplo n.º 9
0
function apply_attack_exp_gain(&$pa, &$pd, $active)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('lvlctl'));
    if ($pa['physical_dmg_dealt'] > 0) {
        //有伤害才获得经验
        \lvlctl\getexp(calculate_attack_exp_gain($pa, $pd, $active), $pa);
    }
}
Exemplo n.º 10
0
function itemuse_um(&$theitem)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    $itm =& $theitem['itm'];
    $itmk =& $theitem['itmk'];
    $itme =& $theitem['itme'];
    $itms =& $theitem['itms'];
    $itmsk =& $theitem['itmsk'];
    eval(import_module('player', 'weapon', 'logger', 'lvlctl'));
    $log .= "你服用了<span class=\"red\">{$itm}</span>。<br>";
    if (strpos($itmk, 'MA') === 0) {
        $att_min = 200;
        $att_limit = 500;
        $dice = rand(-5, 5);
        if ($att < $att_min) {
            $mefct = $itme;
        } elseif ($att < $att_limit) {
            $mefct = round($itme * (1 - ($att - $att_min) / ($att_limit - $att_min)));
        } else {
            $mefct = 0;
        }
        /*
        if ($mefct < 5) {
        	if ($mefct < $dice) {
        		$mefct = - $dice;
        	}
        }
        */
        $att += $mefct;
        $mdname = "基础攻击力";
    } elseif (strpos($itmk, 'MD') === 0) {
        $def_min = 200;
        $def_limit = 500;
        $dice = rand(-5, 5);
        if ($def < $def_min) {
            $mefct = $itme;
        } elseif ($def < $def_limit) {
            $mefct = round($itme * (1 - ($def - $def_min) / ($def_limit - $def_min)));
        } else {
            $mefct = 0;
        }
        /*
        if ($mefct < 5) {
        	if ($mefct < $dice) {
        		$mefct = - $dice;
        	}
        }
        */
        $def += $mefct;
        $mdname = "基础防御力";
    } elseif (strpos($itmk, 'ME') === 0) {
        $lvlup_objective = $itme / 10;
        $mefct = round($baseexp * 2 * $lvlup_objective + rand(0, 5));
        $mdname = "经验值";
        //经验值增加最后加,因为log的次序关系
    } elseif (strpos($itmk, 'MS') === 0) {
        $mefct = $itme;
        $sp += $mefct;
        $msp += $mefct;
        $mdname = "体力上限";
    } elseif (strpos($itmk, 'MH') === 0) {
        $mefct = $itme;
        $hp += $mefct;
        $mhp += $mefct;
        $mdname = "生命上限";
    } elseif (strpos($itmk, 'MV') === 0) {
        $skill_minimum = 60;
        $skill_limit = 600;
        $skcnt = 0;
        $ws_sum = 0;
        foreach (array_unique(array_values($skillinfo)) as $key) {
            $skcnt++;
            $ws_sum += ${$key};
        }
        $dice = rand(-10, 10);
        if ($ws_sum < $skill_minimum * $skcnt) {
            $mefct = $itme;
        } elseif ($ws_sum < $skill_limit * $skcnt) {
            $mefct = round(calc_skillbook_value($ws_sum - $skill_minimum * $skcnt, $itme));
        } else {
            $mefct = 0;
        }
        /*
        if ($mefct < 10) {
        	if ($mefct < $dice) {
        		$mefct = - $dice;
        	}
        }
        */
        foreach (array_unique(array_values($skillinfo)) as $key) {
            ${$key} += $mefct;
        }
        $mdname = "全系熟练度";
    }
    if ($mefct > 0) {
        $log .= "身体里有种力量涌出来!<br>你的{$mdname}提高了<span class=\"yellow\">{$mefct}</span>点!<br>";
    } elseif ($mefct == 0) {
        $log .= "已经很强了,却还想靠药物继续强化自己,是不是太贪心了?<br>你的能力没有任何提升。<br>";
    } else {
        $mefct = -$mefct;
        $log .= "已经很强了,却还想靠药物继续强化自己,是不是太贪心了?<br>你贪婪的行为引发了药物的副作用!<br>你的{$mdname}下降了<span class=\"red\">{$mefct}</span>点!<br>";
    }
    if (strpos($itmk, 'ME') === 0) {
        \lvlctl\getexp($mefct);
    }
    \itemmain\itms_reduce($theitem);
}
Exemplo n.º 11
0
function gemming($t1, $t2)
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys', 'player', 'itemmain', 'logger'));
    if ($t1 != 'wep' && $t1 != 'arb' && $t1 != 'arh' && $t1 != 'ara' && $t1 != 'arf') {
        $log .= '你只能给你的武器/防具增加属性。<br>';
        $mode = 'command';
        return;
    }
    $itm =& ${$t1};
    $itmk =& ${$t1 . 'k'};
    $itme =& ${$t1 . 'e'};
    $itms =& ${$t1 . 's'};
    $itmsk =& ${$t1 . 'sk'};
    if ($t1 == 'wep' || !$itme || !$itms) {
        if ($itmk == 'WN') {
            $log .= '你试图改造你的武器,但是你没有装备武器。<br>';
            $mode = 'command';
            return;
        }
    } else {
        if ($itms <= 0 && $itms != $nosta) {
            $log .= '本防具不存在,请重新选择。<br>';
            $mode = 'command';
            return;
        }
    }
    if (\itemmain\count_itmsk_num($itmsk) >= 6) {
        $log .= '你选择的物品属性数目已达到6个属性的上限,无法改造!<br>';
        $mode = 'command';
        return;
    }
    $t2 = (int) $t2;
    if ($t2 < 1 || $t2 > 6) {
        $log .= '你选择的宝石/方块不存在,请重新选择。<br>';
        $mode = 'command';
        return;
    }
    $gem =& ${'itm' . $t2};
    $gemk =& ${'itmk' . $t2};
    $geme =& ${'itme' . $t2};
    $gems =& ${'itms' . $t2};
    $gemsk =& ${'itmsk' . $t2};
    if ($gems <= 0 && $gems != $nosta) {
        $log .= '你选择的宝石/方块不存在,请重新选择。<br>';
        $mode = 'command';
        return;
    }
    $buff = array();
    if ($gem == '红色方块') {
        //火焰
        if ($t1 == 'wep') {
            $buff = array(array(35, 'u'));
        } else {
            $buff = array(array(65, 'P'), array(35, 'U'));
        }
    } else {
        if ($gem == '黄色方块') {
            //重辅
            if ($t1 == 'wep') {
                $buff = array(array(100, 'c'));
            } else {
                $buff = array(array(65, 'D'), array(35, 'c'));
            }
        } else {
            if ($gem == '蓝色方块') {
                //冻气
                if ($t1 == 'wep') {
                    $buff = array(array(35, 'i'));
                } else {
                    $buff = array(array(65, 'G'), array(35, 'I'));
                }
            } else {
                if ($gem == '绿色方块') {
                    //带毒
                    if ($t1 == 'wep') {
                        $buff = array(array(35, 'p'));
                    } else {
                        $buff = array(array(65, 'K'), array(35, 'q'));
                    }
                } else {
                    if ($gem == '金色方块') {
                        //电击
                        if ($t1 == 'wep') {
                            $buff = array(array(35, 'e'));
                        } else {
                            $buff = array(array(65, 'C'), array(35, 'E'));
                        }
                    } else {
                        if ($gem == '银色方块') {
                            //音波
                            if ($t1 == 'wep') {
                                $buff = array(array(35, 'w'));
                            } else {
                                $buff = array(array(65, 'F'), array(35, 'W'));
                            }
                        } else {
                            if ($gem == '红宝石方块') {
                                //火焰/灼焰
                                if ($t1 == 'wep') {
                                    $buff = array(array(65, 'u'), array(35, 'f'));
                                } else {
                                    $buff = array(array(100, 'U'));
                                }
                            } else {
                                if ($gem == '蓝宝石方块') {
                                    //冻气/冰华
                                    if ($t1 == 'wep') {
                                        $buff = array(array(65, 'i'), array(35, 'k'));
                                    } else {
                                        $buff = array(array(100, 'I'));
                                    }
                                } else {
                                    if ($gem == '绿宝石方块') {
                                        if ($t1 == 'wep') {
                                            $buff = array(array(15, 'u'), array(15, 'i'), array(15, 'p'), array(15, 'e'), array(15, 'w'), array(6, 'f'), array(6, 'k'), array(6, 'n'), array(6, 'N'), array(1, 'd'));
                                        } else {
                                            $buff = array(array(15, 'C'), array(15, 'D'), array(15, 'F'), array(15, 'G'), array(15, 'K'), array(15, 'P'), array(3, 'A'), array(3, 'a'), array(4, 'H'));
                                        }
                                    } else {
                                        if ($gem == '水晶方块') {
                                            //连击/HP制御
                                            if ($t1 == 'wep') {
                                                $buff = array(array(1, 'r'));
                                            } else {
                                                $buff = array(array(5, 'H'));
                                            }
                                        } else {
                                            if ($gem == '黑色方块') {
                                                //贯穿
                                                if ($t1 == 'wep') {
                                                    $buff = array(array(5, 'n'));
                                                } else {
                                                    $buff = array(array(5, 'm'));
                                                }
                                            } else {
                                                if ($gem == '白色方块') {
                                                    //冲击
                                                    if ($t1 == 'wep') {
                                                        $buff = array(array(5, 'N'));
                                                    } else {
                                                        $buff = array(array(5, 'M'));
                                                    }
                                                } else {
                                                    $log .= "你的物品不是合法的宝石或方块。<br>请参阅帮助获得所有合法的宝石或方块及它们的对应改造属性的列表。<br>";
                                                    $mode = 'command';
                                                    return;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    $dice = rand(1, 100);
    $flag = 0;
    $log .= "你将<span class=\"yellow\">{$gem}</span>镶嵌到了<span class=\"yellow\">{$itm}</span>上。<br>";
    $lb = 10;
    $ub = 20;
    if (strpos($gem, '宝石') !== false) {
        $lb = round($lb * 1.75);
        $ub = round($ub * 1.75);
    }
    //宝石强化效果更高
    foreach ($buff as $value) {
        if ($dice <= $value[0]) {
            $flag = 1;
            gemming_itme_buff($itm, $itmk, $itme, $itms, $itmsk, $lb, $ub);
            $log .= "同时,你的装备<span class=\"yellow\">{$itm}</span>还获得了“<span class=\"yellow\">{$itemspkinfo[$value[1]]}</span>”属性!<br>";
            include_once GAME_ROOT . './include/news.func.php';
            addnews(0, 'gemming', $name, $gem, $itm, $itemspkinfo[$value[1]]);
            if (strpos($itmsk, $value[1]) === false) {
                $itmsk .= $value[1];
            }
            break;
        } else {
            $dice -= $value[0];
        }
    }
    $expgain = rand(4, 7);
    if (!$flag) {
        $lb = round($lb / 2);
        $ub = round($ub / 2);
        gemming_itme_buff($itm, $itmk, $itme, $itms, $itmsk, $lb, $ub);
        $log .= "但是你的装备并没有获得额外属性。看起来技术还不过关的样子。<span class=\"yellow\">你决定痛定思痛,总结经验。</span><br>";
        $rage += rand(5, 15);
        $rage = min($rage, 100);
        $expgain = rand(7, 11);
    }
    \lvlctl\getexp($expgain);
    $gems--;
    $log .= "消耗了一枚{$gem}。<br>";
    if ($gems <= 0) {
        $log .= "{$gem}用完了。<br>";
        $gem = '';
        $gemk = '';
        $gems = 0;
        $geme = 0;
        $gemsk = '';
    }
    $mode = 'command';
}