// feiji inherit SSERVER; int perform(object me, object target) { string msg; object ob, weapon; int wap, wdp, rigidity, shared; if (!target) { target = offensive_target(me); } if (!target || !target->is_character() || !me->is_fighting(target) || !living(target)) { return notify_fail("落雁擊只能在戰鬥中對對手使用。\n"); } // 檢查是否有裝備武器 if (!ob = target->query_temp("weapon")) { return notify_fail(HIR"你的招式無法攻擊沒有武器的對手。\n"NOR); } if (me->query("force") < 140) { return notify_fail("你的內力不夠。\n"); } weapon = me->query_temp("weapon"); if (!objectp(weapon) || weapon->query("skill_type") != "throwing") { return notify_fail("只有在使迴風落雁手時才能使出落雁飛擊。\n"); } if (me->query_skill("hueifeng") < 50) { return notify_fail("你的迴風落雁手法根基不夠沒辦法使出落雁飛擊。\n"); } if (weapon->query_amount() < 3) { return notify_fail("\n你的" + weapon->query("name") + "不夠用了!\n\n"); } else { weapon->add_amount(-3); } msg = YEL"$N"YEL"使出迴風落雁手的「"HIM"落"HIG"雁"HIC"飛"HIY"擊"NOR + YEL"」,瞄準$n"YEL"武器最脆弱的部份,打算打斷$n"YEL"的武器!\n"NOR; if (me->query("combat_exp") * ((me->query_attr("cor") * 2 + me->query_attr("spi") + me->query_attr("kar") + 130) / 250) > (target->query("combat_exp") / 2) * ((target->query_attr("cor") * 2 + target->query_attr("spi") + target->query_attr("kar") + 130) / 250)) { rigidity = ob->query("rigidity"); wap = me->query_attr("max_force") / 2 + me->query_skill("hueifeng") * me->force_factor() / 8; wdp = target->query_attr("max_force") / 2 + ob->weight() / 500 + rigidity + target->query_attr("str"); if (random(wap) > (wdp / 2)) { shared = ob->is_shared(); if (shared || random(100) <= rigidity || (userp(me) && userp(target)) || ob->query("skill_type") == "throwing") { if (!userp(target)) { msg += HIW"只聽見「鏗」地一聲,$n"HIW"只覺得手中的" + ob->name() + HIW"把持不定,脫手飛出,不知飛到何處去了!\n"NOR; ob->unequip(target); if (!shared) { destruct(ob); } } else { msg += HIW"只聽見「鏗」地一聲,$n"HIW"只覺得手中的" + ob->name() + HIW"把持不定,放了下來!\n"NOR; ob->unequip(); target->set_temp("no_wield", 1); call_out("remove_effect", 10 + random(10), target); } } else { msg += HIW"只聽見「啪」地一聲,結果$n"HIW"手中的" + ob->name() + HIW"被$N打斷為兩截!\n"NOR; ob->unequip(); ob->move(environment(target)); ob->set("name", "斷掉的" + ob->query("name")); ob->set("value", 0); ob->set("weapon_prop", 0); ob->delete("no_drop"); } if (userp(me)) { me->add("force", -140); } if (rigidity < 10) { rigidity = 10; } else if (rigidity > 100) { rigidity = 100; } COMBAT_D->gain_career_exp(me, target, "throwing", 1, rigidity * 6); } else { msg += "可是$p看破了$P的企圖,並沒有上當。\n"NOR; if (userp(me)) { me->add("force", -50); } me->start_busy(2); } } else { msg += "可是$p看破了$P的企圖,並沒有上當。\n"NOR; if (userp(me)) { me->add("force", -100); } me->start_busy(2); } message_vision(msg, me, target); return 1; } void remove_effect(object who) { if (objectp(who) && who->query_temp("no_wield")) { who->delete_temp("no_wield"); tell_object(who, HIG"你把雙手甩了一甩,發現好像已經不會麻了。\n"NOR); } }