anying-fuxiang.c// array.c

inherit SKILL;

string type() { return "knowledge"; }

bahuang-gong/heal.c#include <ansi.h>

inherit F_CLEAN_UP;

void remove_effect(object me, int amount);

int exert(object me, object target)
{
	int skill;

	if( target != me ) 
		return notify_fail("你只能用八荒六合功來提升自己的戰斗力。\n");

	if( (int)me->query("neili") < 100  ) 
		return notify_fail("你的內力不夠。\n");
	if( (int)me->query_temp("powerup") ) 
		return notify_fail("你已經在運功中了。\n");

	skill = me->query_skill("force");
	me->add("neili", -100);
	me->receive_damage("qi", 0);

	message_combatd(
	HIR "$N凝神息氣，運起八荒六合唯我獨尊功，只見一股輕煙繚繞周身。\n" NOR, me);

	me->add_temp("apply/attack", skill/3);
	me->add_temp("apply/dodge", skill/3);
	me->set_temp("powerup", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, skill/3 :), skill);

	if( me->is_fighting() ) me->start_busy(3);

	return 1;
}

void remove_effect(object me, int amount)
{
	me->add_temp("apply/attack", - amount);
	me->add_temp("apply/dodge", - amount);
	me->delete_temp("powerup");
	tell_object(me, "你的八荒六合唯我獨尊功運行完畢，將內力收回丹田。\n");
}
// bahuang-gong.c 八荒六合唯我獨尊功

inherit FORCE;

int valid_enable(string usage) { return usage == "force"; }

int valid_learn(object me)
// need more limit here
{
	int i = (int)me->query_skill("bahuang-gong", 1);
	int t = 1, j;
	for (j = 1; j < i / 10; j++) t *= 2;

	if ((int)me->query_skill("force", 1) < 10)
		return notify_fail("你的基本內功火候還不夠。\n");

	if (
	me->query_skill("beiming-shengong",1)
	|| me->query_skill("bibo-shengong",1)
	|| me->query_skill("hamagong",1)
	|| me->query_skill("huagong-dafa",1)
	|| me->query_skill("huntian-qigong",1)
	|| me->query_skill("hunyuan-yiqi",1)
	|| me->query_skill("jiuyang-shengong",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("linji-zhuang",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
                return notify_fail("你不先散了別派內功，怎能學八荒六合唯我獨尊功？！\n");
        return 1;
}

int practice_skill(object me)
{
	return notify_fail("八荒六合唯我獨尊功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"bahuang-gong/" + func;
}
// banruo-zhang.c 般若掌
// Modified by Venus Oct.1997
inherit SKILL;

mapping *action = ({
([  "action" : "$N前腿踢出，后腿腳尖點地，一式「橫空出世」，二掌直出，攻向$n
的上中下三路",
    "force" : 150,
    "dodge" : 5,
    "damage_type" : "瘀傷",
    "lvl" : 0,
    "skill_name" : "橫空出世"
]),
([  "action" : "$N左掌划一半圓，一式「長虹貫日」，右掌斜穿而出，疾拍$n的胸前
大穴",
    "force" : 160,
    "dodge" : 5,
    "damage_type" : "瘀傷",
    "lvl" : 12,
    "skill_name" : "長虹貫日"
]),
([  "action" : "$N使一式「云斷秦嶺」，右掌上引，左掌由后而上一個甩劈，斬向$n
的$l",
    "force" : 170,
    "dodge" : 5,
    "damage_type" : "劈傷",
    "lvl" : 18,
    "skill_name" : "云斷秦嶺"
]),
([  "action" : "$N左掌護胸，右拳凝勁后發，一式「鐵索攔江」，緩緩推向$n的$l",
    "force" : 185,
    "dodge" : -5,
    "damage_type" : "瘀傷",
    "lvl" : 24,
    "skill_name" : "鐵索攔江"
]),
([  "action" : "$N使一式「狂風卷地」，全身飛速旋轉，雙掌一前一后，猛地拍向$n
的胸口",
    "force" : 200,
    "dodge" : 10,
    "damage_type" : "瘀傷",
    "lvl" : 30,
    "skill_name" : "狂風卷地"
]),
([  "action" : "$N合掌抱球，猛吸一口氣，一式「懷中抱月」，雙掌疾推向$n的肩頭",
    "force" : 220,
    "dodge" : 5,
    "damage_type" : "瘀傷",
    "lvl" : 36,
    "skill_name" : "懷中抱月"
]),
([  "action" : "$N向上高高躍起，一式「高山流水」，居高臨下，掌力籠罩$n的全身",
    "force" : 240,
    "dodge" : 20,
    "damage_type" : "瘀傷",
    "lvl" : 42,
    "skill_name" : "高山流水"
]),
([  "action" : "$N使一式「摘星換斗」，勁氣彌漫，雙掌如輪，一環環向$n的$l斫去",
    "force" : 270,
    "dodge" : 10,
    "damage_type" : "劈傷",
    "lvl" : 48,
    "skill_name" : "摘星換斗"
]),
([  "action" : "$N兩掌上下護胸，一式「翻江攪海」，驟然化為滿天掌雨，攻向$n",
    "force" : 310,
    "dodge" : 30,
    "damage_type" : "瘀傷",
    "lvl" : 54,
    "skill_name" : "翻江攪海"
]),
([  "action" : "$N一式「金剛伏魔」，雙手合十，對著$n微微一揖，全身內勁如巨浪
般洶涌而出",
    "force" : 360,
    "dodge" : 10,
    "damage_type" : "瘀傷",
    "lvl" : 60,
    "skill_name" : "金剛伏魔"
])
});

int valid_enable(string usage) { return usage=="strike" ||  usage=="parry"; }   

int valid_combine(string combo) { return combo=="yizhi-chan"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練般若掌必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候不夠，無法學般若掌。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練般若掌。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("banruo-zhang", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練般若掌。\n");
    me->receive_damage("qi", 25);
    me->add("neili", -5);
    return 1;
}

bashi-shentong/heart_sense.old// void_sense.c

#include <ansi.h>

//inherit SSERVER;

int conjure(object me, object target)
{
	if( target ) return notify_fail("空識神通只能對自己使用。\n");
	if( me->query("jingli") < 50 )
		return notify_fail("你的精力不夠！\n");
	me->add("jingli", -50);
	me->receive_damage("jing", 50);
	message_vision(HIY "$N盤膝而座，開始運用空識神通靜思入定 ...\n" NOR, me);
	if( random(me->query_skill("magic")) > (int)me->query_int() ) {
		if( random(me->query("max_jingli")) < (int)me->query("jingli")/2 ) {
			me->add("learned_points", 1);
			write( HIR "你覺得腦中一片混亂，你的潛能降低了！\n" NOR );
			return 1;
		}
		if( (int)me->query("potential") - (int)me->query("learned_points") < 500 ) {
			me->add("potential", random( (int)me->query_spi() / 5 ) + 1);
			write( HIG "你的潛能提高了！\n" NOR );
			return 1;
		}
	}
	write("可是你只覺得一無所獲。\n");
	return 1;
}
儼  Ｏ蟯庖煌疲  蠛鵲潰  +HIC"“般若波羅密，風火雷電……打！！”"NOR+"\n;
        剎那間，風起云涌，濃云密布，一道閃電自天空中疾閃而下向$n劈去！！！\n";
        msg2=HIR"“轟”的一聲打了個正著，"+target->query("name")+"被電得象煙熏豬頭一樣黑！\n"NOR;
        msg3=RED"你只覺得全身發麻，眼前金星亂冒。。。。\n"NOR;
        msg4="jing";
    }
    if(i==1){
        msg1="$N身形一轉散作七處同時口中念道：\n"+HIY"
        “天地無相，萬劍歸宗，浩天正氣，神劍伏魔！！”"NOR+"\n
        只見空中出現萬點金光向$n射去。。。\n";

        msg2="只聽“嗤嗤”聲響不絕，金光射入"+target->query("name")+"身體。"+
        target->query("name")+"變成了千窗百孔的大篩子！！！\n";
        msg3=RED"你只覺的遍體生風，渾身劇痛。\n"NOR;
        msg4="jing";
    }
    if (i==2){
        msg1="$N雙手環抱胸前，口中喃喃念道：\n"+HIR"“天地無極，乾坤借法！！”"NOR+"\n  
        突然大喝一聲：“中！！”\n雙掌并力將一巨大的金色光球推向$n！\n";
        msg2="“砰”！"+target->query("name")+"身子向后一仰，連退了几步………\n";
        msg3="“砰”！你胸口如遭錘擊，兩眼一黑，險些昏了過去！\n";
        msg4="qi";
    }

    if((int)me->query("jingli") < 150 )
        return notify_fail("你的精力不夠！\n");

    if((int)me->query("jing") < 35 )
        return notify_fail("現在你的精神無法有效集中！\n");

    me->add("jingli", -30);

    if( random(me->query("max_jingli")) < 150 ) {
       write("你失敗了。\n");
       return 1;
    }
    msg="\n";
    message_vision(msg1, me, target);
    ap = me->query_skill("bashi-shentong");
    ap = ( ap * ap * ap / 4 ) * (int)me->query("jing") / 100;
    dp = target->query("combat_exp");
    if( random(ap + dp) > dp) {
       damage = (int)me->query("max_jingli") / 10 + random((int)me->query("eff_jing") / 5);
       damage -= (int)target->query("max_jingli") / 20 + random((int)me->query("eff_jing") / 10);
       if(target->is_ghost()) damage=damage*10;
       if( damage > 0 ) {
        target->receive_damage(msg4, damage, me);
        target->receive_wound(msg4, damage/2, me);
        tell_room(environment(me),msg2,target);
        tell_object(target,msg3);
        me->improve_skill("bashi-shentong", 1, 1);
     } else
     {
        msg = "$N的「火識」好象沒有造成任何傷害！\n";
        me->receive_damage("jing", 10);
     }
   } else
   msg = "但是$n巧妙地躲開了。\n";
   message_vision(msg, me, target);

   if( damage > 0 ) COMBAT_D->report_status(target);
   if( !target->is_fighting(me) ) {
     if( living(target) ) {
      if( userp(target) ) target->fight_ob(me);
        else target->kill_ob(me);
     }
     me->kill_ob(target);
   }

   me->start_busy(2);
   return 1;
}

write("中止施法。\n");
		return;
	}

	ob = find_player(name);
	if( !ob || !me->visible(ob) || wizardp(ob) )
		ob = find_living(name);
	if( !ob || !me->visible(ob) || wizardp(ob) ) {
		write("你無法感受到這個人的精力 ....\n");
		write("你要移動到哪一個人身邊？");
		input_to( (: call_other, __FILE__, "select_target", me :));
		return;
	}
	if( me->is_fighting() ) {
		write("戰斗中無法使用游識神通！\n");
		return;
	} else if( me->query("jingli") < 75 ) {
		write("你的精力不夠！\n");
		return;
	}

	me->add("jingli", -75);
	me->receive_damage("jing", 30);
	
	message_vision( HIY "$N低頭閉目，開始施展游識神通 ....\n" NOR, me);
	if( random(ob->query("max_jingli")) < (int)me->query("jingli") / 2 ) {
		write("你感受到對方的精力，但是不夠強烈。\n");
		return;
	}
	if( random(me->query_skill("magic")) < (int)ob->query("jingli") / 50 ) {
		write("你因為不夠熟練而失敗了。\n");
		return;
	}
	message( "vision", HIY "\n一道耀眼的光芒忽然罩住" + me->name() 
		+ "，几秒鐘後，光芒和人一齊消失得無影無蹤！\n\n", environment(me), ({ me }) );
	me->move(environment(ob));
	message( "vision", HIY "\n你的眼前突然出現一團耀眼的光芒，光芒中浮現出一個人影！\n\n" NOR,
		environment(ob), ({ me }) );
}
// drift_sense.c 游識神通
// Modified by Venus Oct.1997

#include <ansi.h>
//inherit SSERVER;

int conjure(object me, object target)
{
    if( me->is_fighting() )
   return notify_fail("戰斗中無法使用游識神通！\n");
    if( me->query("jingli") < 75 )
   return notify_fail("你的精力不夠！\n");
    if( target )
   return notify_fail("游識神通只能對自己使用！\n");
    write("你要“游”到哪一個人身邊？");
    input_to( (: call_other, __FILE__, "select_target", me :));
    return 1;
}

void select_target(object me, string name)
{
    object ob;


    if( !name || name=="" ) {
   write("中止施法。\n");
   return;
    }

    ob = find_player(name);
    if( !ob || !me->visible(ob) || wizardp(ob) )
   ob = find_living(name);
    if( !ob || !me->visible(ob) || wizardp(ob) ) {
   write("你無法感受到這個人的精力 ....\n");
   write("你要“游”到哪一個人身邊？");
   input_to( (: call_other, __FILE__, "select_target", me :));
   return;
    }
    if( me->is_fighting() ) {
   write("戰斗中無法使用游識神通！\n");
   return;
    } else if( me->query("jingli") < 75 ) {
   write("你的精力不夠！\n");
   return;
    }

    me->add("jingli", -75);
    me->receive_damage("jing", 30);

    message_vision( HIY "$N微閉雙目，盤膝坐下，開始施展游識神通……\n" NOR, me);
    if ( random( ob->query("max_jingli") + (int)me->query("jingli")) < 300 ) {
   write("對方的精力不夠強烈，你感受不出其具體位置。\n");
   return;
    }
    if( random(me->query_skill("magic")) < (int)ob->query("jingli") / 50 ) {
   write("你因為不夠熟練而失敗了。\n");
   return;
    }
    message( "vision", HIY "\n一朵祥云忽然自天空中飄下，只見" + me->name()
   + "慢慢升上祥云，然後人和祥云一起飛走，消失得無影無蹤！\n\n",
    environment(me), ({ me }) );
    me->move(environment(ob));
    message( "vision", HIY "\n你的眼前突然飄過一朵祥云，再仔細一看，竟有個人
影自祥云上一躍而下！\n\n" NOR,
   environment(ob), ({ me }) );
}

bashi-shentong/heart_sense.c// soul_sense.c 靈識神通
// Modified by Venus Oct.1997

#include <ansi.h>

inherit F_SSERVER;

int conjure(object me, object target)
{
    int skill;

    if( me->query_temp("apply/astral_vision") )
   return notify_fail("你已經施展過靈識了。\n");

    if( (int)me->query("jingli") < 30 )
   return notify_fail("你的精力不夠。\n");

    skill = me->query_skill("magic");

    me->add("jingli", - 30);
    me->receive_damage("jing", 5);

    message_vision(
   HIC "$N微一凝神，施展「靈識」之朮。\n" NOR, me);
    tell_room(environment(me),HIY+ me->query("name")+"雙手合為劍指在眼前慢慢
拉開，雙眼竟變為金黃色，仿佛能洞穿一切！\n"NOR);
    me->add_temp("apply/astral_vision", 1);
    me->start_call_out( (: call_other, __FILE__, "remove_effect", me :), skill);
    if( me->is_fighting() ) me->start_busy(1);

    return 1;
}

void remove_effect(object me)
{
    me->add_temp("apply/astral_vision", -1);
    tell_object(me, HIC"你的靈識失效了。\n"NOR);
}

 {tell_room(environment(me),me->query("name")+"嘰嘰咕咕念了几句，
但什么也沒發生……\n",me);
    tell_object(me,"你失敗了。\n");
   return 1;
   }
    message_vision(HIB "$N升入半空中，施展出“光識”之朮！！"NOR+
    "。\n", me);
    tell_room(environment(me),me->query("name")+"全身射出刺眼的光芒。。。\n"
);
    ob = all_inventory(environment(me));
    if(sizeof(ob)==0) return 1;
    for(i=0; i<sizeof(ob); i++)
   {
    if( !living(ob[i]) || ob[i]==me||!(ob[i]->is_ghost())) continue;
    damage = (int)(skill+(ob[i]->query("qi"))*(me->query("max_jingli"))/3);
   if( damage > 0 ) {
      ob[i]->receive_damage("jing", damage);
      ob[i]->receive_damage("qi", damage);
      ob[i]->receive_wound("jing", damage/2);
      ob[i]->receive_wound("qi", damage/2);
      tell_room(environment(me),ob[i]->query("name")+"的全身冒
出了滾滾濃煙！象個點燃的火把！\n",ob[i]);
      tell_object(ob[i], "你覺得渾身象被撕碎了般的劇痛。。\n")
;
      if( !ob[i]->is_killing(me) ) ob[i]->kill_ob(me);
     }
   }
    if( me->is_fighting() ) me->start_busy(3);
    return 1;
}

// void_sense.c 空識神通
// Modified by Venus Oct.1997

#include <ansi.h>

//inherit SSERVER;

int conjure(object me, object target)
{
    int     delta;
    if( target ) return notify_fail("空識神通只能對自己使用。\n");
    if( me->query("jingli") < 30 )
   return notify_fail("你的靈力不夠！\n");
    me->add("jingli", -30);
    me->receive_damage("jing", 10);
    message_vision(HIY "$N盤膝而座，一動不動，開始靜思入定……\n" NOR, me);
    if( random(me->query_skill("magic")) > (int)me->query_int() ) {
    if( random(me->query("max_jingli")) < (int)me->query("jingli")/2 )
 {
    me->add("learned_points", 1);
    write( HIR "你只覺得心緒一陣煩亂，你的潛能降低了！\n" NOR);
    return 1;
   }
    if( ((int)me->query("potential") - (int)me->query("learned_points")) < 500 )
    {
    delta = random((int)me->query_con() + (int)me->query_skill("bashi-shentong") )/10;
   if( delta > 0 )
   {
      me->add("potential", random((int)me->query_con() + (int)me->query_skill("bashi-shentong") )/10);
      write( HIG "你的潛能獲得提高了！\n" NOR );
      return 1;
   }
    }
    }
    write("但你只覺得一無所獲。\n");
    return 1;
}

// bashi-shentong.c 八識神通
// Modified by Venus Oct.1997

#include <ansi.h>

inherit SKILL;

string type() { return "knowledge"; }

int valid_enable(string usage) { return usage=="magic"; }

int valid_learn(object me)
{
    if( (int)me->query_skill("buddhism",1) < 10
    ||(int)me->query_skill("buddhism",1) <= (int)me->query_skill("bashi-shentong",1) )
    return notify_fail("你的佛法修為還不夠高深，無法學習八識神通。\n");
    return 1;
}

string conjure_magic_file(string spell)
{
    return __DIR__ + "bashi-shentong/" + spell;
}

int practice_skill(object me)
{
    object bug;

    if( (int)me->query("jingli") < 10)
    return notify_fail("你的精力不夠。\n");

    if( (int)me->query("jing") < 35 )
   return notify_fail("你的精神無法集中。\n");

    me->add("jingli", -5);
    me->receive_damage("jing", 30);

    message_vision(HIY"$N閉目凝神，神游太虛，開始研習八識神通……\n"NOR,me);
    if( random((int)me->query("jing")) < 10)
    {
    tell_object(me,HIC"突然！一陣狂風刮來，將你的元神吹落云頭！哇∼哇≒哇！\n"NOR);
    tell_room(environment(me),HIY"天空中忽然“嗖”地落下來一團物事，又好象什
么都沒有，卻見"+me->query("name")+"開始口吐白沫了。 \n"NOR,me);
    me->unconcious();
    return 0;
    }
    else return 1;
}

// begging.c 丐幫絕技
// Modified by Venus Oct.1997

inherit SKILL;

"你的北冥神功功力不夠，不能吸取對方的內力！\n");

	if( (int)me->query("neili",1) < 20 )
		return notify_fail("你的內力不夠，不能使用北冥神功。\n");

	if( (int)target->query("max_neili") <= 0 )
		return notify_fail( target->name() + "沒有任何內力！\n");

	if( (int)target->query("neili") < 60 )
		return notify_fail( target->name() +
			"已經內力渙散，你已經無法從他體內吸取任何內力了！\n");

	message_combatd(
		HIM "$N身法陡然加快，右掌直出，猛地對准$n的膻中大穴按了上去！\n\n" NOR,
		me, target );

	if ( living(target) )
	{
		if( !target->is_killing(me) )
			target->kill_ob(me);
	}

	sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("lingboweibu",1)/2;
	dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

	if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你頓覺全身內力如水銀般循孔飛泄而出！\n" NOR);
		tell_object(me, HIG "你覺得" + target->name() + "的內力自手掌源源不絕地流了進來。\n" NOR);

		target->add("neili", -1*((int)me->query_skill("beiming-shengong", 1) + target->query("jiali")) );
		if ( target->query("neili") <1 )
			target->set("neili",0);
		me->add("neili", (int)me->query_skill("beiming-shengong", 1) + target->query("jiali") );

		me->start_busy(random(5));
		target->start_busy(random(4));

		call_out("del_sucked", 2, me);
	}
	else
	{	
		message_combatd(HIY "可是$p看破了$P的企圖，機靈地閃了開去。\n" NOR, me, target);
		me->start_busy(4);
		call_out("del_sucked", 4, me);
	}

	return 1;
}

void del_sucked(object me)
{
	if ( me->query_temp("sucked"))
		me->delete_temp("sucked");
}

beiming-shengong/heal.c// shield.c 北冥神功護體神功
//

#include <ansi.h>

inherit F_CLEAN_UP;

void remove_effect(object me, int amount);

int exert(object me, object target)
{
	int skill;

	if( target != me ) 
		return notify_fail("你只能用北冥神功來提升自己的防御力。\n");

	if( (int)me->query("neili") < 100  ) 
		return notify_fail("你的內力不夠。\n");

	if( (int)me->query_skill("beiming-shengong",1) < 40 ) 
		return notify_fail("你的北冥神功修為不夠。\n");

	if( (int)me->query_temp("shield") ) 
		return notify_fail("你已經在運功中了。\n");

	skill = me->query_skill("force");
	me->add("neili", -100);
	me->receive_damage("qi", 0);

	message_combatd(
	HIW "$N雙手平舉過頂，運起北冥神功，全身籠罩在勁氣之中！\n" NOR, me);

	me->add_temp("apply/armor", skill*2);
	me->set_temp("shield", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, skill*2 :), skill);

	if( me->is_fighting() ) me->start_busy(2);

	return 1;
}

void remove_effect(object me, int amount)
{
	me->add_temp("apply/armor", - amount);
	me->delete_temp("shield");
	tell_object(me, "你的北冥神功運行完畢，將內力收回丹田。\n");
}
// maxsuck.c

#include <ansi.h>

inherit F_SSERVER;
int exert(object me, object target)
{
	int sp, dp;
	int my_max, tg_max;

	if ( target == me ) target = offensive_target(me);

	if( environment(me)->query("no_fight") )
		return notify_fail("在這里不能攻擊他人。\n");

	if( !objectp(target) || target->query("id") == "mu ren" )
		return notify_fail("你要吸取誰的丹元？\n");
        if (target->query("race") != "人類")
                return notify_fail("搞錯了！只有人才能有丹元！\n");
       
        my_max = me->query("max_neili");
        tg_max = target->query("max_neili");

	if ( me->query_temp("sucked") )
		return notify_fail("你剛剛吸取過丹元！\n");

	if( objectp(me->query_temp("weapon")) )
		return notify_fail("你必須空手才能施用北冥神功吸人丹元！\n");

        if( !me->is_fighting() || !target->is_fighting())

	if( (int)me->query_skill("beiming-shengong",1) < 90 )
		return notify_fail("你的北冥神功功力不夠，不能吸取對方的丹元！  n");

	if( (int)me->query("neili") < 20 )
		return notify_fail("你的內力不夠，不能使用化功大法。\n");

	if( (int)me->query_skill("force") < (int)me->query("max_neili") /10 )
		return notify_fail("你的內功太低了，再吸取也是徒勞。\n");

	if( (int)target->query("max_neili") < 100 )
		return notify_fail( target->name() +
			"丹元渙散，功力未聚，你無法從他體內吸取任何東西！\n");

        if( (int)target->query("max_neili") < (int)me->query("max_neili")/10 )
		return notify_fail( target->name() +
			"的內功修為遠不如你，你無法從他體內吸取丹元！\n");

	message_combatd(
		HIG "$N全身一振，伸出右手，輕輕握在$n的手臂上。\n\n" NOR,
		me, target );

        if ( living(target) )
           { if( !target->is_killing(me) ) target->kill_ob(me); }

        sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2;
        dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

        if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你只覺全身乏力，全身功力如融雪般消失得無影無蹤！\n" NOR);
		tell_object(me, HIG "你覺得" + target->name() + "的丹元自手掌源源不絕地流了進來。\n" NOR);

                target->add("max_neili",  -1*(1+(me->query_skill("beiming-shengong", 1)-90)/5) );
                me->add("max_neili",       1*(1+(me->query_skill("beiming-shengong", 1)-90)/5) );
                if ( target->query("max_neili") <1) target->set("max_neili",0);

//		if( (int)me->query("potential") - (int)me->query("learned_points") < 90 )
//			me->add("potential",  5);
//		me->add("combat_exp", 10);

                me->start_busy(7);
                target->start_busy(random(7));
                me->add("neili", -10);

		call_out("del_sucked", 10, me);
	}
	else
	{	
		message_combatd(HIY "可是$p看破了$P的企圖，機靈地溜了開去。\n" NOR, me, target);
                me->start_busy(7);
		call_out("del_sucked", 20, me);
	}

	return 1;
}

void del_sucked(object me)
{
	if ( me->query_temp("sucked") )
	me->delete_temp("sucked");
}

g",1)
	|| me->query_skill("hunyuan-yiqi",1)
	|| me->query_skill("jiuyang-shengong",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("linji-zhuang",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學北冥神功？！\n");

	return 1;
}

int practice_skill(object me)
{
    return notify_fail("北冥神功只能用學的，或是從運用(exert)中增加熟練度。\n");
}

string exert_function_file(string func)
{
    return __DIR__"beiming-shengong/" + func;
}
// heal.c

#include <ansi.h>

int exert(object me, object target)
{
	if( me->is_fighting() )
		return notify_fail("戰斗中運功療傷？找死嗎？\n");

	if ((int)me->query_skill("bibo-shengong", 1) < 20)
		return notify_fail("你的碧波神功修為還不夠。\n");
	if( (int)me->query("neili") < 50 ) // - (int)me->query("max_neili") < 50 )
		return notify_fail("你的真氣不夠。\n");

	if( (int)me->query("eff_qi") < (int)me->query("max_qi") / 2 )
		return notify_fail("你已經受傷過重，只怕一運真氣便有生命危險！\n");

	write( HIW "你全身放松，坐下來開始運功療傷。\n" NOR);
	message("vision",
		HIW + me->name() + "吐出一口瘀血，臉色看起來好多了。\n" NOR,
		environment(me), me);

	me->receive_curing("qi", 10 + (int)me->query_skill("force")/5 );
	me->add("neili", -50);
	me->set("jiali", 0);
	me->start_busy(4);

	return 1;
}
IR "$N舌尖一咬，噴出一口鮮血，運起碧波神功已將全身潛力盡數提起！\n" NOR, me);

	me->add_temp("apply/attack", skill/3);
	me->add_temp("apply/dodge", skill/3);
	me->set_temp("powerup", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, skill/3 :), skill);

	if( me->is_fighting() ) me->start_busy(3);

	return 1;
}

void remove_effect(object me, int amount)
{
   if ( (int)me->query_temp("powerup") ) {
	me->add_temp("apply/attack", - amount);
	me->add_temp("apply/dodge", - amount);
	me->delete_temp("powerup");
    tell_object(me, "你的碧波神功運行完畢，將內力收回丹田。\n");}
}
ob = all_inventory(environment(me));
	for(i=0; i<sizeof(ob); i++) {
		if( !living(ob[i]) || ob[i]==me )
			continue;

		if( skill/2 + random(skill/2) < (int)ob[i]->query("con") * 2 )
			continue;

		if( !ob[i]->is_killing(me) )
			ob[i]->kill_ob(me);
		if( !me->is_killing(ob[i]) )
			me->fight_ob(ob[i]);
		
		damage = skill - ((int)ob[i]->query("max_neili") / 10);
		if( damage > 0 ) {
			ob[i]->receive_damage("jing", damage * 2 );
			if( (int)ob[i]->query("neili") < skill * 2 )
				ob[i]->receive_wound("jing", damage);
		tell_object(ob[i], "你只覺得眼前一片模糊，朦朧中似乎無數排山巨浪向你打來......\n");
		}
	}

	return 1;
}
g",1)
	|| me->query_skill("hunyuan-yiqi",1)
	|| me->query_skill("jiuyang-shengong",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("linji-zhuang",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學碧波神功？！\n");

	return 1;
}

int practice_skill(object me)
{
    return notify_fail("碧波神功只能用學的，或是從運用(exert)中增加熟練度。\n");
}

string exert_function_file(string func)
{
    return __DIR__"bibo-shengong/" + func;
}
buddhism.c// chanchu_bufa.c 蟾蜍步法

inherit SKILL;

string *dodge_msg = ({
	"只見$n一招「蟾飛九天」，身體向上筆直地縱起丈余，躲過了$N這一招。\n",
	"但是$n一個使出「蛙鳴震天」，身形飄忽，輕輕一縱，早已避開。\n",
	 "$n一招「蛙入稻田」，身行隨意轉，倏地往一旁挪開了三尺，避過了這一招。\n",
	"可是$n一個「蟾蜍扑虫」，側身一讓，$N這一招扑了個空。\n",
	"卻見$n「蟾翻白肚」，足不點地，往旁竄開數尺，躲了開去。\n",
	"$n身形一招「金蟾歸月」，身形微晃，有驚無險地避開了$N這一招。\n"
});

int valid_enable(string usage) { return (usage == "dodge") || (usage == "move"); }

int valid_learn(object me) { return 1; }

string query_dodge_msg(string limb)
{
	return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
	if( (int)me->query("qi") < 45 )
		return notify_fail("你的體力太差了，不能練蟾蜍步法。\n");
	me->receive_damage("qi", 35);
	return 1;
}

chixin-qingchang-jian/    "dodge":   70,
     "force" : 345,
     "lvl" : 30,
     "damage_type":  "刺傷"]),
   (["skill_name" : "生生世世長相伴",
     "action":     "$N使一式"+HIC"『生生世世長相伴』"NOR+"，一閃而上扑向$n，如影相隨，
手中$w“錚”然有聲，往$n的$l刺去",
     "dodge":   60,
     "force" : 360,
     "lvl" : 40,
     "damage_type":  "刺傷"]),
   (["skill_name" : "卻恨天公不作美",
     "action":     "$N使一式"+HIC"『卻恨天公不作美』"NOR+"，一個側身，手中$w疾往斜上挑
起，直指$n的$l",
     "dodge":   50,
     "force" : 380,
     "lvl" : 50,
     "damage_type":  "刺傷"]),
   (["skill_name" : "聚日無多相思苦",
     "action":     "$N使一式"+HIC"『聚日無多相思苦』"NOR+"，微微一個轉身，手中$w卻已自
肋下穿出，罩向$n的$l",
     "dodge":   40,
     "force" : 400,
     "lvl" : 60,
     "damage_type":  "刺傷"]),
   (["skill_name" : "此恨綿綿無絕期",
     "action":     "$N使一式"+HIC"『此恨綿綿無絕期』"NOR+"，神色微變，劍招陡然變得凌厲無
比，手中$w如匹鏈般洒向$n的$l",
     "dodge":   30,
     "force" : 430,
     "lvl" : 70,
     "damage_type":  "刺傷"]),
   (["skill_name" : "黯然神傷淚滿面",
     "action":     "$N使一式"+HIC"『黯然神傷淚滿面』"NOR+"，緩緩低首，暗自嘆了口氣，眼中
瑩光流動，接著手中$w中宮直進，迅捷無比地往$n的$l刺去",
     "dodge":   20,
     "force" : 460,
     "lvl" : 80,
     "damage_type":  "刺傷"]),
   (["skill_name" : "愿人長久空遺恨",
     "action":     "$N使一式"+HIC"『愿人長久空遺恨』"NOR+"，騰身飛躍，手中$w于半空中閃下，
化作一道白色長弧洒向$n的$l",
     "dodge":   30,
     "force" : 500,
     "lvl" : 90,
     "damage_type":  "刺傷"]),
   (["skill_name" : "今世未能偕白頭",
     "action":     "$N使一式"+HIC"『今世未能偕白頭』"NOR+"，矮身側步，手中$w反手疾挑而出，
“唰”的一聲往$n的$l刺去",
     "dodge":   65,
     "force" : 540,
     "lvl" : 100,
     "damage_type":  "刺傷"]),
   (["skill_name" : "來生還盼續前緣",
     "action":     "$N使一式"+HIC"『來生還盼續前緣』"NOR+"，驀地疾退一步，又沖前三步，手中
$w化為光弧往$n的$l刺去",
     "dodge":   40,
     "force" : 590,
     "lvl" : 110,
     "damage_type":  "刺傷"]),
   (["skill_name" : "此情不移堅似鋼",
     "action":     "$N使一式"+HIC"『此情不移堅似鋼』"NOR+"，縱身躍起，不見蹤影，接著卻又從
半空中穿下，雙手握著$w，聲勢逼人地刺向$n的$l",
     "dodge":   60,
     "force" : 640,
     "lvl" : 120,
     "damage_type":  "刺傷"]),
   (["skill_name" : "質問天公不開眼",
     "action":     "$N使一式"+HIC"『質問天公不開眼』"NOR+"，手中$w“嗤”的一聲斜刺向天空，
隨即向下“唰唰”兩下，划出一個叉字，往$n的$l刺去",
     "dodge":   45,
     "force" : 700,
     "lvl" : 130,
     "damage_type":  "刺傷"]),
   (["skill_name" : "痴痴傷懷動情時",
     "action":     "$N使一式"+HIC"『痴痴傷懷動情時』"NOR+"，左腿微抬，手中$w自下方挑起，
激起一股勁風反挑$n的$l",
     "dodge":   50,
     "force" : 760,
     "lvl" : 140,
     "damage_type":  "刺傷"]),
   (["skill_name" : "但舞痴心情長劍",
     "action":     "$N傾盡全力舞出"+HIC"『但舞痴心情長劍』"NOR+"，神色十分激動，眼中淚珠
滾動，手中$w疾舞不停，全身都已籠罩在迫人的劍氣中，$n不由駭然，只見$N
身形微變，無數道劍氣已逼向$n的$l",
     "dodge":   70,
     "force" : 850,
     "lvl" : 150,
     "damage_type":  "刺傷"])
});

int valid_enable(string usage){return usage=="sword" || usage=="parry";}

int valid_learn(object me)
{
      return notify_fail(HIC"痴心情長劍無法通過(learn)來取得進步。\n"NOR);      
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("chixin-qingchang-jian",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if( (int)me->query("qi") < 35)
    return notify_fail("你的體力目前沒有辦法練習痴心情長劍。\n");
    me->receive_damage("qi", 30);
    write("你傾情舞了一遍痴心情長劍。\n");
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"chixin-qingchang-jian/" + action;
}

chousui-zhang/kill("dodge") ) ) {
		msg += CYN " 結果$p被$P攻了個正著！\n" NOR;
            target->receive_damage("qi",(int)me->query_skill("chousui-zhang",1));
            target->receive_wound("qi",15 + random(10));
            target->receive_wound("jing", 10);
            target->apply_condition("xx_poison", random(me->query_skill("chousui-zhang",1)/10) + 1 +
			target->query_condition("xx_poison"));
			target->start_busy(1 + random(2));
	} else {
		msg += "可是$p急忙閃在一旁，躲了開去。\n" NOR;
		me->start_busy(4);
	}
	message_combatd(msg, me, target);
	if( !target->is_killing(me) ) target->kill_ob(me);
		destruct(obj);
	return 1;
}
t_exp")/2 )
		return notify_fail("對這人散毒是沒用的。\n");

	if( (int)me->query_skill("huagong-dafa", 1) < 40 )
		return notify_fail("你的化功大法不夠嫻熟，不能散毒。\n");

	if( (int)me->query_skill("chousui-zhang", 1) < 40 )
		return notify_fail("你的抽髓掌不夠嫻熟，不能散毒。\n");

	msg = GRN "只聽得$N的骨節格格作響，$N的手猛地長了半尺，居然一把抓住$n手
腕，將毒質運于手心，源源不斷傳入$n體內。\n";

	me->start_busy(1);
	if( random( (int)me->query_skill("chousui-zhang",1))
          > random(target->query_skill("dodge") ) ) {
		msg += CYN " 結果$p無力掙扎，$P的本身陰毒不斷散入$n體內！\n" NOR;
            target->receive_damage("qi",20);
            target->receive_wound("qi",15 + random(10));
            target->apply_condition("poison_sandu", 1000);
            me->clear_condition();
            target->start_busy(1 + random(2));
	} else {
		msg += "可是$p急提內力奮力一震，將$N的手震了開去。\n" NOR;
		me->start_busy(3);
	}
	message_combatd(msg, me, target);
	if( !target->is_killing(me) ) target->kill_ob(me);
	return 1;
}
// chousui-duzhang.c  抽髓掌, based on xianglong-zhang.c
// modified by Venus Oct.1997
// by yucao

inherit SKILL;

mapping *action = ({
([      "action": "$N臉上露出詭異的笑容，隱隱泛出綠色的雙掌掃向$n的$l",
    "dodge": 30,
    "force": 160,
//      "poison": 80,
    "damage_type": "瘀傷"
]),
([      "action": "$N突然身形旋轉起來扑向$n，雙掌飛舞著拍向$n的$l",
    "dodge": 10,
    "force": 160,
//      "poison": 60,
    "damage_type": "瘀傷"
]),
([      "action": "$N將毒質運至右手，一招「腐尸毒」陰毒無比地抓向$n的$l",
    "dodge": -20,
    "force": 150,
//      "poison": 100,
    "damage_type": "瘀傷"
]),
([      "action": "$N雙掌挾著一股腥臭之氣拍向$n的$l",
    "dodge": 10,
    "force": 160,
//      "poison": 80
    "damage_type": "瘀傷"
]),
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"; }   

int valid_combine(string combo) { return combo=="sanyin-wugongzhao"; }

mapping query_action(object me)
{
    if (random(me->query_skill("unarmed",1)) > 60 &&
        me->query_skill("force",1) > 50 &&
        me->query("neili") > 100 ) {
             me->add("neili", -100);
             return ([
                  "action": "$N咬破舌尖，口中噴血，聚集全身的力量擊向$n",
                  "force": 300,
                  "damage_type": "瘀傷"]);
    }
    return action[random(sizeof(action))];
}

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
       return notify_fail("練抽髓掌必須空手。\n");
    if ((int)me->query_skill("huagong-dafa", 1) < 10)
       return notify_fail("你的化功大法火候不夠，無法練抽髓掌。\n");
    if ((int)me->query("max_neili") < 60)
       return notify_fail("你的內力太弱，無法練抽髓掌。");
    return 1;
}


int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
        return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 8)
        return notify_fail("你的內力不夠練抽髓掌。\n");
    if (me->query_skill("chousui-zhang", 1) < 50)
        me->receive_damage("qi", 20);
    else
        me->receive_damage("qi", 30);
         me->add("neili", -5);
    return 1;
}

mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
   //if( random(me->query_skill("huagong-dafa",1)) > (damage_bonus + foo)/3 )
    if( random(me->query_skill("huagong-dafa",1)) > 5) {
   //victim->receive_wound("qi", (damage_bonus + foo));
   victim->apply_condition("xx_poison", random(2) + 1 +
      victim->query_condition("xx_poison"));
    }
}
string perform_action_file(string action)
{
    return __DIR__"chousui-zhang/" + action;
}
股  椴劍  嵫  韭洌  徽小竿拼巴  隆梗  斗嬉瘓恚  寡  斷  n",
    "force" : 140,
    "dodge" : -5,
    "damage" : 15,
    "lvl" : 16,
    "skill_name" : "推窗望月",
    "damage_type" : "割傷"
]),
([  "action" : "$N一招「開門見山」，$w大開大闔，自上而下划出一個大弧，筆直劈
向$n",
    "force" : 160,
    "dodge" : 5,
    "damage" : 25,
    "lvl" : 24,
    "skill_name" : "開門見山",
    "damage_type" : "割傷"
]),
([  "action" : "$N手中$w一沉，一招「臨溪觀魚」，雙手持刃攔腰反切，砍向$n的胸
口",
    "force" : 180,
    "dodge" : 10,
    "damage" : 30,
    "lvl" : 33,
    "skill_name" : "臨溪觀魚",
    "damage_type" : "割傷"
]),
([  "action" : "$N揮舞$w，使出一招「張弓望的」，上劈下撩，左擋右開，齊齊罩向
$n",
    "force" : 210,
    "dodge" : 15,
    "damage" : 35,
    "lvl" : 42,
    "skill_name" : "張弓望的",
    "damage_type" : "割傷"
]),
([  "action" : "$N一招「風送輕舟」，左腳躍步落地，$w順勢往前，挾風聲劈向$n的
$l",
    "force" : 240,
    "dodge" : 5,
    "damage" : 50,
    "lvl" : 51,
    "skill_name" : "風送輕舟",
    "damage_type" : "割傷"
]),
([  "action" : "$N盤身駐地，一招「川流不息」，揮出一片流光般的刀影，向$n的全
身涌去",
    "force" : 280,
    "dodge" : 20,
    "damage" : 60,
    "lvl" : 60,
    "skill_name" : "停車問路",
    "damage_type" : "割傷"
]),
});


int valid_enable(string usage) { return usage == "blade" || usage == "parry"; } 

int valid_combine(string combo) { return combo=="fumo-jian"; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 50)
      return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 10)
      return notify_fail("你的混元一氣功火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("cibei-dao",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "blade")
      return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
      return notify_fail("你的體力不夠練慈悲刀。\n");
    me->receive_damage("qi", 25);
    return 1;
}

// club.c

inherit SKILL;
cuff.cdagou-bang/忙腳亂！\n" NOR;
		target->start_busy( (int)me->query_skill("dagou-bang") / 20 );
	} else {
		msg += "可是$p看破了$P的企圖，鎮定解招，一絲不亂。\n" NOR;
	}
	message_combatd(msg, me, target);

	if(!target->is_fighting(me)) target->fight_ob(me);
	return 1;
}
> 100 &&
        (string)weapon->query("id") == "yuzhu zhang" ) {
        me->add("neili", -100);
        return ([
      "action": "$N眼中射出一道青芒，手中玉竹杖使出「天下無狗」，劈天蓋地劈落",
      "damage": 500,
      "damage_type": "挫傷"]);
    }
    return action[random(sizeof(action))];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "staff")
      return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
      return notify_fail("你的體力不夠練打狗棒法。\n");
    me->receive_damage("qi", 40);
    return 1;
}

string perform_action_file(string action)
{
        return __DIR__"dagou-bang/" + action;
}

// sanjue.c  達摩劍 [達摩三絕劍]

#include <ansi.h>
#include <skill.h>
#include <weapon.h>
#include <combat.h>

inherit F_SSERVER;
 
int perform(object me, object target)
{
	object weapon, ob;
	string msg, string1;
	int count;
 
	if( !me->is_fighting() )
	    return notify_fail("「達摩三絕劍」只能在戰斗中使用。\n");

	if (!objectp(weapon = me->query_temp("weapon"))
		|| (string)weapon->query("skill_type") != "sword")
			return notify_fail("你使用的武器不對。\n");

	if((int)me->query_dex() < 30)
		return notify_fail("你的身法不夠, 目前還不能使用這項絕技! \n");

	if((int)me->query_skill("hunyuan-yiqi",1) < 60)
		return notify_fail("你的混元一氣功的修為不夠, 不能使用這一絕技 !\n");

	if((int)me->query_skill("dodge") < 135)
		return notify_fail("你的輕功修為不夠, 不能使用達摩三絕劍！\n");
 
	if((int)me->query_skill("sword") < 135)
		return notify_fail("你的劍法修為不夠， 目前不能使用達摩三絕劍! \n");

	if( (int)me->query("neili") < 500 )
		return notify_fail("你的真氣不夠！\n");

	msg = HIG "$N使出達摩劍的絕技「達摩三絕劍」，身法陡然加快！\n" NOR;
	 message_combatd(msg, me);

	me->clean_up_enemy();
	ob = me->select_opponent();

	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 0);
	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 0);
	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 0);

	me->add("neili", -150);
	me->start_busy(random(2));

	if(!ob->is_fighting(me)) ob->fight_ob(me);
//	if(userp(ob)) ob->fight_ob(me);
//	else if( !ob->is_killing(me) ) ob->kill_ob(me);
	return 1;
}
// sanjue.c 「達摩三絕劍」                                                      
#include <ansi.h>                                                               
                                                                                
inherit F_SSERVER;                                                              
int perform(object me, object target)                                           
{                                                                               
        int damage;                                                             
        string msg;                                                             
        if( !target                                                             
        ||      !target->is_character()                                         
        ||      !me->is_fighting(target) )                                      
               return notify_fail("「達摩三絕劍」只能在戰斗中使用。\n");        
        if( (int)me->query_skill("hunyuan-yiqi", 1) < 60 )                      
                return notify_fail("你的混元一氣功火候不夠，不會使用「達摩三絕劍
」。\n");                                                                       
                                                                                
        if( (int)me->query_dex() < 30 )                                         
                return notify_fail("你的身法不夠靈活，無法使出「達摩三絕劍」。\n
");                                                                             
                                                                                
        if( (int)me->query("neili") < 300 )                                     
                return notify_fail("你的內力不夠高，無法使出「達摩三絕劍」。\n")
;                                                                               
                                                                                
        if( (int)me->query_skill("dodge") < 135 )                               
                return notify_fail("你的輕功有效等級不夠高，使不出「達摩三絕劍」
。\n");                                                                         
                                                                                
        if( (int)me->query_skill("sword") < 135 )                               
                return notify_fail("你的劍法有效等級不夠高，使不出「達摩三絕劍」
。\n");                                                                         
                                                                                
        if( target->is_busy() )                                                 
                return notify_fail(target->name() + "目前正驚慌失措，放膽攻擊吧吧
  n");                                                                          
        msg = HIY "                                                             
$N使出「達摩三絕劍」，口喧佛號，瞬間里“唰唰唰”連刺出三劍，同樣的速度！同樣的迅
速！                                                                            
$n的全身全身各大要害都已籠罩在劍光下！\n"NOR;                                   
                                                                                
        if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/3
 ) {                                                                            
        me->start_busy(random(3));                                              
                                                                                
        damage = (int)me->query_skill("damo-jian", 1)*3;                        
        damage = damage + random(damage);                                       
                                                                                
        target->receive_damage("qi", damage);                                   
        target->receive_wound("qi", damage/2);                                  
        me->add("neili", -300);                                                 
        msg += HIC"結果$P的三劍，劍劍都刺中了$p，$p象個噴血的刺  般向后飛出。\n"
 NOR;                                                                           
        target->start_busy( (int)me->query_skill("damo-jian") / 20 + 2);        
                                                                                
        } else {                                                                
        me->start_busy(random(3));                                              
                msg += "可是$p看破了$P的企圖，急忙躲開，$P沒有得逞。\n" NOR;    
        }                                                                       
        message_vision(msg, me, target);                                        
                                                                                
        return 1;                                                               
}                                                                               

",
        "damage_type":  "割傷"
]),
([      "action":"$N一式「浮世滄桑遠」，縱身飄開數尺，運發劍氣，手中$w遙搖指向$n
的$l",
        "force" : 160,
        "dodge" : 5,
        "damage": 30,
        "lvl" : 18,
        "skill_name" : "浮世滄桑遠",
        "damage_type":  "割傷"
]),
([      "action":"$N縱身輕輕躍起，一式「輪回法舟輕」，劍光如輪疾轉，霍霍斬向$n的
$l",
        "force" : 180,
        "dodge" : 10,
        "damage": 35,
        "lvl" : 27,
        "skill_name" : "輪回法舟輕",
        "damage_type":  "割傷"
]),
([      "action":"$N手中$w中宮直進，一式「水月通禪寂」，無聲無息地對准$n的$l刺出
一劍",
        "force" : 220,
        "dodge" : 15,
        "damage": 40,
        "lvl" : 36,
        "skill_name" : "水月通禪寂",
        "damage_type":  "刺傷"
]),
([      "action":"$N手中$w斜指蒼天，劍芒吞吐，一式「魚龍聽梵音」，對准$n的$l斜斜
擊出",
        "force" : 260,
        "dodge" : 5,
        "damage": 45,
        "lvl" : 44,
        "skill_name" : "魚龍聽梵音",
        "damage_type":  "刺傷"
]),
([      "action":"$N左指凌空虛點，右手$w逼出丈許雪亮劍芒，一式「千里一葦去」刺向
$n的$l",
        "force" : 320,
        "dodge" : 5,
        "damage": 55,
        "lvl" : 52,
        "skill_name" : "千里一葦去",
        "damage_type":  "刺傷"
]),
([      "action":"$N合掌跌坐，一式「禪心頓自明」，$w自懷中躍出，如疾電般射向$n的
胸口",
        "force" : 380,
        "dodge" : 5,
        "damage": 60,
        "lvl" : 60,
        "skill_name" : "禪心頓自明",
        "damage_type":  "刺傷"
]),
});

int valid_enable(string usage) { return usage == "sword" || usage == "parry"; }

int valid_combine(string combo) { return combo=="xiuluo-dao"; }

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 100)
                return notify_fail("你的內力不夠。\n");
        if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
                return notify_fail("你的混元一氣功火候太淺。\n");
        return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("damo-jian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        object weapon;

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不對。\n");
        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力不夠練達摩劍。\n");
        me->receive_damage("qi", 25);
        return 1;
}

string perform_action_file(string action)
{
        return __DIR__"damo-jian/" + action;
}

瘀傷",
]),
([      "action" : "$N使出一招「准提佛母印」，運力于指，直取$n的$l",
        "skill_name" : "准提佛母印",
        "force" : 250,
        "dodge" : 5,
        "lvl" : 16,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N使出一招「紅閻婆羅印」，怒吼一聲，一掌當頭拍向$n的$l",
        "skill_name" : "紅閻婆羅印",
        "force" : 300,
        "dodge" : 5,
        "lvl" : 24,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N使出一招「藥師佛根本印」，猛沖向前，掌如游龍般攻向$n",
        "skill_name" : "藥師佛根本印",
        "force" : 350,
        "dodge" : 5,
        "lvl" : 32,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N使出一招「威德金剛印」，伏身疾進，雙掌自下掃向$n的$l",
        "skill_name" : "威德金剛印",
        "force" : 400,
        "dodge" : 5,
        "lvl" : 40,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N使出一招「上樂金剛印」，飛身橫躍，雙掌前后擊出，抓向$n的咽
喉",
        "skill_name" : "上樂金剛印",
        "force" : 450,
        "dodge" : 10,
        "lvl" : 48,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N使出一招「六臂智慧印」，頓時勁氣彌漫，天空中出現無數掌影打
向$n的$l",
        "skill_name" : "六臂智慧印",
        "force" : 500,
        "dodge" : 5,
        "lvl" : 56,
        "damage_type" : "瘀傷",
]),
});


int valid_enable(string usage) { return usage == "hand" || usage == "parry"; }

int valid_combine(string combo) { return combo=="yujiamu-quan"; }

int valid_learn(object me)
{
        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
                return notify_fail("練密宗大手印必須空手。\n");
        else if ((int)me->query("max_neili") < 50)
                return notify_fail("你的內力不夠。\n");
        if ((int)me->query_skill("longxiang", 1) >= 20 ||
            (int)me->query_skill("xiaowuxiang", 1) >= 20)
                return 1;
        else if ((int)me->query_skill("longxiang", 1) < 20)
                return notify_fail("你的龍象般若功火候太淺。\n");
        else if ((int)me->query_skill("xiaowuxiang", 1) < 20)
                return notify_fail("你的小無相功火候太淺。\n");
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
                  level   = (int) me->query_skill("dashou-yin",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        object weapon;

        if(!me->query_skill("longxiang",1)
                && !me->query_skill("xiaowuxiang",1))
                return notify_fail("練「密宗大手印」必須要有雪山派的內功作為根基。\n");

        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
                return notify_fail("練「密宗大手印」必須空手。\n");

        if ((int)me->query("qi") < 40)
                return notify_fail("你的體力不夠，練不了「密宗大手印」。\n");

        me->receive_damage("qi", 20);
        return 1;
}

// ding-dodge.c 丁字步 

inherit SKILL;

string *dodge_msg = ({
	"$n漫不經心的向左邁出一步，剛好避過$N的凌厲攻勢。\n",
	"可是$n恰巧往右走了一步，躲過了$N這一招。\n",
//	"只見$n一招「白鶴沖天」，身體向上筆直地縱起丈余，躲過了$N這一招。\n",
//	"$n一個「鷂子翻身」，向后縱出數丈之遠，避開了$N的凌厲攻勢。\n",
//	"$n使出「大鵬展翅」，向一旁飄然縱出，輕輕著地。\n"
//        "但是$n身形飄忽，輕輕一縱，早已避開。\n",
//       "$n身隨意轉，倏地往一旁挪開了三尺，避過了這一招。\n",
//        "可是$n側身一讓，$N這一招扑了個空。\n",
//        "卻見$n足不點地，往旁竄開數尺，躲了開去。\n",
//        "$n身形微晃，有驚無險地避開了$N這一招。\n"
});

int valid_enable(string usage) { return (usage == "dodge") || (usage == "move"); }

int valid_learn(object me) { return 1; }

string query_dodge_msg(string limb)
{
        return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
        if( (int)me->query("qi") < 40 )
                return notify_fail("你的體力太差了，邁不開丁字步。\n");
        me->receive_damage("qi", 30);
        return 1;
}

// ding-force.c 小丁氣功

inherit FORCE;

int valid_enable(string usage) { return usage == "force"; }

int valid_learn(object me)
// need more limit here
{
	return 1;
}

int practice_skill(object me)
{
	return notify_fail("小丁氣功只能跟小丁學來增加熟練度。\n");
}


dodge.c// duanjia-sword.c  段家劍 驚天一擊

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
	object weapon;
	int damage;
	string msg;

	if( !target ) target = offensive_target(me);

	if( !target || !target->is_character() || !me->is_fighting(target) )
		return notify_fail("「驚天一擊」只能對戰斗中的對手使用。\n");

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "sword")
		return notify_fail("你使用的武器不對。\n");
		
	if( (int)me->query_skill("duanjia-sword", 1) < 70 )
		return notify_fail("你的段家劍法不夠嫻熟，不會使用。\n");
	                        
	if( (int)me->query_skill("kurong-changong", 1) < 70 )
		return notify_fail("你的枯榮禪功修為不夠高。\n");
			
	if( (int)me->query("neili") < 300 )
		return notify_fail("你現在內力太弱，不能使用「驚天一擊」。\n");
			
	msg = CYN "$N一躍而起，手腕一抖，挽出一個美麗的劍花，飛向$n。\n"NOR;

	if (random(me->query_skill("force")) > target->query_skill("force")/2 )
	{
		target->start_busy( (int)me->query_skill("duanjia-sword") / 20 + 1);
		
		damage = (int)me->query_skill("kurong-changong", 1);
		damage = damage +  (int)me->query_skill("duanjia-sword", 1);
		damage = damage +  (int)me->query_skill("sword", 1);
		
		target->receive_damage("qi", damage);
		target->receive_wound("qi", damage/4);
		me->add("neili", -damage);
		msg += HIR"只見$N人劍合一，穿向$n,\n$n只覺一股熱流穿心而過，喉頭一甜，鮮血狂噴而出！\n"NOR;
		me->start_busy(2);
	} else 
	{
		msg += CYN"可是$p猛地向邊上一躍,跳出了$P的攻擊范圍。\n"NOR;
		me->add("neili", -100);
		me->start_busy(4);
	}
	message_combatd(msg, me, target);

	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);
	return 1;
}
duanjia-sword.c"damage_type" : "刺傷"
]),
([  "action" : "$N身影一晃, 繞到$n背后，一招「逐鹿中原」，劍尖向$n的$l疾挑",
    "force" : 300,
    "dodge" : -5,
    "damage" : 100,
    "lvl" : 89,
    "skill_name" : "逐鹿中原",
    "damage_type" : "刺傷"
]),
});


int valid_enable(string usage) { return (usage == "sword") || (usage == "staff") || (usage == "parry"); }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
       return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("kurong-changong", 1) < 20)
       return notify_fail("你的枯榮禪功火候太淺。\n");
    return 1;
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("duanjia-sword",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
       return action[NewRandom(i, 20, level/5)];

}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
       || (string)weapon->query("skill_type") != "sword")
       return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
       return notify_fail("你的體力不夠練段家劍。\n");
    me->receive_damage("qi", 20);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"duanjia-sword/" + action;
}

duanyun-fu/duan.cduanyun-fu/tiaoyan.cduanyun-fu/hongtianza.c   target_w->set("name", target_w->query("name") + "的碎片");
    target_w->set("value", target_w->query("value")/10);
    target_w->set("weapon_prop", 0);
    target->reset_action();
    target->start_busy( (int)me->query_skill("duanyun-fu") / 20 );
    limbs=target->query("limbs");
    me->start_busy(1);
    msg += "結果$p呆立當場，被攻了個措手不及！\n" NOR;
    size=(int)(me->query_skill("duanyun-fu")/10);
    damage=random(size)+size;
damage=damage+me->query_str()/3+random(me->query_temp("apply/damage"));
    for(i=0;i<=random(size);i++)
   {
   msg =HIB"“嗤”，碎片射入$p"+limbs[random(sizeof(limbs))]+"！\n"NOR;
   message_combatd(msg,me,target);
   target->receive_damage("qi",damage,me);
   target->receive_wound("qi",damage/3,me);
   }
    COMBAT_D->report_status(target);
    } else {
    msg += "可是$p急忙將自己的兵刃閃開，并沒有讓$P的計謀得逞。\n" NOR;
    }
    return 1;
    }
    return notify_fail(target->name() + "目前是空手，你想砸什么？\n");
}

" : 10,
    "skill_name" : "氣沖霄漢"
]),
([  "action" : "$N忽然虎吼一聲，閃身斜向左前方沖出一步，身體微晃，手中$w在空
中划出一道淡影，急速橫掃$n的右肩，氣勢迫人",
    "damage": 350,
    "dodge" : 40,
    "damage_type" : "砍傷",
    "lvl" : 20,
    "skill_name" : "橫掃千軍"
]),
([  "action" : "$N突然抽身向右滾倒，隨即跳起，就在跳起的一瞬間，已單臂握著$w
砸向$n的左肋，出手既快且狠",
    "damage": 390,
    "dodge" : 35,
    "damage_type" : "砸傷",
    "lvl" : 30,
    "skill_name" : "以退為進"
]),
([  "action" : "$N雙手橫舉$w，平掃$n前胸，招式未使老就已打住猝然變招，斧尖直
撞$n的小腹，",
    "damage": 430,
    "dodge" : 40,
    "damage_type" : "內傷",
    "lvl" : 42,
    "skill_name" : "金斧撞鐘"
]),
([  "action" : "$N不急不緩地轉身微蹲，$n見$N露出破綻，急忙搶攻，卻突然發現$N
的身體已轉過來，手中$w正迅猛地掃向自己的下盤",
    "damage": 480,
    "dodge" : 30,
    "parry" : 54,
    "damage_type" : "割傷",
    "lvl" : 55,
    "skill_name" : "回風轉云"
]),
([  "action" : "$N身形微動，就在同一時間自上中下左右砍出五斧，$n見五把$w從不
同的方位砍向自己，一時間竟不知該如何招架",
    "damage": 540,
    "dodge" : 25,
    "parry" : 66,
    "damage_type" : "砍傷",
    "lvl" : 68,
    "skill_name" : "五斧奪命"
]),
([  "action" : "$N前腳猛地往地上一頓，大地也微微一震，接著舉起斧頭在頭頂急轉
數圈，$w就隱含風云之聲平直而沉穩地襲向$n，$n無論向何處閃躲，
總看見斧尖離自己不到一尺，不由大驚失色",
    "damage": 600,
    "parry" : 55,
    "dodge" : 65,
    "damage_type" : "砍傷",
    "lvl" : 80,
    "skill_name" : "一斧斷云"
])
});

int valid_enable(string usage) { return usage=="axe" ||  usage=="parry"; }      

int valid_learn(object me)
{
    if ((int)me->query_skill("force", 1) < 20)
   return notify_fail("你的內功心法火候不夠，無法學斷云斧。\n");
    if ((int)me->query("max_neili") < 150)
   return notify_fail("你的內力太弱，無法練斷云斧。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("duanyun-fu", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;
    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "axe")
   return notify_fail("你使用的武器不對。\n");    if ((int)me->
query("qi") < 30)
    if ((int)me->query("qi") < 50)
    return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練斷云斧。\n");
    me->receive_damage("qi", 25);
return 1;
}
string perform_action_file(string action)
{
    return __DIR__"duanyun-fu/" + action;
}

煞緗７  摹負璺哨    梗    欠轎蝗從興    睿    ６宰  P一絞，企\n圖突破$P的攻勢！\n"
        "$n挺劍一招象是「白云出岫」回刺$P的$l，企圖將$P的攻勢化解。\n",
        "只見$n不退反進，身如飄風，詭異地一式「天柱云氣」，動向無定不可捉摸地擋住了$P的\n進攻。\n",
        "$n不退反進，使出恆山劍招「綿里藏針」，森森劍氣充溢四周！架開了$P的這招\n",
});

mapping *action = ({
([      "action" : "但見$N挺身而上，$w一旋，一招仿佛泰山劍法的「來鶴清泉」直刺$n
的$l！",
        "force" : 10,
        "dodge" : 5,
        "damage": 30,
        "lvl" : 0,
        "damage_type" : "刺傷"
]),
([      "action" : "$N奇詭地向$n揮出「泉鳴芙蓉」、「鶴翔紫蓋」、「石廩書聲」、「
天柱云氣」\n及「雁回祝融」衡山五神劍！",
        "force" : 10,
        "dodge" : 0,
        "damage": 30,
        "lvl" : 7,
        "damage_type" : "刺傷"
]),
([
        "action" : "$N劍隨身轉，續而刺出十九劍，竟然是華山「玉女十九劍」，但奇的
是這十九\n劍便如一招，手法之快，直是匪夷所思！",
        "force" : 10,
        "dodge" : 5,
        "damage": 40,
        "lvl" : 14,
        "damage_type" : "刺傷"
]),
([      "action" : "$N劍勢忽緩而不疏，劍意有余而不盡，化恆山劍法為一劍，向$n慢慢
推去！",
        "force" : 20,
        "dodge" : 15,
        "damage": 40,
        "lvl" : 21,
        "damage_type" : "刺傷"
]),
([      "action" : "$N劍意突煥氣象森嚴，便似千軍萬馬奔馳而來，長槍大戟，黃沙千里
，盡括嵩山\n劍勢擊向$n的$l！",
        "force" : 20,
        "dodge" : 0,
        "damage": 50,
        "lvl" : 28,
        "damage_type" : "刺傷"
]),
([      "action" : "卻見$N身隨劍走，左邊一拐，右邊一彎，劍招也是越轉越加狠辣，竟
化「泰山十八盤」\n為一劍攻向$n！",
        "force" : 30,
        "dodge" : 10,
        "damage": 55,
        "lvl" : 35,
        "damage_type" : "刺傷"
]),
([      "action" : "$N劍招突變，使出衡山的「一劍落九雁」，削向$n的$l，怎知劍到中
途，突然轉\n向，大出$n意料之外！",
        "force" : 40,
        "dodge" : 5,
        "damage": 60,
        "lvl" : 42,
        "damage_type" : "刺傷"
]),
([      "action" : "$N吐氣開聲，一招似是「獨劈華山」，手中$w向下斬落，直劈向$n的
$l！",
        "force" : 50,
        "dodge" : 0,
        "damage": 80,
        "lvl" : 49,
        "damage_type" : "刺傷"
]),
([      "action" : "$N手中$w越轉越快，使的居然是衡山的「百變千幻云霧十三式」，劍
式有如云\n卷霧涌，旁觀者不由得目為之眩！",
        "force" : 60,
        "dodge" : 20,
        "damage": 70,
        "lvl" : 56,
        "damage_type" : "刺傷"
]),
([      "action" : "$N含笑抱劍，氣勢庄嚴，$w輕揮，盡融「達摩劍」為一式，閑舒地刺
向$n！",
        "force" : 70,
        "dodge" : 0,
        "damage": 90,
        "lvl" : 63,
        "damage_type" : "刺傷"
]),
([      "action" : "$N舉起$w運使「太極劍」劍意，划出大大小小無數個圓圈，無窮無盡
源源不絕地\n纏向$n！",
        "force" : 80,
        "dodge" : 20,
        "damage": 80,
        "lvl" : 70,
        "damage_type" : "刺傷"
]),
([      "action" : "$N神聲凝重，$w上劈下切左右橫掃，挾雷霆萬鈞之勢逼往$n，「伏摩
劍」的劍意\n表露無遺！",
        "force" : 90,
        "dodge" : 5,
        "damage": 90,
        "lvl" : 77,
        "damage_type" : "刺傷"
]),
([      "action" : "卻見$N突然虛步提腰，使出酷似武當「蜻蜓點水」的一招！",
        "force" : 100,
        "dodge" : 15,
        "damage": 60,
        "lvl" : 84,
        "damage_type" : "刺傷"
]),
([      "action" : "$N運劍如風，劍光霍霍中反攻$n的$l，嘗試逼$n自守，劍招似是「伏
魔劍」\n的「龍吞式」。",
        "force" : 120,
        "dodge" : 0,
        "damage": 95,
        "lvl" : 91,
        "damage_type" : "刺傷"
]),
([      "action" : "$N突然運劍如狂，一手關外的「亂披風劍法」，猛然向$n周身亂刺亂
削！",
        "force" : 140,
        "dodge" : -10,
        "damage": 120,
        "lvl" : 98,
        "damage_type" : "刺傷"
]),
([      "action" : "$N滿場游走，東刺一劍，西刺一劍，令$n莫明其妙，分不出$N劍法的
虛實！",
        "force" : 160,
        "dodge" : 30,
        "damage": 50,
        "lvl" : 105,
        "damage_type" : "刺傷"
]),
([      "action" : "$N抱劍旋身，轉到$n身后，雜亂無章地向$n刺出一劍，不知使的是什
么劍法！",
        "force" : 180,
        "dodge" : 5,
        "damage": 80,
        "lvl" : 112,
        "damage_type" : "刺傷"
]),
([      "action" : "$N突然一劍點向$n的$l，雖一劍卻暗藏無數后著，$n手足無措，不知
如何是好！",
        "force" : 200,
        "dodge" : 0,
        "damage": 85,
        "lvl" : 119,
        "damage_type" : "刺傷"
]),
([      "action" : "$N劍挾刀勢，大開大闔地亂砍一通，但招招皆擊在$n攻勢的破綻，迫
得$n不得不守！",
        "force" : 220,
        "dodge" : -10,
        "damage": 100,
        "lvl" : 126,
        "damage_type" : "刺傷"
]),
([      "action" : "$N反手橫劍刺向$n的$l，這似有招似無招的一劍，威力竟然奇大，$n
難以看清\n劍招來勢！",
        "force" : 240,
        "dodge" : -15,
        "damage": 120,
        "lvl" : 133,
        "damage_type" : "刺傷"
]),
([      "action" : "$N舉劍狂揮，迅速無比地點向$n的$l，卻令人看不出其所用是什么招
式。",
        "force" : 260,
        "dodge" : 0,
        "damage": 100,
        "lvl" : 140,
        "damage_type" : "刺傷"
]),
([      "action" : "$N隨手一劍指向$n，落點正是$n的破綻所在，端的是神妙無倫，不可
思議！",
        "force" : 280,
        "dodge" : 40,
        "damage": 60,
        "lvl" : 147,
        "damage_type" : "刺傷"
]),
([      "action" : "$N臉上突現笑容，似乎已看破$n的武功招式，胸有成竹地一劍刺向$n
的$l！",
        "force" : 300,
        "dodge" : 20,
        "damage": 120,
        "lvl" : 154,
        "damage_type" : "刺傷"
]),
([
    "action" : "$N將$w隨手一擺，但見$n自己向$w撞將上來，神劍之威，實人所難測！",
        "force" : 400,
        "dodge" : 50,
        "damage": 165,
        "lvl" : 180,
    "damage_type" : "刺傷"
])
});

;

int valid_enable(string usage)
{
        return (usage == "sword") || (usage == "parry");
}

int valid_learn(object me)
{
        mapping my_fam  = me->query("family");
        if(my_fam["generation"] != 13)
                return notify_fail("你不是風清揚的弟子，不能學習「獨孤九劍」。\n
");

        if ((int)me->query("max_neili") < 1000)
                return notify_fail("你的內力不夠。\n");

        if ((int)me->query_skill("dugu-jiujian",1) > 60)
                return notify_fail("這套劍法我就教到這兒，以后就要靠你自己練了。
        return 1;
}

mapping query_action(object me, object weapon)
{
        return action[random(sizeof(action))];
}

string query_parry_msg(string limb)
{
        return parry_msg[random(sizeof(parry_msg))];
}

int practice_skill(object me)
{
        return notify_fail("獨孤九劍只能通過「總訣式」來演練。\n");
}

string perform_action_file(string action)
{
        return __DIR__"dugu-jiujian/" + action;
}

("你的真氣不夠！\n");

	if( (int)me->query_skill("zixia-shengong") < 80 )
		return notify_fail("你的紫霞神功功力不足！\n");

	if( (int)me->query_skill("blade") < 50 ||
	    me->query_skill_mapped("blade") != "fanliangyi-dao")
		return notify_fail("你的「反兩儀刀法」還不到家，無法使用「華岳三神峰」！\n");

	msg = HIY "$N使出華山派絕技「華岳三神峰」，身法突地變得異常靈動飄忽！\n" NOR;
	message_combatd(msg, me);

	me->clean_up_enemy();
	ob = me->select_opponent();

	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"));
	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"));
	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"));

	me->add("neili", -100);
	me->start_busy(random(3));

	if(!ob->is_fighting(me)) ob->fight_ob(me);
	return 1;
}
      for (i=0;i<j;i++)
        {
                ob=member[i];
                if (!ob||!living(ob)||!ob->is_character())
                {
                        return notify_fail("你想和誰同使反兩儀刀？\n");
                }
                if (ob->query_temp("array/name"))
                {
                        return notify_fail("已經組成刀陣了。\n");
                }
                if (environment(leader)!=environment(ob))
                {
                        return notify_fail("人數不夠兩人。\n");
                }
                if (!ob->query_skill("fanliangyi-dao",1))
                {
                        return notify_fail(ob->name()+"還不會反兩儀刀法。\n");
                }
                if (ob->is_ghost())
                {
                        return notify_fail("只有陽間的人才能組刀陣。\n");
                }

                if( (int)ob->query("max_neili") < 50 )
                        return notify_fail(ob->query("name")+"的內力不夠。\n");

                if( (string)ob->query_skill_mapped("force")!= "zixia-shengong")
                        return notify_fail(ob->query("name")+"沒有使用華山派內功。\n");

                if( !(weapon = ob->query_temp("weapon"))
                ||      (string)weapon->query("skill_type") != "blade" )
                        return notify_fail(ob->query("name")+"必須拿把刀做武器。\n");

                if( (int)ob->query_skill("fanliangyi-dao",1)<30)
                        return notify_fail(ob->query("name")+"的反兩儀刀法還不夠熟練。\n");

                if( (string)ob->query_skill_mapped("blade")!="fanliangyi-dao")
                        return notify_fail(ob->query("name")+"必須使用反兩儀刀法。\n");
        }

//get the average array skill of the team
        n=0;
        for (i=0;i<j;i++)
        {
                ob=member[i];
                n+=(int)ob->query_skill("fanliangyi-dao",1);
        }
        n/=2;

//get the difference of the array skill,
//first get the max and mix skill level of the array
        max=member[0]->query_skill("fanliangyi-dao",1);
        min=max;
        for (i=0;i<j;i++)
        {
                skill=member[i]->query_skill("fanliangyi-dao",1);
                if(skill>max)
                        max=skill;
                else if(skill<min)
                        min=skill;
        }

//and the leader is important
        n += leader->query_skill("fanliangyi-dao", 1) * 5;
        n /= max - min + 1;
        for (i=0;i<j;i++)
        {
                ob=member[i];
                ob->set_temp("no_quit",1);

                ob->set_temp("array/name","fanliangyi-dao");
                ob->set_temp("array/level",n);

                ob->add_temp("apply/attack",n);
                ob->add_temp("apply/defense", n);
                ob->add_temp("apply/damage",n);
                ob->add_temp("apply/armor", n);
        }
        message_combatd( HIG "$N率領$N站定兩儀方位，頓時兩人之間顯得渾然天成、毫無破綻。\n" NOR, leader);
        return 1;
}

int dismiss_array(object person)
{
        int i,j,n;
        object *member,ob;

        member=person->query_team();
        j=sizeof(member);
        n=person->query_temp("array/level");
        for (i=0;i<j;i++)
        {
                ob=member[i];
                ob->delete_temp("array");
                ob->add_temp("apply/attack",-n);
                ob->add_temp("apply/damage",-n);
                ob->add_temp("apply/defense",-n);
                ob->add_temp("apply/armor", -n);
                tell_object(ob,"劍陣解散了\n");
        }
}

//if the leader kills enemy, then all members in the array kill enemy
int array_kill(object leader, object enemy)
{
        object *member, ob;
        int i,j;
        member=leader->query_team();
        j=sizeof(member);

        for(i=0;i<j;i++) {
                ob=member[i];
                ob->kill_ob(enemy);
        }

        return 1;
}



int effective_level() { return 10;}

int learn_bonus()
{
        return 0;
}
int practice_bonus()
{
        return 0;
}
int black_white_ness()
{
        return 0;
}

fanliangyi-dao.c",
        "damage_type" : "割傷"
])
});


int valid_enable(string usage) { return usage == "blade" || usage == "parry" ||
usage == "array"; }

int form_array(object leader)
//int perform(object leader, object target)
{
        object *member,ob, weapon;
        int i,j,n;
        int max,min,skill;

        member = leader->query_team();
        if( sizeof(member) != 2 )
                return notify_fail("反兩儀刀共需兩人，少一個多一個都不行。\n");

        j=sizeof (member);
        for (i=0;i<j;i++)
        {
                ob=member[i];
                if (!ob||!living(ob)||!ob->is_character())
                {
                        return notify_fail("你想和誰同使反兩儀刀？\n");
                }
                if (ob->query_temp("array/name"))
                {
                        return notify_fail("已經組成刀陣了。\n");
                }
                if (environment(leader)!=environment(ob))
                {
                        return notify_fail("人數不夠兩人。\n");
                }
                if (!ob->query_skill("fanliangyi-dao",1))
                {
                        return notify_fail(ob->name()+"還不會反兩儀刀法。\n");
                }
                if (ob->is_ghost())
                {
                        return notify_fail("只有陽間的人才能組刀陣。\n");
                }

                if( (int)ob->query("max_neili") < 50 )
                        return notify_fail(ob->query("name")+"的內力不夠。\n");

                if( (string)ob->query_skill_mapped("force")!= "zixia-shengong")
                        return notify_fail(ob->query("name")+"沒有使用華山派內功。\n");

                if( !(weapon = ob->query_temp("weapon"))
                ||      (string)weapon->query("skill_type") != "blade" )
                        return notify_fail(ob->query("name")+"必須拿把刀做武器。\n");

                if( (int)ob->query_skill("fanliangyi-dao",1)<30)
                        return notify_fail(ob->query("name")+"的反兩儀刀法還不夠熟練。\n");

                if( (string)ob->query_skill_mapped("blade")!="fanliangyi-dao")
                        return notify_fail(ob->query("name")+"必須使用反兩儀刀法。\n");

        }

//get the average array skill of the team
        n=0;
        for (i=0;i<j;i++)
        {
                ob=member[i];
                n+=(int)ob->query_skill("fanliangyi-dao",1);
        }
        n/=2;

//get the difference of the array skill,
//first get the max and mix skill level of the array
        max=member[0]->query_skill("fanliangyi-dao",1);
        min=max;
        for (i=0;i<j;i++)
        {
                skill=member[i]->query_skill("fanliangyi-dao",1);
                if(skill>max)
                        max=skill;
                else if(skill<min)
                        min=skill;
        }

//and the leader is important
        n += leader->query_skill("fanliangyi-dao", 1) * 5;
        n /= max - min + 1;
        for (i=0;i<j;i++)
        {
                ob=member[i];
                ob->set_temp("no_quit",1);

                ob->set_temp("array/name","fanliangyi-dao");
                ob->set_temp("array/level",n);

                ob->add_temp("apply/attack",n);
                ob->add_temp("apply/defense", n);
                ob->add_temp("apply/damage",n);
                ob->add_temp("apply/armor", n);
        }
        message_vision( HIG "$N率領$N站定兩儀方位，頓時兩人之間顯得渾然天成、毫  
奩普饋  n" NOR, leader);
        return 1;
}

int dismiss_array(object person)
{
        int i,j,n;
        object *member,ob;

        member = person->query_team();
        j=sizeof(member);
        n=person->query_temp("array/level");
        for (i=0;i<j;i++)
        {
                ob=member[i];
                ob->delete_temp("array");
                ob->add_temp("apply/attack",-n);
                ob->add_temp("apply/damage",-n);
                ob->add_temp("apply/defense",-n);
                ob->add_temp("apply/armor", -n);
                tell_object(ob,"刀陣解散了\n");
        }
}

//if the leader kills enemy, then all members in the array kill enemy
int array_kill(object leader, object enemy)
{
        object *member, ob;
        int i,j;
        member=leader->query_team();
        j=sizeof(member);

        for(i=0;i<j;i++) {
                ob=member[i];
                ob->kill_ob(enemy);
        }

        return 1;
}

int effective_level() { return 10;}

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 50)
                return notify_fail("你的內力不夠。\n");
        if ((int)me->query_skill("zixia-shengong", 1) < 10)
                return notify_fail("你的「紫霞神功」火候太淺。\n");
        return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("fanliangyi-dao",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        object weapon;

        if( !me->query_skill("zixia-shengong",1))
                return notify_fail("練「反兩儀刀法」必須要以「紫霞神功」為基礎。\n");

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "blade")
                return notify_fail("你使用的武器不對。\n");

        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力不夠練「反兩儀刀法」。\n");

        me->receive_damage("qi", 25);
        return 1;
}

string perform_action_file(string action)
{
        return __DIR__"fanliangyi-dao/" + action;
}

feifeng-whip.c性")
		return notify_fail("大老爺們學這飛鳳鞭？天資不足吧。\n");
	if ( !objectp(weapon = me->query_temp("weapon"))
	|| ( string)weapon->query("skill_type") != "whip" )
		return notify_fail("你必須先找一條長鞭才能練鞭法。\n");

	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("feifeng-whip",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "whip")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練飛鳳鞭法。\n");
	me->receive_damage("qi", 10);
	return 1;
}


// feixing-shu.c 飛星朮
// modified by Venus Oct.1997
#include <ansi.h>
inherit SKILL;

string *dodge_msg = ({
    "$n左一點右一晃，隨即回到原地，輕巧地躲過了$N這一招。\n",
    "$n騰身躍起一個空翻，并順勢閃到一邊。\n",
    "$n輕輕往旁邊一縱，就已離$N有了相當的距離，$N這一招自然失效。\n",
    "$n揉身而上，輕靈地躍過$N，閃到了$N的背后。\n",
    "$n身形急閃，斜向前一步，竟然已經躲開了$N的這一招。\n",
    "$N眼前一花，卻見$n竟然已離自己有數丈之遠，卻沒見$n如何躲過自己的攻擊的的
  n",
    "$N一個不留神，$n已沒了蹤影。$N急轉身，卻見$n在那兒向自己招手。\n",
    "$N一招攻出，$n已然不見，$N茫然四顧，卻不見$n的影子！\n",
});

mapping *action = ({
([      "action" : "$N輕身而退，一招『初露星芒』，手中$w化作一點寒芒射向$n",    
    "damage": 30,
    "dodge" : 40,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 0,
    "skill_name" : "初露星芒"
]),
([      "action" : "$N右手微向前一伸，使出『乍見星辰』，手里$w徑直射向$n的雙眼",
    "damage": 40,
    "dodge" : 45,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 9,
    "skill_name" : "乍見星辰"
]),
([      "action" : "$N一聲輕嘯，施展出『寒夜孤星』，身形微動，手中$w竟然向上飛  
起繞了個圈，隨而迅速襲向$n的腰間",
    "damage": 50,
    "dodge" : 50,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 18,
    "skill_name" : "寒夜孤星"
]),
([      "action" : "$N使一招『星光閃爍』，突然縱身向后一個翻滾，就在快落地的一瞬
間，$n陡然發現几點寒光閃爍不定地襲向自己",
    "damage": 55,
    "dodge" : 55,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "扎傷",
    "lvl" : 27,
    "skill_name" : "星光閃爍"
]),
([      "action" : "$N右手一揮，一招『星芒不定』，$n明明看見$N手里的$w已射向自己
的胸前大穴，到了近處卻突然轉攻向自己的后心",
    "damage": 60,
    "dodge" : 60,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 36,
    "skill_name" : "星芒不定"
]),
([      "action" : "$N不急不緩地一矮身，使出『墜落之星』，手中$w平直地射向$n的咽
喉，卻又加上暗勁使之中途改向，射向$n的下盤",
    "damage": 70,
    "dodge" : 70,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 45,
    "skill_name" : "墜落之星"
]),
([      "action" : "$N騰身一躍而起，施展出『黎明之星』，手里的$w從上往下筆直地射
向$n的頭部",
    "damage": 85,
    "dodge" : 80,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 54,
    "skill_name" : "黎明之星"
]),
([      "action" : "$N原地一個急轉身，隨即雙手一拂，$w就飄飄忽忽地飛向$n，原來這
招是『星辰游離』",
    "damage": 110,
    "dodge" : 85,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 63,
    "skill_name" : "星辰游離"
]),
([      "action" : "$N使出一招『星光頓滅』，前腳一跺，隨即翻身而起，手中$w不帶絲
毫風聲卻又迅速無比地射向$n的前胸",
    "damage": 120,
    "dodge" : 90,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 72,
    "skill_name" : "星光頓滅"
]),
([      "action" : "$N突然騰身向后急退，使出『星空炸雷』，雙手向前一推，手里$w就
隱隱帶著雷聲疾射向$n",
    "damage": 140,
    "dodge" : 95,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 81,
    "skill_name" : "星空炸雷"
]),
([      "action" : "$N施展出『"+HIW"星划長空"NOR+"』，原地側身飛起，右手微微向前一洒，手中$w
幻作一點寒光呈圓弧形射向$n",
    "damage": 160,
    "dodge" : 100,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 90,
    "skill_name" : "星划長空"
]),
([      "action" : "$N微微凝神，使出『"+HIY"星光萬丈"NOR+"』，身影飄忽不定，$n頓覺十分刺眼，卻
見$N手里的$w已挾著地上的沙石以及周圍的樹頁攻向自己",
    "damage": 190,
    "dodge" : 105,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 99,
    "skill_name" : "星光萬丈"
]),
([      "action" : "$N忽然輕嘆一聲，轉身而行，$n正遲疑間，卻見眼前已盡是$w的影子，
眼看無處可躲了！只怕這招就是『"+HIC"滿天星雨"NOR+"』了，$n不由大驚失色",
    "damage": 220,
    "dodge" : 110,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 110,
    "skill_name" : "滿天星雨"
])
});

int valid_enable(string usage) { return usage=="throwing" ||usage=="dodge"||usage=="parry"; }

int valid_learn(object me)
{
    if ((int)me->query_skill("force", 1) < 20)
   return notify_fail("你的內功心法火候不夠，無法學飛星朮。\n");
    if ((int)me->query_skill("dodge", 1) < 20)
   return notify_fail("你的輕功火候不夠，無法領悟飛星朮。\n");
    if ((int)me->query_dex() < 25)
   return notify_fail("你的身法不夠靈巧，無法領悟飛星朮。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("feixing-shu", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

string query_dodge_msg(string limb)
{
    return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
    object weapon;
    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "throwing")
       return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 30)
    return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 30)
       return notify_fail("你的內力不夠練飛星朮。\n");
    me->receive_damage("qi", 30);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"feixing-shu/" + action;
}

mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
    if( random(me->query_skill("poison",1)) > 20)
    {
       victim->apply_condition("xx_poison", random(2) + 1 +
       victim->query_condition("xx_poison"));
    }
}

fengyun-shou.c置  ,
    "damage_type" : "內傷"
]),
([  "action" : "$N岳立霆峙，一式「地老天荒」，在一陣暴雷聲中，雙手同時拍中$n
的七道死穴",
    "force" : 400,
    "dodge" : 56,
    "damage": 60,
    "lvl" : 0,
    "skill_name" : "地老天荒",
    "damage_type" : "內傷"
])
});

int valid_enable(string usage) { return usage=="hand" || usage=="parry"; }      

int valid_combine(string combo) { return combo=="yingzhua-gong"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練風云手必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候不夠，無法學風云手。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練風云手。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("fengyun-shou",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練風云手。\n");
    me->receive_damage("qi", 25);
    me->add("neili", -5);
    return 1;
}

// finger.c

inherit SKILL;
five-avoid/break.cfive-avoid.cil("你的氣力不夠,不能修煉五行遁.\n");
    me->receive_damage("qi", 20);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"five-avoid/" + action;
}

ili");
	}

	me->add("neili", -n);
	me->receive_heal("qi", q);
	
        message_combatd("$N深深吸了几口氣，臉色看起來好多了。\n", me);

        if( me->is_fighting() ) me->start_busy(1);
	
	return 1;
}
// transfer.c 轉內力
// Modified by Venus Oct.1997
#include <ansi.h>


int exert(object me, object target)
{
    int force, trans;

    if( !target || target==me || !living(target) )
   return notify_fail("你要將真氣傳給誰？\n");

    if( (string)me->query_skill_mapped("force") !=
target->query_skill_mapped("force") )
   return notify_fail(target->name() +
"所使用的內功和你不同，不能傳內力。\n");

    if( (int)me->query("neili") <= (int)me->query("max_neili")/3 )
   return notify_fail("你的真氣不足。\n");

    if ((int)target->query("neili")>=(int)target->query("max_neili")*4)
     return notify_fail("對方的真氣充沛，不需要你的真氣。\n");

    force = me->query("neili") - (me->query("max_neili")/3);

    if( force/2 < 1 ) return notify_fail("你的真氣不足。\n");
    me->add("neili", -force/3 );
    message_vision(HIW"$N一掌拍在$n背心，順勢運氣將體內真氣傳送過去。\n"NOR,
 me,target);
    target->add("neili", force/2);
    write("Ok。\n");
    tell_object(target, HIW "你覺得一股熱氣從" + me->name() +"的手掌中傳了過
來。\n" NOR);
    return 1;
}

// transfer.c 轉內力
// Modified by Venus Oct.1997
#include <ansi.h>

int exert(object me, object target)
{
    int force, trans;

    if( query_ip_name(target)==query_ip_name(me))
       return notify_fail("你要將真氣傳給誰？\n");

    if( !target || target==me || !living(target) )
       return notify_fail("你要將真氣傳給哪位？\n");

    if( me->query_skill_mapped("force") != target->query_skill_mapped("force") )
       return notify_fail(target->name()+"所使用的內功和你不同，不能傳內力。\n");

    if( (int)me->query("neili") <= (int)me->query("max_neili")/3 )
       return notify_fail("你的真氣不足。\n");

    if( (int)me->query("max_neili") <= (int)target->query("max_neili") )
       return notify_fail("你的真氣還不如人家多，傳不過去。\n");

    if ((int)target->query("neili")>=(int)target->query("max_neili")*4)
       return notify_fail("對方的真氣充沛，不需要你的真氣。\n");

    force = me->query("neili") - (me->query("max_neili")/3);

    if( force/2 < 1 ) return notify_fail("你的真氣不足。\n");
    me->add("neili", -force/3 );
    if( (int)me->query("max_neili") <= (int)target->query("max_neili")*5/4 )
       me->add("max_neili", -1);

    message_combatd(HIW"$N一掌拍在$n背心，順勢運氣將體內真氣傳送過去。\n"NOR, me,target);
    target->add("neili", force/2);
    write("Ok。\n");
    tell_object(target, HIW "你覺得一股熱氣從"+me->name()+"的手掌中傳了過來。\n" NOR);
    return 1;
}

// force.c

#include <ansi.h>

inherit SKILL;

int valid_learn(object me) {return 1;}

string exert_function_file(string func)
{
        return "/kungfu/skill/force/" + func;
}

void skill_improved(object me)
{}
  "force" : 240,
    "dodge" : 10,
    "damage" : 50,
    "lvl" : 40,
    "skill_name" : "開天勢",
    "damage_type" : "刺傷"
]),
([  "action" : "$N一式「劈地勢」，$w從上至下猛劈，劍鋒直出，挾爆裂之聲驟然斬
向$n的$l",
    "force" : 280,
    "dodge" : 5,
    "damage" : 60,
    "lvl" : 49,
    "skill_name" : "劈地勢",
    "damage_type" : "刺傷"
]),
([  "action" : "$N運氣施出「雷針勢」，$w劍尖逼出一道青芒，閃電般破空射向$n的
$l",
    "force" : 350,
    "dodge" : 5,
    "damage" : 75,
    "lvl" : 57,
    "skill_name" : "雷針勢",
    "damage_type" : "刺傷"
]),
([  "action" : "$N雙腿半屈半蹲，一式「龍吞勢」，劍尖划出無數圓圈，狂風驟起，
籠罩天地",
    "force" : 400,
    "dodge" : 5,
    "damage" : 90,
    "lvl" : 64,
    "skill_name" : "龍吞勢",
    "damage_type" : "刺傷"
]),
});


int valid_enable(string usage) { return (usage == "sword") || (usage == "parry")
; }

int valid_combine(string combo) { return combo=="cibei-dao"; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("fumo-jian",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "sword")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練伏魔劍。\n");
    me->receive_damage("qi", 35);
    return 1;
}

hamagong/hamagong/powerup.chamagong/qudu.c		{
			me->apply_condition("xx_poison", 0);
			write( HIW "你運功把星宿掌毒驅除干淨了。\n" NOR);
		}
		else
		{
			me->apply_condition("xx_poison", con3 - 4);
			write( HIW "你全身放松，坐下來開始運功驅除星宿掌毒。\n" NOR);
		}
		message("vision", 
	HIY+me->name()+"吐出一口紫血，蒼白的臉上多了點血色。\n" NOR,
		environment(me), me);
	}
	else write( HIW "你好象沒中毒吧。\n" NOR);

	me->add("neili", -50);
	me->set("jiali", 0);
	me->start_busy(4);

	return 1;
}
_amount);
	me->add_temp("apply/dodge", - d_amount);
	me->delete_temp("hmg_dzjm");
	tell_object(me, HIY "你雙手一撐，一躍而起，將內力收回丹田。\n");
}
|| me->query_skill("jiuyang-shengong",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("linji-zhuang",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學蛤蟆功？！\n");
	return 1;
}

int practice_skill(object me)
{
	return notify_fail("蛤蟆功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"hamagong/" + func;
}

hanbing-mianzhang/
		neili_wound = 100 + random(skill);
		if(neili_wound > target->query("neili"))
			neili_wound = target->query("neili");

		qi_wound = neili_wound / 5;
		if(qi_wound > target->query("qi"))
			qi_wound = target->query("qi");

		target->add("neili", -neili_wound);
		target->receive_wound("qi", qi_wound);
		target->start_busy(2);
		me->start_busy(random(2));
	}
	else
	{
		msg = HIG "只見$n不慌不忙，輕輕一閃，躲過了$N的利齒！\n"NOR;
		if(userp(me))
			me->add("neili",-100);
		me->start_busy(4);
	}
	message_combatd(msg, me, target);
	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);

	return 1;
}
" : "瘀傷"
]),
([	"action" : "$N使一式「湖光山色」，左掌如微風拂面，右掌似細雨纏身，直取$n的$l",
	"force" : 260,
        "dodge" : 15,
        "parry" : 20,
	"damage": 30,
	"lvl" : 20,
	"skill_name" : "湖光山色",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N兩掌一分，一式「曾經滄海」，隱隱發出潮聲，向$n橫擊過去",
	"force" : 300,
        "dodge" : 20,
        "parry" : 30,
	"damage": 40,
	"lvl" : 30,
	"skill_name" : "曾經滄海",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N身形一轉，使出一式「水光瀲灩」，只見漫天掌影罩住了$n的全身",
	"force" : 340,
        "dodge" : 25,
        "parry" : 20,
	"damage": 50,
	"lvl" : 40,
	"skill_name" : "水光瀲灩",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N突然身形一緩，使出一式「小雨初晴」，左掌凝重，右掌輕盈，擊往$n的$l",
	"force" : 380,
        "dodge" : 25,
        "parry" : 25,
	"damage": 60,
	"lvl" : 50,
	"skill_name" : "小雨初晴",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N使一式「風雪江山」，雙掌挾狂風暴雪之勢，猛地劈向$n的$l",
	"force" : 420,
        "dodge" : 30,
        "parry" : 30,
	"damage": 70,
	"lvl" : 60,
	"skill_name" : "風雪江山",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N一招「霜華滿地」，雙掌帶著蕭瑟的秋氣，拍向$n的$l",
	"force" : 460,
        "dodge" : 30,
        "parry" : 35,
	"damage": 80,
	"lvl" : 70,
	"skill_name" : "霜華滿地",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N身法陡然一變，使出一式「仙鄉冰舸」，掌影千變萬幻，令$n無法躲閃",
	"force" : 500,
        "dodge" : 40,
        "parry" : 45,
	"damage": 90,
	"lvl" : 80,
	"skill_name" : "冰清玉潔",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N清嘯一聲，一式「冰霜雪雨」，雙掌揮舞，如同雪花隨風而轉，擊向$n的$l",
	"force" : 540,
        "dodge" : 45,
        "parry" : 50,
	"damage": 110,
	"lvl" : 90,
	"skill_name" : "仙鄉冰舸",
        "damage_type" : "瘀傷"
])
});

int valid_enable(string usage)
{
	return usage=="strike" || usage=="parry" ;
}

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練寒冰綿掌必須空手。\n");
//	if ((int)me->query_skill("huagong-dafa", 1) < 20)
//		return notify_fail("你的化功大法火候不夠，無法學寒冰綿掌。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練寒冰綿掌。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("hanbing-mianzhang",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 40)
		return notify_fail("你的內力不夠練寒冰綿掌。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
if( random(me->query_skill("hanbing-mianzhang",1)) > 10 )
	victim->apply_condition("ice_poison", random(me->query_skill("hanbing-mianzhang",1)/10) + 1 + victim->query_condition("ice_poison"));
}

string perform_action_file(string action)
{
	return __DIR__"hanbing-mianzhang/" + action;
}
// hanbing-strike.c   烈焰寒冰掌
// by jacki(97.7.24)
// Modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([  "action": "$N雙掌一錯，一招「風起云涌」，狂風般掃向$n的$l",
    "dodge": 30,
    "force": 200,
//      "poison": 80,
    "damage_type": "瘀傷"
]),
([  "action": "$N一招「風雪滿天」，身形突然旋轉起來扑向$n，雙掌拍向$n的$l", 
    "dodge": 40,
    "force": 240,
//      "poison": 60,
    "damage_type": "瘀傷"
]),
([  "action": "$N將寒毒運至左手，一招「萬里雪飄」，迅疾無比地抓向$n的$l",   
    "dodge": 50,
    "force": 280,
//      "poison": 100,
    "damage_type": "瘀傷"
]),
([  "action": "$N后退一步，突然一招「千里冰封」，掌挾奇寒之氣拍向$n的$l",   
    "dodge": 60,
    "force": 300,
//      "poison": 80
    "damage_type": "瘀傷"
]),
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"; }   

mapping query_action(object me)
{
    if (random(me->query_skill("unarmed",1)) > 60 &&
   me->query_skill("force",1) > 50 &&
   me->query("neili") > 100 ) {
   me->add("neili", -100);
   return ([
   "action": "$N奮起全身之力，一招「烈焰寒冰」，凌厲無比地擊向$n",
   "force": 350,
   "damage_type": "瘀傷"]);
    }
    return action[random(sizeof(action))];
}

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練烈焰寒冰掌必須空手。\n");
    if ((int)me->query_skill("xuantian-force", 1) < 20)
   return notify_fail("你的玄天氣功火候不夠，無法練烈焰寒冰掌。\n")
;
    if ((int)me->query("max_neili") < 60)
   return notify_fail("你的內力太弱，無法練寒冰掌");
    return 1;
}


int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了，先休息一下吧。\n");
    if ((int)me->query("neili") < 8)
   return notify_fail("你的內力不夠練寒冰掌。\n");
    if (me->query_skill("hanbing-strike", 1) < 50)
   me->receive_damage("qi", 20);
    else
   me->receive_damage("qi", 30);
    me->add("neili", -5);
    return 1;
}

hand.c// hanxing-fada/lastrisk.c

#include <ansi.h>

inherit F_SSERVER;

int perform(object me, object target)
{
        int i,s;
        string msg;
        object *ob;
        object weapon;
        s = me->query_skill("hanxing-bada", 1);
        if( !target ) target = offensive_target(me);

        if( !target
        ||      !target->is_character()
        ||      !me->is_fighting(target) )
                return notify_fail("孤注一擲只能對戰斗中的對手使用。\n");
        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "throwing")
           return notify_fail("你必須先有暗器。\n");

//        if( !(weapon = me->query_temp("weapon")) )
//                return notify_fail("你沒有裝備武器。\n");

        if( s < 60)
                return notify_fail("你的寒星八打修為太淺。\n");
        msg = CYN "$N孤注一擲，發出所有暗器攻向$n!";
        me->start_busy(2);
        if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/2 )
        {
                msg += "結果$p被$P攻了個措手不及！\n" NOR;
                target->receive_wound("qi", random(s)*2);
        } else {
                msg += "可是$p躲過了$P的最后一擊。\n" NOR;
        }
        message_combatd(msg, me, target);
        ob = all_inventory(me);         //use out all throwing
        for(i=sizeof(ob)-1; i>=0; i--) {
        if( (string)ob[i]->query("equipped")!="wielded" ) continue;
        ob[i]->unequip();
                  ob[i]->move(environment(me));
        }
                  me->reset_action();
        return 1;
}

hanxing-bada.caction":"$N縱身一躍，手中$w一招「蒼龍入海」射向$n的$l",
                "force":150,
                "dodge": -40,
                "damage": 70,
                "lvl" : 40,
                "skill_name":"蒼龍入海",
                "damage_type":  "刺傷",
                "post_action":  (: call_other, WEAPON_D, "throw_weapon" :),
        ]),
        ([      "action":"$N手扣$w,憑空一指，一招「巴山夜雨」洒向$n的$l",
                "force":160,
                "dodge": 20,
                "damage":50,
                "lvl" : 50,
                "skill_name": "巴山夜雨",
                "damage_type":  "刺傷",
                "post_action":  (: call_other, WEAPON_D, "throw_weapon" :),
        ]),
        ([      "action":"$N身形一晃，使一招「彗星橫空」$w脫手而出，襲向$n的$l",
                "force":220,
                "dodge": -20,
                "damage":60,
                "lvl" : 60,
                "skill_name": "彗星橫空",
                "damage_type":  "刺傷",
                "post_action":  (: call_other, WEAPON_D, "throw_weapon" :),
        ]),
        ([      "action":"$N身形一轉手中$w使一招「后弈射日」畫出一道光弧襲向$n的$l",
                "force":270,
                "dodge": -30,
                "damage":60,
                "lvl" : 100,
                "skill_name": "后羿射日",
                "damage_type":  "刺傷",
                "post_action":  (: call_other, WEAPON_D, "throw_weapon" :),
        ]),
});

int valid_learn(object me)
{
        object ob;

        if( (int)me->query("max_neili") < 100 )
                return notify_fail("你的內力不夠，沒有辦法練寒星八打。\n");
       if( !(ob = me->query_temp("weapon"))
        ||      (string)ob->query("skill_type") != "throwing" )
                return notify_fail("你必須先找一些飛鏢之類的東西才能練暗器。\n");
        return 1;
}

int valid_enable(string usage)
{
        return usage=="throwing" || usage=="parry";
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level = (int) me->query_skill("hanxing-bada",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        if( (int)me->query("qi") < 30 ||(int)me->query("neili") < 3 )
                return notify_fail("你的內力或氣不夠，沒有辦法練習寒星八打。\n")
;
        me->receive_damage("qi", 30);
        me->add("neili", -3);
        write("你按著所學練了一遍寒星八打。\n");
        return 1;
}

string perform_action_file(string action)
{
        return __DIR__"hanxing-bada/" + action;
}

type" : "刺傷",
    "lvl" : 12,
    "skill_name" : "開門見山"
]),
([  "action" : "$N祭出一招"+HIC"『彈劍有音』"NOR+"，手里$w劍光暴長，已罩向$n
的$l",
    "force" : 150,
    "dodge" : 20,
    "damage" : 45,
    "damage_type" : "刺傷",
    "lvl" : 19,
    "skill_name" : "彈劍有音"
]),
([  "action" : "$N雙手握劍，一招"+WHT"『遠離塵埃』"NOR+"，$w看似隨意地划向$n
的$l",
    "force" : 175,
    "dodge" : 25,
    "damage" : 55,
    "damage_type" : "割傷",
    "lvl" : 20,
    "skill_name" : "遠離塵埃"
]),
([  "action" : "$N施展出"+HIW"『菩提明淨』"NOR+"，左手合什微喧佛號，右手$w如游龍般
擊向$n的$l",
    "force" : 200,
    "dodge" : 25,
    "damage" : 65,
    "damage_type" : "刺傷",
    "lvl" : 27,
    "skill_name" : "菩提明淨"
]),
([  "action" : "$N凝神使出"+HIW"『心淨如泓』"NOR+"，$w在胸前飛舞數圈后化為白泓點向
$n的$l",
    "force" : 225,
    "dodge" : 35,
    "damage" : 85,
    "damage_type" : "刺傷",
    "lvl" : 35,
    "skill_name" : "心淨如泓"
]),
([  "action" : "$N雙足一點，一招"+MAG"『心魔纏身』"NOR+"，鬼魅般欺至$n面前，$w帶著
一道飛芒逼向$n的$l",
    "force" : 250,
    "dodge" : 5,
    "damage" : 115,
    "damage_type" : "刺傷",
    "lvl" : 44,
    "skill_name" : "心魔纏身"
]),
([  "action" : "$N原地一轉，使出"+HIM"『惡魔附體』"NOR+"，$n卻見四面八方皆是$N，無
數把$w閃爍不定刺向自己的$l",
    "force" : 300,
    "dodge" : 55,
    "damage" : 145,
    "damage_type" : "刺傷",
    "lvl" : 53,
    "skill_name" : "惡魔附體"
]),
([  "action" : "$N飛身躍起，祭出"+HIR"『萬劫不復』"NOR+"，$w發出一聲龍吟從半空中洒向
$n的$l",
    "force" : 350,
    "dodge" : 35,
    "damage" : 175,
    "damage_type" : "刺傷",
    "lvl" : 62,
    "skill_name" : "萬劫不復"
]),
([  "action" : "$N右手微微一震，一招"+HIB"『縮地三尺』"NOR+"，快速絕倫地揉身而上，
手中$w飄忽不定地洒向$n的$l",
    "force" : 400,
    "dodge" : 45,
    "damage" : 200,
    "damage_type" : "刺傷",
    "lvl" : 71,
    "skill_name" : "縮地三尺"
]),
([  "action" : "$N神色平和地微微低首，一招"+YEL"『仙風道骨』"NOR+"，$w劍尖游移不
定地刺向$n的$l",
    "force" : 450,
    "dodge" : 20,
    "damage" : 250,
    "damage_type" : "刺傷",
    "lvl" : 80,
    "skill_name" : "仙風道骨"
]),
([  "action" : "$N雙手和什，使出一招"+HIY"『仙降于世』"NOR+"，$w平平地飛出刺向$n
的$l",
    "force" : 500,
    "dodge" : 35,
    "damage" : 300,
    "damage_type" : "刺傷",
    "lvl" : 90,
    "skill_name" : "仙降于世"
]),
([  "action" : "$N面露微笑，一招"+HIY"『普渡眾生』"NOR+"，$w一閃間舞出無數團劍花
刺向$n的$l",
    "force" : 550,
    "dodge" : 25,
    "damage" : 350,
    "damage_type" : "刺傷",
    "lvl" : 100,
    "skill_name" : "普渡眾生"
])
});


int valid_enable(string usage) { return (usage == "sword") || (usage == "parry")
; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
   return notify_fail(HIC"你的內力不夠。\n"NOR);
    if ((int)me->query_skill("lingyuan-xinfa", 1) < 10)
   return notify_fail(HIC"你的靈元心法火候太淺。\n"NOR);
    if ((string)me->query("gender") != "女性" )
   return notify_fail(HIY"這種陰柔的劍法只有女子才適合學。\n"NOR);
    return 1;
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("hengshan-jian",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "sword")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練恆山劍法。\n");
    me->receive_damage("qi", 30);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"hengshan-jian/" + action;
}

houquan/  damage = damage/2 + random(damage/2);
		
		target->receive_damage("qi", damage);
		target->receive_wound("qi", damage/3);
                me->add("neili", -damage/3);
		
		if( damage < 20 ) msg += HIY"結果$n受到$N的內力反震，悶哼一聲。\n"NOR;
        	else if( damage < 40 ) msg += HIY"結果$n被$N以內力反震，「嘿」地一聲退了兩步。\n"NOR;
        	else if( damage < 80 ) msg += RED"結果$n被$N以內力一震，胸口有如受到一記重錘，連退了五六步！\n"NOR;
                else msg += HIR"結果$n被$N的內力一震，眼前一黑，身子向后飛出丈許！！\n"NOR;
		
	} else 
	{
		me->start_busy(3);
		msg += CYN"可是$p看破了$P的企圖，并沒有上當。\n"NOR;
	}
	message_combatd(msg, me, target);
	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);

	return 1;
}
，一式「猿臂輕舒」，攻向$n的兩肋",
	"force" : 230,
        "dodge" : 10,
	"damage": 25,
	"lvl" : 15,
	"skill_name" : "猿臂輕舒",
        "damage_type" : "瘀傷"
]),
([	"action" : "\n$N忽然縮成一團，使一式「八方幻影」，雙掌無形無定，一爪抓向$n的胸口",
	"force" : 230,
        "dodge" : 25,
	"damage": 20,
        "lvl" : 15,
        "skill_name" : "八方幻影",
        "damage_type" : "內傷"
]),
([	"action" : "$N猛吸一口氣，一彎腰，使一式「水中攬月」，雙爪疾扣向$n的小腹",
	"force" : 220,
        "dodge" : 15,
	"damage": 10,
        "damage_type" : "瘀傷",
	"lvl" : 20,
	"skill_name" : "水中攬月"
]),
([	"action" : "$N猛的向上高高躍起，一式「落地摘星」，居高臨下，一爪罩向$n的頭骨",
	"force" : 240,
        "dodge" : 20,
	"damage": 20,
        "damage_type" : "抓傷",
	"lvl" : 30,
	"skill_name" : "落地摘星"
]),
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"|| usage=="hand"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練猴拳必須空手。\n");
	if ((int)me->query_skill("force", 1) < 30)
		return notify_fail("你的基本內功火候不夠，無法學猴拳。\n");
	if ((int)me->query("max_neili") < 200)
		return notify_fail("你的內力太弱，無法練猴拳。\n");
	return 1;
}

string query_skill_name(int level)
{
	int i;
	for(i = sizeof(action)-1; i >= 0; i--)
		if(level >= action[i]["lvl"])
			return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level = (int)me->query_skill("houquan", 1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 10)
		return notify_fail("你的內力不夠練猴拳。\n");
	me->receive_damage("qi", 15);
	me->add("neili", -5);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"houquan/" + action;
}
huagong-dafa/  迥諼    嫫  耍耍n");

	message_combatd(
		HIR "$N突然詭異的一笑，雙手一揚，拇指對准$n的掌心按了過來！\n\n" NOR,
		me, target );

	if ( living(target) )
	{
		if( !target->is_killing(me) ) target->kill_ob(me);
	}

        sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2;
        dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

        if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你突然覺得全身真氣自手掌奔涌而出，四肢無力，再也使不出勁來！\n" NOR);
		tell_object(me, HIG "你覺得" + target->name() + "的真氣自手掌源源不絕地流了進來。\n" NOR);

		target->receive_damage("qi", (int)me->query_skill("huagong-dafa", 1) );
		me->add("qi", (int)me->query_skill("huagong-dafa", 1) );
		me->add("eff_qi", (int)(me->query_skill("huagong-dafa", 1)*2/3) );
		if ( me->query("eff_qi") > me->query("max_qi") ) me->set("eff_qi", me->query("max_qi"));

		if( target->query("combat_exp") >= me->query("combat_exp") )
			me->add("combat_exp",1);

                me->start_busy(2);
                target->start_busy(random(2));
		me->add("neili", -5);

		call_out("del_sucked", 2, me);
	}
	else
	{	
		message_combatd(HIY "可是$p看破了$P的企圖，內力猛地一震，借勢溜了開去。\n" NOR, me, target);
                me->start_busy(2);
		call_out("del_sucked", 4, me);
	}

	return 1;
}

void del_sucked(object me)
{
	if ( me->query_temp("sucked") )
	me->delete_temp("sucked");
}
// maxsuck.c

#include <ansi.h>

inherit F_SSERVER;
int exert(object me, object target)
{
	int sp, dp;
	int my_max, tg_max;

	if ( target == me ) target = offensive_target(me);

	if( environment(me)->query("no_fight") )
		return notify_fail("在這里不能攻擊他人。\n");
	if( !objectp(target) || target->query("id") == "mu ren" )
		return notify_fail("你要吸取誰的丹元？\n");
	if (target->query("race") != "人類")
		return notify_fail("搞錯了！只有人才能有丹元！\n");

        my_max = me->query("max_neili");
        tg_max = target->query("max_neili");

	if ( me->query_temp("sucked") )
		return notify_fail("你剛剛吸取過丹元！\n");

	if( objectp(me->query_temp("weapon")) )
		return notify_fail("你必須空手才能施用化功大法吸人丹元！\n");

        if( !me->is_fighting() || !target->is_fighting())

	if( (int)me->query_skill("huagong-dafa",1) < 90 )
		return notify_fail("你的化功大法功力不夠，不能吸取對方的丹元！  n");

	if( (int)me->query("neili") < 20 )
		return notify_fail("你的內力不夠，不能使用化功大法。\n");

	if( (int)me->query_skill("force") < (int)me->query("max_neili") /10 )
		return notify_fail("你的內功太低了，再吸取也是徒勞。\n");

	if( (int)target->query("max_neili") < 100 )
		return notify_fail( target->name() +
			"丹元渙散，功力未聚，你無法從他體內吸取任何東西！\n");

        if( (int)target->query("max_neili") < (int)me->query("max_neili")/10 )
		return notify_fail( target->name() +
			"的內功修為遠不如你，你無法從他體內吸取丹元！\n");

	message_combatd(
		HIR "$N全身骨節爆響，雙臂暴長數尺，掌緣猛地向$n的天靈拍了下去！\n\n" NOR,
		me, target );

	if ( living(target) )
	{
		if( !target->is_killing(me) ) target->kill_ob(me);
	}

        sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2;
        dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

        if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你只覺天頂骨裂，全身功力貫腦而出，如融雪般消失得無影無蹤！\n" NOR);
		tell_object(me, HIG "你覺得" + target->name() + "的丹元自手掌源源不絕地流了進來。\n" NOR);

                target->add("max_neili",  -1*(1+(me->query_skill("huagong-dafa", 1)-90)/5) );
                me->add("max_neili",       1*(1+(me->query_skill("huagong-dafa", 1)-90)/5) );
                if ( target->query("max_neili") <1) target->set("max_neili",0);

		if( (int)me->query("potential") - (int)me->query("learned_points") < 90 )
			me->add("potential",  5);
		me->add("combat_exp", 10);

                me->start_busy(7);
                target->start_busy(random(7));
                me->add("neili", -10);

		call_out("del_sucked", 10, me);
	}
	else
	{	
		message_combatd(HIY "可是$p看破了$P的企圖，內力猛地一震，借勢溜了開去。\n" NOR, me, target);
                me->start_busy(7);
		call_out("del_sucked", 20, me);
	}

	return 1;
}

void del_sucked(object me)
{
	if ( me->query_temp("sucked") )
	me->delete_temp("sucked");
}

過內力！\n");

	if( objectp(me->query_temp("weapon")) )
		return notify_fail("你必須空手才能施用化功大法吸人內力！\n");

        if( !me->is_fighting() || !target->is_fighting())

	if( (int)me->query_skill("huagong-dafa",1) < 60 )
		return notify_fail("你的化功大法功力不夠，不能吸取對方的內力！  n");

	if( (int)me->query("neili",1) < 20 )
		return notify_fail("你的內力不夠，不能使用化功大法。\n");

	if( (int)target->query("max_neili") <= 0 )
		return notify_fail( target->name() +
			"沒有任何內力！\n");

        if( (int)target->query("neili") < 60 )
		return notify_fail( target->name() +
			"已經內力渙散，你已經無法從他體內吸取任何內力了！\n");

	message_combatd(
		HIR "$N一張臉突然變得慘白，右掌直出，猛地對准$n的膻中大穴按了上去！\n\n" NOR,
		me, target );

	if ( living(target) )
	{
		if( !target->is_killing(me) ) target->kill_ob(me);
	}

        sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2;
        dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

        if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你頓覺膻中微痛，如同被尖針刺了個小孔，全身內力如水銀般循孔飛泄而出！\n" NOR);
		tell_object(me, HIG "你覺得" + target->name() + "的內力自手掌源源不絕地流了進來。\n" NOR);

		target->add("neili", -1*((int)me->query_skill("huagong-dafa", 1) + target->query("jiali")) );
            if ( target->query("neili") <1 ) target->set("neili",0);
		me->add("neili", (int)me->query_skill("huagong-dafa", 1) + target->query("jiali") );

		if( target->query("combat_exp") >= me->query("combat_exp") ) {		
			if( (int)me->query("potential") - (int)me->query("learned_points") < 100 )
				me->add("potential", 1);
			me->add("combat_exp", 1);
		}

                me->start_busy(4);
		target->start_busy(random(4));
                me->add("neili", -7);

		call_out("del_sucked", 2, me);
	}
	else
	{	
		message_combatd(HIY "可是$p看破了$P的企圖，內力猛地一震，借勢溜了開去。\n" NOR, me, target);
		me->start_busy(4);
		call_out("del_sucked", 4, me);
	}

	return 1;
}

void del_sucked(object me)
{
	if ( me->query_temp("sucked"))
	me->delete_temp("sucked");
}

  鈾  迥諼  【  α耍耍n");

	message_combatd(
		HIR "$N突然神秘的一笑，雙掌一前一後對准$n的太陽穴拍了過來！\n\n" NOR,
		me, target );

	if ( living(target) )
	{
		if( !target->is_killing(me) ) target->kill_ob(me);
	}

        sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2;
        dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

        if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你猛覺額角兩側如針刺般劇痛，神志迷困，頭腦中一片空白！\n" NOR);
		tell_object(me, HIG "你覺得" + target->name() + "的精力自手掌源源不絕地流了進來。\n" NOR);

		target->receive_damage("jing", (int)me->query_skill("huagong-dafa", 1) );
		me->add("jing", (int)me->query_skill("huagong-dafa", 1) );
		me->add("eff_jing", (int)(me->query_skill("huagong-dafa", 1)*2/3) );
		if ( me->query("eff_jing") > me->query("max_jing") ) me->set("eff_jing", me->query("max_jing"));

		if( target->query("combat_exp") >= me->query("combat_exp") ) {		
			if( (int)me->query("potential") - (int)me->query("learned_points") < 100 )
				me->add("potential", 1);
		}

                me->start_busy(3);
                target->start_busy(random(3));
		me->add("neili", -5);

		call_out("del_sucked", 2, me);
	}
	else
	{	
		message_combatd(HIY "可是$p看破了$P的企圖，內力猛地一震，借勢溜了開去。\n" NOR, me, target);
                me->start_busy(3);
		call_out("del_sucked", 4, me);
	}

	return 1;
}

void del_sucked(object me)
{
	if ( me->query_temp("sucked") )
	me->delete_temp("sucked");
}
huagong-dafa/jinglisuck.cme->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2;
        dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

        if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你只覺天頂骨裂，全身功力貫腦而出，如融雪般消失得無影無蹤！\n" NOR);
		tell_object(me, HIG "你覺得" + target->name() + "的丹元自手掌源源不絕地流了進來。\n" NOR);

                target->add("max_jingli",  -1*(1+(me->query_skill("huagong-dafa", 1)-100)/5) );
                me->add("max_jingli",       1*(1+(me->query_skill("huagong-dafa", 1)-100)/5) );
                me->add("jingli",       1*(1+(me->query_skill("huagong-dafa", 1)-100)/5) );
                if ( target->query("max_jingli") <1) target->set("max_jingli",0);

		if( (int)me->query("potential") - (int)me->query("learned_points") < 90 )
			me->add("potential",  5);
		me->add("combat_exp", 10);

		me->start_busy(7);
		target->start_busy(random(7));
		me->add("neili", -10);

		call_out("del_sucked", 10, me);
	}
	else
	{	
		message_combatd(HIY "可是$p看破了$P的企圖，內力猛地一震，借勢溜了開去。\n" NOR, me, target);
		me->start_busy(7);
		call_out("del_sucked", 20, me);
	}

	return 1;
}

void del_sucked(object me)
{
	if ( me->query_temp("sucked") )
	me->delete_temp("sucked");
}

// powerup.c 化功大法加力

#include <ansi.h>

inherit F_CLEAN_UP;

void remove_effect(object me, int amount);

int exert(object me, object target)
{
	int skill;

	if( target != me )
		return notify_fail("你只能提升自己的戰斗力。\n");
	if( (int)me->query("neili")<200)
		return notify_fail("你的內力不夠。\n");
	if( (int)me->query_temp("powerup"))
		return notify_fail("你已經在運功中了。\n");

	skill = me->query_skill("force");

	message_combatd(
	HIG "$N舌尖一咬，噴出一口碧血，運起化功大法已將全身潛力盡數提起！\n" NOR, me);

	me->add_temp("apply/attack", skill/2);
	me->add_temp("apply/dodge", skill/2);
	me->set_temp("powerup", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, skill/2 :), skill);

	if( me->is_fighting() ) me->start_busy(3);

	return 1;
}

void remove_effect(object me, int amount)
{
	if ( (int)me->query_temp("powerup") )
	{
		me->add_temp("apply/attack", - amount);
		me->add_temp("apply/dodge", - amount);
		me->delete_temp("powerup");
		tell_object(me, "你的化功大法運行完畢，將內力收回丹田。\n");
	}
}
// suck.c
//By Yzuo 97.03

#include <ansi.h>

inherit F_SSERVER;
int exert(object me, object target)
{
	object ob, tar;
	int sp, dp, i, j;

	if ( target == me ) target = offensive_target(me);

	if( environment(me)->query("no_fight") )
		return notify_fail("在這里不能攻擊他人。\n");

	if( !objectp(target) || target->query("id") == "mu ren" )
		return notify_fail("你要吸取誰的內力？\n");

	if ( me->query_temp("sucked") )
		return notify_fail("你剛剛吸取過內力！\n");

	if( !objectp(ob=me->query_temp("weapon")) )
		return notify_fail("你沒有用兵器！\n");

	if( !objectp(tar=target->query_temp("weapon")) )
		return notify_fail("你的對手沒有用兵器！\n");

        if( !me->is_fighting() || !target->is_fighting())

	if( (int)me->query_skill("huagong-dafa",1) < 60 )
		return notify_fail("你的化功大法功力不夠，不能吸取對方的內力！  n");

	if( (int)me->query("neili",1) < 20 )
		return notify_fail("你的內力不夠，不能使用化功大法。\n");

	if( (int)target->query("max_neili") <= 0 )
		return notify_fail( target->name() +
			"沒有任何內力！\n");

        if( (int)target->query("neili") < 60 )
		return notify_fail( target->name() +
			"已經內力渙散，你已經無法從他體內吸取任何內力了！\n");

	  message_vision(
		HIR "$N突然將"+ob->query("name")+"朝$n的"+tar->query("name")+"壓上去！\n\n" NOR,
		me, target );

	if( !target->is_killing(me) ) target->kill_ob(me);

        sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2;
        dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

        if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你全身內力如水銀般循孔從手掌飛泄而出！\n" NOR);
		tell_object(me, HIG "你覺得" + target->name() + "的內力自手掌源源不絕地流了進來。\n" NOR);

		target->add("neili", -1*((int)me->query_skill("huagong-dafa", 1) + target->query("jiali")) );
            if ( target->query("neili") <1 ) target->set("neili",0);
		me->add("neili", (int)me->query_skill("huagong-dafa", 1) + target->query("jiali") );

		if( target->query("combat_exp") >= me->query("combat_exp") ) {		
			if( (int)me->query("potential") - (int)me->query("learned_points") < 100 )
				me->add("potential", 1);
			me->add("combat_exp", 1);
		}

                me->start_busy(3);
		target->start_busy(random(3));
                me->add("neili", -7);

		call_out("del_sucked", 2, me);
	}
	else
	{	
		message_vision(HIY "可是$p看破了$P的企圖，機靈地閃了開去。\n" NOR, me, target);
		me->start_busy(3);
		call_out("del_sucked", 4, me);
	}

	return 1;
}

void del_sucked(object me)
{
	if ( me->query_temp("sucked"))
	me->delete_temp("sucked");
}

可做得不夠呀！\n");
    if ( me->query_skill("buddhism",1) || me->query_skill("taoism",1) )
   return notify_fail("你練了禿驢牛鼻子們的心法，還學化功大法做什麼！\n");

	if (
	me->query_skill("bahuang-gong",1)
	|| me->query_skill("beiming-shengong",1)
	|| me->query_skill("bibo-shengong",1)
	|| me->query_skill("hamagong",1)
	|| me->query_skill("huntian-qigong",1)
	|| me->query_skill("hunyuan-yiqi",1)
	|| me->query_skill("jiuyang-shengong",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("linji-zhuang",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
   return notify_fail("你不先散了別派內功，怎能學化功大法？！\n");
    return 1;
}

int practice_skill(object me)
{
    return notify_fail("化功大法只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
    return __DIR__"huagong-dafa/" + func;
}

huagu-mianzhang/hua.chuagu-mianzhang.c "內傷",
    "lvl"   : 120,
    "skill_name" : "黃沙飄驚雨" ,
]),
([  "action" : "$N突然雙手平舉，$n一呆，正在猜測間，便見$N嗖的一下將雙手    
收回胸前，接著一招「白骨無限寒」，五指如鉤，直抓向$n的腰間",
    "force" : 400,
    "dodge" : 35,
    "damage_type" : "內傷",
    "lvl"   : 140,
    "skill_name" : "白骨無限寒" ,
]),
});

int valid_enable(string usage) { return usage=="strike" ||  usage=="parry"; }  

int valid_combine(string combo) { return combo=="shenlong-bashi"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練化骨綿掌必須空手。\n");
	if (2*(int)me->query_skill("shenlong-xinfa",1) <(int)me->query_skill("shenlong-bashi",1))
		return notify_fail("你的神龍心法火候不夠，無法繼續學化骨綿掌。\n");
    if ((int)me->query_skill("force", 1) < 50)
   return notify_fail("你的內功心法火候不夠，練化骨綿掌會走火入魔。\n");
    if ((int)me->query("max_neili") < 300)
   return notify_fail("你的內力太弱，無法練化骨綿掌。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i-1]["lvl"])
        return action[i-1]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int)me->query_skill("huagu-mianzhang",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
        return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 8)
        return notify_fail("你的內力不夠練化骨綿掌。\n");
    if (me->query_skill("jiuyin-zhua", 1) < 60)
        me->receive_damage("qi", 15);
    else
    me->receive_damage("qi", 30);
    me->add("neili", -5);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"huagu-mianzhang/" + action;
}
mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
    if( random(me->query_skill("jiuyin-zhua",1)) > 50) {
         victim->receive_damage("qi", random(2) + 1);
    }
}

return notify_fail("你的華山拳火候太淺。\n");
    return 1;
}

mapping query_action(object me, object weapon)
{
    return action[random(sizeof(action))];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "sword")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練華山劍法。\n");
    me->receive_damage("qi", 30);
    return 1;
}

n))];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "sword")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練華山劍法。\n");
	me->receive_damage("qi", 30);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"huashan-jianfa/" + action;
}
y_action(object me, object weapon)
{
    return action[random(sizeof(action))];
}

int practice_skill(object me)
{
    if( (int)me->query("qi") < 30 )
   return notify_fail("你的體力不夠了，休息一下再練吧。\n");
    me->receive_damage("qi", 30);
    return 1;
}

llicosity", 100 + skill/2 );
        me->add("force", -100);
        me->receive_damage("qi",0);

        message_combatd(
MAG"$N長長吸了口氣，神凝丹田，息游紫府，身若凌虛而超華岳，氣如沖霄而撼北辰。\n" NOR, me);

        me->add_temp("apply/attack", skill/3);
        me->add_temp("apply/dodge", skill/3);
        me->set_temp("powerup", 1);
  me->start_call_out((:call_other,__FILE__,"remove_effect",me,skill/3:),skill);
        if( me->is_fighting() ) me->start_busy(3);
        return 1;
}

void remove_effect(object me, int amount)
{
        me->add_temp("apply/attack", - amount);
        me->add_temp("apply/dodge", - amount);
        me->delete_temp("powerup");
        tell_object(me, "你的華山內功運行完畢，將內力收回丹田。\n");
}

  return notify_fail("華山氣功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
    return SKILL_D(__DIR__"huashan-neigong/") + func;
}

shu, level;

	zhaoshu = sizeof(action);
	level   = (int) me->query_skill("huashan-shenfa",1);

	if (level < 80 )
		zhaoshu--;

	if (level < 60 )
		zhaoshu--;

	if (level < 40 )
		zhaoshu--;

	return action[random(zhaoshu)];
}

int valid_enable(string usage)
{
	return usage == "dodge" || usage == "move";
}

int valid_learn(object me)
{
	return 1;
}

string query_dodge_msg(string limb)
{
	object me, ob;
	mapping action;

	me = this_player();
	action = query_action(me, ob);

	return action["action"];
}

int practice_skill(object me)
{
	if( (int)me->query("qi") < 40 )
		return notify_fail("你的體力太差了，不能練華山身法。\n");
	me->receive_damage("qi", 30);
	return 1;
}
// jianzhang.c  劍掌五連環

#include <ansi.h>
#include <skill.h>
#include <weapon.h>
#include <combat.h>

inherit F_SSERVER;
 
int perform(object me, object target)
{
	object weapon, ob;
        string msg, string1;
        int count;
 
	if( !me->is_fighting() )
		return notify_fail("「劍掌五連環」只能在戰斗中使用。\n");
 
	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "sword")
		return notify_fail("「劍掌五連環」開始時必須拿著一把劍！\n");

	if( (int)me->query("neili") < 100 )
		return notify_fail("你的真氣不夠！\n");

	if( (int)me->query_skill("zixia-shengong",1) < 50 )
		return notify_fail("你的紫霞神功不夠！\n");

	if( (int)me->query_skill("sword",1) < 50 ||
	    me->query_skill_mapped("sword") != "huashan-sword")
		return notify_fail("你的華山劍法還不到家，無法使用劍掌五連環！\n");

	msg = HIY "$N使出華山派絕技「劍掌五連環」，身法陡然加快！\n" NOR;
	message_combatd(msg, me);

	me->clean_up_enemy();
	ob = me->select_opponent();

	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 0);
	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 0);
	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 0);
	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 0);
	COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 0);

	me->add("neili", -100);
	me->start_busy(random(5));

	if(!ob->is_fighting(me)) ob->fight_ob(me);
	return 1;
}
// feilong.c  華山劍法「天外飛龍」

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
    int damage;
    string msg;
    object weapon;

    if (!target ) target = offensive_target(me);
    if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
        return notify_fail(RED"裝備劍才能使用「天外飛龍」？\n"NOR);
    if (!target || !target->is_character() || !me->is_fighting(target) )
        return notify_fail("「天外飛龍」只能對戰斗中的對手使用。\n");
    if ((int)me->query_skill("huashan-sword", 1) < 150 )
        return notify_fail(WHT"你華山劍法不夠嫻熟，使不出「天外飛龍」。\n"NOR);
    if ((int)me->query_skill("huashan-neigong", 1) < 100 )
        return notify_fail(RED"你華山內功火候不夠，使不出「天外飛龍」。\n"NOR);
    if ((int)me->query_skill("zixia-shengong", 1) < 100 )
        return notify_fail(RED"你紫霞神功火候不夠，使不出「天外飛龍」。\n"NOR);
    if ((int)me->query("max_neili") < 600)
        return notify_fail(RED"你內力修為不足，無法運足內力。\n"NOR);
    if ((int)me->query("neili") < 400)
    {
        return notify_fail(HIC"你現在內力不夠，沒能將「天外飛龍」使完！\n"NOR);
    }
    msg = HIC "$N心念電閃，一提內力，勒手仗劍，運勁于臂，呼的一聲向$n擲了出去，\n"NOR;
    if ( random(me->query("combat_exp")) > (int)target->query("combat_exp")/3 )
    {
        me->start_busy(2);
        target->start_busy(random(3));
        damage = target->query("qi");
        target->receive_damage("qi", damage-10);
        target->receive_wound("qi", damage/2);
msg += HIC"$n疾忙躍起，但劍如電閃，只覺一陣劇痛，劍刃攔腰而過，鮮血飛濺，皮肉卷起！\n"NOR;
        me->set("neili", 100);
    } else
    {
        me->start_busy(2);
msg += HIY"可是$n輕輕一笑，側身伸指，正彈在$N的劍脊上，劍斜飛落地。\n"NOR;
        me->add("neili", -200);
    }
    weapon->move(environment(me));
    message_combatd(msg, me, target);
    if(!target->is_fighting(me)) target->fight_ob(me);
    return 1;
}
huashan-sword.c");
   if( (string)me->query_skill_mapped("force")!= "zixia-shengong")
        return notify_fail("華山劍法必須配合紫霞神功才能練。\n");
    if( !(ob = me->query_temp("weapon"))
    ||      (string)ob->query("skill_type") != "sword" )
        return notify_fail("你必須先找一把劍才能練劍法。\n");

    return 1;
}

int valid_enable(string usage)
{
    return usage=="sword" || usage=="parry";
}

mapping query_action(object me, object weapon)
{
    return action[random(sizeof(action))];
}

int practice_skill(object me)
{
    if( (int)me->query("qi") < 30
    ||      (int)me->query("neili") < 5 )
        return notify_fail("你的內力或氣不夠，沒有辦法練習華山劍法。\n")
;
    me->receive_damage("qi", 30);
    me->add("neili", -5);
    write("你按著所學練了一遍華山劍法。\n");
    return 1;
}

int valid_effect(object me, object weapon, string name, int skill)
{
}

/*
void skill_improved(object me)
{
    if( (int)me->query_skill("nine-moon-sword", 1)  % 10 == 0 ) {
   tell_object(me,
      RED "\n你突然覺得一股陰氣沖上心頭，只覺得想殺人....\n\n"NOR);
   me->add("bellicosity", 2000);
    } else
   me->add("bellicosity", 200);
}
string perform_action_file(string action)
{
    return CLASS_D("ninemoon") + "/ninemoonsword/" + action;
}
*/

string perform_action_file(string action)
{
        return __DIR__"huashan-sword/" + action;
}
huashan-zhangfa.c20,
        "dodge" : 30,
        "parry" : 30,
	"damage": 70,
	"lvl" : 60,
	"skill_name" : "高山流水",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N突地一招「金玉滿堂」，雙掌挾著一陣風雷之勢，猛地劈往$n的$l",
	"force" : 460,
        "dodge" : 30,
        "parry" : 35,
	"damage": 80,
	"lvl" : 70,
	"skill_name" : "金玉滿堂",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N一式「風伴流云」，雙掌縵妙地一陣揮舞，不覺已擊到$n的$l上",
	"force" : 500,
        "dodge" : 40,
        "parry" : 45,
	"damage": 90,
	"lvl" : 80,
	"skill_name" : "風伴流云",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N一式「煙雨飄渺」，身形凝立不動，雙掌一高一低，看似簡單，卻令$n無法躲閃",
	"force" : 540,
        "dodge" : 45,
        "parry" : 50,
	"damage": 110,
	"lvl" : 90,
	"skill_name" : "煙雨飄渺",
        "damage_type" : "瘀傷"
])
});

int valid_enable(string usage) { return usage=="strike" || usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練華山掌法必須空手。\n");
	if ((int)me->query_skill("zixia-shengong", 1) < 20)
		return notify_fail("你的紫霞神功火候不夠，無法學華山掌法。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練華山掌法。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("huashan-zhangfa",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 40)
		return notify_fail("你的內力不夠練華山掌法。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"huashan-zhangfa/" + action;
}
huifeng-jian/(int)me->query("neili")<200)
        {
               return notify_fail(HIC"你現在內力不夠，沒能將「滅劍」使完！\n"NOR);
        }
        msg = HIC "$N手中長劍劍芒躍動，劍光暴長，幻出死亡的色彩，劍尖漸\n"NOR;
        msg += HIC"漸逼近$n，$n看到漫天劍光，抽身后躍，只這一剎，漫天劍\n"NOR;
        msg += HIC"影化為一劍直刺$n前胸，快捷無倫，只有一劍！\n"NOR;
        if (random(me->query_skill("force"))>target->query_skill("force")/2|| 
           random(me->query("combat_exp"))>(int)target->query("combat_exp")/3)
        {
                me->start_busy(2);
                target->start_busy(random(3));
                damage = (int)me->query_skill("huifeng-jian", 1);
                damage = damage + random(damage);
                target->receive_damage("qi", damage/2);
                target->receive_wound("qi", damage);
                target->receive_damage("jing", damage);
                target->receive_wound("jing", damage/2);
        msg += HIC"$n根本沒法躲避，一式「回風拂柳劍」的絕招「滅劍」端端正\n"NOR;
        msg += HIC"正扎進在$n胸口！$n一低頭，看長劍自胸口拔出！\n"NOR;
                me->add("neili", -200);
        } else
        {
                me->start_busy(2);
        msg += HIY"可是$p輕輕一笑，側身右轉，伸出兩指，正彈在$P的劍上，長\n"NOR;
        msg += HIY"劍在$p身側划過，毫發無傷。\n"NOR;
                me->add("neili", -200);
        }
        message_combatd(msg, me, target);
	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);
        return 1;
}
huifeng-jian/mie.vnsuery_skill("force")) > target->query_skill("force")/2||
           random(me->query("combat_exp")) > (int)target->query("combat_exp")/3 )
        {
                me->start_busy(2);
                target->start_busy(random(3));
                damage = (int)me->query_skill("huifeng-jian", 1);
                damage = damage + random(damage);
                target->receive_damage("qi", damage);
                target->receive_wound("qi", damage*2);
                target->receive_damage("jing", damage);
                target->receive_wound("jing", damage/2);
                msg += HIC"$n根本沒法躲避，一式「回風拂柳劍」的絕招「滅劍」端端正正扎進在$n胸口！$n一低頭，看長劍自胸口拔出！\n"NOR;
                me->add("neili", -damage/5);
        } else
        {
                me->start_busy(2);
                msg += HIY"可是$p輕輕一笑，側身右轉，伸出兩指，正彈在$P的劍上，長劍在$p身側划過，毫發無傷。\n"NOR;
        }
        message_vision(msg, me, target);
        return 1;
}

"lvl" : 0,
        "damage_type" : "刺傷"
]),
([      "name":   "千峰競秀",
        "action" : "$N長劍輕靈跳動，劍隨身長，右手$w使出一式「千峰競秀」刺向$n的
$l",
        "force" : 140,
        "dodge" : 15,
        "damage" : 350,
        "lvl" : 0,
        "damage_type" : "刺傷"
]),
([      "name":   "萬流歸宗",
        "action" : "$N長劍下指，劍意流轉，一招「萬流歸宗」直取$n的$l",
        "force" : 150,
        "dodge" : 15,
        "damage" : 280,
        "lvl" : 0,
        "damage_type" : "刺傷"
]),
([      "name":   "烏龍攪柱",
        "action" : "$N劍芒吞吐，幻若靈蛇，右手$w使出一式「烏龍攪柱」，劍勢曼妙，
刺向$n的$l",
        "force" : 130,
        "dodge" : 25,
        "damage" : 300,
        "lvl" : 0,
        "damage_type" : "刺傷"
]),
([      "name":   "大雁啼沙",
        "action" : "$N屈腕云劍，劍光如彩碟紛飛，幻出點點星光，右手$w使出一式
「大雁啼沙」躍躍洒洒飄向$n的$l",
        "force" : 120,
        "dodge" : 25,
        "damage" : 320,
        "lvl" : 0,
        "damage_type" : "刺傷"
]),
([      "name":   "進退龍游",
        "action" : "$N揮劍分擊，劍勢自胸前躍出，右手$w一式「進退龍游」，毫無
留戀之勢，刺向$n的$l",
        "force" : 110,
        "dodge" : 15,
        "lvl" : 0,
        "damage" : 400,
        "damage_type" : "刺傷"
]),
([      "name":   "天地鶴翔",
        "action" : "$N退步，左手劍指划轉，腰部一扭，右手$w一記「天地鶴翔」自下
而上刺向$n的$l",
        "force" : 150,
        "dodge" : 35,
        "damage" : 400,
        "lvl" : 0,
        "damage_type" : "刺傷"
]),
});

int valid_enable(string usage) { return (usage == "sword") || (usage == "parry")
; }

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 50)
                return notify_fail("你的內力不夠。\n");
        if ((int)me->query_skill("linji-zhuang", 1) < 20)
                return notify_fail("你的臨濟十二庄火候太淺。\n");
        if ((int)me->query_skill("sword", 1) < (int)me->query_skill("huifeng-jian", 1))
                return notify_fail("你的基本劍法火候太淺。\n");
        return 1;
}
mapping query_action(object me, object weapon)
{
        int i, level;
        level = (int) me->query_skill("huifeng-jian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                       return action[NewRandom(i, 20, level/5)];

}
int practice_skill(object me)
{
        object weapon;

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不對。\n");
        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力不夠練回風拂柳劍。\n");
        me->receive_damage("qi", 10);
        return 1;
}
string perform_action_file(string action)
{
        return __DIR__"huifeng-jian/" + action;
}

     "parry" : 10,
        "lvl" : 8,
        "damage" : 80,
        "damage_type" : "割傷",
]),
([      "action" : "$N使出一招「天設牢籠」，將$w舞得如白霧一般壓向$n ",
        "skill_name" : "天設牢籠",
        "force" : 120,
        "dodge" : 10,
        "parry" : 10,
        "lvl" : 16,
        "damage" : 110,
        "damage_type" : "割傷",
]),
([      "action" : "$N一招「閉門鐵扇」，$w緩緩的斜著向$n推去 ",
        "skill_name" : "閉門鐵扇",
        "force" : 150,
        "dodge" : 5,
        "parry" : 10,
        "lvl" : 24,
        "damage" : 140,
        "damage_type" : "割傷",
]),
([      "action" : "$N手拖$w，轉身躍起，一招「翼德闖帳」，一道白光射向$n的胸口 "
,
        "skill_name" : "翼德闖帳",
        "force" : 200,
        "dodge" : -5,
        "parry" : 5,
        "lvl" : 32,
        "damage" : 170,
        "damage_type" : "割傷",
]),
([      "action" : "$N揮舞$w，使出一招「白鶴舒翅」，上劈下撩，左擋右開，齊齊罩向
$n  ",
        "skill_name" : "白鶴舒翅",
        "force" : 230,
        "dodge" : 10,
        "parry" : 5,
        "lvl" : 40,
        "damage" : 200,
        "damage_type" : "割傷",
]),
([      "action" : "$N一招「春風送暖」，左腳躍步落地，$w順勢往前，挾風聲劈向$n的
$l  ",
        "skill_name" : "春風送暖",
        "force" : 300,
        "dodge" : 5,
        "parry" : 10,
        "lvl" : 48,
        "damage" : 230,
        "damage_type" : "割傷",
]),
([      "action" : "$N募的使一招「八方藏刀」，頓時劍光中無數朵刀花從四面八方涌向
$n全身  ",
        "skill_name" : "八方藏刀",
        "force" : 320,
        "dodge" : 10,
        "parry" : 20,
        "lvl" : 56,
        "damage" : 260,
        "damage_type" : "割傷",
]),
});


int valid_enable(string usage) { return usage == "blade" || usage == "parry"; }

//int valid_combine(string combo) { return combo=="mingwang-jian"; }

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 50)
                return notify_fail("你的內力不夠。\n");
        if ((int)me->query_skill("hunyuan-yiqi", 1) >= 20 ||
            (int)me->query_skill("force", 1) >= 20)
                return 1;
        else if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
                return notify_fail("你的混元一氣功火候太淺。\n");
        else if ((int)me->query_skill("force", 1) < 20)
                return notify_fail("你的基本內功火候太淺。\n");
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("hujia-daofa",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        object weapon;

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "blade")
                return notify_fail("你使用的武器不對。\n");
        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力不夠，練不了胡家刀法。\n");
        me->receive_damage("qi", 30);
        return 1;
}

huntian-qigong/powerup.chuntian-qigong/lifeheal.chuntian-qigong/shengang.cengang");
		tell_object(me, HIY "你的混天神罡運行完畢，將內力收回丹田。\n" NOR);
		me->start_busy(random(4));
	}
}
("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學混天氣功？！\n");

	return 1;
}


int practice_skill(object me)
{
	return notify_fail("混天氣功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
        return __DIR__"huntian-qigong/" + func;
}
  write( HIW "你全身放松，坐下來開始運功療傷。\n" NOR);
    message("vision",
   HIW + me->name() + "吐出一口瘀血，臉色看起來好多了。\n" NOR,
   environment(me), me);

    me->receive_curing("qi", 10 + (int)me->query_skill("force")/5 );
    me->add("neili", -50);
    me->set("jiali", 0);

    return 1;
}

)target->query("eff_qi") ) target->set("qi", (int)target->query("eff_qi"));

    me->add("neili", -150);
    me->set("jiali", 0);

    return 1;
}
hunyuan-yiqi/roar.chunyuan-yiqi.cn notify_fail("你不先散了別派內功，怎能學混元一氣功？！\n");

	return 1;
}


int practice_skill(object me)
{
	return notify_fail("混元一氣功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"hunyuan-yiqi/" + func;
}
級不夠, 不能使用「混元無極」！\n");

	if( me->query("neili") < 150 )
		return notify_fail("你的內力不夠，無法運用「混元無極」！\n");
 
	msg = HIC "$N潛運「混元無極」，雙拳挾著隱隱的風雷之聲向$n擊去。\n"NOR;
	message_combatd(msg, me, target);
 
	ap = me->query("combat_exp") + skill * 400;
	dp = target->query("combat_exp") / 2;
	if( dp < 1 )
		dp = 1;
	if( random(ap) > dp )
	{
		if(userp(me))
			me->add("neili",-100);

		msg = HIG "$n只覺得胸前一陣劇痛，“哇”的一聲噴出一口鮮血！\n"NOR;
		neili_wound = 100 + random(skill);
		if(neili_wound > target->query("neili"))
			neili_wound = target->query("neili");

		qi_wound = neili_wound / 5;
		if(qi_wound > target->query("qi"))
			qi_wound = target->query("qi");

		target->add("neili", -neili_wound);
		target->add("qi", -qi_wound);
		target->start_busy(2);
		me->start_busy(random(2));
	}
	else
	{
		msg = HIG "只見$n不慌不忙，輕輕一閃，躲過了$N的必殺一擊！\n"NOR;
		if(userp(me))
			me->add("neili",-100);
		me->start_busy(4);
	}
	message_combatd(msg, me, target);

	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);

	return 1;
}
// hunyuan-zhang.c 混元掌

inherit SKILL;

mapping *action = ({
([	"action" : "$N一式「白云出岫」，雙掌間升起一團淡淡的白霧，緩緩推向$n的$l",
	"force" : 180,
        "dodge" : 5,
        "parry" : 20,
	"damage": 10,
	"lvl" : 0,
	"skill_name" : "白云出岫",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N并指如劍，一式「白虹貫日」，疾向$n的$l戳去",
	"force" : 220,
        "dodge" : 10,
        "parry" : 15,
	"damage": 20,
	"lvl" : 10,
	"skill_name" : "白虹貫日",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N使一式「云斷秦嶺」，左掌微拂，右掌乍伸乍合，猛地插往$n的$l",
	"force" : 260,
        "dodge" : 15,
        "parry" : 20,
	"damage": 30,
	"lvl" : 20,
	"skill_name" : "云斷秦嶺",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙掌隱隱泛出青氣，一式「青松翠翠」，幻成漫天碧綠的松針，雨點般向$n擊去",
	"force" : 300,
        "dodge" : 20,
        "parry" : 30,
	"damage": 40,
	"lvl" : 30,
	"skill_name" : "青松翠翠",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N身形往上一縱，使出一式「天紳倒懸」，雙掌并攏，筆直地向$n的$l插去",
	"force" : 340,
        "dodge" : 25,
        "parry" : 20,
	"damage": 50,
	"lvl" : 40,
	"skill_name" : "天紳倒懸",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N身形一變，使一式「無邊落木」，雙掌帶著蕭剎的勁氣，猛地擊往$n的$l",
	"force" : 380,
        "dodge" : 25,
        "parry" : 25,
	"damage": 60,
	"lvl" : 50,
	"skill_name" : "無邊落木",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N使一式「高山流水」，左掌凝重，右掌輕盈，同時向$n的$l擊去",
	"force" : 420,
        "dodge" : 30,
        "parry" : 30,
	"damage": 70,
	"lvl" : 60,
	"skill_name" : "高山流水",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N突地一招「金玉滿堂」，雙掌挾著一陣風雷之勢，猛地劈往$n的$l",
	"force" : 460,
        "dodge" : 30,
        "parry" : 35,
	"damage": 80,
	"lvl" : 70,
	"skill_name" : "金玉滿堂",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N一式「風伴流云」，雙掌縵妙地一陣揮舞，不覺已擊到$n的$l上",
	"force" : 500,
        "dodge" : 40,
        "parry" : 45,
	"damage": 90,
	"lvl" : 80,
	"skill_name" : "風伴流云",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N一式「煙雨飄渺」，身形凝立不動，雙掌一高一低，看似簡單，卻令$n無法躲閃",
	"force" : 540,
        "dodge" : 45,
        "parry" : 50,
	"damage": 110,
	"lvl" : 90,
	"skill_name" : "煙雨飄渺",
        "damage_type" : "瘀傷"
])
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry" || usage=="strike"; }

int valid_combine(string combo) { return combo=="poyu-quan"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練混元掌必須空手。\n");
	if ((int)me->query_skill("zixia-shengong", 1) < 20)
		return notify_fail("你的紫霞神功火候不夠，無法學混元掌。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練混元掌。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("hunyuan-zhang",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 40)
		return notify_fail("你的內力不夠練混元掌。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"hunyuan-zhang/" + action;
}huoyan-dao/
	if( dp < 1 )
		dp = 1;
	if( random(ap) > dp )
	{
		if(userp(me))
			me->add("neili",-600);


		neili_wound = 100 + random(skill);
		if(neili_wound > target->query("neili"))
			neili_wound = target->query("neili");

                qi_wound = target->query("qi") - 100;
//		qi_wound = neili_wound / 5;
//		if(qi_wound > target->query("qi"))
//			qi_wound = target->query("qi");

		target->receive_damage("qi", qi_wound);
		target->receive_wound("qi", qi_wound);
		target->add("neili", -neili_wound);
		target->start_busy(2);
		me->start_busy(random(2));

		inv = all_inventory(target);
msg += HIR "$n只覺得眼前一黑，一陣熱焰扑面而來，“哇”的一聲噴出一口鮮血！\n"NOR;
		for(equip=0; equip<sizeof(inv); equip++)
		{
			if( inv[equip]->query("equipped") &&
				!inv[equip]->query("weapon_prop") )
			{
msg += HIR "$n聞到一股焦味，發現身上的"+inv[equip]->query("name")+HIR"已被燒得殘破不堪，掉在了地上！\n"NOR;
			inv[equip]->unequip();
			inv[equip]->reset_action();
			inv[equip]->move(environment(target));
			inv[equip]->set("name", inv[equip]->query("name") + "的碎片");
			inv[equip]->set("value", 0);
			inv[equip]->set("armor_prop", 0);
			inv[equip]->set("long", "一堆破碎物事，好象是布片鐵片什么的。\n");
			}
		}
	}
	else
	{
msg += HIG "只見$n不慌不忙，輕輕一閃，躲過了$N的必殺一擊！\n"NOR;
		if(userp(me)) me->add("neili",-600);
		me->start_busy(4);
	}
	message_combatd(msg, me, target);

	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);

	return 1;
}
huoyan-dao.c,
        "damage" : 100,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N使出一招「火內蓮花」，雙掌微并，兩臂前伸，一道內勁如排山倒海般攻向$n",
        "skill_name" : "火內蓮花",
        "force" : 500,
        "lvl" : 100,
        "damage" : 100,
        "damage_type" : "瘀傷",
]),
});


int valid_enable(string usage) { return usage == "strike" || usage == "parry"; }


int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練火焰刀必須空手。\n");

	else if ((int)me->query("max_neili") < 300)	//  火焰刀要有很高的內力才能學
		return notify_fail("你的內力不夠。\n");

	if ((int)me->query_skill("longxiang", 1) >= 60 ||
	    (int)me->query_skill("xiaowuxiang", 1) >= 60)
		return 1;
	else if ((int)me->query_skill("longxiang", 1) < 60)
		return notify_fail("你的龍象般若功火候太淺。\n");
	else if ((int)me->query_skill("xiaowuxiang", 1) < 60)
		return notify_fail("你的小無相功火候太淺。\n");
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
		  level   = (int) me->query_skill("huoyan-dao",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練火焰刀必須空手。\n");
	if ((int)me->query("qi") < 40)
		return notify_fail("你的體力不夠，練不了火焰刀。\n");
	me->receive_damage("qi", 20);
	return 1;
}


string perform_action_file(string action)
{
	return __DIR__"huoyan-dao/" + action;
}

jinding-zhang/_mapped("strike") != "jinding-zhang")
                return notify_fail("你沒有激發金頂綿掌，無法使用八式合一！\n");
        if( !target->is_killing(me) ) target->kill_ob(me);

        msg = HIY "$N深深吸了一口氣，提起全身的功力于雙掌，只聽的$N骨骼一陣爆響！\n" NOR;
//        me->start_busy(1);
        if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/2)
        {
                damage = (int)me->query_skill("linji-zhuang", 1)/2;
                damage = damage +  (int)me->query_skill("jinding-zhang", 1);
                target->set_temp("bashi", 1);
                target->add_temp("apply/attack", -damage/3);
                target->add_temp("apply/dodge", -damage/3);
//              target->receive_damage("qi", damage);
//              target->receive_wound("qi", damage/2);
                msg += HIR "$N騰空而起，使出了「八式合一」，漫天的掌影，飄忽不定的罩向$n全身各個部位，\n" NOR;
                me->start_call_out( (: call_other, __FILE__, "remove_effect",target,damage/3, damage/3:), damage/30);
                me->add("neili",-100);
                target->start_busy(3);
         }
         else {
                msg += CYN"可是$p猛地向前一躍,跳出了$P的攻擊范圍。\n"NOR;
                me->start_busy(1);
         }
         message_combatd(msg, me, target);
         return 1;
}

void remove_effect(object target,int aamount, int damount)
{
               target->add_temp("apply/attack", aamount);
               target->add_temp("apply/dodge", damount);
               target->delete_temp("bashi");
               message_combatd(HIG"$N從猛烈的攻擊中擺脫了出來，連退數步,穩住了腳步\n"NOR, target);
}

jinding-zhang.c"梵心降魔" ,
        "action" : "$N一幅寶像庄嚴，使出「梵心降魔」，掌勢如虹，繞著$n漂移不定",
        "force" : 230,
        "parry" : 20,
        "dodge" : 20,
        "damage_type" : "內傷",
        "lvl"   : 66,
]),
([      "skill_name" : "法尊八荒" ,
        "action" : "$N全場游走，雙臂疾舞，化為點點掌影，一招「法尊八荒」鋪天蓋地襲向$n全身各處大穴",
        "force" : 300,
        "parry" : 5,
        "dodge" : 30,
        "damage_type" : "內傷",
        "lvl"   : 77,
]),
});

int valid_enable(string usage) { return usage=="strike" ||  usage=="parry"; }

int valid_combine(string combo) { return combo=="tiangang-zhi"; }

int valid_learn(object me)
{
        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
                return notify_fail("練金頂綿掌必須空手。\n");
        if ((int)me->query_skill("linji-zhuang", 1) < 10)
                return notify_fail("你的臨濟庄心法火候不夠，不能練金頂綿掌。\n");
        if ((int)me->query("max_neili") < 30)
                return notify_fail("你的內力太弱，無法練金頂綿掌。\n");
        return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i-1]["lvl"])
                return action[i-1]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int)me->query_skill("jinding-zhang",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        if ((int)me->query("qi") < 30)
                return notify_fail("你的體力太低了。\n");
        if (me->query_skill("jinding-zhang", 1) < 100)
                me->receive_damage("qi", 10);
        else
        me->receive_damage("qi", 20);
        return 1;
}
string perform_action_file(string action)
{
        return __DIR__"jinding-zhang/"+ action;
}
jingang-quan/剛神通！\n");
	
	msg = HIY "$N使出大金剛拳的絕技「大金剛神通」，臂力陡然增加！\n" NOR;
	
	qi = me->query("qi");
	maxqi = me->query("max_qi");
	skill = (int) (me->query_skill("jingang-quan",1) / 3);
	count = me->query_str();
	d_count = (int)me->query_dex() / 2;

	if(qi > (maxqi * 0.4))
	{	
		message_combatd(msg, me, target);
		
		me->add_temp("str", count * 2);	
		me->add_temp("dex", 0-d_count);
		me->set_temp("jingang", 1);
		me->start_call_out( (: call_other, __FILE__, "remove_effect", me, count*2, d_count :), skill);

		me->add("neili", -150);
	}
	else{
		msg = HIR "$N拼盡畢生功力使出了大金剛拳的終極絕技, 全身骨骼一陣爆響, 欲與敵人同歸于盡!\n" NOR;
		message_combatd(msg, me, target);
		me->add_temp("str", count * 9);
		me->set_temp("jingang", 1);

		me->start_call_out( (: call_other, __FILE__, "remove_effect", me, count*9, 0 :), 2);

//		me->add_temp("str",  -(count * 29));		
//		me->delete_temp("jingang");
		COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);
		me->set("neili",0);
		me->add("max_neili",-10);

		msg = HIR "$N用盡了最后一點氣力, 噴出一口鮮血, 一頭栽倒在地!\n" NOR;
		message_combatd(msg, me, target);

		me->set("jing",0);
		me->set("qi",0);

		me->unconcious();
	}
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);
	return 1;
}

void remove_effect(object me, int aamount, int damount)
{
	
	if ( (int)me->query_temp("jingang") ) 
	{
		me->add_temp("str", -aamount);
		me->add_temp("dex", damount);
		me->delete_temp("jingang");
		tell_object(me, HIY "你的大金剛神通運行完畢，將內力收回丹田。\n" NOR);
		me->start_busy(random(4));
	}
}
jingang-quan/jingang.vnsjingang-quan/jingang.c.bak);
		me->add("str",count * 40);
		me->set_temp("jingang", 1);

		me->start_call_out( (: call_other, __FILE__, "remove_effect", me, count :), 5);

		me->set("neili",0);
		me->set("jing",0);
		me->set("qi",10);
		COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);
		me->unconcious();
		msg = HIC "$N用盡了最后一點氣力, 噴出一口鮮血, 一頭栽倒在地!\n" NOR;
		message_vision(msg, me, target);

		return 1;
	}
}

void remove_effect(object me, int amount)
{
	
	if ( (int)me->query_temp("jingang") ) 
	{
	me->set("str", amount);
	
	me->delete_temp("jingang");
	tell_object(me, HIY "你的大金剛神通運行完畢，將內力收回丹田。\n" NOR);

	}
}
起，一式「八方雨」，雙手雙腿齊出，令$n無可躲藏",    
    "force" : 230,
    "dodge" : 15,
    "damage": 10,
    "lvl" : 20,
    "skill_name" : "八方雨",
    "damage_type" : "瘀傷"
]),
([  "action" : "$N雙掌虛含，掌緣下沉，一式「掌心雷」，緩緩向$n推出",
    "force" : 270,
    "dodge" : 5,
    "damage": 20,
    "lvl" : 30,
    "skill_name" : "掌心雷",
    "damage_type" : "瘀傷"
]),
([  "action" : "$N一臂前伸，一臂后指，一式「五指山」，攻向$n的身前身后",    
    "force" : 320,
    "dodge" : 10,
    "damage": 15,
    "lvl" : 40,
    "skill_name" : "五指山",
    "damage_type" : "瘀傷"
]),
([  "action" : "$N一式「觀音渡」，兩手十指虛點$n的全身三十六道要穴",
    "force" : 380,
    "dodge" : 25,
    "damage": 25,
    "lvl" : 48,
    "skill_name" : "觀音渡",
    "damage_type" : "瘀傷"
]),
([  "action" : "$N兩目內視，雙手內籠，一式「天龍唱」，四面八方響起震人心魄的
龍吟",
    "force" : 450,
    "dodge" : 15,
    "damage": 35,
    "lvl" : 54,
    "skill_name" : "天龍唱",
    "damage_type" : "瘀傷"
]),
([  "action" : "$N似笑非笑，雙拳無形無定，一式「如來笑」，驟然擊向$n的前胸",
    "force" : 530,
    "dodge" : 20,
    "damage": 50,
    "lvl" : 60,
    "skill_name" : "如來笑",
    "damage_type" : "瘀傷"
])
});

int valid_enable(string usage) { return  usage=="cuff" || usage=="parry"; }     

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練大金剛拳必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 10)
   return notify_fail("你的混元一氣功火候不夠，無法學大金剛拳。\n")
;
    if ((int)me->query("max_neili") < 50)
   return notify_fail("你的內力太弱，無法練大金剛拳。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("jingang-quan",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[random(i)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練大金剛拳。\n");
    me->receive_damage("qi", 30);
    me->add("neili", -10);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"jingang-quan/" + action;
}

lvl" : 24,
        "skill_name" : "赤日金鼓",
        "damage_type" : "割傷",
]),
([      "action" : "$N一招「漢將當關」，無數刀尖化作點點繁星，向$n的$l挑去",
        "force" : 180,
        "dodge" : 10,
        "parry" : 5,
        "damage": 35,
        "lvl" : 30,
        "skill_name" : "漢將當關",
        "damage_type" : "割傷"
]),
([      "action" : "$N雙手合執$w，一招「鮑魚之肆」，擰身急轉，刀尖直刺向$n的雙眼
",
        "force" : 210,
        "dodge" : 15,
        "parry" : 15,
        "damage": 40,
        "lvl" : 36,
        "skill_name" : "鮑魚之肆",
        "damage_type" : "割傷"
]),
([      "action" : "$N一招「旁敲側擊」，手中$w划出一個大平十字，向$n縱橫劈去",
        "force" : 240,
        "dodge" : 15,
        "parry" : 15,
        "damage": 50,
        "lvl" : 42,
        "skill_name" : "旁敲側擊",
        "damage_type" : "割傷"
]),
([      "action" : "$N反轉刀尖對准自己，一招「長者折枝」，全身一個翻滾，$w向$n攔
腰斬去",
        "force" : 280,
        "dodge" : 20,
        "parry" : 10,
        "damage": 60,
        "lvl" : 48,
        "skill_name" : "長者折枝",
        "damage_type" : "割傷"
]),
([      "action" : "$N一招「赤日炎炎」，$w的刀光仿佛化成一簇簇烈焰，將$n團團圍繞
",
        "force" : 320,
        "dodge" : 10,
        "parry" : 20,
        "damage": 75,
        "lvl" : 54,
        "skill_name" : "赤日炎炎",
        "damage_type" : "割傷"
]),
([      "action" : "$N刀尖平指，一招「大海沉沙」，一片片切骨刀氣如颶風般裹向$n的
全身",
        "force" : 370,
        "dodge" : 5,
        "parry" : 25,
        "damage": 90,
        "lvl" : 60,
        "skill_name" : "大海沉沙",
        "damage_type" : "割傷"
]),
});

int valid_enable(string usage) { return (usage == "blade") || (usage == "parry")
; }

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 100)
                return notify_fail("你的內力不夠。\n");
/*      if ((int)me->query_skill("taiji-shengong", 1) < 20)
                return notify_fail("你的太極神功火候太淺。\n");
        if ((int)me->query_skill("taiji-quan", 1) < 20)
                return notify_fail("你的太極拳火候太淺。\n");
*/      return 1;
}

mapping query_action(object me, object weapon)
{
int zhaoshu, level;

zhaoshu = sizeof(action)-1;
level   = (int) me->query_skill("jinwu-dao",1);

if (level < 60 )
zhaoshu--;
if (level < 55 )
zhaoshu--;
if (level < 50 )
zhaoshu--;
if (level < 40 )
zhaoshu--;
if (level < 30 )
zhaoshu--;
if (level < 20 )
zhaoshu--;
if (level < 10 )
zhaoshu--;

return action[random(zhaoshu)];
}

int practice_skill(object me)
{
        object weapon;

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "blade")
                return notify_fail("你使用的武器不對。\n");
        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力不夠練金烏刀法。\n");
        me->receive_damage("qi", 30);
        return 1;
}

	"force"  : 150,
	"dodge"  : 20,
	"damage" : 45,
	"lvl"    : 40,
	"skill_name" : "藍田美玉",
	"damage_type" : "瘀傷"
]),
([	"action" : "$N一招「金玉其外」，雙拳一合，$n只覺到處是$N的拳影",
	"force"  : 160,
	"dodge"  : 25,
	"damage" : 60,
	"lvl"    : 60,
	"skill_name" : "金玉其外",
	"damage_type" : "瘀傷"
]),
([	"action" : "$N繞著$n一轉，滿場游走，拳出如風，不絕擊向$n，正是一招
「金玉滿堂」",
	"force"  : 170,
	"dodge"  : 30,
	"damage" : 60,
	"lvl"    : 80,
	"skill_name" : "金玉滿堂",
	"damage_type" : "瘀傷"
]),
([	"action" : "只見$N一個側身退步，左手虛晃，突然猛跨兩步，已到$n面前，
右拳陡出，事先絕無征兆，迅如崩雷，一招「點石成金」擊向$n的前胸",
	"force"  : 180,
	"dodge"  : 35,
	"damage" : 80,
	"lvl"    : 100,
	"skill_name" : "點石成金",
	"damage_type" : "瘀傷"
]),
([	"action" : "$N一招「眾口鑠金」，扑向$n，似乎$n的全身都被拳影籠罩",
	"force"  : 280,
	"dodge"  : 30,
	"damage" : 100,
	"lvl"    : 120,
	"skill_name" : "眾口鑠金",
	"damage_type" : "瘀傷"
]),
});

int valid_enable(string usage) { return usage=="cuff" || usage=="parry"; }

int valid_combine(string combo) { return combo=="wuluo-zhang"; }

int valid_learn(object me)
{
    if ((int)me->query_skill("kurong-changong",1) < 20)
		return notify_fail("你的枯榮禪功火候不夠，無法練金玉拳。\n");
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練金玉拳必須空手。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練金玉拳。\n");
	return 1;
}
mapping query_action(object me, object weapon)
{
	int i, level;
	level = (int) me->query_skill("jinyu-quan",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練金玉拳。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}


jiuyang-shengong/( (: call_other, __FILE__, "remove_effect", me, skill/3 :), skill);

	if( me->is_fighting() ) me->start_busy(3);

	return 1;
}

void remove_effect(object me, int amount)
{
   if ( (int)me->query_temp("powerup") ) {
	me->add_temp("apply/attack", - amount);
	me->add_temp("apply/dodge", - amount);
	me->delete_temp("powerup");
	tell_object(me, "你的九陽神功運行完畢，將內力收回丹田。\n");}
}
receive_damage("jing", damage * 2 );
			if( (int)ob[i]->query("neili") < skill * 2 )
				ob[i]->receive_wound("jing", damage);
			tell_object(ob[i], "你覺得眼前一陣金星亂冒，耳朵痛得像是要裂開一樣  \n");
		}
		if( !ob[i]->is_killing(me) ) ob[i]->kill_ob(me);
		if( !me->is_killing(ob[i]) ) me->fight_ob(ob[i]);
	}

	return 1;
}

jiuyang-shengong.cjiuyin-baiguzhao.c); i > 0; i--)
		if(level >= action[i-1]["lvl"])
			return action[i-1]["skill_name"];
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level = (int) me->query_skill("jiuyin-baiguzhao",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
            return action[NewRandom(i, 5, level/5)];

}
int practice_skill(object me)
{
	object* ob, obj;
	int i,skill,damage;

	skill = me->query_skill("jiuyin-baiguzhao",1);
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 50)
		return notify_fail("你的內力不夠練九陰白骨爪。\n");
	if( environment(me)->query("no_fight") )
		return notify_fail("這里練功會誤傷他人。\n");
	if( environment(me)->query("sleep_room") )
		return notify_fail("這里練功會打擾別人休息。\n");
        if( !objectp(obj=present("corpse", environment(me))))
		return notify_fail("練九陰白骨抓需有尸體。\n");
        if( skill > 100 && me->query("shen") > -100)
		return notify_fail("這種邪惡武功不是俠義道當練的。\n");
	me->receive_damage("qi", 40);
	me->add("neili", -40);
	tell_room(environment(me), 
HIB"只見"+me->query("name")+"左手上圈下鉤、左旋右轉，連變了七八般花樣，驀地里右手一伸，噗的
一響，五根手指直插入地上尸體的腦門。隨后五根手指"HIR"血淋淋"HIB"的提將起來。\n");
//	ob = all_inventory(environment(me));
//	for(i=0; i<sizeof(ob); i++)
//	{
//		if( !living(ob[i]) || ob[i]==me ) continue;
//		if(skill+random(skill/2)<(int)ob[i]->query("con")*2) continue;
//		damage = skill - ((int)ob[i]->query("neili") );
//		if( damage > 0 )
//		{
//			ob[i]->receive_damage("qi", damage );
//			if( (int)ob[i]->query("neili") < skill * 2 )
//				ob[i]->receive_wound("qi", damage);
//			tell_object(ob[i], 
//HIB"忽然眼前黑影狂舞，你覺得眼前一陣陰氣直襲面門，全身驟然感到要被撕裂開一樣！\n"NOR);
//		}
//		if( userp(ob[i]) ) ob[i]->fight_ob(me);
//		else if( !ob[i]->is_killing(me) ) ob[i]->kill_ob(me);
//	}
	return 1;
}
void skill_improved(object me)
{
    tell_object(me, HIR "你忽然從心底生出一股惡念：殺、殺、殺！我要殺絕天下人！\n" NOR );
    me->add("shen", -200);
}
mixed hit_ob(object me, object victim, int damage_bonus)
{
	if( damage_bonus < 100 ) return 0;

	if( random(damage_bonus/2) > victim->query_str() ) {
		victim->receive_wound("qi", (damage_bonus - 100) / 2 );
		return HIR "你聽到「喀啦」一聲輕響，竟似是骨碎的聲音！\n" NOR;
	}
}

->query_skill("jiuyin-zhua", 1) < 85 )
        return notify_fail(WHT"你的九陰白骨爪不夠嫻熟，還使不出「亡魂一擊」。\n"NOR);

    if( (int)me->query_skill("force", 1) < 85 )
        return notify_fail(RED"你的內功心法火候不夠，使用「亡魂一擊」會震傷自己的經脈。\n"NOR);

    msg = HIC "$N突然將雙掌變爪合于胸前，然后象風車般急轉數圈，而后施展出「亡魂一擊」，雙爪向外一翻，隨后繞著$n疾轉數圈，又回到原地。\n"NOR;

    if (random(me->query_skill("force")) > target->query_skill("force")/2||
        random(me->query("combat_exp")) > (int)target->query("combat_exp")/3 )
    {
        me->start_busy(2);
        target->start_busy(random(3));

        damage = (int)me->query_skill("jiuyin-zhua", 1);

        damage = damage + random(damage);

        target->receive_damage("qi", damage);
        target->receive_wound("qi", damage/2);
        target->receive_damage("jing", damage/2);
        target->receive_wound("jing", damage/4);
        me->add("neili", -damage/3);

   msg += HIC"原來$N已在$n頭頂留下了五個整整齊齊的指洞！$n只覺得頭頂一陣麻痒，就軟軟地歪在一邊了。厲害！！！\n"NOR;
    } else
    {
        me->start_busy(4);
        msg += HIY"可是$p看破了$P的企圖，閃身護頭躲在了一邊。\n"NOR;
    }
    message_combatd(msg, me, target);

    if(userp(target)) target->fight_ob(me);
    else if( !target->is_killing(me) ) target->kill_ob(me);
    return 1;
}

// jiuyin-zhua.c -九陰白骨爪
// Modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([  "action" : "$N身形微晃，一招「相思深入骨」，十指如戟，插向$n的雙肩鎖骨",
    "force" : 200,
    "dodge" : 10,
    "damage_type" : "內傷",
    "lvl"   : 0,
    "skill_name" : "相思深入骨" ,
]),
([  "action" : "$N出手如風，十指微微抖動，一招「素手裂紅裳」抓向$n的前胸",  
    "force" : 220,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl"   : 10,
    "skill_name" : "素手裂紅裳" ,
]),
([  "action" : "$N雙手忽隱忽現，一招「鐵指破殘陽」，鬼魅般地抓向$n的肩頭",  
    "force" : 250,
    "dodge" : 30,
    "damage_type" : "內傷",
    "lvl"   : 20,
    "skill_name" : "鐵指破殘陽" ,
]),
([  "action" : "$N左手當胸畫弧，右手疾出，一招「明月當空照」，猛地抓向$n的額
頭",
    "force" : 290,
    "dodge" : 25,
    "damage_type" : "內傷",
    "lvl"   : 31,
    "skill_name" : "明月當空照" ,
]),
([  "action" : "$N使一招「陰氣動四方」，激起漫天的勁風，撞向$n",
    "force" : 340,
    "dodge" : 40,
    "damage_type" : "內傷",
    "lvl"   : 43,
    "skill_name" : "陰氣動四方" ,
]),
([  "action" : "$N突然雙手平舉，$n一呆，正在猜測間，便見$N嗖的一下將雙手    
收回胸前，接著一招「森然見白骨」，五指如鉤，直抓向$n的腰間",
    "force" : 400,
    "dodge" : 35,
    "damage_type" : "內傷",
    "lvl"   : 56,
    "skill_name" : "森然見白骨" ,
]),
([  "action" : "$N使出「陰魂仍不散」，驀然游身而上，繞著$n疾轉數圈，$n正眼  
花繚亂間，$N已悄然停在$n身后，右手划出一道光圈，接著右手沖出光圈猛抓$n的后背",  
    "force" : 430,
    "parry" : 20,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl"   : 71,
    "skill_name" : "陰魂仍不散" ,
]),
([  "action" : "$N面無表情，雙臂忽左忽右地疾揮，使出「九陰搜魂手」，十指    
忽伸忽縮，迅猛無比地襲向$n全身各處大穴",
    "force" : 460,
    "parry" : 5,
    "dodge" : 30,
    "damage_type" : "內傷",
    "lvl"   : 87,
    "skill_name" : "九陰搜魂手" ,
]),
([  "action" : "$N左手輕揮，蕩起陣陣陰風，一道青光閃過，$N的右手已變成青白  
色，接著集中精神施展出「爪現鬼神亡」祭出九道爪影擊向$n的頭頂",
    "force" : 520,
    "parry" : 10,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl"   : 110,
    "skill_name" : "爪現鬼神亡" ,
]),
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"; }  

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練九陰白骨爪必須空手。\n");
    if ((int)me->query_skill("force", 1) < 50)
   return notify_fail("你的內功心法火候不夠，練九陰白骨爪會走火入魔
。\n");
    if ((int)me->query("max_neili") < 300)
   return notify_fail("你的內力太弱，無法練九陰白骨爪。\n");
    return 1;
}


string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i-1]["lvl"])
   return action[i-1]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int)me->query_skill("jiuyin-zhua",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
   return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 8)
   return notify_fail("你的內力不夠練九陰白骨爪。\n");
    if (me->query_skill("jiuyin-zhua", 1) < 60)
   me->receive_damage("qi", 15);
    else
    me->receive_damage("qi", 30);
    me->add("neili", -5);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"jiuyin-zhua/" + action;
}

mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
    if( random(me->query_skill("jiuyin-zhua",1)) > 50) {
    victim->apply_condition("jy_poison", random(2) + 1 +
   victim->query_condition("jy_poison"));
    }
}
juemen-gun.ce_msg))];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練絕門棍。\n");
    me->receive_damage("qi", 20);
    return 1;
}

int valid_effect(object me, object weapon, string name, int skill)
{
}

ingli", (int)me->query("max_jingli"));
	return 1;
}
king-of-dragon/lifeheal.cn" NOR, me);

	me->add_temp("apply/attack", skill);
	me->add_temp("apply/dodge", skill);
	me->set_temp("powerup", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, skill :), skill);

	if( me->is_fighting() ) me->start_busy(3);

	return 1;
}

void remove_effect(object me, int amount)
{
   if ( (int)me->query_temp("powerup") ) {
	me->add_temp("apply/attack", - amount);
	me->add_temp("apply/dodge", - amount);
	me->delete_temp("powerup");
    tell_object(me, "你的君臨天下神功運行完畢，將內力收回丹田。\n");}
}
ry("max_neili") / 10);
		if( damage > 0 ) {
			ob[i]->receive_damage("jing", damage * 2 );
			if( (int)ob[i]->query("neili") < skill * 2 )
				ob[i]->receive_wound("jing", damage);
            tell_object(ob[i], "你只覺得眼前一片模糊，朦朧中......\n");
		}		
		if( !ob[i]->is_killing(me) ) ob[i]->kill_ob(me);
		if( !me->is_killing(ob[i]) ) me->fight_ob(ob[i]);

	}

	return 1;
}

ring func)
{
    return __DIR__"king-of-dragon/" + func;
}
mixed hit_ob(object me, object victim, int damage_bonus)
{
	if ( ! userp (victim)) 
	if ( living (victim)) victim -> unconcious () ;
}

 40,
        "force": 300,
        "damage_type": "瘀傷"
    ]),
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
        return notify_fail("練空明拳必須空手。\n");
	if ((int)me->query("max_neili") < 100)
        return notify_fail("你的內力太弱，無法練空明拳。\n");
	return 1;
}

mapping query_action(object me, object weapon)
{
	return action[random(sizeof(action))];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 40)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 10)
        return notify_fail("你的內力不夠了！休息一下再練吧。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -5);
	return 1;
}

//kuang.c -「狂風二十一式」
// Modified by Venus Oct.1997
#include <ansi.h>
#include <combat.h>

inherit F_SSERVER;
int perform(object me, object target)
{
    int damage;
    string msg;
    if( !target ) target = offensive_target(me);
    if( !target||!target->is_character()||!me->is_fighting(target) )
    return notify_fail("你只能對戰斗中的對手使用「狂風二十一式」。\n");
    if( (int)me->query_skill("kuangfeng-blade",1) < 70)
    return notify_fail("你目前功力還使不出「狂風二十一式」。\n");
    if( (int)me->query("neili") < 200 )
    return notify_fail("你的內力不夠。\n");
    me->add("neili", -60);
    msg = HIC"$N淡然一笑，本就快捷絕倫的刀法驟然變得更加凌厲！就在這一瞬之間，"+
    "$N已劈出二十一刀！刀夾雜著風，風里含著刀影！$n只覺得心跳都停止了！\n"NOR;
    me->start_busy(2);

    if( random(me->query("combat_exp")) >
      (int)target->query("combat_exp")/3 ) {
    target->start_busy( (int)me->query_skill("kuangfeng-blade") / 20 );
    damage = (int)me->query_skill("kuangfeng-blade", 1)+(int)me->query_skill("blade", 1)/2;
    damage = damage + random(damage);

    target->receive_damage("qi", damage);
    target->receive_wound("qi", damage/2);
   msg += RED
"只見$n已被$N切得體無完膚，血如箭般由全身噴射而出！\n"NOR;
    } else {
    msg += HIC "可是$p急忙抽身躲開，$P這招沒有得逞。\n" NOR;
    }
    message_combatd(msg, me, target);
    if(userp(target)) target->fight_ob(me);
    else if( !target->is_killing(me) ) target->kill_ob(me);

    return 1;
}

//kuangfeng-blade 狂風刀法
// Made by deaner
#include <ansi.h>
inherit SKILL;

mapping *action = ({
([  "action" : "$N手中$w輕揮，一招"+HIW"「風平浪靜」"NOR+"，看似平緩實則迅速地向
$n的$l撩去",
    "force" : 150,
    "dodge" : 10,
    "lvl" : 0,
    "skill_name" : "風平浪靜",
    "damage_type" : "割傷"
]),
([  "action" : "$N一招"+HIW"「風起云涌」"NOR+"，右腳一點，$w寒光閃閃，快速涌$n的
$l",
    "force" : 170,
    "dodge" : 35,
    "damage" : 20,
    "lvl" : 10,
    "skill_name" : "風起云涌",
    "damage_type" : "割傷"
]),
([  "action" : "$N一招"+HIY"「風卷殘云」"NOR+"，手臂一掄，刀鋒一卷，自上而下斬向
$n",
    "force" : 190,
    "dodge" : 25,
    "damage" : 25,
    "lvl" : 20,
    "skill_name" : "風卷殘云",
    "damage_type" : "割傷"
]),
([  "action" : "$N一招"+HIC"「風流云散」"NOR+"，側身而退，$w卻在胸前划出一道圓弧
，橫劈$n的$l",
    "force" : 210,
    "dodge" : 15,
    "damage" : 35,
    "lvl" : 32,
    "skill_name" : "風流云散",
    "damage_type" : "割傷"
]),
([  "action" : "$N側身滑步而上，一招"+HIW"「風聲鶴唳」"NOR+"，欺至$n身前，$w猛砍
$n的$l",
    "force" : 230,
    "dodge" : 20,
    "damage" : 50,
    "lvl" : 45,
    "skill_name" : "風聲鶴唳",
    "damage_type" : "割傷"
]),
([  "action" : "$N快速揮舞$w，使出一招"+RED"「風中殘燭」"NOR+"，幻起一片刀花罩向
$n的$l",
    "force" : 260,
    "dodge" : 15,
    "damage" : 65,
    "lvl" : 58,
    "skill_name" : "風中殘燭",
    "damage_type" : "割傷"
]),
([  "action" : "$N一招"+HIC"「風刀霜劍」"NOR+"，只見漫天刀光閃爍，重重刀影向$n的
全身涌去",
    "force" : 290,
    "dodge" : 20,
    "damage" : 85,
    "lvl" : 71,
    "skill_name" : "風刀霜劍",
    "damage_type" : "割傷"
]),
([  "action" : "$N使一招"+HIW"「風馳電掣」"NOR+"，$w舞出陣陣光影向$n的$l涌去",  
    "force" : 320,
    "dodge" : 40,
    "damage" : 105,
    "lvl" : 86,
    "skill_name" : "風馳電掣",
    "damage_type" : "割傷"
]),
([  "action" : "$N一招"+HIB"「風雨飄搖」"NOR+"，$w刀光閃爍不定，似幻似真地逼$n的
$l",
    "force" : 350,
    "dodge" : 10,
    "damage" : 125,
    "lvl" : 101,
    "skill_name" : "風雨飄搖",
    "damage_type" : "割傷"
]),
([  "action" : "$N挪步小退，一招"+HIC"「風花雪月」"NOR+"，手中$w輕描淡寫地揮出一
刀，隨即又“唰唰”連
劈出兩刀，后發先至，洒向$n的$l",
    "force" : 400,
    "dodge" : 20,
    "damage" : 150,
    "lvl" : 120,
    "skill_name" : "風花雪月",
    "damage_type" : "割傷"
]),
});


int valid_enable(string usage) { return usage == "blade" || usage == "parry"; } 

int valid_learn(object me)
{
    mapping myfam;
    myfam = (mapping)me->query("family");
    if(!myfam || myfam["master_id"] != "buke bujie")
    return notify_fail("你無法向此人學習狂風刀法。\n");
    if ((int)me->query("max_neili") < 300)
    return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("force", 1) < 60)
    return notify_fail("你的內功心法火候太淺。\n");
    if ((int)me->query_skill("dodge", 1) < 60)
    return notify_fail("你的輕功火候太淺。\n");
    if ((int)me->query_dex() < 25)
    return notify_fail("你的身法還不夠靈活。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("kuangfeng-blade",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "blade")
    return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 30)
    return notify_fail("你的體力不夠練狂風刀法。\n");
    me->receive_damage("qi", 25);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"kuangfeng-blade/" + action;
}
kuangfeng-jian/  柑焱夥閃  故雇輳輳n"NOR);
    }
    msg = HIC "$N心念電閃，一提內力，勒手仗劍，運勁于臂，呼的一聲向$n擲了出去，\n"NOR;
    if ( random(me->query("combat_exp")) > (int)target->query("combat_exp")/3 )
    {
        me->start_busy(2);
        target->start_busy(random(3));
        damage = target->query("qi");
        target->receive_damage("qi", damage-10);
        target->receive_wound("qi", damage-10);
msg += HIC"$n疾忙躍起，但劍如電閃，只覺一陣劇痛，劍刃攔腰而過，鮮血飛濺，皮肉卷起！\n"NOR;
        me->set("neili", 100);
    } else
    {
        me->start_busy(2);
msg += HIY"可是$n輕輕一笑，側身伸指，正彈在$N的劍脊上，劍斜飛落地。\n"NOR;
    }
    weapon->move(environment(me));
    message_combatd(msg, me, target);
    if(!target->is_fighting(me)) target->fight_ob(me);
    return 1;
}
  梗      縊拇α    ,
    "damage" : 190,
    "dodge" : 25,
    "force" : 25,
    "lvl"   : 40,
    "skill_name" : "風卷殘云",
    "damage_type" : "割傷"
]),
([  "action" : "$N仰天一聲清嘯，斜行向前，$w橫削直擊，迅捷無比，擊向$n的$l",
    "damage" : 210,
    "dodge" : 15,
    "force" : 35,
    "lvl"   : 60,
    "skill_name" : "風流云散",
    "damage_type" : "割傷"
]),
});

int valid_enable(string usage) { return usage == "sword" || usage == "parry"; } 

int valid_learn(object me)
{
    mapping myfam;
    myfam = (mapping)me->query("family");
    if(!myfam || myfam["master_id"] != "feng buping")
        return notify_fail("你無法向此人學習狂風快劍。\n");
    if ((int)me->query("max_neili") < 300)
        return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("force", 1) < 60)
        return notify_fail("你的內功心法火候太淺。\n");
    if ((int)me->query_skill("dodge", 1) < 60)
        return notify_fail("你的輕功火候太淺。\n");
    if ((int)me->query_dex() < 25)
        return notify_fail("你的身法還不夠靈活。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("kuangfeng-jian",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "sword")
        return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 30)
        return notify_fail("你的體力不夠練狂風快劍。\n");
    me->receive_damage("qi", 25);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"kuangfeng-jian/" + action;
}
kuihua-xinfa/kuihua-xinfa.ctring func)
{
	return __DIR__"kuihua-xinfa/" + func;
}

。n");

    write( HIW "你全身放松，坐下來開始運功療傷。\n" NOR);
    message("vision",
   HIW + me->name() + "吐出一口瘀血，臉色看起來好多了。\n" NOR,
   environment(me), me);

    me->receive_curing("qi", 10 + (int)me->query_skill("force")/5 );
    me->add("neili", -50);
    me->set("jiali", 0);

    return 1;
}

, "你的枯榮禪功運行完畢，將內力收回丹田。\n");
}

turn 1;
}

int practice_skill(object me)
{
	return notify_fail("枯榮禪功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"kurong-changong/" + func;
}


// lanhua-shou.c -蘭花拂穴手
// Modified by Venus Oct.1997
#include <ansi.h>
inherit SKILL;

mapping *action = ({
([  "action" : "$N右手五指分開，微微一撥，再并攏向外一拂，一式「花疏云淡」，
拂向$n的膻中要穴",
    "force" : 150,
    "dodge" : 5,
    "damage_type" : "瘀傷",
    "lvl" : 0,
    "skill_name" : "花疏云淡"
]),
([  "action" : "$N側身掠向$n，一式「輕云蔽月」，左手五指暗暗運氣撥向$n的胸前
大穴",
    "force" : 160,
    "dodge" : 5,
    "damage_type" : "瘀傷",
    "lvl" : 10,
    "skill_name" : "輕云蔽月"
]),
([  "action" : "$N使一式「云破月來」，左掌虛攻，右手并指斜前翻出，拍向$n的肩
井穴",
    "force" : 170,
    "dodge" : 15,
    "damage_type" : "內傷",
    "lvl" : 20,
    "skill_name" : "云破月來"
]),
([  "action" : "$N左掌護胸，微微側身，右掌勾上，一式「幽蘭弄影」，緩緩拂向$n
的天突穴",
    "force" : 190,
    "dodge" : -5,
    "damage_type" : "瘀傷",
    "lvl" : 30,
    "skill_name" : "幽蘭弄影"
]),
([  "action" : "$N使一式「芳蘭竟體」，身影不定地掠至$n身后，猛地拍向$n的大椎
穴",
    "force" : 210,
    "dodge" : 10,
    "damage_type" : "瘀傷",
    "lvl" : 42,
    "skill_name" : "芳蘭竟體"
]),
([  "action" : "$N兩臂左手下右手上地于胸前成蘭花指形翻上，微吸一口氣，一式「
蘭桂齊芳」，雙手向外快速一撥，激出數道勁氣逼向$n的華蓋、璇璣、紫宮几處大穴",
    "force" : 240,
    "dodge" : 5,
    "damage_type" : "瘀傷",
    "lvl" : 54,
    "skill_name" : "蘭桂齊芳"
]),
([  "action" : "$N衣袂飄飄，向上躍起，一式「月影花香」，居高臨下，拂出一道勁
力罩向$n的百會大穴",
    "force" : 270,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl" : 66,
    "skill_name" : "月影花香"
]),
([  "action" : "$N凝神施展出「花好月圓」，雙手疾拂，一環環的勁氣逼向$n的上中
下各大要穴",
    "force" : 300,
    "dodge" : 25,
    "damage_type" : "內傷",
    "lvl" : 80,
    "skill_name" : "花好月圓"
])
});

int valid_enable(string usage) { return usage=="hand" ||  usage=="parry"; }     

int valid_combine(string combo) { return combo=="tanzhi-shentong"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
       return notify_fail(HIC"練蘭花拂穴手必須空手。\n"NOR);
    if ((int)me->query_skill("bibo-shengong", 1) < 20)
       return notify_fail("你的碧波神功火候不夠，無法學蘭花拂穴手。\n");
    if ((int)me->query("max_neili") < 200)
       return notify_fail("你的內力太弱，無法練蘭花拂穴手。\n");
    return 1;
}
string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("lanhua-shou", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
       return notify_fail("你的體力太低了，無法練蘭花拂穴手。\n");
    me->receive_damage("qi", 25);
    return 1;
}

// ren.c  兩儀劍法「天地同仁」

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
    int damage;
    string msg;
    object weapon;

    if (!target ) target = offensive_target(me);
    if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
        return notify_fail(RED"開什么玩笑，沒裝備劍就想使「天地同仁」？\n"NOR);
    if (!target || !target->is_character() || !me->is_fighting(target) )
        return notify_fail("「天地同仁」只能對戰斗中的對手使用。\n");
    if ((int)me->query_skill("liangyi-jian", 1) < 60 )
        return notify_fail(WHT"你兩儀劍法不夠嫻熟，使不出「天地同仁」。\n"NOR);
    if ((int)me->query_skill("taiji-shengong", 1) < 90 )
        return notify_fail(RED"你太極神功火候不夠，使不出「天地同仁」。\n"NOR);
    if ((int)me->query("max_neili")<400)
        return notify_fail(RED"你內力修為不足，無法運足內力。\n"NOR);
    if ((int)me->query("neili")<200)
    {
        return notify_fail(HIC"你現在內力不夠，沒能將「天地同仁」使完！\n"NOR);
    }
    msg = HIC "$N手中長劍劍芒躍動，劍光暴長，劍尖顫動似乎分左右刺向$n，\n"NOR;
    msg += HIC"$n看到劍光偏左，疾側身右轉，但只這一剎，劍光剎時襲向右首！\n"NOR;
    if (random(me->query_skill("force")) > target->query_skill("force")/2|| 
       random(me->query("combat_exp")) > (int)target->query("combat_exp")/3 )
    {
        me->start_busy(2);
        target->start_busy(random(3));
        damage = (int)me->query_skill("liangyi-jian", 1) + (int)me->query_skill("sword", 1)/2;
        damage = damage/2 + random(damage);
        target->receive_damage("qi", damage/2);
        target->receive_wound("qi", damage/3);
    msg += HIC"$n疾忙左轉，卻發現$N的劍根本沒有右偏，一式「天地同仁」在\n"NOR;
    msg += HIC"$n左胸留下一個血洞！$n一低頭，看到胸口鮮血涌泉噴出！\n"NOR;
        me->add("neili", -damage/5);
    } else
    {
        me->start_busy(2);
    msg += HIY"可是$p輕輕一笑，側身右轉，果然$P的劍式突然左展，在$p身前\n"NOR;
    msg += HIY"划過，僅差半寸。一根毫毛都沒傷到。\n"NOR;
    }
    message_combatd(msg, me, target);
    if(!target->is_fighting(me)) target->fight_ob(me);
//    if(userp(target)) target->fight_ob(me);
//    else if( !target->is_killing(me) ) target->kill_ob(me);
    return 1;
}
ㄔ俗恪柑斕贗  省溝哪諏Α  n"NOR);
    if ((int)me->query("neili")<100)
    {
      me->set("neili",10);
      return notify_fail(HIC"你現在內力不夠，沒能將「天地同仁」使完！\n
"NOR);
    }
    msg = HIC "$N手中長劍劍芒躍動，劍光暴長，劍尖顫動似乎分左右刺向$n，$n看到劍光偏左，疾側身向右轉，但只這一剎，劍光剎時襲向右首！\n"NOR;
    if (random(me->query_skill("force")) > target->query_skill("force")/2||
  random(me->query("combat_exp")) > (int)target->query("combat_exp")/3
)
    {
   me->start_busy(2);
   target->start_busy(random(3));
   damage = (int)me->query_skill("liangyi-jian", 1);
   damage = damage + random(damage);
   target->receive_damage("qi", damage);
   target->receive_wound("qi", damage*2);
   target->receive_damage("jing", damage);
   target->receive_wound("jing", damage/2);
   msg += HIC"$n疾忙左轉，卻發現$N的劍根本沒有右偏，一式「天地同仁」在$n左胸留下一個血洞！$n一低頭，看到胸口鮮血涌泉噴出！\n"NOR;
   me->add("neili", -damage/5);
    } else
    {
   me->start_busy(2);
   msg += HIY"可是$p輕輕一笑，側身右轉，果然$P的劍式突然左展，在$p身前划過，僅差半寸。\n"NOR;
    }
    message_vision(msg, me, target);
    return 1;
}

//liangyi-jian.c 兩儀劍法

inherit SKILL;

mapping *action = ({
([      "name":   "法分玄素",
        "action" : "$N劍尖劍芒暴長，一招「法分玄素」，手中$w自左下大開大闔，
一劍斜上刺向$n的$l",
        "dodge" : 20,
        "damage" : 180,
        "lvl" : 0,
        "damage_type" : "刺傷"
]),
([      "name":   "道盡陰陽",
        "action" : "$N劍勢圈轉，手中$w如粘帶連，平平展展揮出，一招「道盡陰
陽」輕輕划過$n的$l",
        "dodge" : 20,
        "damage" : 160,
        "lvl" : 10,
        "damage_type" : "刺傷"
]),
([      "name":   "淵臨深淺",
        "action" : "$N長劍輕靈跳動，劍隨身長，右手$w使出一式「淵臨深淺」刺向
$n的$l",
        "dodge" : 15,
        "damage" : 150,
        "lvl" : 20,
        "damage_type" : "刺傷"
]),
([      "name":   "水泛青黃",
        "action" : "$N長劍下指，劍意流轉，一招「水泛青黃」直取$n的$l",
        "dodge" : 15,
        "damage" : 200,
        "lvl" : 30,
        "damage_type" : "刺傷"
]),
([      "name":   "云含吞吐",
        "action" : "$N劍芒吞吐，幻若靈蛇，右手$w使出一式「云含吞吐」，劍勢極
盡曼妙，刺向$n的$l",
        "dodge" : 25,
        "damage" : 180,
        "lvl" : 40,
        "damage_type" : "刺傷"
]),
([      "name":   "夢醒蝶庄",
        "action" : "$N屈腕云劍，劍光如彩碟紛飛，幻出點點星光，右手$w使出一式
「夢醒蝶庄」躍躍洒洒飄向$n的$l",
        "dodge" : 25,
        "damage" : 220,
        "lvl" : 50,
        "damage_type" : "刺傷"
]),
([      "name":   "人在遐邇",
        "action" : "$N揮劍分擊，劍勢自胸前躍出，右手$w一式「人在遐邇」，毫無
留戀之勢，刺向$n的$l",
        "dodge" : 15,
        "lvl" : 60,
        "damage" : 200,
        "damage_type" : "刺傷"
]),
([      "name":   "情系短長",
        "action" : "$N退步，左手劍指划轉，腰部一扭，右手$w一記「情系短長」自下
而上刺向$n的$l",
        "dodge" : 35,
        "damage" : 250,
        "lvl" : 80,
        "damage_type" : "刺傷"
]),
});

int valid_enable(string usage){return (usage== "sword") || (usage== "parry");}

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 200)
                return notify_fail("你的內力不夠。\n");
        if ((int)me->query_skill("taiji-shengong", 1) < 50)
                return notify_fail("你的太極神功火候太淺。\n");
        if ((int)me->query_skill("sword", 1) < (int)me->query_skill("liangyi-jian", 1) )
                return notify_fail("你的基本劍法火候太淺。\n");
        return 1;
}
mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("liangyi-jian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                       return action[NewRandom(i, 20, level/5)];

}

int practice_skill(object me)
{
        object weapon;

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不對。\n");
        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力不夠練兩儀劍法。\n");
        me->receive_damage("qi", 10);
        return 1;
}
string perform_action_file(string action)
{
        return __DIR__"liangyi-jian/" + action;
}

//liangyi-jian.c 兩儀劍法
// modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([      "name":   "法分玄素",
    "action" : "$N劍尖劍芒暴長，一招「法分玄素」，手中$w自左下大開大闔，
一劍向右上向$n的$l",
    "force" : 120,
    "dodge" : 20,
    "damage" : 300,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
([      "name":   "道盡陰陽",
    "action" : "$N長劍圈轉，一招「道盡陰陽」，手中$w平展下刺，一劍輕輕划
過$n的$l",
    "force" : 120,
    "dodge" : 20,
    "damage" : 280,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
([      "name":   "淵臨深淺",
    "action" : "$N長劍輕靈跳動，劍隨身長，右手$w使出一式「淵臨深淺」刺向$n的
$l",
    "force" : 140,
    "dodge" : 15,
    "damage" : 350,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
([      "name":   "水泛青黃",
    "action" : "$N長劍下指，劍意流轉，一招「水泛青黃」直取$n的$l",
    "force" : 150,
    "dodge" : 15,
    "damage" : 280,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
([      "name":   "云含吞吐",
    "action" : "$N劍芒吞吐，幻若靈蛇，右手$w使出一式「云含吞吐」，劍勢曼妙，
刺向$n的$l",
    "force" : 130,
    "dodge" : 25,
    "damage" : 300,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
([      "name":   "夢醒蝶庄",
    "action" : "$N屈腕云劍，劍光如彩碟紛飛，幻出點點星光，右手$w使出一式
「夢醒蝶庄」躍躍洒洒飄向$n的$l",
    "force" : 120,
    "dodge" : 25,
    "damage" : 320,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
([      "name":   "人在遐邇",
    "action" : "$N揮劍分擊，劍勢自胸前躍出，右手$w一式「人在遐邇」，毫無
留戀之勢，刺向$n的$l",
    "force" : 110,
    "dodge" : 15,
    "lvl" : 0,
    "damage" : 400,
    "damage_type" : "刺傷"
]),
([      "name":   "情系短長",
    "action" : "$N退步，左手劍指划轉，腰部一扭，右手$w一記「情系短長」自下
而上刺向$n的$l",
    "force" : 150,
    "dodge" : 35,
    "damage" : 400,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
});

int valid_enable(string usage) { return (usage == "sword") || (usage == "parry");}

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 200)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("taiji-shengong", 1) < 50)
   return notify_fail("你的太極神功火候太淺。\n");
    if ((int)me->query_skill("sword", 1) < (int)me->query_skill("liangyi-jian", 1) )
   return notify_fail("你的基本劍法火候太淺。\n");
    if ((int)me->query_skill("taiji-jian", 1) < (int)me->query_skill("liangyi-jian", 1) )
   return notify_fail("你的太極劍法火候太淺。\n");
    return 1;
}
mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("liangyi-jian",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
     return action[NewRandom(i, 20, level/5)];

}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "sword")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練兩儀劍法。\n");
    me->receive_damage("qi", 10);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"liangyi-jian/" + action;
}
// lingboweibu.c 凌波微步

inherit SKILL;

string *dodge_msg = ({
//	"$n一個「蜻蜓點水」，躲過了$N這一招。\n",
//	"$n身形向后一縱，使出一招「細胸巧翻云」，避過了$N的攻擊。\n",
//	"$n使出「虛懷若谷」，恰好躲過了$N的攻勢。\n"
        "但是$n身形飄忽，輕輕一縱，早已避開。\n",
        "$n身隨意轉，倏地往一旁挪開了三尺，避過了這一招。\n",
        "可是$n側身一讓，$N這一招扑了個空。\n",
        "卻見$n足不點地，往旁竄開數尺，躲了開去。\n",
        "$n身形微晃，有驚無險地避開了$N這一招。\n"
});

int valid_enable(string usage) 
{ 
	return (usage == "dodge") || (usage == "move"); 
}

int valid_learn(object me) { return 1; }

string query_dodge_msg(string limb)
{
        return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
        if( (int)me->query("qi") < 40 )
                return notify_fail("你的體力太差了，不能練凌波微步。\n");
        me->receive_damage("qi", 30);
        return 1;
}// throw.c 靈蛇杖法噴毒
// By Yzuo 97.04

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
	object weapon;
	string msg;

	if( !target ) target = offensive_target(me);

	if( environment(me)->query("no_fight") )
		return notify_fail("這里不能攻擊別人! \n");

	if( !target || !target->is_character() )
		return notify_fail("噴毒只能對對手使用。\n");

	if( (int)me->query_skill("hamagong", 1) < 40 )
		return notify_fail("你的蛤蟆功不夠嫻熟，不能噴毒。\n");

	if( (int)me->query_skill("lingshe-zhangfa", 1) < 40 )
		return notify_fail("你的靈蛇杖法不夠嫻熟，不能噴毒。\n");

	if( (int)me->query("neili", 1) < 400 )
		return notify_fail("你的內力不夠，不能噴毒。\n");

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "staff")
            return notify_fail("你使用的武器不對。\n");

	if( (string)weapon->query("id") != "she zhang" )
		return notify_fail("你手中沒有蛇杖，不能噴毒。\n");

        me->add("neili", -200);

	msg = MAG "$N喉間發出刺耳的格格聲響，蛇杖前頭的小蛇猛地揚頭，一陣粉紅毒霧帶著甜香噴向$n。\n";

	me->start_busy(1);
	if( random( (int)me->query_skill("lingshe-zhangfa",1))
          > random(target->query_skill("dodge")) )
        {
		msg += MAG "結果$p被$P杖頭小蛇一口噴中！\n" NOR;
		if (target->query("neili") < me->query("neili"))
		{
	msg += MAG "$p只聞到一陣甜香，眼前就模糊起來。\n" NOR;
	target->receive_damage("qi",(int)me->query_skill("lingshe-zhangfa",1));
	target->receive_wound("qi",15 + random(10));
	target->receive_wound("jing", 10);
	target->apply_condition("snake_poison", random(me->query_skill("lingshe-zhangfa",1)/10) + 1 +
		target->query_condition("snake_poison"));
	target->start_busy(1 + random(2));
		}
		else
		{
	msg += CYN "$p急運內力，一口真氣向蛇毒噴去，頓時蛇毒反向$P飄了回去。\n" NOR;
	msg += MAG "$P只聞到一陣甜香，眼前就模糊起來。\n" NOR;
	me->receive_damage("qi",(int)me->query_skill("lingshe-zhangfa",1));
	me->receive_wound("qi",15 + random(10));
	me->receive_wound("jing", 10);
	me->apply_condition("snake_poison", random(me->query_skill("lingshe-zhangfa",1)/10) + 1 +
		me->query_condition("snake_poison"));
	me->start_busy(1 + random(2));
		}
	} else {
		msg += CYN"可是$p急忙閃在一旁，躲了開去。\n" NOR;
		me->start_busy(3);
	}
	message_combatd(msg, me, target);
	if( !target->is_killing(me) ) target->kill_ob(me);
	return 1;
}
$n的$l",
	"force" : 300,
	"dodge": -5,
	"damage": 48,
	"lvl" : 60,
	"skill_name" : "蛇纏左右",
	"damage_type": "挫傷"
]),
([	"action": "$N使出一招「巨蟒下山」，高舉手中$w，劈頭砸向$n的$l",
	"force" : 340,
	"dodge": -10,
	"damage": 54,
	"lvl" : 80,
	"skill_name" : "巨蟒下山",
	"damage_type": "挫傷"
]),
([	"action": "$N使出一招「靈蛇出洞」，手中$w猛一探，直掃$n的$l",
	"force" : 380,
	"dodge": -3,
	"damage": 60,
	"lvl" : 100,
	"skill_name" : "靈蛇出洞",
	"damage_type": "挫傷"
]),

});

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("lingshe-zhangfa",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
//	return action[random(sizeof(action))];
}

int valid_enable(string usage) { return (usage == "staff") || (usage == "parry"); }

int valid_learn(object me)
{
	if ((int)me->query("max_neili") < 70)
		return notify_fail("你的內力不夠。\n");
	return 1;
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "staff")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練靈蛇杖法。\n");
	me->receive_damage("qi", 20);
	return 1;
}
/*
mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
        if( random(me->query_skill("hamagong",1)) > 10 ) 
	{
	victim->apply_condition("snake_poison", random(me->query_skill("hamagong",1)/10) + 1 +
	victim->query_condition("snake_poison"));
        tell_object(victim, HIG "你覺得被擊中的地方一陣麻木！\n" NOR );
        tell_object(victim, HIG "原來是被杖頭竄出的毒蛇咬了一口！\n" NOR );
	}
}
*/
string perform_action_file(string action)
{
    return __DIR__"lingshe-zhangfa/" + action;
}
lingxu-bu.javalingyuan-xinfa/break.cd(msg, me, target);
    return 1;
    }
    return notify_fail(target->name() + "目前是空手，沒什么可以震碎的。\n");
}
amage_bonus;
    if( random(me->query_skill("force")) < damage )
   return damage;
}
   me->set("jing", (int)me->query("eff_qi"));
    me->add("neili", -50);

    return 1;
}
      
    target->add("jing", 80 + (int)me->query_skill("force")/3 );
    if( (int)target->query("qi") > (int)target->query("eff_qi") ) target->set("qi", (int)target->query("eff_qi"));
    if( (int)target->query("jing") > (int)target->query("eff_jing") ) target->set("jing", (int)target->query("eff_qi"));

    me->add("neili", -50);

    return 1;
}
linji-zhuang/lifeheal.cg") ) target->set("jing", (int)target->query("eff_jing"));

    me->add("neili", -50);
    return 1;
}

+ (int)me->query_skill("force")/2 );
    target->add("jing", 10 + (int)me->query_skill("force")/2 );
    if( (int)target->query("qi") > (int)target->query("eff_qi") ) target->set("qi", (int)target->query("eff_qi"));
    if( (int)target->query("jing") > (int)target->query("eff_jing") ) target->set("jing", (int)target->query("eff_jing"));

    me->add("neili", -100);
    return 1;
}

kill("beiming-shengong",1)
	|| me->query_skill("bibo-shengong",1)
	|| me->query_skill("hamagong",1)
	|| me->query_skill("huagong-dafa",1)
	|| me->query_skill("huntian-qigong",1)
	|| me->query_skill("hunyuan-yiqi",1)
	|| me->query_skill("jiuyang-shengong",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學臨濟十二庄？！\n");

	return 1;
}

int practice_skill(object me)
{
        return notify_fail("臨濟十二庄只能用學(learn)的來增加熟練度。\n");
}

void skill_improved(object me)
{
        switch (me->query_skill("linji-zhuang",1))
        {
              case 30:
                   tell_object(me, HIG "你天地庄練成了! \n" NOR );
                   break;
              case 60:
                   tell_object(me, HIG "你之心庄練成了! \n" NOR );
                   break;
              case 90:
                   tell_object(me, HIG "你龍鵬庄練成了! \n" NOR );
                   break;
              case 120:
                   tell_object(me, HIG "你風云庄練成了! \n" NOR );
                   break;
              case 150:
                   tell_object(me, HIG "你大小庄練成了! \n" NOR );
                   break;
              case 180:
                   tell_object(me, HIG "你幽冥庄練成了! \n" NOR );
                   break;

        }
        return;
}
string exert_function_file(string func)
{
        return __DIR__"linji-zhuang/" + func;
}

literate.c划過",
	"force" : 90,
        "dodge" : 5,
	"lvl" : 0,
	"skill_name" : "初杏問酒",
        "damage_type" : "刺傷"
]),
([	"action" : "$N雙目微睜，一式「露草斜陽」，雙手幻化出千百個指影，一起刺向$n的$l",
	"force" : 120,
        "dodge" : 5,
	"damage": 10,
	"lvl" : 10,
	"skill_name" : "露草斜陽",
        "damage_type" : "刺傷"
]),
([	"action" : "$N一式「仰月承霖」，左掌護住丹田，右手大拇指斜指蒼天，蓄勢捺向$n的$l",
	"force" : 160,
        "dodge" : 15,
	"damage": 10,
	"lvl" : 22,
	"skill_name" : "仰月承霖",
        "damage_type" : "刺傷"
]),
([	"action" : "$N雙掌平托胸前，左手食指一式「葉底留蓮」，指向$n的周身大穴",
	"force" : 210,
        "dodge" : 20,
	"damage": 15,
	"lvl" : 36,
	"skill_name" : "葉底留蓮",
        "damage_type" : "刺傷"
]),
([	"action" : "$N雙掌翻飛，一式「清風拂桂」，左手拇指指端迸出無數道勁氣，射向$n的全身",
	"force" : 270,
        "dodge" : 25,
	"damage": 20,
	"lvl" : 52,
	"skill_name" : "清風拂桂",
        "damage_type" : "刺傷"
]),
([	"action" : "$N一式「菊圃秋霜」，并指如刃，一束束銳利無儔的劍氣，凌虛向$n的$l砍去",
	"force" : 340,
        "dodge" : 30,
	"damage": 30,
	"lvl" : 70,
	"skill_name" : "菊圃秋霜",
        "damage_type" : "刺傷"
]),
([	"action" : "$N一式「伽葉微笑」，雙手食指交叉，指端射出一縷罡氣，穿過$n的$l",
	"force" : 420,
        "dodge" : 35,
	"damage": 40,
	"lvl" : 90,
	"skill_name" : "伽葉微笑",
        "damage_type" : "刺傷"
]),
([	"action" : "$N左掌豎立胸前，一式「佛祖拈花」，右手食指扣住拇指，輕輕對著$n一彈",
	"force" : 510,
        "dodge" : 50,
	"damage": 10,
	"lvl" : 130,
	"skill_name" : "佛祖拈花",
        "damage_type" : "刺傷"
])
});

int valid_enable(string usage) { return usage=="finger" || usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練六脈神劍必須空手。\n");
    if ((int)me->query_skill("beiming-shengong", 1) < 20)
		return notify_fail("你的北冥神功火候不夠，無法學六脈神劍。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練六脈神劍。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("liumai-shenjian", 1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練六脈神劍!\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}
// zhong.c 種生死符

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
        object obj;
	string msg;

	if( !target ) target = offensive_target(me);

	if( !target || !target->is_character() )
		return notify_fail("生死符只能種在對手身上。\n");

	if(((int)me->query_skill("bahuang-gong", 1) < 40 ) &&
	   ((int)me->query_skill("beiming-shengong", 1) < 40 ))
		return notify_fail("你的本門內功不夠嫻熟，不能種生死符。\n");

	if( (int)me->query_skill("liuyang-zhang", 1) < 40 )
		return notify_fail("你的天山六陽掌不夠嫻熟，不能種生死符。\n");

	if (!objectp(obj=present("jiudai", me)))
            return notify_fail("你身上沒有酒袋，不能化水為冰。\n");

	msg = CYN "$N化水為冰，凝于掌中，輕飄飄地拍向$n。\n";

	me->start_busy(1);
	if( random( (int)me->query_skill("liuyang-zhang",1))
          > random(target->query_skill("dodge") ) ) {
		msg += CYN " 結果$p被$P攻了個正著！\n" NOR;
		target->receive_damage("qi",(int)me->query_skill("bahuang-gong",1));
		target->receive_wound("qi",15 + random(10));
		target->receive_wound("jing", 10);
		target->apply_condition("ss_poison", random(me->query_skill("liuyang-zhang",1)/10) + 1 +
		target->query_condition("ss_poison"));
		me->start_busy(random(4));
	} else {
		msg += "可是$p急忙閃在一旁，躲了開去。\n" NOR;
		me->start_busy(4);
	}
	message_combatd(msg, me, target);
	target->start_busy(1 + random(2));
//	if( !target->is_killing(me) ) target->kill_ob(me);
	if(!target->is_fighting(me)) target->fight_ob(me);
	destruct(obj);

	return 1;
}
// SKILL liuyang-zhang.c

inherit SKILL;

mapping *action = ({
([	"action" : "$N一招「落日熔金」，左掌疊于右掌之上，劈向$n",
	"force" : 130,
	"dodge" : 20,
	"damage" : 0,
	"lvl" : 0,
	"skill_name" : "落日熔金",
	"damage_type" : "瘀傷"
]),
([	"action" : "$N一招「安禪制毒龍」，面色凝重，雙掌輕飄飄地拍向$n",
	"force" : 150,
	"dodge" : 10,
	"damage" : 30,
	"lvl" : 20,
	"skill_name" : "安禪制毒龍",
	"damage_type" : "內傷"
]),
([	"action" : "$N一招「日斜歸路晚霞明」，雙掌幻化一片掌影，將$n籠罩于內。",
	"force" : 150,
	"dodge" : 30,
	"damage" : 35,
	"lvl" : 30,
	"skill_name" : "日斜歸路晚霞明",
	"damage_type" : "瘀傷"
]),

([	"action" : "$N一招「陽關三疊」，向$n的$l連擊三掌",
	"force" : 200,
	"dodge" : 25,
	"damage" : 50,
	"lvl" : 40,
	"skill_name" : "陽關三疊",
    "damage_type" : "瘀傷"
]),
([	"action" : "$N一招「陽春一曲和皆難」，只見一片掌影攻向$n",
	"force" : 250,
	"dodge" : 20,
	"damage" : 10,
	"lvl" : 40,
	"skill_name" : "陽春一曲和皆難",
	"damage_type" : "瘀傷"
]),

([	"action" : "$N雙掌平揮，一招「云霞出海曙」擊向$n",
	"force" : 300,
	"dodge" : 25,
	"damage" : 50,
	"lvl" : 60,
	"skill_name" : "云霞出海曙",
            "damage_type" : "瘀傷"
]),
([	"action" : "$N一招「白日參辰現」，只見一片掌影攻向$n",
	"force" : 350,
	"dodge" : 30,
	"damage" : 80,
	"lvl" : 70,
	"skill_name" : "白日參辰現",
	"damage_type" : "內傷"
]),

([	"action" : "$N左掌虛晃，右掌一記「云霞出薛帷」擊向$n的頭部",
	"force" : 350,
	"dodge" : 30,
	"damage" : 90,
	"lvl" : 80,
	"skill_name" : "云霞出薛帷",
           "damage_type" : "瘀傷"
]),
([	"action" : "$N施出「青陽帶歲除」，右手橫掃$n的$l，左手攻向$n的胸口",
	"force" : 400,
	"dodge" : -10,
	"damage" : 90,
	"lvl" : 90,
	"skill_name" : "青陽帶歲除",
            "damage_type" : "瘀傷"
]),
([	"action" : "$N施出「陽歌天鈞」，雙掌同時擊向$n的$l",
	"force" : 450,
	"dodge" : -10,
	"damage" : 120,
	"lvl" : 100,
	"skill_name" : "陽歌天鈞",
    "damage_type" : "瘀傷"
])
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"||usage=="strike"; }

int valid_combine(string combo) { return combo=="zhemei-shou"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練天山六陽掌必須空手。\n");
	if ((int)me->query("max_neili") < 50)
		return notify_fail("你的內力太弱，無法練六陽掌。\n");
	return 1;
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level = (int) me->query_skill("liuyang-zhang",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練天山六陽掌。\n");
	me->receive_damage("qi", 25);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"liuyang-zhang/" + action;
}
//pozhang.c -「破掌式」
#include <ansi.h>
#include <combat.h>

inherit F_SSERVER;
int perform(object me, object target)
{
        int damage;
        string msg;
        object target_w;
        target_w = target->query_temp("weapon");
        if( !target ) target = offensive_target(me);
        if( !target||!target->is_character()||!me->is_fighting(target) )
        return notify_fail("你只能對戰斗中的對手使用「破掌式」。\n");
        if( (int)me->query_skill("dugu-jiujian-sword",1) < 80)
        return notify_fail("你的獨孤九劍不夠嫻熟，還使不出「破掌式」。\n");
        if( (int)me->query("neili") < 200 )
        return notify_fail("你的內力不夠。\n");
        me->add("neili", -80);
        msg = CYN"$N凝神施展開獨孤九劍中的「破掌式」，劍路詭異，竟然平刺$n雙掌，$n見無論自己攻向哪里，總回將自己雙掌送到$N劍尖上，不由面色慘白！\n"NOR;
        me->start_busy(2);
        if (!objectp(target->query_temp("weapon")) ||
            !objectp(target->query_temp("secondary_weapon"))) {
        if( random(me->query("combat_exp")) >
          (int)target->query("combat_exp")/4 ) {
        target->start_busy( (int)me->query_skill("dugu-jiujian-sword") / 20 );
        damage = (int)me->query_skill("dugu-jiujian-sword", 1)+(int)me->query_skill("sword", 1)/2;
        damage = damage/2 + random(damage);

        target->receive_damage("qi", damage);
        target->receive_wound("qi", damage/2);
        msg += RED
"$n無法破解這招「破掌式」，雙掌被$N的劍尖洞穿，疊在一起，看來$n這雙掌是廢了！\n"NOR;
    } else {
        msg += HIC "$p急忙撤招閃避，才勉強避開$P這招「破掌式」。\n" NOR;
    }
        message_vision(msg, me, target);
        return 1;
}
        return notify_fail(target->name() + "目前手中有兵刃，恐怕得用其他招式。\n");
}
lonely-sword/podao.c    me->add("neili",-50);
            msg = "$n頓時覺得壓力驟增，手腕一麻，手中";
            msg += weapon2->name();
            msg += "脫手而出！\n" NOR;
            me->start_busy(random(2));
            target->receive_damage("qi", damage);
            target->start_busy(2);
            weapon2->move(environment(me));
            if (weapon2->query("ownmake")==1)
            {
                weapon2->move(target);
                msg += "那可是$n的隨身家伙！$n手一伸將它撿回來。\n" NOR;
            }
        }
        else
        {
            if(userp(me))
                 me->add("neili",-30);
            msg = "可是$n看破了$N的劍路，立刻采取守勢，使$N的破刀式沒有起到作用。\n"NOR;
            me->start_busy(4);
        }
        message_combatd(msg, me, target);

        return 1;
}
     if( target->is_busy() )
                return notify_fail(target->name() + "目前正疲于招架，加緊攻擊吧！\n");
    if( (int)me->query_skill("dugu-jiujian-sword", 1) < 80 )
        return notify_fail("你的獨孤九劍不夠嫻熟，不能使用「破箭式」。\n");

    msg = CYN "$N施展出獨孤九劍中的「破箭式」，劍勢陡然變得奇幻莫測，只聽得“叮叮當當”之聲不絕，已將$n射來的"+target_w->query("name")+"盡數彈回！\n";
    me->start_busy(2);

        if (target->query_temp("weapon") ||
           (string)target_w->query("skill_type") == "throwing"){
        if( random(me->query("combat_exp")) >
                     (int)target->query("combat_exp")/4 ) {
    msg += "$p為這招「破箭式」赫得呆立當場，眼見"+target_w->query("name")+"回射向自己竟然不知躲避！\n" NOR;
                 target_w->unequip();
                 target_w->move(environment(target));
                 target->reset_action();
                 target->start_busy( (int)me->query_skill("dugu-jiujian-sword") / 20 );
        limbs=target->query("limbs");
        size=(int)(me->query_skill("dugu-jiujian-sword")/10);
        damage=random(size)+size;
        damage=damage+me->query_str()/3+random(me->query_temp("apply/damage"));
        for(i=0;i<=random(size);i++)
            {
            msg +="“嗤”，只見"+target_w->query("name")+"射入$p的"+limbs[random(sizeof(limbs))]+"！\n"NOR;
            message_vision(msg,me,target);
            target->receive_damage("qi",damage,me);
            target->receive_wound("qi",damage/3,me);
            }
        COMBAT_D->report_status(target);
    } else {
        msg += "$p狼狽不堪地俯跪在地，勉強躲開了$P這招「破箭式」！\n" NOR;
    }
    message_vision(msg, me, target);
    return 1;
        }
        return notify_fail(target->name() + "目前手中沒有暗器，得用其他招式。\n");
}
lonely-sword/poqi.vnslonely-sword/zongjue.vnse_vision(msg, me, target);
        return 1;
}
        if( random(me->query("combat_exp")) >
          (int)target->query("combat_exp")/4 ) {
        damage = (int)me->query_skill("dugu-jiujian-sword", 1)+(int)me->query_skill("sword", 1)/2;
        damage = damage/2 + random(damage);

        target->receive_damage("qi", damage);
        target->receive_wound("qi", damage/2);
        target->addd("neili", -((int)me->query_skill("dugu-jiujian-sword", 1)/4+(int)me->query_skill("sword", 1)/2));
        msg += RED
"$n驚駭莫明，對這招「總訣式」欲避不能，被$N刺中丹田，功力受損！\n"NOR;
        } else {
        msg += HIC "$p雖然看破了這招「總訣式」的劍路，但仍然几經艱難方能還招擋開！\n"NOR;
        }
        message_vision(msg, me, target);
        return 1;
}
  健怪荒芏哉蕉分械畝允質褂謾  n");

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
            return notify_fail("你使用的武器不對。\n");

        if( skill < 90)
            return notify_fail("你的獨孤九劍等級不夠, 不能使用「破氣式」！\n");

        if( me->query("neili") < 250 )
            return notify_fail("你的內力不夠，無法運用「破氣式」！\n");

        msg = HIC "$N潛運獨孤九劍「破氣式」，運氣貫劍使其由利返鈍，毫無花俏地直
刺$n的丹田。\n";
//        message_vision(msg, me, target);
        message_combatd(msg, me, target);

        ap = me->query_skill("sword") + skill;
        dp = target->query_skill("force") / 2;
        if( dp < 1 )
            dp = 1;
        if( random(ap) > dp )
        {
            if(userp(me))
                 me->add("neili",-150);
            msg = "$N運起「破氣式」，長劍斜挑對方小腹，$n頓時覺得眼前一花，氣海\n";
            msg += "穴上微微一痛，全身真氣狂泄而出！\n" NOR;
            neili_wound = 300 + random(skill);
            if(neili_wound > target->query("neili"))
                 neili_wound = target->query("neili");
            qi_wound = (int)me->query_skill("lonely-sword",1)+(int)me->query_skill("sword",1)/2;
            qi_wound = qi_wound/2 + random(qi_wound);
            if(qi_wound > target->query("qi"))
                 qi_wound = target->query("qi");

            target->add("neili", -neili_wound);
//            target->add("qi", -qi_wound);
//            target->add("eff_qi", -qi_wound);
            target->receive_damage("qi", qi_wound);
            target->receive_wound("qi", qi_wound/2);
            target->start_busy(2);
            me->start_busy(random(2));
        }
        else
        {
            if(userp(me))
                 me->add("neili",-100);
            msg = "可是$n看破了$N的企圖，立刻守緊門戶，几經艱難終于還招擋
開。\n"NOR;
            me->start_busy(random(3));
        }
//        message_vision(msg, me, target);
        message_combatd(msg, me, target);

        return 1;
}
)target->query("combat_exp")/4 ) {
    msg += "這招「破刀式」簡直是刀客的客星，$p難以招架，只好舍棄手中"+target_w->query("name")+"以期自保！\n" NOR;
                 target_w->unequip();
                 target_w->move(environment(target));
                 target->reset_action();
                 target->start_busy( (int)me->query_skill("dugu-jiujian-sword") / 20 );
    } else {
        msg += "$p使出渾身解朮，才勉強接下$P這招「破刀式」！\n" NOR;
    }
    message_vision(msg, me, target);
    return 1;
        }
        return notify_fail(target->name() + "目前手中使的不是刀類兵刃，得用其他招式。\n");
}
怪荒芏哉蕉分械畝允質褂謾  n");

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
            return notify_fail("你使用的武器不對。\n");

        if (!objectp(weapon2 = target->query_temp("weapon"))
        || (string)weapon2->query("skill_type") != "throwing")
             return notify_fail("對方沒有使暗器，你用不了「破箭式」。\n");

        if( skill < 50)
            return notify_fail("你的獨孤九劍等級不夠, 不能使用「破箭式」！\n");

        if( me->query("neili") < 50 )
            return notify_fail("你的內力不夠，無法運用「破箭式」！\n");

        msg = HIC "$N舉劍連點，運起獨孤九劍之「破箭式」, 將$n擲過來的"+
weapon2->name() + "打得向$n反擊回去。\n";
        message_combatd(msg, me, target);

        damage = 10 + random(skill / 2);
        ap = me->query_skill("sword") + skill;
        dp = target->query_skill("throwing", 1);
        if( dp < 1 )
                dp = 1;
          if( random(ap) > dp )
          {
             if(userp(me))
                  me->add("neili",-50);
             msg = "$n頓時覺得鋪天蓋地的";
             msg += weapon2->name();
             msg += "反而向自己襲來！全身上下立刻被打得跟馬蜂窩似的\n" NOR;

             me->start_busy(random(2));
             target->receive_damage("qi", damage);
             target->start_busy(2);
        }
        else
        {
             if(userp(me))
                  me->add("neili",-30);
             msg = "可是$n看破了$N的意圖，立刻將手中" + weapon2->name()+
"舞得風雨不透，將反擊回來的" + weapon2->name() + "盡數擊落在地。\n"NOR;
             me->start_busy(4);
        }
        message_combatd(msg, me, target);

        return 1;
}
lonely-sword/po.c    else if (skill < 90)
           me->improve_skill("lonely-sword",10+random((int)me->query("int")- 9));
        else if (skill < 140)
           me->improve_skill("lonely-sword",10+random((int)me->query("int")*2-9));
        else if (skill < 200)
           me->improve_skill("lonely-sword",10+random((int)me->query("int")*4-9));
        else
           me->improve_skill("lonely-sword",10+random((int)me->query("int")*8-9));

        msg = MAG"$P的「獨孤九劍」進步了！\n"NOR;
        me->start_busy(random(3));
        message_combatd(msg, me);
        return 1;
}
          return notify_fail(target->name() + "目前正疲于招架，加緊攻擊吧！\n");
    if( (int)me->query_skill("dugu-jiujian-sword", 1) < 80 )
        return notify_fail("你的獨孤九劍不夠嫻熟，不能使用「破鞭式」。\n");

    msg = CYN "$N驟然施展出獨孤九劍中的「破鞭式」，劍化流星，迅急無比地點向$n的手腕！\n";
    me->start_busy(2);

        if (target->query_temp("weapon") ||
           (string)target_w->query("skill_type") == "axe"||
           (string)target_w->query("skill_type") == "whip"||
           (string)target_w->query("skill_type") == "hammer"||
           (string)target_w->query("skill_type") == "dagger"){
        if( random(me->query("combat_exp")) >
                     (int)target->query("combat_exp")/4 ) {
    msg += "$p無法看破這招「破鞭式」，目瞪口呆，唯有舍棄"+target_w->query("name")+"以求自保。！\n" NOR;
                 target_w->unequip();
                 target_w->move(environment(target));
                 target->reset_action();
                 target->start_busy( (int)me->query_skill("dugu-jiujian-sword") / 20 );
    } else {
        msg += "$p急忙抽手就地一滾，狼狽不堪地躲開了$P這招「破鞭式」！\n" NOR;
    }
    message_vision(msg, me, target);
    return 1;
        }
        return notify_fail(target->name() + "目前手中使的不是鞭類兵刃，得用其他招式。\n");
}

//pojian.c 「破劍式」
//made by deaner
#include <ansi.h>
#include <combat.h>

inherit F_SSERVER;
int perform(object me, object target)
{
        string msg;
        object target_w;
        target_w = target->query_temp("weapon");

        if( !target ) target = offensive_target(me);

        if( !target
        ||      !target->is_character()
        ||      !me->is_fighting(target) )
                return notify_fail(HIC"你只能對戰斗中的對手使用「破劍式」。\n"NOR);

        if( target->is_busy() )
                return notify_fail(target->name() + "目前正疲于招架，加緊攻擊吧！\n");
    if( (int)me->query_skill("dugu-jiujian-sword", 1) < 80 )
        return notify_fail("你的獨孤九劍不夠嫻熟，不能使用「破劍式」。\n");

    msg = CYN "$N舉劍畫弧，默潛出獨孤九劍中的「破劍式」，“唰唰唰”連刺數劍，凌厲無匹，卻無跡可循，$n不由駭然！\n";
    me->start_busy(2);

        if (target->query_temp("weapon") ||
           (string)target_w->query("skill_type") == "sword"){
        if( random(me->query("combat_exp")) >
                     (int)target->query("combat_exp")/4 ) {
    msg += "這招「破劍式」看似簡單其實紛繁復雜，妙到巔毫，$p無法抵擋，面如死灰，只好放棄"+target_w->query("name")+"！\n" NOR;
                 target_w->unequip();
                 target_w->move(environment(target));
                 target->reset_action();
                 target->start_busy( (int)me->query_skill("dugu-jiujian-sword") / 20 );
    } else {
        msg += "$p使出渾身解朮，才勉強接下$P這招「破劍式」！\n" NOR;
    }
    message_vision(msg, me, target);
    return 1;
        }
        return notify_fail(target->name() + "目前手中使的不是劍類兵刃，得用其他招式。\n");
}
lonely-sword/poqiang.vnssg, me, target);
    return 1;
        }
        return notify_fail(target->name() + "目前手中使的不是槍棍類兵刃，得用其他招式。\n");
}
        if( me->query("neili") < 50 )
            return notify_fail("你的內力不夠，無法運用「破鞭式」！\n");

        msg = HIC "$N巧使獨孤九劍「破鞭式」逼近$n，提劍幻出重重劍影，如
柔絲般向$n裹去。\n";
        message_combatd(msg, me, target);

        damage = 10 + random(skill / 2);
        ap = me->query_skill("sword") + skill;
        dp = target->query_skill("hammer") / 2;
        if( dp < 1 )
        if( dp < 1 )
            dp = 1;
        if( random(ap) > dp)
        {
            if(userp(me))
                 me->add("neili",-50);
            msg = "$n頓時覺得壓力驟增，手腕一麻，手中";
            msg += weapon2->name();
            msg += "脫手而出！\n" NOR;

            me->start_busy(random(2));
            target->receive_damage("qi", damage);
            target->start_busy(2);
            weapon2->move(environment(me));
            if (weapon2->query("ownmake")==1)
            {
                weapon2->move(target);
                msg += "那可是$n的隨身家伙！$n手一伸將它撿回來。\n" NOR;
            }
        }
        else
        {
            if(userp(me))
                 me->add("neili",-30);
            msg = "可是$n看破了$N的劍路，立刻采取守勢，使$N的破鞭式沒有起到
什么作用\n"NOR;
            me->start_busy(4);
        }
        message_combatd(msg, me, target);

        return 1;
}
// pojian.c 破劍式

#include <ansi.h>

inherit F_SSERVER;

int perform(object me)
{
        string msg;
        object weapon, weapon2, target;
        int skill, ap, dp, damage;

        if(me->query("family/master_id") != "feng qingyang")
           return notify_fail("你不是風清揚的弟子，不能使用絕招！\n");

        me->clean_up_enemy();
        target = me->select_opponent();

        skill = me->query_skill("lonely-sword",1);

        if( !(me->is_fighting() ))
            return notify_fail("「破劍式」只能對戰斗中的對手使用。\n");

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
            return notify_fail("你使用的武器不對。\n");

        if (!objectp(weapon2 = target->query_temp("weapon"))
        || (string)weapon2->query("skill_type") != "sword")
            return notify_fail("對方沒有使劍，你用不了「破劍式」。\n");

        if( skill < 50)
            return notify_fail("你的獨孤九劍等級不夠, 不能使用「破劍式」！\n");

        if( me->query("neili") < 50 )
            return notify_fail("你的內力不夠，無法運用「破劍式」！\n");

        msg = HIC "$N舉劍畫弧，默潛獨孤九劍之「破劍式」, 綿綿劍意，漫天
鋪地襲向$n。\n";
        message_combatd(msg, me, target);

        damage = 10 + random(skill / 2);
        ap = me->query_skill("sword") + skill;
        dp = target->query_skill("sword") / 2;
        if( dp < 1 )
            dp = 1;
        if( random(ap) > dp )
        {
            if(userp(me))
                 me->add("neili",-50);
            msg = "$n頓時覺得眼前一花，手腕一麻，手中";
            msg += weapon2->name();
            msg += "脫手而出！\n" NOR;
            me->start_busy(random(2));
            target->receive_damage("qi", damage);
            target->start_busy(2);
            weapon2->move(environment(me));
            if (weapon2->query("ownmake")==1)
            {
                weapon2->move(target);
                msg += "那可是$n的隨身家伙！$n手一伸將它撿回來。\n" NOR;
            }
        }
        else
        {
            if(userp(me))
                 me->add("neili",-30);
            msg = "可是$n看破了$N的劍路，立刻將手中" + weapon2->name()+
"舞得風雨不透，使$N的「破劍式」沒有起到作用。\n"NOR;
            me->start_busy(4);
        }
        message_combatd(msg, me, target);

        return 1;
}
fy_fail("你的獨孤九劍等級不夠, 不能使用「破槍式」！\n");

        if( me->query("neili") < 50 )
            return notify_fail("你的內力不夠，無法運用「破槍式」！\n");

        msg = HIC "$N一式獨孤九劍「破槍式」，劍勢靈巧地順著"+weapon2->name()
+"削落，划向$n的五指。\n";
        message_combatd(msg, me, target);
        damage = 10 + random(skill / 2);
        ap = me->query_skill("sword") + skill;
        if((string)weapon2->query("skill_type") == "staff")
            dp = target->query_skill("staff") / 2;
        else if((string)weapon2->query("skill_type") != "club")
            dp = target->query_skill("club") / 2;

        if( dp < 1 )
            dp = 1;
        if( random(ap) > dp )
        {
            if(userp(me))
                 me->add("neili",-50);
            msg = "$N運起「破槍式」, $n頓時大驚，為保手指，手中";
            msg += weapon2->name();
            msg += "撒手丟出！\n" NOR;

            me->start_busy(random(2));
            target->receive_damage("qi", damage);
            target->start_busy(2);
            weapon2->move(environment(me));
        }
        else
        {
            if(userp(me))
                 me->add("neili",-30);
            msg = "可是$n看破了$N的劍路，舍命將手中" + weapon2->name()+
"向前急刺，迫使$N收回攻勢！\n"NOR;
            me->start_busy(4);
        }
        message_combatd(msg, me, target);

        return 1;
}
// posuo.c 「破索式」

#include <ansi.h>

inherit F_SSERVER;

int perform(object me)
{
        string msg;
        object weapon, weapon2, target;
        int skill, ap, dp, wound, damage;

        if(me->query("family/master_id") != "feng qingyang")
           return notify_fail("你不是風清揚的弟子，不能使用絕招！\n");

        me->clean_up_enemy();
        target = me->select_opponent();

        skill = me->query_skill("lonely-sword",1);

        if( !(me->is_fighting() ))
            return notify_fail("「破索式」只能對戰斗中的對手使用。\n");

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
            return notify_fail("你使用的武器不對。\n");

        if (!objectp(weapon2 = target->query_temp("weapon"))
        || (string)weapon2->query("skill_type") != "whip")
            return notify_fail("對方沒有使索，你用不了「破索式」。\n");

        if( skill < 60)
            return notify_fail("你的獨孤九劍等級不夠, 不能使用「破索式」！\n");

        if( me->query("neili") < 50 )
            return notify_fail("你的內力不夠，無法運用「破索式」！\n");

        msg = HIC "$N使出獨孤九劍之「破索式」，劍化流星，迅急無比地點向$n的手腕。\n";
        message_combatd(msg, me, target);

        damage = 10 + random(skill / 2);
        ap = me->query_skill("sword") + skill;
        dp = target->query_skill("whip") / 2;
        if( dp < 1 )
            dp = 1;
        if( random(ap) > dp )
        {
            if(userp(me))
                 me->add("neili",-50);
            msg = "結果$n被$p攻了個措手不及，手腕一麻，手中";
            msg += weapon2->name();
            msg += "脫手而出！\n" NOR;

            me->start_busy(random(2));
            target->receive_damage("qi", damage);
            target->start_busy(2);
            weapon2->move(environment(me));
            if (weapon2->query("ownmake")==1)
            {
                weapon2->move(target);
                msg += "那可是$n的隨身家伙！$n手一伸將它撿回來。\n" NOR;
            }
        }
        else
        {
            if(userp(me))
                 me->add("neili",-30);
            msg = "可是$n看破了$N的企圖，迅即退開，使$N的「破索式」沒有起到作用。\n"NOR;
                 me->start_busy(4);
        }
        message_combatd(msg, me, target);

        return 1;
}
fy_fail("你的內力不夠，無法運用「破掌式」！\n");

        msg = HIC "$N使出獨孤九劍之「破掌式」, 勁力聚在劍尖，企圖以意使劍.\n";
        message_combatd(msg, me, target);

        ap = me->query("combat_exp") + skill * 1000;
        dp = target->query("combat_exp") / 4;
        if( dp < 1 )
            dp = 1;
        if( random(ap) > dp )
        {
            if(userp(me))
                 me->add("neili",-50);
            msg = "$N運起「破掌式」, $n頓時覺得眼前一花，手心一涼，手掌中心一
截劍尖冒了出來。\n"NOR;

//            wound = 60 + random(skill);
            wound = (int)me->query_skill("sword",1)/2 + skill;
            wound = wound/2 + random(wound);
// modify by Java
            if( wound > (int)target->query("qi"))
                wound = (int)target->query("qi");
            me->start_busy(random(2));
//            target->add("qi", -wound);
//            target->add("eff_qi", -wound);
            target->receive_damage("qi", wound);
            target->receive_wound("qi", wound/2);
// modify by Java
            target->start_busy(2);
        }
        else
        {
            if(userp(me))
                me->add("neili",-100);
            msg = "可是$n看破了$N的企圖，全力防守，堪堪抵住了$N的攻勢。\n"NOR;
            me->start_busy(random(3));
        }
        message_combatd(msg, me, target);
        return 1;
}
// poqi.c 破氣式

#include <ansi.h>

inherit F_SSERVER;

int perform(object me)
{
        string msg;
        object weapon, target;
        int skill, ap, dp, neili_wound, qi_wound;

        me->clean_up_enemy();
        target = me->select_opponent();

        skill = me->query_skill("lonely-sword",1);

        if( !(me->is_fighting() ))
            return notify_fail("「破氣式」只能對戰斗中的對手使用。\n");

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
            return notify_fail("你使用的武器不對。\n");

        if( skill < 90)
            return notify_fail("你的獨孤九劍等級不夠, 不能使用「破氣式」！\n");

        if( me->query("neili") < 150 )
            return notify_fail("你的內力不夠，無法運用「破氣式」！\n");

        msg = HIC "$N潛運獨孤九劍「破氣式」，運氣貫劍使其由利返鈍，毫無花
俏地直刺$n的丹田。\n";
        message_vision(msg, me, target);

        ap = me->query_skill("sword") + skill;
        dp = target->query_skill("force") / 2;
        if( dp < 1 )
            dp = 1;
        if( random(ap) > dp )
        {
            if(userp(me))
                 me->add("neili",-150);
            msg = "$N運起「破氣式」, $n頓時覺得眼前一花，氣海穴上微微一痛，\n";
            msg += "全身真氣狂泄而出！\n" NOR;
            neili_wound = 300 + random(skill);
            if(neili_wound > target->query("neili"))
                 neili_wound = target->query("neili");
            qi_wound = neili_wound / 5;
            if(qi_wound > target->query("qi"))
                 qi_wound = target->query("qi");

            target->add("neili", -neili_wound);
            target->add("qi", -qi_wound);
            target->add("eff_qi", -qi_wound);
            target->start_busy(2);
            me->start_busy(random(2));
        }
        else
        {
            if(userp(me))
                 me->add("neili",-100);
            msg = "可是$n看破了$N的企圖，立刻守緊門戶，几經艱難終于還招擋
開。\n"NOR;
            me->start_busy(4);
        }
        message_vision(msg, me, target);

        return 1;
}
message_vision(
 HIC"$N清嘯一聲，手中長劍輕轉，劍勢變幻，化出光芒千道，一式獨孤九劍
「破箭式」，劍尖向四面八方疾速點出！\n"NOR,me);
        ob = all_inventory(environment(me));
        for(i=0; i<sizeof(ob); i++)
        {
           if( !living(ob[i]) || ob[i]==me ) continue;
           damage=skill-((int)ob[i]->query_skill("dodge")/10);
           if(damage>0)
           {
              ob[i]->receive_damage("jing", damage);
              ob[i]->receive_wound("qi", damage*2);
              ob[i]->add("eff_qi", -damage/2);
              switch (random(5))
              {
                  case 1:
message_vision(HIC"$N手中劍尖破空，正刺在$n的咽喉！\n"NOR,me,ob[i]);
                        break;
                  case 2:
message_vision(HIC"只見$N右手劍尖一點，$n胸口鮮血噴涌而出！\n"NOR,me,ob[i]);
                        break;
                  case 3:
message_vision(HIC"$N手中劍光閃處，在$n手腕就是一個透明窟窿！\n"NOR,me,ob[i]);
                        break;
                  case 4:
message_vision(HIC"$N手中劍尖斜挑，輕輕插進$n的小腹！\n"NOR,me,ob[i]);
                        break;
                  default:
message_vision(HIC"你看見$N手中劍光一閃，正扎在$n左臂肩井穴上！\n"NOR,me,ob[i]);
                        break;
              }
              tell_object(ob[i], 
HIC"你覺得眼前一點寒星直奔而來，頓覺一陣刺痛難忍，眼前發黑..\n"NOR);
           }
           if(userp(ob[i])) ob[i]->fight_ob(me);
           else if( !ob[i]->is_killing(me) ) ob[i]->kill_ob(me);
        }

        return 1;
}

// lonely-sword.c 獨孤九劍

inherit SKILL;

string *parry_msg = ({
        "卻見$n踏前一步，劍式斜指你的右臂，想要使$P閃身而退。\n",
        "$n以攻為守，以進為退，凝神運氣向$P猛攻快打地揮出方位大異的泰山「快活三」三劍。\n",
        "$n劍法突變，劍勢伸縮不定，奔騰矯夭，逆使嵩山劍法的「天外玉龍」企圖迫使$P變招。\n",
        "$n突然一劍點向$P的$l，雖一劍卻暗藏無數后著，$P手足無措，攻勢不由自主停了下來！\n"
        "$n不閃不避，舉劍閃電般使出「疊翠浮青」反削$P的$l，想擋過你此招。\n",
        "$n突然使出青城派松風劍法的「鴻飛冥冥」，可是方位卻有所偏差，長劍對著$P一絞，企\n圖突破$P的攻勢！\n"
        "$n挺劍一招象是「白云出岫」回刺$P的$l，企圖將$P的攻勢化解。\n",
        "只見$n不退反進，身如飄風，詭異地一式「天柱云氣」，動向無定不可捉摸地擋住了$P的\n進攻。\n",
        "$n不退反進，使出恆山劍招「綿里藏針」，森森劍氣充溢四周！架開了$P的這招\n",
});

mapping *action = ({
([      "action" : "但見$N挺身而上，$w一旋，一招仿佛泰山劍法的「來鶴清泉」直刺$n
的$l！",
        "force" : 10,
        "dodge" : 5,
        "damage": 30,
        "lvl" : 0,
        "damage_type" : "刺傷"
]),
([      "action" : "$N奇詭地向$n揮出「泉鳴芙蓉」、「鶴翔紫蓋」、「石廩書聲」、「
天柱云氣」及「雁回祝融」衡山五神劍！",
        "force" : 10,
        "dodge" : 0,
        "damage": 30,
        "lvl" : 7,
        "damage_type" : "刺傷"
]),
([
        "action" : "$N劍隨身轉，續而刺出十九劍，竟然是華山「玉女十九劍」，但奇的
是這十九劍便如一招，手法之快，直是匪夷所思！",
        "force" : 10,
        "dodge" : 5,
        "damage": 40,
        "lvl" : 14,
        "damage_type" : "刺傷"
]),
([      "action" : "$N劍勢忽緩而不疏，劍意有余而不盡，化恆山劍法為一劍，向$n慢慢
推去！",
        "force" : 20,
        "dodge" : 15,
        "damage": 40,
        "lvl" : 21,
        "damage_type" : "刺傷"
]),
([      "action" : "$N劍意突煥氣象森嚴，便似千軍萬馬奔馳而來，長槍大戟，黃沙千里
，盡括嵩山劍勢擊向$n的$l！",
        "force" : 20,
        "dodge" : 0,
        "damage": 50,
        "lvl" : 28,
        "damage_type" : "刺傷"
]),
([      "action" : "卻見$N身隨劍走，左邊一拐，右邊一彎，劍招也是越轉越加狠辣，竟
化「泰山十八盤」為一劍攻向$n！",
        "force" : 30,
        "dodge" : 10,
        "damage": 55,
        "lvl" : 35,
        "damage_type" : "刺傷"
]),
([      "action" : "$N劍招突變，使出衡山的「一劍落九雁」，削向$n的$l，怎知劍到中
途，突然轉向，大出$n意料之外！",
        "force" : 40,
        "dodge" : 5,
        "damage": 60,
        "lvl" : 42,
        "damage_type" : "刺傷"
]),
([      "action" : "$N吐氣開聲，一招似是「獨劈華山」，手中$w向下斬落，直劈向$n的
$l！",
        "force" : 50,
        "dodge" : 0,
        "damage": 80,
        "lvl" : 49,
        "damage_type" : "刺傷"
]),
([      "action" : "$N手中$w越轉越快，使的居然是衡山的「百變千幻云霧十三式」，劍
式有如云卷霧涌，旁觀者不由得目為之眩！",
        "force" : 60,
        "dodge" : 20,
        "damage": 70,
        "lvl" : 56,
        "damage_type" : "刺傷"
]),
([      "action" : "$N含笑抱劍，氣勢庄嚴，$w輕揮，盡融「達摩劍」為一式，閑舒地刺
向$n！",
        "force" : 70,
        "dodge" : 0,
        "damage": 90,
        "lvl" : 63,
        "damage_type" : "刺傷"
]),
([      "action" : "$N舉起$w運使「太極劍」劍意，划出大大小小無數個圓圈，無窮無盡
源源不絕地纏向$n！",
        "force" : 80,
        "dodge" : 20,
        "damage": 80,
        "lvl" : 70,
        "damage_type" : "刺傷"
]),
([      "action" : "$N神聲凝重，$w上劈下切左右橫掃，挾雷霆萬鈞之勢逼往$n，「伏摩
劍」的劍意表露無遺！",
        "force" : 90,
        "dodge" : 5,
        "damage": 90,
        "lvl" : 77,
        "damage_type" : "刺傷"
]),
([      "action" : "卻見$N突然虛步提腰，使出酷似武當「蜻蜓點水」的一招！",
        "force" : 100,
        "dodge" : 15,
        "damage": 60,
        "lvl" : 84,
        "damage_type" : "刺傷"
]),
([      "action" : "$N運劍如風，劍光霍霍中反攻$n的$l，嘗試逼$n自守，劍招似是「伏
魔劍」的「龍吞式」。",
        "force" : 120,
        "dodge" : 0,
        "damage": 95,
        "lvl" : 91,
        "damage_type" : "刺傷"
]),
([      "action" : "$N突然運劍如狂，一手關外的「亂披風劍法」，猛然向$n周身亂刺亂
削！",
        "force" : 140,
        "dodge" : -10,
        "damage": 120,
        "lvl" : 98,
        "damage_type" : "刺傷"
]),
([      "action" : "$N滿場游走，東刺一劍，西刺一劍，令$n莫明其妙，分不出$N劍法的
虛實！",
        "force" : 160,
        "dodge" : 30,
        "damage": 50,
        "lvl" : 105,
        "damage_type" : "刺傷"
]),
([      "action" : "$N抱劍旋身，轉到$n身后，雜亂無章地向$n刺出一劍，不知使的是什
么劍法！",
        "force" : 180,
        "dodge" : 5,
        "damage": 80,
        "lvl" : 112,
        "damage_type" : "刺傷"
]),
([      "action" : "$N突然一劍點向$n的$l，雖一劍卻暗藏無數后著，$n手足無措，不知
如何是好！",
        "force" : 200,
        "dodge" : 0,
        "damage": 85,
        "lvl" : 119,
        "damage_type" : "刺傷"
]),
([      "action" : "$N劍挾刀勢，大開大闔地亂砍一通，但招招皆擊在$n攻勢的破綻，迫
得$n不得不守！",
        "force" : 220,
        "dodge" : -10,
        "damage": 100,
        "lvl" : 126,
        "damage_type" : "刺傷"
]),
([      "action" : "$N反手橫劍刺向$n的$l，這似有招似無招的一劍，威力竟然奇大，$n
難以看清劍招來勢！",
        "force" : 240,
        "dodge" : -15,
        "damage": 120,
        "lvl" : 133,
        "damage_type" : "刺傷"
]),
([      "action" : "$N舉劍狂揮，迅速無比地點向$n的$l，卻令人看不出其所用是什么招
式。",
        "force" : 260,
        "dodge" : 0,
        "damage": 100,
        "lvl" : 140,
        "damage_type" : "刺傷"
]),
([      "action" : "$N隨手一劍指向$n，落點正是$n的破綻所在，端的是神妙無倫，不可
思議！",
        "force" : 280,
        "dodge" : 40,
        "damage": 60,
        "lvl" : 147,
        "damage_type" : "刺傷"
]),
([      "action" : "$N臉上突現笑容，似乎已看破$n的武功招式，胸有成竹地一劍刺向$n
的$l！",
        "force" : 300,
        "dodge" : 20,
        "damage": 120,
        "lvl" : 154,
        "damage_type" : "刺傷"
]),
([
    "action" : "$N將$w隨手一擺，但見$n自己向$w撞將上來，神劍之威，實人所難測！",
        "force" : 400,
        "dodge" : 50,
        "damage": 165,
        "lvl" : 180,
    "damage_type" : "刺傷"
])
});

int valid_enable(string usage)
{
        return usage=="sword" || usage=="parry";
}

mapping query_action(object me, object weapon)
{
        return action[random(sizeof(action))];
}

string query_parry_msg(string limb)
{
        return parry_msg[random(sizeof(parry_msg))];
}

int valid_learn(object me)
{
        object ob;

        mapping myfam;
        myfam = (mapping)me->query("family");
        if(!myfam || myfam["family_name"] != "華山派"|| myfam["master_id"] != "feng qingyang")
                return notify_fail("獨孤九劍只有向風清揚老前輩學習。\n");
        if( (int)me->query("max_neili") < 600 )
                return notify_fail("你的內力不夠，沒有辦法練獨孤九劍。\n");
        if( (int)me->query_skill("zixia-shengong",1)<100)
                return notify_fail("獨孤九劍必須配合紫霞神功才能練習。\n");
        if( !(ob = me->query_temp("weapon"))
        ||      (string)ob->query("skill_type") != "sword" )
                return notify_fail("你必須先找一把劍才能練劍法。\n");
        if ((int)me->query_skill("lonely-sword",1) > 120)
                return notify_fail("這套劍法我就教到這兒，以后就要靠你自己練了。\n");

        return 1;
}

int practice_skill(object me)
{
        return notify_fail("獨孤九劍只能通過「總訣式」來演練。\n");
}

int valid_effect(object me, object weapon, string name, int skill)
{
}
string perform_action_file(string action)
{
        return __DIR__"lonely-sword/" + action;
}

//lonely-sword.c 獨孤九劍
// Modified by Venus Oct.1997
#include <ansi.h>

inherit SKILL;

string *parry_msg = ({
        "卻見$n踏前一步，劍式斜指你的右臂，想要使$P閃身而退。\n",
        "$n以攻為守，以進為退，凝神運氣向$P猛攻快打地揮出方位大異的泰山「快活三」三劍。\n",
        "$n劍法突變，劍勢伸縮不定，奔騰矯夭，逆使嵩山劍法的「天外玉龍」企圖迫使$P變招。\n",
        "$n突然一劍點向$P的$l，雖一劍卻暗藏無數后著，$P手足無措，攻勢不由自主停了下來！\n"
        "$n不閃不避，舉劍閃電般使出「疊翠浮青」反削$P的$l，想擋過你此招。\n",
        "$n突然使出青城派松風劍法的「鴻飛冥冥」，可是方位卻有所偏差，長劍對著$P一絞，企\n圖突破$P的攻勢！\n"
        "$n挺劍一招象是「白云出岫」回刺$P的$l，企圖將$P的攻勢化解。\n",
        "只見$n不退反進，身如飄風，詭異地一式「天柱云氣」，動向無定不可捉摸地擋住了$P的\n進攻。\n",
        "$n不退反進，使出恆山劍招「綿里藏針」，森森劍氣充溢四周！架開了$P的這招\n",
});

mapping *action = ({
        ([      "name":                 "總訣式",
                "action":               "$N使一招「總訣式」，手中$w劍光暴長，向$n的$l刺去",
                "dodge":                50,
                "damage":               350,
                "damage_type":  "刺傷"
        ]),
        ([      "name":                 "破劍式",
                "action":               "$N劍尖一指，一招「破劍式」斜斜刺向$n的$l",
                "dodge":                100,
                "damage":               400,
                "damage_type":  "刺傷"
        ]),
        ([      "name":                 "破刀式",
                "action":               "$N手中$w一招「破刀式」從意想不道的方位刺向$n的$l",
                "dodge":                40,
                "damage":               350,
                "damage_type":  "刺傷"
        ]),
        ([      "name":                 "破槍式",
                "action":               "$N身形一晃，手中$w龍吟一聲，使出「破槍式」往$n的$l連遞數劍",
                "dodge":                70,
                "damage":               350,
                "damage_type":  "刺傷"
        ]),
        ([      "name":                 "破鞭式",
                "action":               "$N手中$w劍光暴長，一招「破鞭式」往$n$l刺去",
                "dodge":                60,
                "damage":               350,
                "damage_type":  "刺傷"
        ]),
        ([      "name":                 "破索式",
                "action":               "$N手中$w疾往上挑，一招「破索式」直指$n$l",
                "dodge":                50,
                "damage":               350,
                "damage_type":  "刺傷"
        ]),
        ([      "name":                 "破掌式",
                "action":               "$N突然往下一蹲，手中$w自肋下穿出  一招「破掌式」幻出一道光弧直向$n$l刺去",
                "dodge":                40,
                "damage":               350,
                "damage_type":  "刺傷"
        ]),
        ([      "name":                 "破箭式",
                "action":               "$N一招「破箭式」手中$w自上而下，歪歪斜邪地刺向$n的$l",
                "dodge":                30,
                "damage":               350,
                "damage_type":  "刺傷"
        ]),
        ([      "name":                 "破氣式",
                "action":               "$N腳踏陰陽步，手中$w中宮直進，一招「破氣式」迅急無比地向$n的$l刺去",
                "dodge":                20,
                "damage":               350,
                "damage_type":  "刺傷"
        ]),
});

int valid_learn(object me)
{
        object ob;

        mapping myfam;
        myfam = (mapping)me->query("family");
        if(!myfam || myfam["family_name"] != "華山派"|| myfam["master_id"] != "feng qingyang")
                return notify_fail("獨孤九劍只有向風清揚老前輩學習。\n");
        if( (int)me->query("max_neili") < 600 )
                return notify_fail("你的內力不夠，沒有辦法練獨孤九劍。\n");
        if( (int)me->query_skill("zixia-shengong",1)<100)
                return notify_fail("獨孤九劍必須配合紫霞神功才能練習。\n");
        if( !(ob = me->query_temp("weapon"))
        ||      (string)ob->query("skill_type") != "sword" )
                return notify_fail("你必須先找一把劍才能練劍法。\n");
        if ((int)me->query_skill("lonely-sword",1) > 120)
                return notify_fail("這套劍法我就教到這兒，以后就要靠你自己練了。\n");

        return 1;
}

int valid_enable(string usage)
{
        return usage=="sword" || usage=="parry";
}

mapping query_action(object me, object weapon)
{
        return action[random(sizeof(action))];
}
string query_parry_msg(string limb)
{
        return parry_msg[random(sizeof(parry_msg))];
}

int practice_skill(object me)
{
        return notify_fail("獨孤九劍只能通過「總訣式」來演練。\n");
}

int valid_effect(object me, object weapon, string name, int skill)
{
}
string perform_action_file(string action)
{
        return __DIR__"lonely-sword/" + action;
}

// fanchang.c
// by secret
// 97-1-16
//

#include <ansi.h>

inherit F_SSERVER;
int exert(object me, object target)
{
	int sp, dp;

	if ( target == me )
		target = offensive_target(me);

	if( environment(me)->query("no_fight") )
		return notify_fail("這里不能攻擊別人! \n");

	if( !objectp(target) || target->query("id") == "mu ren" )
		return notify_fail("你要攻擊誰？\n");

	if( (int)me->query_skill("longxiang",1) < 50 )
		return notify_fail("你的龍象般若功功力不夠，不能凝神攻擊對方！\n");

	if( (int)me->query("neili",1) < 50 )
		return notify_fail("你的內力不夠，不能使用龍象般若功。\n");

	message_combatd(HIW "$N面無表情，歌聲如梵唱般貫入$n耳中！\n\n" NOR, me, target );

	if( living(target))
		if( !target->is_killing(me) )
			target->kill_ob(me);

	sp = me->query_skill("force") + me->query_skill("mizongxinfa") + me->query_skill("longxiang",1)/2;
	dp = target->query_skill("force");
	
	if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIW " 你忽然覺得腦中一片空白，不由自主地隨歌聲舞蹈起來！\n" NOR);
		tell_object(me, HIB "你看到" + target->name() + "隨著你的歌聲手舞足蹈，十分可笑。\n" NOR);

		target->receive_damage("jing", 10 + random((int)me->query_skill("longxiang", 1)) );
		
		if( target->query("combat_exp") >= me->query("combat_exp") )
			if( (int)me->query("potential") - (int)me->query("learned_points") < 100 )
				me->add("potential", 1);

		me->start_busy(2);
		target->start_busy(random(3));
		me->add("neili", -50);

	}
	else
	{	
		message_combatd(HIY "可是$p不為$P歌聲所動，定力果然不同凡響！\n" NOR, me, target);
		me->start_busy(4);
	}

	return 1;
}
longxiang/lifeheal.clongxiang/powerup.clongxiang.cskill(object me)
{
	return notify_fail("龍象般若功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"longxiang/" + func;
}
dge" : 15,
    "damage": 10,
    "lvl"   : 24,
    "skill_name" : "批亢式" ,
    "damage_type" : "內傷"
]),
([      "action" : "$N騰步上前，左手護胸，右手探出，一招「掏虛式」擊向$n的襠部",
    "force" : 190,
    "dodge" : 15,
    "damage": 15,
    "lvl"   : 30,
    "skill_name" : "掏虛式" ,
    "damage_type" : "內傷"
]),
([      "action" : "$N雙手平提胸前，左手護住面門，一招「抱殘式」右手推向$n的$l",
    "force" : 220,
    "dodge" : 20,
    "damage": 15,
    "lvl"   : 35,
    "skill_name" : "抱殘式" ,
    "damage_type" : "內傷"
]),
([      "action" : "$N兩手胸前環抱，腋下含空，五指如鉤，一招「守缺式」插向$n的頂
門",
    "force" : 260,
    "dodge" : 20,
    "damage": 20,
    "lvl"   : 40,
    "skill_name" : "守缺式" ,
    "damage_type" : "內傷"
]),
([      "action" : "$N右腿斜插$n二腿之間，一招「搶珠式」，上手取目，下手反勾$n的
襠部",
    "force" : 300,
    "dodge" : 25,
    "damage": 20,
    "lvl"   : 45,
    "skill_name" : "搶珠式" ,
    "damage_type" : "內傷"
]),
([      "action" : "$N一手虛指$n的劍訣，一招「奪劍式」，一手劈空抓向$n手中的長劍
",
    "force" : 350,
    "dodge" : 25,
    "damage": 25,
    "lvl"   : 50,
    "skill_name" : "奪劍式" ,
    "damage_type" : "內傷"
]),
([      "action" : "$N左手指向$n胸前的五道大穴，右手斜指太陽穴，一招「拿云式」使
$n進退兩難",
    "force" : 400,
    "dodge" : 30,
    "damage": 25,
    "lvl"   : 55,
    "skill_name" : "拿云式" ,
    "damage_type" : "內傷"
]),
([      "action" : "$N前腳著地，一手頂天成爪，一手指地，一招「追日式」勁氣籠罩$n
的全身",
    "force" : 460,
    "dodge" : 40,
    "damage": 30,
    "lvl"   : 60,
    "skill_name" : "追日式" ,
    "damage_type" : "內傷"
])
});

int valid_enable(string usage) { return usage=="claw" ||  usage=="parry"; }     

int valid_combine(string combo) { return combo=="qianye-shou"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練龍爪功必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候不夠，無法學龍爪功。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練龍爪功。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action); i > 0; i--)
   if(level >= action[i-1]["lvl"])
      return action[i-1]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("longzhua-gong",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];

}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
       return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
       return notify_fail("你的內力不夠練龍爪功。\n");
    me->receive_damage("qi", 30);
    me->add("neili", -10);
    return 1;
}

罌  筱兀  澩蚋呔    挂徽小嘎逯佣  Α梗        n的$l打
去",
    "force" : 220,
    "dodge" : 15,
    "lvl" : 15,
    "skill_name" : "洛鐘東應",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N左掌圈花揚起，屈肘當胸，虎口朝上，一招「偏花七星」打向$n的
$l",
    "force" : 260,
    "dodge" : 20,
    "lvl" : 24,
    "skill_name" : "偏花七星",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N使一招「苦海回頭」，上身前探，雙手划了個半圈，擊向$n的$l",
    "force" : 300,
    "dodge" : 25,
    "lvl" : 33,
    "skill_name" : "苦海回頭",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N雙掌划弧，一記「挾山超海」，掌出如電，一下子切到$n的手上",
    "force" : 360,
    "dodge" : 30,
    "lvl" : 42,
    "skill_name" : "挾山超海",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N施出「懾服外道」，雙拳拳出如風，同時打向$n頭，胸，腹三處要
害",
    "force" : 420,
    "dodge" : 35,
    "lvl" : 50,
    "skill_name" : "懾服外道",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N左腳內扣，右腿曲坐，一式「三入地獄」，雙手齊齊按向$n的胸口
",
    "force" : 480,
    "dodge" : 40,
    "lvl" : 58,
    "skill_name" : "三入地獄",
    "damage_type" : "瘀傷"
]),
});

int valid_enable(string usage) { return usage=="cuff" || usage=="parry"; }      

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
       return notify_fail("練羅漢拳必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 10)
       return notify_fail("你的混元一氣功火候不夠，無法學羅漢拳。\n");
    if ((int)me->query("max_neili") < 50)
       return notify_fail("你的內力太弱，無法練羅漢拳。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("luohan-quan",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
       return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
       return notify_fail("你的內力不夠練羅漢拳。\n");
    me->receive_damage("qi", 25);
    me->add("neili", -5);
    return 1;
}

":        210,
		"dodge":		-10,
        "damage":       120,
		"damage_type":	"刺傷"
	]),
    ([  "name":         "萬花齊落",
        "action":       "$N縱起丈余，一式「細云巧翻胸」頭下腳上，一招「萬花齊落」手中$w舞成一個光球罩向$n的$l",
        "force":        240,
        "dodge":        10,
        "damage":       120,
	"damage_type":	"刺傷"
    ]),
    ([  "name":         "漫天花雨",
        "action":       "$N一聲大喝使出「漫天花雨」，手中$w幻出漫天花瓣，迅若奔雷射向$n的$l",
        "force":        280,
        "dodge":        15,
        "damage":       140,
	"damage_type":	"刺傷"
    ]),
    ([  "name":         "落花無意",
        "action":       "$N輕嘆一聲，手中$w懷中一抱，一時「落花無意」，$w鏘然躍出倏的化作几點帶露的桃花，飄然飛向$n的$l",
        "force":        320,
        "dodge":        0,
        "damage":       140,
	"damage_type":	"刺傷"
    ]),

});

int valid_learn(object me)
{
	object ob;

    if( (int)me->query_skill("bibo-shengong",1) < 30)
        return notify_fail("你的碧波神功火候還不夠。\n");

    if( (int)me->query("max_neili") < 100 )
        return notify_fail("你的內力不夠，不能練落英神劍。\n");

	if (!objectp(ob = me->query_temp("weapon"))
	|| (string)ob->query("skill_type") != "sword")
		return notify_fail("你必須先找一把劍才能學習劍法。\n");

	return 1;
}

int valid_enable(string usage)
{
	return usage=="sword" || usage=="parry";
}

mapping query_action(object me, object weapon)
{
	return action[random(sizeof(action))];
}

int practice_skill(object me)
{
	object ob;

    if( (int)me->query("qi") < 30
    ||  (int)me->query("neili") < 5 )
        return notify_fail("你的內力或氣不夠，沒有辦法練習落英神劍。\n");

	if (!objectp(ob = me->query_temp("weapon"))
	|| (string)ob->query("skill_type") != "sword")
		return notify_fail("你必須先找一把劍才能習練劍法。\n");

    me->receive_damage("qi", 30);
	me->add("force", -5);
    write("你按著所學練了一遍落英神劍。\n");
	return 1;
}

luoying-shenzhang/   target->receive_wound("qi", damage/3);
        me->add("neili", -damage/5);

        if ( damage < 40 ) msg += HIY"結果$N受到$n的內力反震，雖然擊中$N，自己卻悶哼一聲向后退了兩步。\n"NOR;
        else if( damage < 80 ) msg += RED"結果$N被$n以內力反震，胸口有如受到一記重錘，連退了五六步！\n"NOR;
        else msg += HIR"$n茫然不知所措，結果被$N一掌擊中前胸，$n眼前一黑，被擊飛出兩丈許！！！\n"NOR;

    } else
    {
        me->start_busy(1);
        msg += HIG"可是$p看破了$P的企圖，早就閃在了一邊。\n"NOR;
    }
    message_vision(msg, me, target);
    if(userp(target)) target->fight_ob(me);
    else if( !target->is_killing(me) ) target->kill_ob(me);
    return 1;
}

     "action" : "$N伸出右手并攏食指中指，捻個劍決，一式「尋花探柳」，直指$n的
中盤",
    "force" : 220,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl" : 20,
    "skill_name" : "尋花探柳"
]),
([      "action" : "$N突然抽身而退，接著一式「隨風而逝」，平身飛起，雙掌向$n的$l
連拍數掌",
    "force" : 235,
    "dodge" : 35,
    "damage_type" : "內傷",
    "lvl" : 30,
    "skill_name" : "隨風而逝"
]),
([      "action" : "$N使一式「狂風卷葉」，全身突然飛速旋轉，雙掌忽前忽后，猛地拍向$n
的胸口",
    "force" : 250,
    "dodge" : 30,
    "damage_type" : "內傷",
    "lvl" : 40,
    "skill_name" : "狂風卷葉"
]),
([      "action" : "$N前后一揉，一式「寸草不生」，雙掌推出一股陰柔之力襲向$n的$1 ",
    "force" : 325,
    "dodge" : 35,
    "damage_type" : "內傷",
    "lvl" : 50,
    "skill_name" : "寸草不生"
]),
([      "action" : "$N雙手食指和中指迅速和在一起，一式「摧花斷葉」，一股強烈的氣
流涌向$n的全身",
    "force" : 375,
    "parry" : -5,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl" : 60,
    "skill_name" : "摧花斷葉"
]),
([      "action" : "$N使一式「天女散花」，雙掌舞出無數圈勁氣，一環環向$n的$l斫去 ",
    "force" : 400,
    "parry" : 15,
    "dodge" : 35,
    "damage_type" : "劈傷",
    "lvl" : 70,
    "skill_name" : "天女散花"
]),
([      "action" : "$N兩掌在胸前合什，施展出「推波助瀾」，雙掌驟然分開，祭出兩團光
球飛速攻向$n",
    "force" : 450,
    "parry" : 5,
    "dodge" : 10,
    "damage_type" : "內傷",
    "lvl" : 84,
    "skill_name" : "推波助瀾"
]),
([      "action" : "$N一式「落英繽紛」，雙掌在胸前疾轉數圈，不急不緩地推向$n。$n只
見漫天掌花逼向自己，早已為此招所折服，根本不知躲避。",
    "force" : 510,
    "parry" : -20,
    "dodge" : -15,
    "damage_type" : "內傷",
    "lvl" : 99,
    "skill_name" : "落英繽紛"
])
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"; }  

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練落英神掌必須空手。\n");
    if ((int)me->query_skill("luoying-xinfa", 1) < 15)
   return notify_fail("你的落英心法火候不夠，無法學落英神掌。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練落英神掌。\n");
    return 1;
}


string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("luoying-shenzhang", 1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練落英神掌。\n");
  me->receive_damage("qi", 20);
    me->add("neili", -1);
return 1;
}
string perform_action_file(string action)
{
    return __DIR__"luoying-shenzhang/" + action;
}

// powerup.c

#include <ansi.h>

inherit F_CLEAN_UP;

void remove_effect(object me, int amount);

int exert(object me, object target)
{
    int skill;

    if( target != me ) return
notify_fail("你只能用落英心法提升自己的戰斗力。\n");

    if( (int)me->query("neili") < 100 ) return
notify_fail("你的內力不夠。\n");
    if( (int)me->query_temp("powerup") ) return
notify_fail("你已經在運功中了。\n");

    skill = me->query_skill("force");

//    me->add("bellicosity", 100 + skill/2 );
    me->add("neili", -45);
    me->receive_damage("qi",0)
      ;

    message_vision( HIC "$N微一凝神，運起落英心法，全身衣裳烈烈做響，眼中精光四射，很是攝人。\n" NOR, me );


    me->add_temp("apply/attack", skill/2);
    me->add_temp("apply/dodge", skill/2);
    me->set_temp("powerup", 1);

    me->start_call_out( (: call_other, __FILE__, "remove_effect", me,
skill/2 :), skill);

    if( me->is_fighting() ) me->start_busy(3);

    return 1;
}

void remove_effect(object me, int amount)
{
    me->add_temp("apply/attack", - amount);
    me->add_temp("apply/dodge", - amount);
    me->delete_temp("powerup");
    tell_object(me, "你的落英心法運行完畢，將內力收回丹田。\n");
}

// lifeheal.c

#include <ansi.h>

int exert(object me, object target)
{
    if ((!target)||target->query("id")==me->query("id"))
   return notify_fail("你要用真氣為誰療傷？\n");

    if( me->is_fighting() || target->is_fighting())
   return notify_fail("戰斗中無法運功療傷！\n");

    if( (int)me->query("max_neili") < 300 )
   return notify_fail("你的內力修為不夠。\n");

    if( (int)me->query("neili") < 100)
   return notify_fail("你的真氣不夠。\n");

    if( (int)target->query("eff_qi") < (int)target->query("max_qi") / 5 )
   return notify_fail( target->name() +
      "已經受傷過重，經受不起你的真氣震蕩！\n");

    message_vision(
   HIY "$N坐了下來運起內功，將手掌貼在$n背心，緩緩地將真氣輸入$n體內....\n\n"
   "過了不久，$N額頭上冒出豆大的汗珠，$n吐出一口瘀血，臉色看起來紅潤多了。\n" NOR,
   me, target );

    target->receive_curing("qi", 10 + (int)me->query_skill("force")/2 );
    target->add("qi", 10 + (int)me->query_skill("force")/3 );
    target->receive_curing("jing", 10 + (int)me->query_skill("force")/2 );      
    target->add("jing", 10 + (int)me->query_skill("force")/3 );
    if( (int)target->query("qi") > (int)target->query("eff_qi") ) target->set("qi", (int)target->query("eff_qi"));
    if( (int)target->query("jing") > (int)target->query("eff_jing") ) target->set("jing", (int)target->query("eff_jing"));

    me->add("neili", -100);

    return 1;
}

// powerup.c

// force.c

inherit SKILL;

mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
    int damage;

    me->add("force", - factor );
    damage = (int)me->query("force")/20 + factor
   - (int)victim->query("force")/25;

    if( damage < 0 ) {
   if( !me->query_temp("weapon")
   &&      random(victim->query_skill("force")) > me->query_skill("force")/2 ) {
      damage = - damage;
      me->receive_damage( "qi", damage * 2 );
      me->receive_wound( "qi", damage );
      if( damage < 10 ) return "$N受到$n的內力反震  悶哼一聲。\n";
      else if( damage < 20 ) return "$N被$n以內力反震  「嘿」地一聲退了兩步。\n";
      else if( damage < 40 ) return "$N被$N以內力一震  胸  有如受到一記重錘  連退了五六步  \n";
      else return "$N被$n的內力一震  眼前一黑  身子向後飛出丈許    \n";
   }
   if( damage_bonus + damage < 0 ) return - damage_bonus;
   return damage;
    }

    damage -= victim->query_temp("apply/armor_vs_force");
    if( damage_bonus + damage < 0 ) return - damage_bonus;
    if( random(me->query_skill("force")) < damage )
   return damage;
}

// luoying-xinfa.c 落英心法
// written by deaner
// modified by Venus Oct.1997
inherit FORCE;

int valid_enable(string usage) { return usage == "force"; }

int valid_learn(object me)
// need more limit here
{
    return 1;
}

int practice_skill(object me)
{
    return notify_fail("落英心法只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
    return SKILL_D("luoying-xinfa/") + func;
}
 "雨急風狂"
]),
([      "action" : "$N左手揮起，掌心朝天，伸出右手并攏食指中指，捻個劍決，一式
「星河在天」，直指$n的中盤",
        "force" : 140,
        "dodge" : 20,
        "damage_type" : "瘀傷",
        "lvl" : 20,
        "skill_name" : "星河在天"
]),
([      "action" : "$N突然抽身而退，接著一式「流華紛飛」，平身飛起，雙掌向$n
的后腦連拍數掌",
        "force" : 140,
        "dodge" : 35,
        "damage_type" : "瘀傷",
        "lvl" : 30,
        "skill_name" : "流華紛飛"
]),
([      "action" : "$N突然抽身躍起，左掌挾著勁風洶涌拍出，接著右掌自左掌后突地
伸出，一式「彩云追月」搶在左掌前向$n的$l拍去",
        "force" : 150,
        "dodge" : 35,
        "damage_type" : "瘀傷",
        "lvl" : 30,
        "skill_name" : "彩云追月"
]),
([      "action" : "$N使一式「天如穹廬」，全身突然飛速旋轉，雙掌忽前忽后，猛
地拍向$n的胸口",
        "force" : 160,
        "dodge" : 30,
        "damage_type" : "瘀傷",
        "lvl" : 40,
        "skill_name" : "天如穹廬"
]),
([      "action" : "$N前后一揉，一式「朝云橫度」，化掌如劍，一股凌厲劍氣襲向$n
的下盤",
        "force" : 170,
        "dodge" : 35,
        "damage_type" : "內傷",
        "lvl" : 50,
        "skill_name" : "朝云橫度"
]),
([      "action" : "$N使一式「白虹經天」，雙掌舞出無數圈勁氣，一環環向$n的$l
斫去",
        "force" : 180,
        "parry" : 15,
        "dodge" : 35,
        "damage_type" : "內傷",
        "lvl" : 70,
        "skill_name" : "白虹經天"
]),
([      "action" : "$N雙手食指和中指一和，一式「紫氣東來」，一股強烈的氣流涌向
$n的全身",
        "force" : 190,
        "parry" : -5,
        "dodge" : 20,
        "damage_type" : "內傷",
        "lvl" : 60,
        "skill_name" : "紫氣東來"
]),
([      "action" : "$N一式「落英漫天」，雙掌在身前疾轉，掌花飛舞，鋪天蓋地直指
向$n。$n只見漫天掌花，眼花繚亂。",
        "force" : 200,
        "parry" : -20,
        "dodge" : -15,
        "damage_type" : "瘀傷",
        "lvl" : 99,
        "skill_name" : "落英漫天"
])
});

int valid_enable(string usage) { return usage=="strike" ||  usage=="parry"; } 

int valid_combine(string combo) { return combo=="xuanfeng-leg"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
        return notify_fail("練落英神劍掌必須空手。\n");
    if ((int)me->query_skill("bibo-shengong", 1) < 15)
        return notify_fail("你的碧波神功火候不夠，無法學落英神劍掌。\n");
    if ((int)me->query("max_neili") < 100)
        return notify_fail("你的內力太弱，無法練落英神劍掌。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("luoying-zhang", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
       return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
       return notify_fail("你的內力不夠練落英神劍掌。\n");
    me->receive_damage("qi", 20);
    me->add("neili", -1);
    return 1;
}


// luoying.c

inherit SKILL;

mapping *action = ({
    ([  "action":       "$N使一招「落英繽紛」，雙手飄移不定擊向$n$l",
        "dodge": 30,
        "parry": 20,
        "force": 120,
        "damage_type": "瘀傷"
	]),
    ([  "action":       "$N倏忽欺至$n身前，一招「人面桃花」直拍$n的$l",
        "dodge": -20,
        "parry": -20,
        "force": 160,
        "damage_type": "瘀傷"
    ]),
    ([  "action":       "$N身形繞$n一轉，一招「急風驟雨」向$n$l接連出掌",
        "dodge":  25,
        "parry":  20,
        "force": 200,
        "damage_type": "瘀傷"
	]),
    ([  "action":       "$N身形拔起，在半空一招「江城飛花」右掌猛擊$n的$l",
        "dodge": -30,
        "parry": -30,
        "force": 240,
        "damage_type": "瘀傷"
	]),
    ([  "action":       "$N使一招「萬花齊落」，縱起丈余直擊$n的$l",
        "dodge": -20,
        "parry":  40,
        "force": 280,
        "damage_type": "瘀傷"
    ]),
    ([  "action":       "$N一聲大喝使出「漫天花雨」，幻出滿天掌影，掌掌不離$n的$l",
        "dodge":  40,
        "force": 340,
        "damage_type": "瘀傷"
    ]),
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
        return notify_fail("練落英神劍掌必須空手。\n");
	if ((int)me->query("max_neili") < 100)
        return notify_fail("你的內力太弱，無法練落英神劍掌。\n");
	return 1;
}

mapping query_action(object me, object weapon)
{
	return action[random(sizeof(action))];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 40)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 10)
        return notify_fail("你的內力不夠了！休息一下再練吧。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -5);
	return 1;
}

magic.c        洞蟪四  凸σ裁揮謾  n");

    if(me->query_skill("taoism",1) > 1)
       return notify_fail("哈哈！"+RANK_D->query_respect(me)
                   +"學了牛鼻子的功夫，怎么卻來學大乘涅磐功？\n");
    if( (int)me->query_skill("poison",1) > 1 )
      return notify_fail("你學了邪門毒技，無法修煉大乘涅磐功。\n");

    return 1;
}
void skill_improved(object me)
{}
mantian-xing.c唬  蝗蛔萆硐蚝笠桓齜  觶  馱誑  淶氐囊凰  
間，$n陡然發現几點寒光閃爍不定地襲向自己",
    "damage": 55,
    "dodge" : 55,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "扎傷",
    "lvl" : 27,
    "skill_name" : "星光閃爍"
]),
([      "action" : "$N右手一揮，一招『星芒不定』，$n明明看見$N手里的$w已射向自己
的胸前大穴，到了近處卻突然轉攻向自己的后心",
    "damage": 60,
    "dodge" : 60,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 36,
    "skill_name" : "星芒不定"
]),
([      "action" : "$N不急不緩地一矮身，使出『墜落之星』，手中$w平直地射向$n的咽
喉，卻又加上暗勁使之中途改向，射向$n的下盤",
    "damage": 70,
    "dodge" : 70,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 45,
    "skill_name" : "墜落之星"
]),
([      "action" : "$N騰身一躍而起，施展出『黎明之星』，手里的$w從上往下筆直地射
向$n的頭部",
    "damage": 85,
    "dodge" : 80,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 54,
    "skill_name" : "黎明之星"
]),
([      "action" : "$N原地一個急轉身，隨即雙手一拂，$w就飄飄忽忽地飛向$n，原來這
招是『星辰游離』",
    "damage": 110,
    "dodge" : 85,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 63,
    "skill_name" : "星辰游離"
]),
([      "action" : "$N使出一招『星光頓滅』，前腳一跺，隨即翻身而起，手中$w不帶絲
毫風聲卻又迅速無比地射向$n的前胸",
    "damage": 120,
    "dodge" : 90,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 72,
    "skill_name" : "星光頓滅"
]),
([      "action" : "$N突然騰身向后急退，使出『星空炸雷』，雙手向前一推，手里$w就
隱隱帶著雷聲疾射向$n",
    "damage": 140,
    "dodge" : 95,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 81,
    "skill_name" : "星空炸雷"
]),
([      "action" : "$N施展出『"+HIW"星划長空"NOR+"』，原地側身飛起，右手微微向前一洒，手中$w
幻作一點寒光呈圓弧形射向$n",
    "damage": 160,
    "dodge" : 100,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 90,
    "skill_name" : "星划長空"
]),
([      "action" : "$N微微凝神，使出『"+HIY"星光萬丈"NOR+"』，身影飄忽不定，$n頓覺十分刺眼，卻
見$N手里的$w已挾著地上的沙石以及周圍的樹頁攻向自己",
    "damage": 190,
    "dodge" : 105,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 99,
    "skill_name" : "星光萬丈"
]),
([      "action" : "$N忽然輕嘆一聲，轉身而行，$n正遲疑間，卻見眼前已盡是$w的影子，
眼看無處可躲了！只怕這招就是『"+HIC"滿天星雨"NOR+"』了，$n不由大驚失色",
    "damage": 220,
    "dodge" : 110,
    "post_action":  (: call_other, "/adm/daemons/weapond", "throw_weapon" :),
    "damage_type" : "刺傷",
    "lvl" : 110,
    "skill_name" : "滿天星雨"
])
});

int valid_enable(string usage) { return usage=="throwing" ||usage=="dodge"||usage=="parry"; }

int valid_learn(object me)
{
    if ((int)me->query_skill("force", 1) < 20)
   return notify_fail("你的內功心法火候不夠，無法學滿天星。\n");
    if ((int)me->query_skill("dodge", 1) < 20)
   return notify_fail("你的輕功火候不夠，無法領悟滿天星。\n");
    if ((int)me->query_dex() < 25)
   return notify_fail("你的身法不夠靈巧，無法領悟滿天星。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("mantian-xing", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

string query_dodge_msg(string limb)
{
    return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
    object weapon;
    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "throwing")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 30)
    return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 30)
   return notify_fail("你的內力不夠練滿天星。\n");
    me->receive_damage("qi", 30);
return 1;
}
string perform_action_file(string action)
{
    return __DIR__"mantian-xing/" + action;
}

mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
    if( random(me->query_skill("mantian-xing",1)) > 50) {
    victim->apply_condition("anqi_poison", random(2) + 1 +
   victim->query_condition("anqi_poison"));
    }
}

 "damage" : 30,
        "damage_type" : "刺傷",
]),
([      "action" : "$N使出一招「山崩」，縱身躍入半空，$w如山崩般劈向$n的$l  ",
        "skill_name" : "山崩",
        "force" : 180,
        "dodge" : -10,
        "lvl" : 16,
        "damage" : 40,
        "damage_type" : "割傷",
]),
([      "action" : "$N使出「千旋轉」，將$w舞得如紡車一般，忽然一劍刺向$n的$l  ",
        "skill_name" : "千旋轉",
        "force" : 220,
        "dodge" : 10,
        "lvl" : 24,
        "damage" : 48,
        "damage_type" : "刺傷",
]),
([      "action" : "$N使出一招「降魔舞」，全身勁氣貫于$w中，劍氣直指$n的$l  ",
        "skill_name" : "降魔舞",
        "force" : 250,
        "dodge" : 10,
        "lvl" : 32,
        "damage" : 54,
        "damage_type" : "刺傷",
]),
([      "action" : "$N單足獨立，使出一式「鶴舞」，一道劍光如白影般向$n的$l掃去  ",
        "skill_name" : "鶴舞",
        "force" : 280,
        "dodge" : 15,
        "lvl" : 40,
        "damage" : 60,
        "damage_type" : "割傷",
]),
([      "action" : "$N使出一招「龍騰」，手中$w如游龍般扑向$n的$l  ",
        "skill_name" : "龍騰",
        "force" : 300,
        "dodge" : 20,
        "lvl" : 48,
        "damage" : 66,
        "damage_type" : "割傷",
]),
([      "action" : "$N飛身一躍，居高臨下使出「花雨滿天」，頓時劍尖如雨刺向$n的$l  ",
        "skill_name" : "花雨漫天",
        "force" : 320,
        "dodge" : 25,
        "lvl" : 80,
        "damage" : 80,
        "damage_type" : "刺傷",
]),
});


int valid_enable(string usage) { return usage == "sword" || usage == "parry"; }

//int valid_combine(string combo) { return combo=="xue-dao"; }

int valid_learn(object me)
{
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力不夠。\n");
	if ((int)me->query_skill("longxiang", 1) >= 20 ||
	    (int)me->query_skill("xiaowuxiang", 1) >= 20)
		return 1;
	else if ((int)me->query_skill("longxiang", 1) < 20)
		return notify_fail("你的龍象般若功火候太淺。\n");
	else if ((int)me->query_skill("xiaowuxiang", 1) < 20)
		return notify_fail("你的小無相功火候太淺。\n");
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("mingwang-jian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "sword")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠，練不了不動明王劍。\n");
	me->receive_damage("qi", 20);
	return 1;
}
necromancy.c// fuxue.c 拈花指 「拈花拂穴」

#include <ansi.h>

inherit F_SSERVER;

int perform(object me, object target)
{
	string msg;

	if( !target ) target = offensive_target(me);

	if((int)me->query_str() < 25)
		return notify_fail("你臂力不夠,不能使用這一絕技!\n");

	if((int)me->query_skill("hunyuan-yiqi",1) < 100)
		return notify_fail("你混元一氣功的功力不夠不能使用拈花拂穴!\n");

	if((int)me->query_skill("finger") < 100)
		return notify_fail("你的指法修為不夠,目前還不能使用拈花拂穴絕技!\n");

	if((int)me->query("neili") < 300)
		return notify_fail("你內力現在不夠, 不能使用拈花拂穴! \n");

	if( target->is_busy() )
		return notify_fail(target->name() + "目前正自顧不暇，放膽攻擊吧  \n");

	msg = HIY "$N使出拈花指絕技「拈花拂穴」，罩住了$n的全身要穴, 使$n動彈不得。\n";

	if( random(me->query("combat_exp")) > (int)target->query("combat_exp") / 4 )
	{
		msg +=  HIG "結果$p被$P攻了個措手不及! \n" NOR;
		target->start_busy( (int)me->query_skill("nianhua-zhi",1) / 20 + 2);
		me->add("neili", -100);
	}
	else
	{
		msg += HIM "可是$p看破了$P的企圖，并沒有上當。\n" NOR;
		me->start_busy(4);
	}
	message_combatd(msg, me, target);

	return 1;
}
// fuxue.c  「拈花拂穴」
// modified by Venus Oct.1997
#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
    string msg;

    if( !target ) target = offensive_target(me);

    if( target->is_busy() )
       return notify_fail(target->name() + "目前正傻愣愣地呆立在那兒，正是攻擊的好機會!\n");

    if( (int)me->query_str() < 25 )
       return notify_fail("你的臂力太小，使不出「拈花拂穴」。\n");

    if( (int)me->query_skill("hunyuan-yiqi", 1) < 90 )
       return notify_fail("你的混元一氣功火候不夠，不會使用「拈花拂穴」 。\n");

    if( (int)me->query_skill("finger") < 90 )
       return notify_fail("你的指法或則拈花指不夠熟練，不會使用拈花拂穴\n");

    if( (int)me->query("neili") < 100 )
       return notify_fail("你的內力不夠，無法使出「拈花拂穴」。\n");

    msg = HIC "
$N緩緩將右手中指和食指捏攏，形成拈花指形，隨即幻作一道灰影電光火石般地拂向$n。\n
"NOR;
    me->start_busy(random(1));

    if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/4
) {
   msg += HIC"
事出驟然，$n欲避不能，被$N拂中大穴，立時木瞪口呆，不能動彈！\n"NOR;
 target->start_busy( (int)me->query_skill("nianhua-zhi") / 15 + 1);
    me->add("neili",-30);
    } else
    {
       me->start_busy(1);
       msg += HIG"可是$p看破了$P的企圖，早就閃在了一邊。\n"NOR;
    }
    message_combatd(msg, me, target);
    return 1;
}
// nianhua-zhi.c -拈花指

inherit SKILL;

mapping *action = ({
([	"action" : "$N側身抬臂，右指划了個半圈，一式「瓶花落硯」擊向$n的$l",
	"force" : 60,
        "dodge" : -5,
	"lvl" : 0,
	"damage": 10,
	"skill_name" : "瓶花落硯",
	"damage_type" : "刺傷"
]),
([	"action" : "$N左掌虛托，一式「寒梅吐蕊」，右指穿腋疾出，指向$n的胸前",
	"force" : 70,
        "dodge" : -5,
	"lvl" : 0,
	"damage": 15,
	"skill_name" : "寒梅吐蕊",
        "damage_type" : "刺傷"
]),
([	"action" : "$N俯身斜倚，左手半推，右手一式「初杏問酒」，向$n的$l划過",
	"force" : 90,
        "dodge" : 5,
	"lvl" : 0,
	"damage": 30,
	"skill_name" : "初杏問酒",
        "damage_type" : "刺傷"
]),
([	"action" : "$N雙目微睜，一式「露草斜陽」，雙手幻化出千百個指影，拂向$n的$l",
	"force" : 120,
        "dodge" : 5,
	"damage": 40,
	"lvl" : 9,
	"skill_name" : "露草斜陽",
        "damage_type" : "刺傷"
]),
([	"action" : "$N一式「仰月承霖」，左掌護住丹田，右手斜指蒼天，蓄勢點向$n的$l",
	"force" : 160,
        "dodge" : 15,
	"damage": 80,
	"lvl" : 18,
	"skill_name" : "仰月承霖",
        "damage_type" : "刺傷"
]),
([	"action" : "$N雙掌平托胸前，十指叉開，一式「葉底留蓮」，指向$n的周身大穴",
	"force" : 210,
        "dodge" : 20,
	"damage": 120,
	"lvl" : 27,
	"skill_name" : "葉底留蓮",
        "damage_type" : "刺傷"
]),
([	"action" : "$N雙掌翻飛，一式「清風拂桂」，指端迸出無數道勁氣，射向$n的全身",
	"force" : 270,
        "dodge" : 25,
	"damage": 160,
	"lvl" : 36,
	"skill_name" : "清風拂桂",
        "damage_type" : "刺傷"
]),
([	"action" : "$N一式「菊圃秋霜」，并指如刃，一束束銳利無儔的刀氣，凌虛向$n的$l砍去",
	"force" : 340,
        "dodge" : 30,
	"damage": 200,
	"lvl" : 45,
	"skill_name" : "菊圃秋霜",
        "damage_type" : "刺傷"
]),
([	"action" : "$N一式「伽葉微笑」，雙手食指交叉，指端射出一縷罡氣，穿過$n的$l",
	"force" : 420,
        "dodge" : 35,
	"damage": 240,
	"lvl" : 55,
	"skill_name" : "伽葉微笑",
        "damage_type" : "刺傷"
]),
([	"action" : "$N左掌豎立胸前，一式「佛祖拈花」，右手食指扣住拇指，輕輕對著$n一彈",
	"force" : 510,
        "dodge" : 50,
	"damage": 450,
	"lvl" : 62,
	"skill_name" : "佛祖拈花",
        "damage_type" : "刺傷"
])
});

int valid_enable(string usage) { return usage=="hand" || usage=="parry"; }
//int valid_enable(string usage) { return usage=="finger" || usage=="parry"; }

int valid_combine(string combo) { return combo=="sanhua-zhang"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練拈花指必須空手。\n");
	if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
		return notify_fail("你的混元一氣功火候不夠，無法學拈花指。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練拈花指。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
		level   = (int) me->query_skill("nianhua-zhi",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練拈花指。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}
string perform_action_file(string action)
{
	return __DIR__"nianhua-zhi/" + action;
}

// nianhua-zhi.c -拈花指

inherit SKILL;

mapping *action = ({
([      "action" : "$N側身抬臂，右指划了個半圈，一式「瓶花落硯」擊向$n的$l",
        "force" : 60,
        "dodge" : -5,
        "lvl" : 0,
        "skill_name" : "瓶花落硯",
        "damage_type" : "刺傷"
]),
([      "action" : "$N左掌虛托，一式「寒梅吐蕊」，右指穿腋疾出，指向$n的胸前",
        "force" : 70,
        "dodge" : -5,
        "lvl" : 0,
        "skill_name" : "寒梅吐蕊",
        "damage_type" : "刺傷"
]),
([      "action" : "$N俯身斜倚，左手半推，右手一式「初杏問酒」，向$n的$l划過",
        "force" : 90,
        "dodge" : 5,
        "lvl" : 0,
        "skill_name" : "初杏問酒",
        "damage_type" : "刺傷"
]),
([      "action" : "$N雙目微睜，一式「露草斜陽」，雙手幻化出千百個指影，拂向$n的
$l",
        "force" : 120,
        "dodge" : 5,
        "damage": 10,
        "lvl" : 9,
        "skill_name" : "露草斜陽",
        "damage_type" : "刺傷"
]),
([      "action" : "$N一式「仰月承霖」，左掌護住丹田，右手斜指蒼天，蓄勢點向$n的
$l",
        "force" : 160,
        "dodge" : 15,
        "damage": 10,
        "lvl" : 18,
        "skill_name" : "仰月承霖",
        "damage_type" : "刺傷"
]),
([      "action" : "$N雙掌平托胸前，十指叉開，一式「葉底留蓮」，指向$n的周身大穴
",
        "force" : 210,
        "dodge" : 20,
        "damage": 15,
        "lvl" : 27,
        "skill_name" : "葉底留蓮",
        "damage_type" : "刺傷"
]),
([      "action" : "$N雙掌翻飛，一式「清風拂桂」，指端迸出無數道勁氣，射向$n的全
身",
        "force" : 270,
        "dodge" : 25,
        "damage": 20,
        "lvl" : 36,
        "skill_name" : "清風拂桂",
        "damage_type" : "刺傷"
]),
([      "action" : "$N一式「菊圃秋霜」，并指如刃，一束束銳利無儔的刀氣，凌虛向$n
的$l砍去",
        "force" : 340,
        "dodge" : 30,
        "damage": 30,
        "lvl" : 45,
        "skill_name" : "菊圃秋霜",
        "damage_type" : "刺傷"
]),
([      "action" : "$N一式「伽葉微笑」，雙手食指交叉，指端射出一縷罡氣，穿過$n的
$l",
        "force" : 420,
        "dodge" : 35,
        "damage": 40,
        "lvl" : 55,
        "skill_name" : "伽葉微笑",
        "damage_type" : "刺傷"
]),
([      "action" : "$N左掌豎立胸前，一式「佛祖拈花」，右手食指扣住拇指，輕輕對著
$n一彈",
        "force" : 510,
        "dodge" : 50,
        "damage": 10,
        "lvl" : 62,
        "skill_name" : "佛祖拈花",
        "damage_type" : "刺傷"
])
});

int valid_enable(string usage) { return usage=="finger" || usage=="parry"; }

int valid_combine(string combo) { return combo=="sanhua-zhang"; }

int valid_learn(object me)
{
        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
                return notify_fail("練拈花指必須空手。\n");
        if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
                return notify_fail("你的混元一氣功火候不夠，無法學拈花指。\n");
        if ((int)me->query("max_neili") < 100)
                return notify_fail("你的內力太弱，無法練拈花指。\n");
        return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("nianhua-zhi",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        if ((int)me->query("qi") < 30)
                return notify_fail("你的體力太低了。\n");
        if ((int)me->query("neili") < 20)
                return notify_fail("你的內力不夠練拈花指。\n");
        me->receive_damage("qi", 30);
        me->add("neili", -10);
        return 1;
}
string perform_action_file(string action)
{
        return __DIR__"nianhua-zhi/" + action;
}
nianhua-zhi.old  "dodge" : 25,
        "damage": 20,
        "lvl" : 36,
        "skill_name" : "清風拂桂",
        "damage_type" : "刺傷"
]),
([      "action" : "$N一式「菊圃秋霜」，并指如刃，一束束銳利無儔的刀氣，凌虛向$n
的$l砍去",
        "force" : 340,
        "dodge" : 30,
        "damage": 30,
        "lvl" : 45,
        "skill_name" : "菊圃秋霜",
        "damage_type" : "刺傷"
]),
([      "action" : "$N一式「伽葉微笑」，雙手食指交叉，指端射出一縷罡氣，穿過$n的
$l",
        "force" : 420,
        "dodge" : 35,
        "damage": 40,
        "lvl" : 55,
        "skill_name" : "伽葉微笑",
        "damage_type" : "刺傷"
]),
([      "action" : "$N左掌豎立胸前，一式「佛祖拈花」，右手食指扣住拇指，輕輕對著
$n一彈",
        "force" : 510,
        "dodge" : 50,
        "damage": 10,
        "lvl" : 62,
        "skill_name" : "佛祖拈花",
        "damage_type" : "刺傷"
])
});

int valid_enable(string usage) { return usage=="finger" || usage=="parry"; }

int valid_combine(string combo) { return combo=="sanhua-zhang"; }

int valid_learn(object me)
{
        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
                return notify_fail("練拈花指必須空手。\n");
        if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
                return notify_fail("你的混元一氣功火候不夠，無法學拈花指。\n");
        if ((int)me->query("max_neili") < 100)
                return notify_fail("你的內力太弱，無法練拈花指。\n");
        return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("nianhua-zhi",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        if ((int)me->query("qi") < 30)
                return notify_fail("你的體力太低了。\n");
        if ((int)me->query("neili") < 20)
                return notify_fail("你的內力不夠練拈花指。\n");
        me->receive_damage("qi", 30);
        me->add("neili", -10);
        return 1;
}
string perform_action_file(string action)
{
        return __DIR__"nianhua-zhi/" + action;
}
": 10,
    "lvl" : 18,
    "skill_name" : "仰月承霖",
    "damage_type" : "刺傷"
]),
([      "action" : "$N雙掌平托胸前，十指叉開，一式「葉底留蓮」，指向$n的周身大穴
",
    "force" : 210,
    "dodge" : 20,
    "damage": 15,
    "lvl" : 27,
    "skill_name" : "葉底留蓮",
    "damage_type" : "刺傷"
]),
([      "action" : "$N雙掌翻飛，一式「清風拂桂」，指端迸出無數道勁氣，射向$n的全
身",
    "force" : 270,
    "dodge" : 25,
    "damage": 20,
    "lvl" : 36,
    "skill_name" : "清風拂桂",
    "damage_type" : "刺傷"
]),
([      "action" : "$N一式「菊圃秋霜」，并指如刃，一束束銳利無儔的刀氣，凌虛向$n
的$l砍去",
    "force" : 340,
    "dodge" : 30,
    "damage": 30,
    "lvl" : 45,
    "skill_name" : "菊圃秋霜",
    "damage_type" : "刺傷"
]),
([      "action" : "$N一式「伽葉微笑」，雙手食指交叉，指端射出一縷罡氣，穿過$n的
$l",
    "force" : 420,
    "dodge" : 35,
    "damage": 40,
    "lvl" : 55,
    "skill_name" : "伽葉微笑",
    "damage_type" : "刺傷"
]),
([      "action" : "$N左掌豎立胸前，一式「佛祖拈花」，右手食指扣住拇指，輕輕對著
$n一彈",
    "force" : 510,
    "dodge" : 50,
    "damage": 10,
    "lvl" : 62,
    "skill_name" : "佛祖拈花",
    "damage_type" : "刺傷"
])
});

int valid_enable(string usage) { return usage=="finger" || usage=="parry"; }    

int valid_combine(string combo) { return combo=="sanhua-zhang"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練拈花指必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候不夠，無法學拈花指。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練拈花指。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("nianhua-zhi",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
       return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
       return notify_fail("你的內力不夠練拈花指。\n");
    me->receive_damage("qi", 30);
    me->add("neili", -10);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"nianhua-zhi/" + action;
}
// persuading.c

inherit SKILL;

string type() { return "knowledge"; }

void skill_improved(object me)
{}

int valid_learn(object me)
{
        return notify_fail("渡世濟人要在實踐中提高。\n");
}
e":  "刺傷"
]),
([      "action":"驀地里$N猱身而上，躥到$n的身后，又躍回原地",
    "force" : 125,
    "dodge" : 60,
    "damage": 70,
    "lvl" : 25,
    "skill_name" : "猱身而上",
    "damage_type":  "刺傷"
]),
([      "action":"$N突然間招法一變，$w忽伸忽縮，招式詭奇絕倫。$n驚駭之中方寸大亂
",
    "force" : 130,
    "dodge" : 40,
    "damage": 50,
    "lvl" : 5,
    "skill_name" : "招法一變",
    "damage_type":  "刺傷"
]),
([      "action":"$N身形飄忽，有如鬼魅，轉了几轉，移步到$n的左側",
    "force" : 140,
    "dodge" : 40,
    "damage": 90,
    "lvl" : 10,
    "skill_name" : "有如鬼魅",
    "damage_type":  "刺傷"
]),
([      "action":"$N一聲冷笑，驀地里疾沖上前，一瞬之間，與$n相距已不到一尺，$w隨
即遞出",
    "force" : 160,
    "dodge" : -5,
    "damage": 100,
    "lvl" : 10,
    "skill_name" : "疾沖上前",
    "damage_type":  "刺傷"
]),
([      "action":"$N喝道：“好！”，便即拔出$w，反手刺出，跟著轉身離去",
    "force" : 200,
    "dodge" : 30,
    "damage": 50,
    "lvl" : 0,
    "skill_name" : "反手刺出",
    "damage_type":  "刺傷"
]),
([      "action":"$n只覺眼前一花，似乎見到$N身形一幌，但隨即又見$N回到原地，卻似
從未離開",
    "force" : 190,
    "dodge" : 80,
    "damage": 100,
    "lvl" : 20,
    "skill_name" : "眼前一花",
    "damage_type":  "刺傷"
]),
([      "action":"$N向后疾退，$n緊追兩步，突然間$N閃到$n面前，手中$w直指$n的$l",
    "force" : 180,
    "dodge" : 10,
    "damage": 90,
    "lvl" : 5,
    "skill_name" : "向后疾退",
    "damage_type":  "刺傷"
]),
([      "action":"$N驀地沖到$n面前，手中$w直刺$n右眼！$n慌忙招架，不想$N的$w突然
轉向",
    "force" : 250,
    "dodge" : 4,
    "damage": 100,
    "lvl" : 45,
    "skill_name" : "直刺右眼",
    "damage_type":  "刺傷"
]),
([      "action":"$N飛身躍起，$n抬眼一望，但見得$N從天直落而下，手中$w刺向$n的$l
",
    "force" : 340,
    "dodge" : 20,
    "damage": 125,
    "lvl" : 64,
    "skill_name" : "飛身躍起",
    "damage_type":  "刺傷"
]),
([      "action":"$N腰枝猛擺，$n眼前仿佛突然出現了七八個$N，七八只$w一起刺向$n",
    "force" : 400,
    "dodge" : 60,
    "damage": 130,
    "lvl" : 79,
    "skill_name" : "腰枝猛擺",
    "damage_type":  "刺傷"
]),
});


int valid_enable(string usage)
{
    return usage == "sword" || usage == "dodge" || usage == "parry";
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}
mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("pixie-jian",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

string query_dodge_msg(string limb)
{
    return dodge_msg[random(sizeof(dodge_msg))];
}

int valid_learn(object me)
{
    return notify_fail("辟邪劍法只能通過研習《葵花寶典》來學習。\n");
}

// cimu.c  辟邪劍法「刺目」

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
    int damage;
    string msg;
    object weapon;

    if (!target ) target = offensive_target(me);
    if (!target || !target->is_character() || !me->is_fighting(target) )
        return notify_fail("「刺目」只能對戰斗中的對手使用。\n");
    if ((int)me->query_skill("pixie-jian", 1) < 80 )
        return notify_fail(WHT"你辟邪劍法不夠嫻熟，使不出「刺目」。\n"NOR);
    if ((int)me->query("max_neili")<400)
        return notify_fail(RED"你內力修為不足，無法運足內力。\n"NOR);
    if ((int)me->query("neili")<200)
    {
        return notify_fail(HIC"你現在內力不夠，沒能將「刺目」使完！\n"NOR);
    }
    if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "sword")
       msg = HIC "$N左手兩指并攏，手臂暴長，迅捷異常分刺$n雙目，\n"NOR;
    else
       msg = HIC "$N手中長劍一振，劍尖一點暴長，分刺$n左右雙目，\n"NOR;
    if (random(me->query_skill("force")) > target->query_skill("force")/2|| 
       random(me->query("combat_exp")) > (int)target->query("combat_exp")/3 )
    {
        me->start_busy(2);
        target->start_busy(random(3));
        damage = (int)me->query_skill("pixie-jian", 1) + (int)me->query_skill("sword", 1)/2;
        damage = damage/2 + random(damage);
        target->receive_damage("qi", damage);
        target->receive_wound("qi", damage/2);
        msg += HIC"$n只看到寒尖一點，雙目一陣劇痛，眼前一黑，痛極而呼！\n"NOR;
        me->add("neili", -damage/5);
    } else
    {
        me->start_busy(2);
        msg += HIY"$p情急智生，抬手也$P右眼刺去，迫得$P回劍躍開。\n"NOR;
    }
    message_combatd(msg, me, target);
    if(!target->is_fighting(me)) target->fight_ob(me);
//    if(userp(target)) target->fight_ob(me);
//    else if( !target->is_killing(me) ) target->kill_ob(me);
    return 1;
}
pixie-jian.c  "damage": 150,
    "lvl" : 10,
    "skill_name" : "有如鬼魅",
    "damage_type":  "刺傷"
]),
([  "action":"$N一聲冷笑，驀地里疾沖上前，一瞬之間，與$n相距已不到一尺，$w隨即遞出",
    "force" : 160,
    "dodge" : -5,
    "damage": 200,
    "lvl" : 10,
    "skill_name" : "疾沖上前",
    "damage_type":  "刺傷"
]),
([  "action":"$N喝道：“好！”，便即拔出$w，反手刺出，跟著轉身離去",
    "force" : 200,
    "dodge" : 30,
    "damage": 250,
    "lvl" : 0,
    "skill_name" : "反手刺出",
    "damage_type":  "刺傷"
]),
([  "action":"$n只覺眼前一花，似乎見到$N身形一幌，但隨即又見$N回到原地，卻似從未離開",
    "force" : 190,
    "dodge" : 80,
    "damage": 200,
    "lvl" : 20,
    "skill_name" : "眼前一花",
    "damage_type":  "刺傷"
]),
([  "action":"$N向后疾退，$n緊追兩步，突然間$N閃到$n面前，手中$w直指$n的$l",
    "force" : 180,
    "dodge" : 10,
    "damage": 300,
    "lvl" : 5,
    "skill_name" : "向后疾退",
    "damage_type":  "刺傷"
]),
([  "action":"$N驀地沖到$n面前，手中$w直刺$n右眼！$n慌忙招架，不想$N的$w突然轉向",
    "force" : 250,
    "dodge" : 4,
    "damage": 350,
    "lvl" : 45,
    "skill_name" : "直刺右眼",
    "damage_type":  "刺傷"
]),
([  "action":"$N飛身躍起，$n抬眼一望，但見得$N從天直落而下，手中$w刺向$n的$l",
    "force" : 340,
    "dodge" : 20,
    "damage": 375,
    "lvl" : 64,
    "skill_name" : "飛身躍起",
    "damage_type":  "刺傷"
]),
([  "action":"$N腰枝猛擺，$n眼前仿佛突然出現了七八個$N，七八只$w一起刺向$n",
    "force" : 400,
    "dodge" : 60,
    "damage": 400,
    "lvl" : 79,
    "skill_name" : "腰枝猛擺",
    "damage_type":  "刺傷"
]),
});


int valid_enable(string usage)
{
    return usage == "sword" || usage == "dodge" || usage == "parry";
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
       return action[i]["skill_name"];
}
mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("pixie-jian",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
       return action[NewRandom(i, 20, level/5)];
}

string query_dodge_msg(string limb)
{
    return dodge_msg[random(sizeof(dodge_msg))];
}

int valid_learn(object me)
{
    return notify_fail("辟邪劍法只能通過研習《葵花寶典》來學習。\n");
}

string perform_action_file(string action)
{
    return __DIR__"pixie-jian/" + action;
}

,
        "dodge":   60,
        "damage":  100,
        "damage_type":  "刺傷"
    ]),
    ([  "name":    "江上弄笛",
        "action":  "$N手中$w化成一道光弧，直指$n$l，一招「江上弄笛」發出虎哮龍吟刺去",
        "dodge":   10,
        "damage":  100,
        "damage_type":  "刺傷"
    ]),
});

int valid_learn(object me)
{
    object ob;

    if ( (string)me->query("gender")=="女性" )
        return notify_fail("女子不能學辟邪劍法.\n");

//   if ( (string)me->query("gender")=="男性" )
//        return notify_fail("你必須先自宮,才能練辟邪劍法.\n");

    if( (int)me->query("max_neili") < 50 )
        return notify_fail("你的內力不夠，沒有辦法練辟邪劍法。\n");
//   if( (string)me->query_skill_mapped("force")!= "nine-moon-force")
//        return notify_fail("九陰赤煉劍法必須配合九陰心經才能練。\n");
    if( !(ob = me->query_temp("weapon"))
      || (string)ob->query("skill_type") != "sword" )
          return notify_fail("你必須先找一把劍才能練劍法。\n");

    return 1;
}

int valid_enable(string usage)
{
    return usage=="sword" || usage=="parry";
}

mapping query_action(object me, object weapon)
{
    return action[random(sizeof(action))];
}

int practice_skill(object me)
{
    if( (int)me->query("qi") < 30
    ||  (int)me->query("neili") < 5 )
       return notify_fail("你的內力或氣不夠，沒有辦法練習辟邪劍法！\n");
    me->receive_damage("qi", 30);
    me->add("neili", -5);
    write("你按著所學練了一遍辟邪劍法。\n");
    return 1;
}

int valid_effect(object me, object weapon, string name, int skill)
{
}

void skill_improved(object me)
{
    if( (int)me->query_skill("pixie-sword", 1)  % 10 == 0 ) {
        tell_object(me,
           RED "\n你突然覺得一股陰氣沖上心頭，只覺得想殺人....\n\n"NOR);
        me->add("shen", -2000);
    } else
    me->add("shen", -200);
}
/*
string perform_action_file(string action)
{
    return CLASS_D("ninemoon") + "/ninemoonsword/" + action;
}
*/

poison.cpoyu-quan.c=="cuff" || usage=="parry"; }

int valid_combine(string combo) { return combo=="hunyuan-zhang"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練「劈石破玉拳」必須空手。\n");
	if ((int)me->query_skill("zixia-shengong", 1) < 10)
		return notify_fail("你的「紫霞神功」火候不夠，無法學「劈石破玉拳」。\n");
	if ((int)me->query("max_neili") < 50)
		return notify_fail("你的內力太弱，無法練「劈石破玉拳」。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level   = (int) me->query_skill("poyu-quan",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練「劈石破玉拳」。\n");
	me->receive_damage("qi", 25);
	me->add("neili", -5);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"poyu-quan/" + action;
}
// pudu-zhang.c 普渡杖法
// modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([      "action":"$N使一招「黃牛轉角」，手中$w自下而上，沉猛無比地向$n的小腹挑去
。",
    "force" : 180,
    "dodge" : -10,
    "damage": 15,
    "lvl" : 0,
    "skill_name" : "黃牛轉角",
    "damage_type":"挫傷"
]),
([      "action":"$N快步跨出，一招「野馬追風」，左手平托$w，右掌猛推杖端，頂向$n
的胸口。",
    "force" : 200,
    "dodge" : -10,
    "damage": 20,
    "lvl" : 9,
    "skill_name" : "野馬追風",
    "damage_type":"挫傷"
]),
([      "action":"$N高舉$w，一招「猛虎跳澗」，全身躍起，手中$w摟頭蓋頂地向$n擊去
。",
    "force" : 230,
    "dodge" : -5,
    "damage": 30,
    "lvl" : 18,
    "skill_name" : "猛虎跳澗",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「獅子搖頭」，雙手持杖如櫓，對准$n猛地一攪，如同平地刮起
一陣旋風。",
    "force" : 270,
    "dodge" : -10,
    "damage": 35,
    "lvl" : 27,
    "skill_name" : "獅子搖頭",
    "damage_type":"挫傷"
]),
([      "action":"$N橫持$w，一招「蒼龍擺尾」，杖端化出無數個圓圈，凝滯沉重，把$n
纏在其中。",
    "force" : 320,
    "dodge" : -15,
    "damage": 40,
    "lvl" : 36,
    "skill_name" : "蒼龍擺尾",
    "damage_type":"挫傷"
]),
([      "action":"$N全身滾倒，$w盤地橫飛，突出一招「大蟒翻身」，杖影把$n裹了起來
",
    "force" : 380,
    "dodge" : 5,
    "damage": 55,
    "lvl" : 45,
    "skill_name" : "大蟒翻身",
    "damage_type":"挫傷"
]),
([      "action":"$N雙手和十，躬身一招「胡僧托缽」，$w自肘彎飛出，攔腰向$n撞去。
",
    "force" : 450,
    "dodge" : -5,
    "damage": 55,
    "lvl" : 53,
    "skill_name" : "胡僧托缽",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「慈航普渡」，$w如飛龍般自掌中躍出，直向$n的胸口穿入。",
    "force" : 530,
    "dodge" : -5,
    "damage": 60,
    "lvl" : 60,
    "skill_name" : "慈航普渡",
    "damage_type":"挫傷"
]),
});

int valid_enable(string usage) { return (usage == "staff") || (usage == "parry")
; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("pudu-zhang",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "staff")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練普渡杖法。\n");
    me->receive_damage("qi", 30);
    return 1;
}

。\n",
	"$n輕輕一轉，$N一招擊在地上，只打得塵土飛揚。\n",
});

string *dodge_msg = ({
	"$N一招擊在$n身上，卻被$n暗運乾坤大挪移，將內力盡數移入地下。\n",
	"$n輕輕一帶，$N發現自己招數回擊過來，嚇得往后倒退几步。\n",
        "$n手臂回轉，在$N手肘下輕輕一推，$N招數落空。\n",
        "$n右手伸出，在$N手腕上輕輕一拉，$N收勢不住，直往前扑去。\n",
        "$n身形不動，$N一招擊下，有如石沉大海，不覺呆住了。\n",
	"$n左牽右引，$N如身處漩流，連續轉了好几個圈。\n",
	"$n雙手回圈，$N只覺得前面好象有一堵牆，再也攻不進去。\n",
	"$n輕輕一轉，$N一招擊在地上，只打得塵土飛揚。\n",
});

int valid_enable(string usage) 
{ 
    return (usage == "parry") || (usage == "dodge");
}

string query_parry_msg(string limb)
{
       return parry_msg[random(sizeof(parry_msg))];
}

string query_dodge_msg(string limb)
{
        return dodge_msg[random(sizeof(dodge_msg))];
}

int valid_learn(object me)
{
	int lvl = (int)me->query_skill("qiankun-danuoyi", 1);

	if ( me->query("gender") == "無性" && lvl > 99)
		return notify_fail("你先天不足，再學下去難免走火入魔。\n");

	if ((int)me->query_skill("force", 1) < 100)
		return notify_fail("就這么點基本內功還想學乾坤大挪移？\n");

	if (lvl > 50)
		return notify_fail("乾坤大挪移只能通過讀<<乾坤大挪移>>心法提高。\n");

	if ((int)me->query("max_neili", 1) < 1500)
		return notify_fail("就這么點內力還想學乾坤大挪移？\n");

        if ((int)me->query_skill("force", 1) < lvl)
                return notify_fail("你的基本內功火候還不夠，小心走火入魔！\n");

        if ((int)me->query_skill("jiuyang-shengong", 1) < lvl)
                return notify_fail("你的九陽神功火候還不夠，小心走火入魔！\n");

	if ((int)(me->query("max_neili")/15) < lvl)
		return notify_fail("你的內力火候還不夠，小心走火入魔！\n");

        return 1;
}

int practice_skill(object me)
{
	return notify_fail("乾坤大挪移只能通過讀<<乾坤大挪移>>心法提高。\n");
}

string perform_function_file(string func)
{
        return __DIR__"qiankun-danuoyi/" + func;
}
qiankundanuoyi.c// qianye-shou.c 如來千葉手
// modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([      "action" : "$N一式「南海禮佛」，右手虛晃，左手揚起，突然拍向$n的背后二穴
",
    "force" : 100,
    "dodge" : 10,
    "lvl" : 0,
    "skill_name" : "南海禮佛",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N側身一晃，一式「金玉瓦礫」，左手拿向$n的肩頭，右拳打向$n的
胸口",
    "force" : 110,
    "dodge" : 10,
    "lvl" : 10,
    "skill_name" : "金玉瓦礫",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N一式「人命呼吸」，右手環攏成爪，一出手就向扣$n的咽喉要害",
    "force" : 130,
    "dodge" : 20,
    "damage": 5,
    "lvl" : 20,
    "skill_name" : "人命呼吸",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N左手虛招，右掌直立，一式「鏡里觀影」，錯步飄出，疾拍$n的面
門",
    "force" : 160,
    "dodge" : 20,
    "damage": 10,
    "lvl" : 30,
    "skill_name" : "鏡里觀影",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N使一式「水中捉月」，左拳上格，右手探底突出，抓向$n的襠部",
    "force" : 200,
    "dodge" : 30,
    "damage": 15,
    "lvl" : 38,
    "skill_name" : "水中捉月",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N雙拳揮舞，一式「浮云去來」，兩手環扣，攏成圈狀，猛擊$n的下
頜",
    "force" : 250,
    "dodge" : 30,
    "damage": 20,
    "lvl" : 45,
    "skill_name" : "浮云去來",
    "damage_type" : "內傷"
]),
([      "action" : "$N一式「水泡出沒」，十指伸縮，虛虛實實地襲向$n的全身要穴",  
    "force" : 310,
    "dodge" : 40,
    "damage": 25,
    "lvl" : 51,
    "skill_name" : "水泡出沒",
    "damage_type" : "內傷"
]),
([      "action" : "$N雙手抱拳，一式「夢里明明」，掌影翻飛，同時向$n施出九九八十
一招",
    "force" : 380,
    "dodge" : 40,
    "damage": 30,
    "lvl" : 56,
    "skill_name" : "夢里明明",
    "damage_type" : "內傷"
]),
([      "action" : "$N一式「覺后空空」，拳招若隱若現，若有若無，緩緩地拍向$n的丹
田",
    "force" : 460,
    "dodge" : 40,
    "damage": 40,
    "lvl" : 60,
    "skill_name" : "覺后空空",
    "damage_type" : "內傷"
]),
});

int valid_enable(string usage) { return usage=="hand" || usage=="parry"; }      

int valid_combine(string combo) { return combo=="longzhua-gong"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練如來千葉手必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候不夠，無法學如來千葉手。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練如來千葉手。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("qianye-shou",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練如來千葉手。\n");
    me->receive_damage("qi", 25);
    me->add("neili", -5);
    return 1;
}
// qimen-wuxing

inherit SKILL;

void create() { seteuid(getuid()); }

string type() { return "knowledge"; }

int practice_skill(object me)
{	
	return notify_fail("奇門五行能靠學(learn)來提高。\n");
}
qishang-quan/dp = 1;
	if( random(ap) > dp )
	{
		if(userp(me))
			me->add("neili",-100);

		msg = HIG "$n只覺得胸前一陣劇痛，“哇”的一聲噴出一口鮮血！\n"NOR;
		neili_wound = 100 + random(skill);
		if(neili_wound > target->query("neili"))
			neili_wound = target->query("neili");

		qi_wound = neili_wound / 5;
		if(qi_wound > target->query("qi"))
			qi_wound = target->query("qi");

		target->add("neili", -neili_wound);
		target->receive_wound("qi", qi_wound);
		target->start_busy(2);
		me->start_busy(random(2));
	}
	else
	{
		msg = HIG "只見$n不慌不忙，輕輕一閃，躲過了$N的必殺一擊！\n"NOR;
		if(userp(me))
			me->add("neili",-100);
		me->start_busy(4);
	}
	message_vision(msg, me, target);

	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);
	return 1;
}
閃",
	"force" : 230,
	"dodge" : 15,
	"damage": 10,
	"lvl" : 20,
	"skill_name" : "水中撈月",
        "damage_type" : "內傷"
]),
([	"action" : "$N身形躍起，一式「火海刀山」，雙拳當空擊下，勢不可擋",
	"force" : 270,
	"dodge" : 5,
	"damage": 20,
	"lvl" : 30,
	"skill_name" : "火海刀山",
        "damage_type" : "內傷"
]),
([	"action" : "$N身形一矮，一式「土載萬物」，兩拳自下而上，攻向$n",
	"force" : 320,
	"dodge" : 10,
	"damage": 15,
	"lvl" : 40,
	"skill_name" : "土載萬物",
        "damage_type" : "內傷"
]),
([	"action" : "$N身形一轉，一式「陰風慘慘」，攻向$n的身前身后",
	"force" : 380,
	"dodge" : 25,
	"damage": 25,
	"lvl" : 48,
	"skill_name" : "陰風慘慘",
        "damage_type" : "內傷"
]),
([	"action" : "$N移形換位，步到拳到，一式「陽光普照」，四面八方都是拳影",
	"force" : 450,
	"dodge" : 15,
	"damage": 35,
	"lvl" : 54,
	"skill_name" : "陽光普照",
        "damage_type" : "內傷"
]),
([	"action" : "$N長嘯一聲，向前踏出一步，雙拳中宮直進，一式「七者皆傷」，驟然擊向$n的前胸",
	"force" : 530,
	"dodge" : 20,
	"damage": 50,
	"lvl" : 60,
	"skill_name" : "七者皆傷",
        "damage_type" : "內傷"
])
});

int valid_enable(string usage) { return  usage=="cuff" || usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練七傷拳必須空手。\n");
//	if ((int)me->query_skill("hunyuan-yiqi", 1) < 10)
//		return notify_fail("你的混元一氣功火候不夠，無法學七傷拳。\n");
	if ((int)me->query("max_neili") < 50)
		return notify_fail("你的內力太弱，無法練七傷拳。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("qishang-quan",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練七傷拳。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"qishang-quan/" + action;
}
et->is_busy() )
		return notify_fail(target->name() + "目前正自顧不暇，放膽攻擊吧。\n");

	msg = CYN "$N使出秋風塵法「纏」字訣，拂塵連揮企圖把$n的全身纏住。\n";

	me->start_busy(random(1));
	if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/2 ) {
		msg += "結果$p被$P攻了個措手不及。\n" NOR;
		target->start_busy( (int)me->query_skill("qiufeng-chenfa") / 20 + 2);
	} else {
		msg += "可是$p看破了$P的企圖，并沒有上當。\n" NOR;
		me->start_busy(4);
	}
	message_combatd(msg, me, target);
	me->add("neili",-100);
	if(!target->is_fighting(me)) target->fight_ob(me);
	return 1;
}
  反螄  ,
	"dodge":		-20,
	"damage":		35,
	"lvl" : 40,
	"skill_name" : "流云斷川",
	"damage_type":	"劈傷"
]),
([	"action":		"$N力貫塵梢，一招「春風化雨」，手中$w舞出滿天幻影，排山倒海般掃向$n全身",
	"dodge":		-40,
	"damage":		50,
	"lvl" : 50,
	"skill_name" : "春風化雨",
	"damage_type":	"刺傷"
]),
([	"action":		"$N忽的向前一躍，一招「野馬分鬃」，手中$w分擊$n左右",
	"dodge":		-50,
	"damage":		60,
	"lvl" : 60,
	"skill_name" : "野馬分鬃",
	"damage_type":	"刺傷"
]),
([	"action":		"$N慢步上前，一招「竹影掃階」，手中$w緩緩罩向$n前胸",
	"dodge":		-60,
	"damage":		70,
	"lvl" : 70,
	"skill_name" : "竹影掃階",
	"damage_type":	"內傷"
])
});

int valid_enable(string usage) { return (usage == "whip") || (usage == "parry"); }

int valid_learn(object me)
{
	object weapon;

	if( (int)me->query("max_neili") < 300 )
		return notify_fail("你的內力不足，沒有辦法練秋風塵法, 多練些內力再來吧。\n");

	if ((int)me->query_skill("force", 1) < 50)
		return notify_fail("你的基本氣功火候太淺。\n");

	if ( !objectp(weapon = me->query_temp("weapon"))
	|| ( string)weapon->query("skill_type") != "whip" )
		return notify_fail("你必須先找一條拂塵才能練塵法。\n");

	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("qiufeng-chenfa",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "whip")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練秋風塵法。\n");
	me->receive_damage("qi", 5);
	return 1;
}

string perform_action_file(string action)
{
	if ( this_player()->query_skill("qiufeng-chenfa", 1) >= 40 )
		return __DIR__"qiufeng-chenfa/" + action;
}

。\n";

    me->start_busy(random(1));
    if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/2)
    {
        msg += "結果$p被$P攻了個措手不及  \n" NOR;
        target->start_busy( (int)me->query_skill("riyue-bian") / 20 + 2);
    } else {
        msg += "可是$p看破了$P的企圖，并沒有上當。\n" NOR;
    }
    message_combatd(msg, me, target);

    if(!target->is_fighting(me)) target->fight_ob(me);
    return 1;
}

age_type": "刺傷"
]),
([	"action":"$N力貫鞭梢，一招「裂空式」，手中$w舞出滿天鞭影，排山倒海般掃向$n全身",
	"dodge":       -60,
	"damage":      500,
	"lvl" :        110,
	"skill_name" : "裂空式",
	"damage_type": "刺傷"
]),
([	"action":"$N力貫鞭梢，一招「佛光普照」，手中$w舞出滿天鞭影，排山倒海般掃向$n全身",
	"dodge":       -60,
	"damage":      600,
	"lvl" :        120,
	"skill_name":  "佛光普照",
	"damage_type": "刺傷"
]),
([	"action":"$N力貫鞭梢，一招「金剛伏魔」，手中$w舞出滿天鞭影，排山倒海般掃向$n全身",
	"dodge":       -70,
	"damage":      700,
	"lvl" :        130,
	"skill_name" : "金剛伏魔",
	"damage_type": "刺傷"
]),
([	"action":"$N力貫鞭梢，一招「佛法無邊」，手中$w舞出滿天鞭影，排山倒海般掃向$n全身",
	"dodge":       -100,
	"damage":      800,
	"lvl" :        200,
	"skill_name" : "佛法無邊",
	"damage_type": "刺傷"
]),
});

int valid_enable(string usage) { return (usage == "whip") || (usage == "parry");
 }

int valid_learn(object me)
{
    object weapon;

    if( (int)me->query("max_neili") < 500 )
       return notify_fail("你的內力不足，沒有辦法練日月鞭法, 多練些內力再來吧。\n");

    if ((int)me->query_skill("hunyuan-yiqi", 1) < 50)
       return notify_fail("你的混元一氣功火候太淺。\n");

    if ( !objectp(weapon = me->query_temp("weapon"))
    || ( string)weapon->query("skill_type") != "whip" )
       return notify_fail("你必須先找一條鞭子才能練鞭法。\n");

    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("riyue-bian",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "whip")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練日月鞭法。\n");
    me->receive_damage("qi", 5);
    return 1;
}

string perform_action_file(string action)
{
    if ( this_player()->query_skill("riyue-bian", 1) >= 50 )
   return __DIR__"riyue-bian/" + action;
}

        "parry" : 15,
        "lvl" : 24,
        "damage" : 65,
        "damage_type" : "挫傷",
]),
([      "action" : "$N使一招「圓滿勢」，$w如離弦之箭般直搗$n的$l  ",
        "skill_name" : "圓滿勢",
        "force" : 280,
        "dodge" : -10,
        "parry" : 10,
        "lvl" : 32,
        "damage" : 70,
        "damage_type" : "挫傷",
]),
([      "action" : "$N躍入半空，使一招「月重輝勢」，高舉$w敲向$n的$l  ",
        "skill_name" : "月重輝勢",
        "force" : 320,
        "dodge" : 10,
        "parry" : 10,
        "lvl" : 40,
        "damage" : 75,
        "damage_type" : "挫傷",
]),
([      "action" : "$N使一招「捉月勢」，斜舉手中$w擊向$n的$l  ",
        "skill_name" : "捉月勢",
        "force" : 360,
        "dodge" : -15,
        "parry" : 15,
        "lvl" : 48,
        "damage" : 80,
        "damage_type" : "挫傷",
]),
([      "action" : "$N提一口真氣，使出「顯吉祥」，$w掃向$n的頭部  ",
        "skill_name" : "顯吉祥",
        "force" : 400,
        "dodge" : -20,
        "parry" : 15,
        "lvl" : 56,
        "damage" : 100,
        "damage_type" : "挫傷",
]),
});


int valid_enable(string usage) { return usage == "hammer" || usage == "parry"; }

int valid_learn(object me)
{
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力不夠。\n");
	if ((int)me->query_skill("longxiang", 1) >= 20 ||
	    (int)me->query_skill("xiaowuxiang", 1) >= 20)
		return 1;
	else if ((int)me->query_skill("longxiang", 1) < 20)
		return notify_fail("你的龍象般若功火候太淺。\n");
	else if ((int)me->query_skill("xiaowuxiang", 1) < 20)
		return notify_fail("你的小無相功火候太淺。\n");

}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("riyue-lun",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "hammer")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠,練不了日月輪法。\n");
	me->receive_damage("qi", 30);
	return 1;
}
mixed hit_ob(object me, object victim, int damage_bonus)
{
	object victim_w;
	victim_w = victim->query_temp("weapon");

	if (victim->query_temp("weapon") ||
	    victim->query_temp("secondary_weapon"))
	{
		if( (int)me->query_skill("riyue-lun", 1) < 20 )
		return HIW "一陣兵刃相撞的聲音過后，對方兵器居然完好無損。\n" NOR;
		if( random(victim->query_temp("apply/damage")) < 
			random(me->query_skill("riyue-lun", 1)/3 ) )
		{
			victim_w->unequip();
			victim_w->reset_action();
			victim_w->move(environment(victim));
			victim_w->set("name", victim_w->query("name") + "的碎片");
			victim_w->set("value", 0);
			victim_w->set("weapon_prop", 0);
			victim_w->set("long", "一堆破碎物事，好象是兵器碎片。\n");
			return HIB "你聽到「叮當」一聲兵刃破碎的聲音，兵器碎片濺了一地！\n" NOR;
		}
	}
}
rouyun-steps/zong.c// rouyun-steps.c  柔云步法
// modified by Venus Oct.1997
// Made by deaner
#include <ansi.h>
inherit SKILL;

mapping *action = ({
([      "action" :    "$n使一式"+HIW"『云中鶴影』"NOR+"，身形縱離地面數尺，躲過了$N這一招。\n",
    "dodge"  : 20
]),
([      "action" :    "$n身形飄飄，使出一式"+MAG"『云彩飄忽』"NOR+"，避過了$N的攻擊。\n",
    "dodge"  : 30
]),
([      "action" :    "$n使出一式"+HIB"『云霧繚繞』"NOR+"，$N眼前已沒了$n的蹤影。\n",
    "dodge"  : 40
]),
([      "action" :    "$n施展出一式"+HIG"『云雨不定』"NOR+"，身影急幌，在千鈞一發間躲過了$N的攻勢。\n",
    "dodge"  : 50
]),
([      "action" :    "$n衣袂飄飄，一式"+HIY"『云蒸霞蔚』"NOR+"，輕靈地避了開去。\n",
    "dodge"  : 60
]),
([      "action" :    "$n立即使出一式"+YEL"『云海浮沉』"NOR+"，沉肩滑步，微晃身影，避開了$N的攻擊。\n",
    "dodge"  : 75
]),
([      "action" :    "$n立刻使一式"+BLU"『云影萬千』"NOR+"，身形忽進忽退，忽左忽右，$N的攻擊已然無效。\n",
    "dodge"  : 90
])
});

mapping query_action(object me, object weapon)
{
    int zhaoshu, level;

    zhaoshu = sizeof(action);
    level   = (int) me->query_skill("rouyun-steps",1);

    if (level < 60 )
   zhaoshu--;

    if (level < 50 )
   zhaoshu--;

    if (level < 40 )
   zhaoshu--;
    return action[random(zhaoshu)];
}

int valid_enable(string usage)
{
    return (usage == "dodge") || (usage == "move");
}

int valid_learn(object me)
{
    if ((int)me->query_skill("lingyuan-xinfa", 1) < 10)
   return notify_fail(HIC"你的靈元心法火候太淺。\n"NOR);
    if ((string)me->query("gender") == "男性" )
   return notify_fail(HIY"這種輕靈的步法老爺們學來干嘛？\n"NOR);
    return 1;
}

string query_dodge_msg(string limb)
{
    object me, ob;
    mapping action;

    me = this_player();
    action = query_action(me, ob);

    return action["action"];
}

int practice_skill(object me)
{
    if( (int)me->query("qi") < 35 )
   return notify_fail(HIC"你的體力太差了，不能練柔云步法。\n"NOR);
    if (me->query_skill("rouyun-steps", 1) < 20)
   me->receive_damage("qi", 10);
    else if (me->query_skill("rouyun-steps", 1) < 60)
   me->receive_damage("qi", 20);
    else
   me->receive_damage("qi", 30);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"rouyun-steps/" + action;
}
damage_type" : "割傷"
]),
([	"action" : "$N揮舞$w，使出一招「張弓望的」，上劈下撩，左擋右開，齊齊罩向$n",
	"force" : 210,
        "dodge" : 15,
	"damage" : 35,
	"lvl" : 42,
	"skill_name" : "張弓望的",
	"damage_type" : "割傷"
]),
([	"action" : "$N一招「風送輕舟」，左腳躍步落地，$w順勢往前，挾風聲劈向$n的$l",
	"force" : 240,
        "dodge" : 5,
	"damage" : 50,
	"lvl" : 51,
	"skill_name" : "風送輕舟",
	"damage_type" : "割傷"
]),
([	"action" : "$N盤身駐地，一招「川流不息」，揮出一片流光般的刀影，向$n的全身涌去",
	"force" : 280,
        "dodge" : 20,
	"damage" : 60,
	"lvl" : 60,
	"skill_name" : "停車問路",
	"damage_type" : "割傷"
]),
});


int valid_enable(string usage) { return usage == "blade" || usage == "parry"; }

int valid_learn(object me)
{
	if ((int)me->query("max_neili") < 50)
		return notify_fail("你的內力不夠。\n");
	if ((int)me->query_skill("beiming-shengong", 1) < 10)
		return notify_fail("你的北冥神功火候太淺。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level   = (int) me->query_skill("ruyi-dao",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "blade")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
        return notify_fail("你的體力不夠練如意刀。\n");
	me->receive_damage("qi", 25);
	return 1;
}
sanhua-zhang.c的內力太弱，無法練散花掌。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("sanhua-zhang",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練散花掌。\n");
    me->receive_damage("qi", 30);
    me->add("neili", -10);
    return 1;
}

: "抓傷"
]),
([  "action" : "$N一聲怪叫，一爪橫出直擊$n的天靈蓋",
    "force" : 240,
    "dodge" : 50,
    "damage": 100,
    "lvl"   : 100,
    "skill_name" : "唯我獨尊" ,
    "damage_type" : "抓傷"
]),
});

int valid_enable(string usage) { return usage=="claw" ||  usage=="parry"; }
int valid_combine(string combo) { return combo=="chousui-duzhang"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
            return notify_fail("練三陰蜈蚣爪必須空手。\n");
        if ((int)me->query("max_neili") < 200)
            return notify_fail("你的內力太弱，無法練三陰蜈蚣爪。\n");
	return 1;
}

string query_skill_name(int level)
{
	int i;
	for(i = sizeof(action); i > 0; i--)
		if(level >= action[i-1]["lvl"])
			return action[i-1]["skill_name"];
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level = (int) me->query_skill("sanyin-wugongzhao",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
            return action[NewRandom(i, 5, level/5)];

}
int practice_skill(object me)
{
	object* ob;
	int i,skill,damage;

	skill = me->query_skill("jiuyin-baiguzhao",1);
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練三陰蜈蚣爪。\n");
	me->receive_damage("qi", 30);
        me->add("neili", -20);
	return 1;
}
// shaolin-shenfa.c 少林身法
// modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([      "action" : "$n一式「一葦渡江」，前后腳腳尖腳跟相靠，身體如行云流水般滑出
丈余。\n",
    "dodge"  : 10
]),
([      "action" : "$n一式「雨燕掠波」，雙臂前伸，全身貼地平飛，頓時閃過了$N的凌
厲攻勢。\n",
    "dodge"  : 20
]),
([      "action" : "$n一式「移步換形」，足不動，手不抬，一轉眼間便繞到了$N的身后
。\n",
    "dodge"  : 30
]),
([      "action" : "$n一式「分身化影」，一轉身間，四面八方飄動著無數個$n的身影，
令$N手無足措。\n",
    "dodge"  : 40
]),
([      "action" : "$n一式「孤騖落日」，全身筆直，拔地而起，在半空中一轉，已落到
几丈遠的地方。\n",
    "dodge"  : 50
]),
([      "action" : "$n一式「鴻雁雙飛」，兩臂鵬舉如翼，在剌剌風聲中，從$N頭頂橫躍
而過。\n",
    "dodge"  : 60
]),
([      "action" : "$n一式「蒼龍出水」，雙腳點地，全身化為一道白影，急速繞著$N打
了几轉。\n",
    "dodge"  : 70
]),
([      "action" : "$n一式「稚鳳歸巢」，身體如陀螺般急轉，氣流形成一個個漩渦，令
$N陷身其間，動彈不得。\n",
    "dodge"  : 80
])
});

mapping query_action(object me, object weapon)
{
    int zhaoshu, level;

    zhaoshu = sizeof(action);
    level   = (int) me->query_skill("shaolin-shenfa",1);

    if (level < 60 )
   zhaoshu--;

    if (level < 50 )
   zhaoshu--;

    if (level < 40 )
   zhaoshu--;

    return action[random(zhaoshu)];
}

int valid_enable(string usage)
{
    return usage == "dodge" || usage == "move";
}

int valid_learn(object me)
{
    return 1;
}

string query_dodge_msg(string limb)
{
    object me, ob;
    mapping action;

    me = this_player();
    action = query_action(me, ob);

    return action["action"];
}

int practice_skill(object me)
{
    if( (int)me->query("qi") < 40 )
   return notify_fail("你的體力太差了，不能練少林身法。\n");
    me->receive_damage("qi", 30);
    return 1;
}

shedao-qigong/shedao-qigong/chang2.c
#include <ansi.h>

inherit F_SSERVER;

int perform(object me, object target)
{
	int i,neili,damage;
	string msg;

	if( !target ) target = offensive_target(me);

	if( !target
	||	!target->is_character()
	||	!me->is_fighting(target) )
		return notify_fail("唱仙法只能在戰斗中使用。\n");

	if( (int)me->query_skill("shedao-qigong", 1) < 100 )
		return notify_fail("你的蛇島奇功不夠嫻熟，不會使用唱仙法吼字決。\n");

	if( environment(me)->query("no_fight") )
		return notify_fail("在這里不能攻擊他人。\n");

	if( (int)me->query("neili") < 500 )
		return notify_fail("你已經唱得精疲力竭,內力不夠了。\n");


	neili = me->query("neili");

	me->add("neili", -(300+random(200)));
	me->receive_damage("qi", 10);

	me->start_busy(random(5));

	message_combatd(
		HIY "$N深深地吸一  氣，忽然仰天長嘯，高聲狂叫：不死神龍，唯我不敗！\n" NOR, me);

		if( neili/2 + random(neili/2) < (int)target->query("neili")/10) 
		return notify_fail("敵人的內力比你高出太多,傷不了！\n");
		
		damage = (neili - (int)target->query("max_neili")) / 10;
		if( damage > 0 ) {
			target->receive_damage("jing", damage);
			target->receive_damage("qi", damage);
			target->receive_wound("jing", damage);
			target->receive_wound("qi", damage);
		message_combatd(
		HIR "$N只覺腦中一陣劇痛，金星亂冒，猶如有萬條金龍在眼前舞動。\n" NOR, target);
		}
		else
		{
		message_combatd(
		HIR "$N只覺腦中微痛，似乎受了一點輕傷。\n" NOR, target);
		target->receive_damage("jing", 10 );
		target->receive_damage("qi", 10 );
		target->receive_wound("qi", 10);
		}
		if( !target->is_killing(me) ) target->kill_ob(me);
		if( !me->is_killing(target) ) me->fight_ob(target);

	return 1;
}
shedao-qigong.c梗    紉環鄭  繚詡繽罰    浦被  n",
	"dodge": 90,
	"damage" : 90,
	"parry": 30,
	"force": 400,
	"damage_type": "內傷",
	"skill_name" : "狄青降龍"
]),
});

int valid_enable(string usage) { return usage=="sword"|| usage=="staff"|| usage=="parry"; }

int valid_learn(object me)
{
	object weapon;

	if (objectp(weapon = me->query_temp("weapon")))
	if ((string)weapon->query("skill_type") != "staff"&&(string)weapon->query("skill_type") != "sword")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query_skill("shenlong-xinfa", 1) < 50)
		return notify_fail("你的神龍心法火候不夠，無法學蛇島奇功.\n");
	if ((int)me->query_skill("force", 1) < 50)
		return notify_fail("你的基本內功火候不夠，無法學蛇島奇功。\n");
	if ((int)me->query_skill("shenlong-bashi", 1) < 50)
		return notify_fail("你的神龍八式火候不夠，無法學蛇島奇功。\n");
	if ((int)me->query_skill("shenlong-xinfa",1) <(int)me->query_skill("shedao-qigong",1))
		return notify_fail("你的神龍心法火
候不夠，無法繼續學蛇島奇功。\n");
	return 1;
}

mapping query_action(object me, object weapon)
{
	return action[random(sizeof(action))];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 30)
		return notify_fail("你的內力不夠練蛇島奇功。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"shedao-qigong/" + action;
}
// shenghuo-ling.c 聖火令法
// Modified by Venus Oct.1997
// write by Xiang

inherit SKILL;

mapping *action = ({
([  "action": "$N踏上一步，忽地在地上一坐，已抱住了$n小腿。十指扣住了$n小腿上
的‘中都’‘筑賓’兩穴，$n只覺下半身酸麻難動，大吃一驚",
    "dodge": -10,
    "damage": 30,
    "damage_type": "挫傷"
]),
([  "action": "突然之間，$N身形晃動，同時欺近，手中$w往$n身上划去。腳下不知如何
移動，身形早變。右手同時抓住$n后領，一抖之下，將$n向外遠遠擲了出去",
    "dodge": -20,
    "damage": 50,
    "damage_type": "挫傷"
]),
([  "action": "$N欺身直進，左手持$w向$n天靈蓋上拍落。便在這一瞬之間，$n滾身向
左，已然一拳打在$n腿上。$n一個踉蹌，$N橫過$w戳向$n后心",
    "dodge": -30,
    "damage": 70,
    "damage_type": "刺傷"
]),
([  "action": "$N忽地放手，手中那柄$w尾端向上彈起，拍的一響，正好打中$n手腕。",
    "dodge": -20,
    "damage": 90,
    "damage_type": "刺傷"
]),
([  "action": "$N忽然低頭，一個頭錘向$n撞來，$n不動聲色，向旁又是一讓，突覺胸口
一痛，已被$N手肘撞中",
    "dodge": -20,
    "damage": 110,
    "damage_type": "瘀傷"
]),
([  "action": "$N忽然低頭，一個頭錘向$n撞來，$n不動聲色，向旁又是一讓，突覺胸口
$N手中$w急揮橫掃，突然連翻三個空心筋斗。$n不知對方是何用意，心想還是避之
為妙，剛向左踏開一步，眼前白光急閃，$N的$w已到右肩",
    "dodge": -20,
    "damage": 130,
    "damage_type": "挫傷"
]),
([  "action": "$N忽然低頭，一個頭錘向$n撞來，$n不動聲色，向旁又是一讓，突覺胸口
一痛，已被$N手肘撞中",
    "dodge": -20,
    "damage": 150,
    "damage_type": "挫傷"
]),
});

int valid_enable(string usage) { return (usage == "sword") || (usage == "parry"); }

mapping query_action(object me, object weapon)
{
    if (random(me->query_skill("sword",1)) > 60 &&
        me->query_skill("jiuyang-shengong",1) > 60 &&
        me->query("neili") > 100 &&
        (string)weapon->query("id") == "shenghuo ling" ) {
        me->add("neili", -100);
        return ([
      "action": "$N眼中射出一道青芒，飛身而前，手中聖火令相互一擊，錚的一響，
$n心神一蕩，身子從半空中直墮下來，但覺腰脅中一陣疼痛，已被$N踢中了一腳。
砰的一下，$N的聖火令卻又擊中了$n的$l",
      "damage": 500,
      "damage_type": "刺傷"]);
    }
    return action[random(sizeof(action))];
}

int valid_learn(object me)
{
	int lvl = (int)me->query_skill("qiankun-danuoyi", 1);

	if ( me->query("gender") == "無性" && lvl > 49)
		return notify_fail("你先天不足，再學下去難免走火入魔。\n");

	if ((int)me->query("max_neili") < 50)
		return notify_fail("就這么點內力還想學聖火令法？\n");

        if ((int)me->query_skill("jiuyang-shengong", 1) < 20)
                return notify_fail("你的九陽神功火候還不夠，學不了聖火令法！\n");

        return 1;
}

int practice_skill(object me)
{
        object weapon;

        if (!objectp(weapon = me->query_temp("weapon"))
            || (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不對。\n");
        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力不夠練聖火令法。\n");
        me->receive_damage("qi", 40);
        return 1;
}



int valid_learn(object me) { return 1; }

string query_dodge_msg(string limb)
{
    return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
      if((int)me->query("qi") < 40 )
           return notify_fail("你的體力太差了，不能練身空行。\n");
      me->receive_damage("qi", 30);
      return 1;
}
 "move";
}

int valid_learn(object me)
{
	return 1;
}

string query_dodge_msg(string limb)
{
	object me, ob;
	mapping action;

	me = this_player();
	action = query_action(me, ob);

	return action["action"];
}

int practice_skill(object me)
{
	if( (int)me->query("qi") < 40 )
		return notify_fail("你的體力太差了，不能練習身空行。\n");
	me->receive_damage("qi", 20);
	return 1;
}
地，雙腿翻飛踢向$n",
	"damage" : 60,
	"dodge": -20,
	"parry": -20,
	"force": 250,
	"damage_type": "瘀傷",
	"skill_name" : "乾坤倒旋"
]),
([	"action": "$N大吼一聲，使出「同歸于盡」，不顧一切般扑向$n",
	"dodge": -25,
	"parry": -10,
	"damage" : 60,
	"force": 400,
	"damage_type": "內傷",
	"skill_name" : "同歸于盡"
]),
([	"action": "$N深吸一口氣，身體漲成球狀，猛然流星趕月般直撞向$n",
	"dodge": 80,
	"damage" : 70,
	"parry": -10,
	"force": 400,
	"damage_type": "內傷",
	"skill_name" : "流星趕月"
]),
});

int valid_enable(string usage) { return usage=="hand" || usage=="parry"; }

int valid_combine(string combo) { return combo=="huagu-mianzhang"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練神龍八式必須空手。\n");
	if ((int)me->query_skill("shenlong-xinfa", 1) < 50)
		return notify_fail("你的神龍心法火候不夠，無法學神龍八式.\n");
	if ((int)me->query_skill("force", 1) < 30)
		return notify_fail("你的基本內功火候不夠，無法學神龍八式。\n");
	if ((int)me->query("max_neili") < 350)
		return notify_fail("你的內力太弱，無法練神龍八式。\n");
	if (2*(int)me->query_skill("shenlong-xinfa",1) <(int)me->query_skill("shenlong-bashi",1))
		return notify_fail("你的神龍心法火
候不夠，無法繼續學神龍八式。\n");
	return 1;
}

mapping query_action(object me, object weapon)
{
	return action[random(sizeof(action))];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 30)
		return notify_fail("你的內力不夠練神龍八式。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

shenlong-xinfa/shenlong-xinfa/powerup.cshenlong-xinfa.cshenlong-xinfa.java中，左腳在右足上一點，從$N頭頂騰空而過。\n",
     "$n一式「仙子出水」，長袖一拂，全身化為一道白影，幽幽地從$N頭頂飄落。\n",
     "$n一式「峰回路轉」，身體如陀螺般急轉，登時一股氣流涌出，令$N難以動彈。\n",
     "$n一式「臨行秋波」，身行倏的從$N的眼前直繞到身后，$N瞪大了兩眼，不明所以。\n",
     "$n一式「浪子回頭」，身行倏的從$N的眼前飄過，長發一甩，瀟洒之極。\n",
});

int valid_enable(string usage) { return (usage == "dodge") || (usage == "move");
 }

int valid_learn(object me) { return 1; }

string query_dodge_msg(string limb)
{
    return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
      if((int)me->query("qi") < 40 )
           return notify_fail("你的體力太差了，不能練神行百變。\n");
      me->receive_damage("qi", 30);
      return 1;
}
n一式「凌波微步」，左踏巽，右轉乾，身行一晃，便到几丈遠的地方。\n",
	"dodge"  : 50
]),
([	"action" : "$n一式「更上層樓」，身在空中，左腳在右足上一點，從$N頭頂騰空而過。\n",
	"dodge"  : 60
]),
([	"action" : "$n一式「仙子出水」，長袖一拂，全身化為一道白影，幽幽地從$N頭頂飄落。\n",
	"dodge"  : 70
]),
([	"action" : "$n一式「峰回路轉」，身體如陀螺般急轉，登時一股氣流涌出，令$N難以動彈。\n",
	"dodge"  : 80
]),
([	"action" : "$n一式「臨行秋波」，身行倏的從$N的眼前直繞到身后，$N瞪大了兩眼，不明所以。\n",
	"dodge"  : 90
]),
([	"action" : "$n一式「浪子回頭」，身行倏的從$N的眼前飄過，長發一甩，瀟洒之極。\n",
	"dodge"  : 100
]),
});

mapping query_action(object me, object weapon)
{
	int zhaoshu, level;

	zhaoshu = sizeof(action);
	level   = (int) me->query_skill("shenxing-baibian",1);


	return action[random(zhaoshu)];
}

int valid_enable(string usage)
{
	return usage == "dodge" || usage == "move";
}

int valid_learn(object me)
{
	return 1;
}

string query_dodge_msg(string limb)
{
	object me, ob;
	mapping action;

	me = this_player();
	action = query_action(me, ob);

	return action["action"];
}

int practice_skill(object me)
{
	if( (int)me->query("qi") < 40 )
		return notify_fail("你的體力太差了，不能練神行百變。\n");
	me->receive_damage("qi", 20);
	return 1;
}

// shexing-diaoshou.c 蛇形刁手

inherit SKILL;

mapping *action = ({
([	"action" : "$N一式「靈蛇出洞」，右手虛晃，左手揚起，突然拍向$n的背后二穴",
	"force" : 90,
        "dodge" : 10,
	"lvl" : 0,
	"skill_name" : "靈蛇出洞",
	"damage_type" : "瘀傷"
]),
([	"action" : "$N側身一晃，一式「虎頭蛇尾」，左手拿向$n的肩頭，右拳打向$n的胸口",
	"force" : 120,
        "dodge" : 10,
	"lvl" : 10,
	"skill_name" : "虎頭蛇尾",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N一式「畫蛇添足」，右手環攏成爪，一出手就向扣$n的咽喉要害",
	"force" : 130,
        "dodge" : 20,
	"damage": 5,
	"lvl" : 20,
	"skill_name" : "畫蛇添足",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手虛招，右掌直立，一式「杯弓蛇影」，錯步飄出，疾拍$n的面門",
	"force" : 160,
        "dodge" : 20,
	"damage": 10,
	"lvl" : 30,
	"skill_name" : "杯弓蛇影",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N使一式「蛇行鼠竄」，左拳上格，右手探底突出，抓向$n的襠部",
	"force" : 200,
        "dodge" : 30,
	"damage": 15,
	"lvl" : 38,
	"skill_name" : "蛇行鼠竄",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N一式「蛇磐青竹」，十指伸縮，虛虛實實地襲向$n的全身要穴",
	"force" : 310,
        "dodge" : 40,
	"damage": 25,
	"lvl" : 51,
	"skill_name" : "蛇磐青竹",
        "damage_type" : "內傷"
]),
([	"action" : "$N雙手抱拳，一式「萬蛇洶涌」，掌影翻飛，同時向$n施出九九八十一招",
	"force" : 380,
        "dodge" : 40,
	"damage": 30,
	"lvl" : 56,
	"skill_name" : "萬蛇洶涌",
        "damage_type" : "內傷"
]),
([	"action" : "$N一式「白蛇吐信」，拳招若隱若現，若有若無，急急地拍向$n的丹田",
	"force" : 460,
        "dodge" : 40,
	"damage": 40,
	"lvl" : 60,
	"skill_name" : "白蛇吐信",
        "damage_type" : "內傷"
]),
});

int valid_enable(string usage) { return usage=="hand" || usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練蛇形刁手必須空手。\n");
	if ((int)me->query_skill("hamagong", 1) < 20)
		return notify_fail("你的蛤蟆功火候不夠，無法學蛇形刁手。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練蛇形刁手。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("shexing-diaoshou", 1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練蛇形刁手。\n");
	me->receive_damage("qi", 25);
	me->add("neili", -5);
	return 1;
}
           "force":  400,
           "dodge":  100,
           "damage": 400,
           "damage_type":  "刺傷"
        ]),
        ([ "name":   "中沖劍",
           "action": "$N右手中指一豎，“中沖劍”向前刺出。真氣鼓蕩，嗤然聲響，
無形劍氣直指$n的$l",
           "force":  350,
           "dodge":  40,
           "damage": 500,
           "damage_type":  "刺傷"
        ]),
        ([ "name":   "關沖劍",
           "action": "$N右手無名指伸出，“關沖劍”劍路拙滯古朴，一股雄渾的內
力鼓蕩而出，如排山倒海般向$n涌去",
           "force":  350,
           "dodge":  60,
           "damage": 500,
           "damage_type":  "刺傷"
        ]),
        ([ "name":   "少澤劍",
           "action": "$N左手小指一伸，一條氣流從少沖穴中激射而出，“少澤劍”
出手入風，指向$n的$l",
           "force":  350,
           "dodge":  50,                            
           "damage": 500,
           "damage_type":  "刺傷"
        ]),
        ([ "name":   "少沖劍",
           "action": "$N右手反指，小指伸出，真氣自少沖穴激蕩而出，“少澤劍”
橫生奇變，從$n意想不到的方向刺向$n的$l",
           "force":  350,
           "dodge":  40,
           "damage": 500,
           "damage_type":  "刺傷"
        ]),
});


int valid_enable(string usage) { return usage=="finger" ||  usage=="parry"; }

int valid_learn(object me)
{
        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
            return notify_fail("練六脈神劍必須空手。\n");
        if ((int)me->query("max_neili") < 1200)
            return notify_fail("你的內力太弱，無法學六脈神劍。\n");
        if ((int)me->query_skill("kurong-changong",1) < 120)
            return notify_fail("你的枯榮禪功太低，無法學六脈神劍。\n");
        return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action); i > 0; i--)
                if(level >= action[i-1]["lvl"])
                        return action[i-1]["skill_name"];
}

int practice_skill(object me)
{
        object* ob, obj;
        int i,skill,damage;

        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力太低了。\n");
        if ((int)me->query("neili") < 50)
                return notify_fail("你的內力不夠練六脈神劍。\n");
        if( skill > 100 && me->query("shen") < 1)
                return notify_fail("這種武功當得行俠義事。\n");
        me->receive_damage("qi", 40);
        me->add("neili", -30);
        return 1;
}
                                          
mixed hit_ob(object me, object victim, int damage_bonus)
{
	if( damage_bonus < 100 ) return 0;

	if( random(damage_bonus/2) > victim->query_str() )
	{
		victim->receive_wound("qi", (damage_bonus - 100) / 2 );
		return HIR "你聽到「嗤啦」一聲輕響，臉上竟濺到一些血滴！\n" NOR;
	}
}

mapping query_action(object me, object weapon)
{
	if (random(me->query_skill("six-finger",1)) > 60 &&
		me->query_skill("kurong-changong",1) > 60 &&
		me->query("neili") > 100)
	{
		me->add("neili", -100);
		return ([
	"action": "$N忽然覺得劍譜中的六路劍法一一涌向心頭，十指紛彈，此去彼來，
連綿無盡。劍氣縱橫，塵煙四起，六路劍法回轉運使，$n頓時心神大亂，但
覺全身几處刺痛，几股鮮血從身上標出。忍痛抬頭一看，一柱劍氣迎面又到",
	"damage": 500,
	"damage_type": "刺傷"]);
	}
	return action[random(sizeof(action))];
}

sougu/muyeyingyang.csougu.c="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練搜骨鷹爪功必須空手。\n");
//	if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
//		return notify_fail("你的混元一氣功火候不夠，無法學般若掌。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法學搜骨鷹爪功。\n");
	if ((int)me->query("str") < 24)
		return notify_fail("你的臂力太差，無法學搜骨鷹爪功。\n");
	return 1;
}

string query_skill_name(int level)
{
	int i;
	for(i = sizeof(action)-1; i >= 0; i--)
		if(level >= action[i]["lvl"])
			return action[i]["skill_name"];
}

mapping query_action(object ob, object weapon)
{
	int i, level;
	level = (int)ob->query_skill("sougu", 1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練鷹爪功。\n");
	me->receive_damage("qi", 25);
	me->add("neili", -5);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"sougu/" + action;
}
// staff.c
// modified by Venus Oct.1997
inherit SKILL;

// stick.c
// modified by Venus Oct.1997
inherit SKILL;

sun-finger/qiankun.csun-finger.c                       
	"dodge" : 25,
	"damage": 100,
	"lvl" : 100,
	"skill_name" : "陰陽交錯",
	"damage_type" : "內傷"
]),
([  "action" : "$N一聲大吼, 一式「三陽開泰」，用盡全力向$n的$l點去",
	"force" : 300,
	"dodge" : 10,
	"damage": 120,
	"lvl" : 130,
	"skill_name" : "三陽開泰",
	"damage_type" : "內傷"
]),
});

int valid_enable(string usage) { return usage=="finger" || usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練一陽指必須空手。\n");
	if ((int)me->query_skill("kurong-changong", 1) < 80)
		return notify_fail("你的枯榮禪功火候不夠，無法學一陽指。\n");
	if (me->query("gender") != "男性")
		return notify_fail("你陽氣不足，無法學一陽指。\n");
	if ((int)me->query("max_neili") < 700)
		return notify_fail("你的內力太弱，無法練一陽指。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level   = (int) me->query_skill("sun-finger", 1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 30)
		return notify_fail("你的內力不夠練一陽指!\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
        return __DIR__"sun-finger/" + action;
}
swimming.ctaiji-dao.cce" : 280,
    "dodge" : 20,
    "parry" : 10,
    "damage" : 60,
    "damage_type" : "割傷"
]),
});


int valid_enable(string usage) { return (usage == "blade") || (usage == "parry")
; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("taiji-shengong", 1) < 20)
   return notify_fail("你的太極神功火候太淺。\n");
    if ((int)me->query_skill("taiji-quan", 1) < 20)
   return notify_fail("你的太極拳火候太淺。\n");
    return 1;
}

mapping query_action(object me, object weapon)
{
int zhaoshu, level;

zhaoshu = sizeof(action)-1;
level   = (int) me->query_skill("taiji-dao",1);

if (level < 60 )
zhaoshu--;
if (level < 55 )
zhaoshu--;
if (level < 50 )
zhaoshu--;
if (level < 40 )
zhaoshu--;
if (level < 30 )
zhaoshu--;
if (level < 20 )
zhaoshu--;
if (level < 10 )
zhaoshu--;

return action[random(zhaoshu)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "blade")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練太極刀法。\n");
    me->receive_damage("qi", 30);
    return 1;
}

taiji-jian/chan.ctaiji-jian/lian.ctaiji-jian/sui.ctaiji-jian.cn的
$l",
        "force" : 120,
        "dodge" : 10,
        "parry" : 15,
        "damage" : 70,
        "lvl" : 29,
        "damage_type" : "刺傷"
]),
([      "action" : "$N左腿提膝，手中$w斜指，一招「宿鳥投林」刺向$n的$l",
        "force" : 130,
        "dodge" : 15,
        "parry" : 15,
        "damage" : 70,
        "lvl" : 34,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「青龍出水」，$w自下而上划出一個大弧，平平地揮向$n的$l",
        "force" : 140,
        "dodge" : 15,
        "parry" : 15,
        "damage" : 71,
        "lvl" : 39,
        "damage_type" : "刺傷"
]),
([      "action" : "$N使出「三環套月」，$w划出三個圓圈，劍鋒直出，綿綿不斷划向$n
的$l",
        "force" : 150,
        "dodge" : 10,
        "parry" : 20,
        "damage" : 73,
        "lvl" : 44,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「風卷荷葉」，$w輕靈地划出几個圓弧，迅速地向$n的$l揮去",
        "force" : 160,
        "dodge" : 15,
        "parry" : 20,
        "damage" : 75,
        "lvl" : 49,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「虎抱頭」，$w划出一個左低右高的大弧，斜斜地斬向$n的$l",
        "force" : 170,
        "dodge" : 15,
        "parry" : 20,
        "damage" : 77,
        "lvl" : 54,
        "damage_type" : "刺傷"
]),
([      "action" : "$N使出「獅子搖頭」，$w由右向左划出一個大８字，將$n圈在其中",
        "force" : 180,
        "dodge" : 15,
        "parry" : 20,
        "damage" : 79,
        "lvl" : 59,
        "damage_type" : "刺傷"
]),
([      "action" : "$N左腳踏實，右腳虛點，一招「仙人指路」，右手$w帶著一團劍花，
逼向$n的$l",
        "force" : 190,
        "dodge" : 5,
        "parry" : 20,
        "damage" : 81,
        "lvl" : 64,
        "damage_type" : "刺傷"
]),
([      "action" : "$N輕輕躍起，一招「野馬跳澗」，$w在半空中化為一圈銀芒，落向$n
的$l",
        "force" : 200,
        "dodge" : 15,
        "parry" : 20,
        "damage" : 83,
        "lvl" : 69,
        "damage_type" : "刺傷"
]),
([      "action" : "$N兩腿前箭后弓，一招「射雁式」，右手$w直刺$n的$l",
        "force" : 210,
        "dodge" : 20,
        "parry" : 20,
        "damage" : 85,
        "lvl" : 74,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「小魁星」，身形往左一挫，左手劍訣，右手$w平平地向$n的
$l揮去",
        "force" : 220,
        "dodge" : 40,
        "parry" : 20,
        "damage" : 87,
        "lvl" : 79,
        "damage_type" : "刺傷"
]),
([      "action" : "$N猱身扑上，一招「白猿獻果」，手中$w斜斜地向$n的$l揮去",
        "force" : 230,
        "dodge" : 30,
        "parry" : 20,
        "damage" : 89,
        "lvl" : 84,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「迎風撣塵」，$w看似隨意地一揮，$n卻陡覺一股勁氣迎面襲
來。",
        "force" : 240,
        "dodge" : 20,
        "parry" : 25,
        "damage" : 91,
        "lvl" : 89,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「順水推舟」，$w自上而下划出一個大弧，平平地向$n的$l揮
去。",
        "force" : 250,
        "dodge" : 45,
        "parry" : 25,
        "damage" : 93,
        "lvl" : 94,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「流星趕月」，$w疾刺$n的$l",
        "force" : 260,
        "dodge" : 35,
        "parry" : 25,
        "damage" : 95,
        "lvl" : 99,
        "damage_type" : "刺傷"
]),
([      "action" : "$N突然盤蹲下身來，一招「海底撈月」，$w自下而上地向$n的$l揮去",
        "force" : 270,
        "dodge" : 25,
        "parry" : 25,
        "damage" : 97,
        "lvl" : 104,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「挑帘式」，$w自下而上徐徐划出一個大弧，平平地向$n的$l
揮去",
        "force" : 280,
        "dodge" : 35,
        "parry" : 25,
        "damage" : 99,
        "lvl" : 109,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「黃蜂入洞」，$w自上而下划出一個大弧，平平地向$n的$l揮
去",
        "force" : 290,
        "dodge" : 40,
        "parry" : 25,
        "damage" : 102,
        "lvl" : 114,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「大鵬展翅」，身形躍起，右手$w刺向$n的$l",
        "force" : 300,
        "dodge" : 45,
        "parry" : 25,
        "damage" : 106,
        "lvl" : 119,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「車輪劍」，$w化作一片銀盤，平平地向$n的$l卷去",
        "force" : 310,
        "dodge" : 45,
        "parry" : 25,
        "damage" : 120,
        "lvl" : 124,
        "damage_type" : "刺傷"
]),
([      "action" : "$N左腳輕點地面，身形往前一扑，一招「天馬行空」，$w向$n的$l揮
去",
        "force" : 320,
        "dodge" : 45,
        "parry" : 30,
        "damage" : 125,
        "lvl" : 129,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「風掃梅花」，身體躍在半空，手中$w掃向$n的$l",
        "force" : 330,
        "dodge" : 45,
        "parry" : 30,
        "damage" : 130,
        "lvl" : 90,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「卻步抽劍」，左腳躍步落地，$w回抽，反手勾向$n的$l",
        "force" : 340,
        "dodge" : 35,
        "parry" : 30,
        "damage" : 140,
        "lvl" : 139,
        "damage_type" : "刺傷"
]),
([      "action" : "$N右腿半屈般蹲，一招「如封似閉」，劍尖虛指，轉身撩向$n的$l",
        "force" : 350,
        "dodge" : 25,
        "parry" : 30,
        "damage" : 150,
        "lvl" : 144,
        "damage_type" : "刺傷"
]),
([  "action" : "$N回身擰腰，右手虛抱，一招「撥云瞻日」，$w中宮直進，刺向$n的$l",
        "force" : 380,
        "dodge" : 35,
        "parry" : 30,
        "damage" : 160,
        "lvl" : 149,
        "damage_type" : "刺傷"
]),
});


int valid_enable(string usage)
{ return (usage == "sword") || (usage == "parry"); }

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 100)
                return notify_fail("你的內力不夠。\n");

        if ((int)me->query_skill("taiji-shengong", 1) < 20)
                return notify_fail("你的「太極神功」火候太淺。\n");

        if ((int)me->query_skill("taiji-quan", 1) < 20)
                return notify_fail("你的「太極拳」火候太淺。\n");

        return 1;
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("taiji-jian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];

}

int practice_skill(object me)
{
        object weapon;

        if (!objectp(weapon = me->query_temp("weapon"))
            || (string)weapon->query("skill_type") != "sword")
           return notify_fail("你使用的武器不對。\n");
        if ((int)me->query("qi") < 50)
           return notify_fail("你的體力不夠練太極劍法。\n");
        me->receive_damage("qi", 30);
        return 1;
}

string perform_action_file(string action)
{
        return __DIR__"taiji-jian/" + action;
}
action" : "$N一招「燕子掠波」，$w自上而下划出一個大弧，平平地向$n的$l揮
去",
    "force" : 170,
    "dodge" : 15,
    "damage" : 40,
    "lvl" : 9,
    "damage_type" : "刺傷"
]),
([      "action" : "$N一招「右攔掃」，一招「左攔掃」，劍鋒平指，一氣呵成橫掃$n的
$l",
    "force" : 190,
    "dodge" : 10,
    "damage" : 50,
    "lvl" : 19,
    "damage_type" : "刺傷"
]),
([      "action" : "$N使出「三環套月」，$w划出三個圓圈，劍鋒直出，綿綿不斷划向$n
的$l",
    "force" : 240,
    "dodge" : 10,
    "damage" : 60,
    "lvl" : 29,
    "damage_type" : "刺傷"
]),
([      "action" : "$N左腳踏實，右腳虛點，一招「仙人指路」，右手$w帶著一團劍花，
逼向$n的$l",
    "force" : 280,
    "dodge" : 5,
    "damage" : 70,
    "lvl" : 39,
    "damage_type" : "刺傷"
]),
([      "action" : "$N一招「卻步抽劍」，左腳躍步落地，$w回抽，反手勾向$n的$l",  
    "force" : 300,
    "dodge" : 5,
    "damage" : 80,
    "lvl" : 59,
    "damage_type" : "刺傷"
]),
([      "action" : "$N右腿半屈般蹲，一招「如封似閉」，劍尖虛指，轉身撩向$n的$l",
    "force" : 330,
    "dodge" : -5,
    "damage" : 90,
    "lvl" : 79,
    "damage_type" : "刺傷"
]),
([  "action" : "$N回身擰腰，右手虛抱，一招「撥云瞻日」，$w中宮直進，刺向$n的$l",
    "force" : 380,
    "dodge" : -5,
    "damage" : 115,
    "lvl" : 99,
    "damage_type" : "刺傷"
]),
});


int valid_enable(string usage) { return (usage == "sword") || (usage == "parry")
; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("taiji-shengong", 1) < 20)
   return notify_fail("你的太極神功火候太淺。\n");
    if ((int)me->query_skill("taiji-quan", 1) < 20)
   return notify_fail("你的太極拳火候太淺。\n");
    return 1;
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("taiji-jian",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];

}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "sword")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練太極劍法。\n");
    me->receive_damage("qi", 30);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"taiji-jian/" + action;
}
"$N一招「燕子掠波」，$w自上而下划出一個大弧，平平地向$n的$l揮
去",
        "force" : 100,
        "dodge" : 15,
        "parry" : 15,
        "damage" : 60,
        "lvl" : 19,
        "damage_type" : "刺傷"
]),
([      "action" : "$N上身往左側一擰，一招「烏龍擺尾」，右手$w反手向$n的$l揮去",
        "force" : 110,
        "dodge" : 15,
        "parry" : 15,
        "damage" : 70,
        "lvl" : 24,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「右攔掃」，一招「左攔掃」，劍鋒平指，一氣呵成橫掃$n的
$l",
        "force" : 120,
        "dodge" : 10,
        "parry" : 15,
        "damage" : 70,
        "lvl" : 29,
        "damage_type" : "刺傷"
]),
([      "action" : "$N左腿提膝，手中$w斜指，一招「宿鳥投林」刺向$n的$l",
        "force" : 130,
        "dodge" : 15,
        "parry" : 15,
        "damage" : 70,
        "lvl" : 34,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「青龍出水」，$w自下而上划出一個大弧，平平地揮向$n的$l
",
        "force" : 140,
        "dodge" : 15,
        "parry" : 15,
        "damage" : 71,
        "lvl" : 39,
        "damage_type" : "刺傷"
]),
([      "action" : "$N使出「三環套月」，$w划出三個圓圈，劍鋒直出，綿綿不斷划向$n
的$l",
        "force" : 150,
        "dodge" : 10,
        "parry" : 20,
        "damage" : 73,
        "lvl" : 44,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「風卷荷葉」，$w輕靈地划出几個圓弧，迅速地向$n的$l揮去
",
        "force" : 160,
        "dodge" : 15,
        "parry" : 20,
        "damage" : 75,
        "lvl" : 49,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「虎抱頭」，$w划出一個左低右高的大弧，斜斜地斬向$n的$l
",
        "force" : 170,
        "dodge" : 15,
        "parry" : 20,
        "damage" : 77,
        "lvl" : 54,
        "damage_type" : "刺傷"
]),
([      "action" : "$N使出「獅子搖頭」，$w由右向左划出一個大８字，將$n圈在其中",
        "force" : 180,
        "dodge" : 15,
        "parry" : 20,
        "damage" : 79,
        "lvl" : 59,
        "damage_type" : "刺傷"
]),
([      "action" : "$N左腳踏實，右腳虛點，一招「仙人指路」，右手$w帶著一團劍花，
逼向$n的$l",
        "force" : 190,
        "dodge" : 5,
        "parry" : 20,
        "damage" : 81,
        "lvl" : 64,
        "damage_type" : "刺傷"
]),
([      "action" : "$N輕輕躍起，一招「野馬跳澗」，$w在半空中化為一圈銀芒，落向$n
的$l",
        "force" : 200,
        "dodge" : 15,
        "parry" : 20,
        "damage" : 83,
        "lvl" : 69,
        "damage_type" : "刺傷"
]),
([      "action" : "$N兩腿前箭后弓，一招「射雁式」，右手$w直刺$n的$l",
        "force" : 210,
        "dodge" : 20,
        "parry" : 20,
        "damage" : 85,
        "lvl" : 74,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「小魁星」，身形往左一挫，左手劍訣，右手$w平平地向$n的
$l揮去",
        "force" : 220,
        "dodge" : 40,
        "parry" : 20,
        "damage" : 87,
        "lvl" : 79,
        "damage_type" : "刺傷"
]),
([      "action" : "$N猱身扑上，一招「白猿獻果」，手中$w斜斜地向$n的$l揮去",
        "force" : 230,
        "dodge" : 30,
        "parry" : 20,
        "damage" : 89,
        "lvl" : 84,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「迎風撣塵」，$w看似隨意地一揮，$n卻陡覺一股勁氣迎面襲
來。",
        "force" : 240,
        "dodge" : 20,
        "parry" : 25,
        "damage" : 91,
        "lvl" : 89,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「順水推舟」，$w自上而下划出一個大弧，平平地向$n的$l揮
去。",
        "force" : 250,
        "dodge" : 45,
        "parry" : 25,
        "damage" : 93,
        "lvl" : 94,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「流星趕月」，$w疾刺$n的$l",
        "force" : 260,
        "dodge" : 35,
        "parry" : 25,
        "damage" : 95,
        "lvl" : 99,
        "damage_type" : "刺傷"
]),
([      "action" : "$N突然盤蹲下身來，一招「海底撈月」，$w自下而上地向$n的$l揮去
",
        "force" : 270,
        "dodge" : 25,
        "parry" : 25,
        "damage" : 97,
        "lvl" : 104,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「挑帘式」，$w自下而上徐徐划出一個大弧，平平地向$n的$l
揮去",
        "force" : 280,
        "dodge" : 35,
        "parry" : 25,
        "damage" : 99,
        "lvl" : 109,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「黃蜂入洞」，$w自上而下划出一個大弧，平平地向$n的$l揮
去",
        "force" : 290,
        "dodge" : 40,
        "parry" : 25,
        "damage" : 102,
        "lvl" : 114,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「大鵬展翅」，身形躍起，右手$w刺向$n的$l",
        "force" : 300,
        "dodge" : 45,
        "parry" : 25,
        "damage" : 106,
        "lvl" : 119,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「車輪劍」，$w化作一片銀盤，平平地向$n的$l卷去",
        "force" : 310,
        "dodge" : 45,
        "parry" : 25,
        "damage" : 120,
        "lvl" : 124,
        "damage_type" : "刺傷"
]),
([      "action" : "$N左腳輕點地面，身形往前一扑，一招「天馬行空」，$w向$n的$l揮
去",
        "force" : 320,
        "dodge" : 45,
        "parry" : 30,
        "damage" : 125,
        "lvl" : 129,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「風掃梅花」，身體躍在半空，手中$w掃向$n的$l",
        "force" : 330,
        "dodge" : 45,
        "parry" : 30,
        "damage" : 130,
        "lvl" : 90,
        "damage_type" : "刺傷"
]),
([      "action" : "$N一招「卻步抽劍」，左腳躍步落地，$w回抽，反手勾向$n的$l",
        "force" : 340,
        "dodge" : 35,
        "parry" : 30,
        "damage" : 140,
        "lvl" : 139,
        "damage_type" : "刺傷"
]),
([      "action" : "$N右腿半屈般蹲，一招「如封似閉」，劍尖虛指，轉身撩向$n的$l",
        "force" : 350,
        "dodge" : 25,
        "parry" : 30,
        "damage" : 150,
        "lvl" : 144,
        "damage_type" : "刺傷"
]),
([  "action" : "$N回身擰腰，右手虛抱，一招「撥云瞻日」，$w中宮直進，刺向$n的$l",
        "force" : 380,
        "dodge" : 35,
        "parry" : 30,
        "damage" : 160,
        "lvl" : 149,
        "damage_type" : "刺傷"
]),
});


int valid_enable(string usage)
{ return (usage == "sword") || (usage == "parry"); }

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 100)
                return notify_fail("你的內力不夠。\n");

        if ((int)me->query_skill("taiji-shengong", 1) < 20)
                return notify_fail("你的「太極神功」火候太淺。\n");

        if ((int)me->query_skill("taiji-quan", 1) < 20)
                return notify_fail("你的「太極拳」火候太淺。\n");

        return 1;
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("taiji-jian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];

}

string perform_action_file(string action)
{
        return __DIR__"taiji-jian/" + action;
}
// zhen.c 太極拳「震」字訣

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
    int damage;
    string msg;

    if( !target ) target = offensive_target(me);

    if( !target || !target->is_character() || !me->is_fighting(target) )
      return notify_fail("神功震敵只能對戰斗中的對手使用。\n");

    if( objectp(me->query_temp("weapon")) )
      return notify_fail("你必須空手才能使用「震」字訣！\n");

    if( (int)me->query_skill("taiji-quan", 1) < 30 )
      return notify_fail("你的太極拳不夠嫻熟，不會使用「震」字訣。\n");

    if( (int)me->query_skill("taiji-shengong", 1) < 30 )
      return notify_fail("你的太極神功不夠高，不能用來反震傷敵。\n");

    if( (int)me->query("neili", 1) < 100 )
      return notify_fail("你現在內力太弱，不能使用「震」字訣。\n");

    msg = CYN "$N默運神功，使出太極拳「震」字訣，企圖以內力震傷$n。\n"NOR;

    if (random(me->query_skill("force")) > target->query_skill("force")/2 )
    {
      me->start_busy(3);
      target->start_busy(random(3));

      damage = (int)me->query_skill("taiji-shengong", 1);
      damage = damage/2 + random(damage);

      target->receive_damage("qi", damage);
      target->receive_wound("qi", damage/3);
      me->add("neili", -damage/10);

      if( damage < 20 ) msg += HIY"結果$n受到$N的內力反震，悶哼一聲。\n"NOR;
      else if( damage < 40 ) msg += HIY"結果$n被$N以內力反震，「嘿」地一聲退了兩步。\n"NOR;
      else if( damage < 80 ) msg += RED"結果$n被$N以內力一震，胸口有如受到一記重錘，連退了五六步！\n"NOR;
      else msg += HIR"結果$N被$n的內力一震，眼前一黑，身子向后飛出丈許！！\n"NOR;

    } else
    {
      me->start_busy(1);
      msg += CYN"可是$p看破了$P的企圖，并沒有上當。\n"NOR;
    }
    message_combatd(msg, me, target);

    if(!target->is_fighting(me)) target->fight_ob(me);
//    if(userp(target)) target->fight_ob(me);
//    else if( !target->is_killing(me) ) target->kill_ob(me);

    return 1;
}

taiji-quan.c,
	"force" : 240,
	"dodge" : 36,
	"skill_name" : "海底針",
	"lvl" : 35,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N招「閃通臂」，左腳一個弓箭步，右手上舉向外撇出，向$n的$l揮去",
	"force" : 260,
	"dodge" : 34,
	"skill_name" : "閃通臂",
	"lvl" : 40,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N兩手由相對，轉而向左上右下分別揮出，右手使一招「斜飛式」，揮向$n的$l",
	"force" : 280,
	"dodge" : 32,
	"skill_name" : "斜飛式",
	"lvl" : 45,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手虛按，右手使一招「白蛇吐信」，向$n的$l插去",
	"force" : 300,
	"dodge" : 30,
	"skill_name" : "白蛇吐信",
	"lvl" : 50,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手握拳，向前向后划弧，一招「雙峰貫耳」打向$n的$l",
	"force" : 320,
	"dodge" : 28,
	"skill_name" : "雙風貫耳",
	"lvl" : 55,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手虛划，右手一記「指襠錘」擊向$n的襠部",
	"force" : 340,
	"dodge" : 26,
	"skill_name" : "指襠錘",
	"lvl" : 60,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N施出「伏虎式」，右手擊向$n的$l，左手攻向$n的襠部",
	"force" : 360,
	"dodge" : 24,
	"skill_name" : "伏虎式",
	"lvl" : 65,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N由臂帶手，在面前緩緩划過，使一招「云手」，揮向$n的$l",
	"force" : 380,
	"dodge" : 22,
	"skill_name" : "云手",
	"lvl" : 70,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左腿收起，右手使一招「金雞獨立」，向$n的$l擊去",
	"force" : 400,
	"dodge" : 20,
	"skill_name" : "金雞獨立",
	"lvl" : 75,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N右手由鉤變掌，雙手掌心向上，右掌向前推出一招「高探馬」",
	"force" : 420,
	"dodge" : 18,
	"skill_name" : "高探馬",
	"lvl" : 80,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N右手使一式招「玉女穿梭」，扑身向$n的$l插去",
	"force" : 440,
	"dodge" : 16,
	"skill_name" : "玉女穿梭",
	"lvl" : 85,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N右手經腹前經左肋向前撇出，使一招「反身撇錘」，向$n的$l錘去",
	"force" : 460,
	"dodge" : 14,
	"skill_name" : "反身撇錘",
	"lvl" : 90,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手虛按，右腿使一招「轉身蹬腿」，向$n的$l踢去",
	"force" : 480,
	"dodge" : 12,
	"skill_name" : "反身蹬腿",
	"lvl" : 95,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手向上划弧攔出，右手使一招「搬攔錘」，向$n的$l錘去",
	"force" : 500,
	"dodge" : 10,
	"skill_name" : "白蛇吐信",
	"lvl" : 100,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N使一招「栽錘」，左手摟左膝，右手向下錘向$n的$l",
	"force" : 520,
	"dodge" : 8,
	"skill_name" : "栽錘",
	"lvl" : 110,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手先抱成球狀，忽地分開右手上左手下，一招「野馬分鬃」，向$n的$l和面門打去",
	"force" : 480,
	"dodge" : 6,
	"skill_name" : "野馬分鬃",
	"lvl" : 120,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手由胸前向下，右臂微曲，使一招「抱虎歸山」，向$n的$l推去",
	"force" : 500,
	"dodge" : 4,
	"skill_name" : "抱虎歸山",
	"lvl" : 130,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手經下腹划弧交于胸前，成十字狀，一式「十字手」，向$n的$l打去",
	"force" : 520,
	"dodge" : 2,
	"skill_name" : "十字手",
	"lvl" : 140,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左腳踏一個虛步，雙手交叉成十字拳，一招「進步七星」，向$n的$l錘去",
	"force" : 540,
	"dodge" : 0,
	"skill_name" : "進步七星",
	"lvl" : 150,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N身體向后騰出，左手略直，右臂微曲，使一招「倒攆猴」，向$n的$l和面門打去",
	"force" : 560,
	"dodge" : -2,
	"skill_name" : "倒攆猴",
	"lvl" : 160,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手伸開，以腰為軸，整個上身划出一個大圓弧，\n一招「轉身擺蓮」，將$n渾身上下都籠罩在重重掌影之中",
	"force" : 580,
	"dodge" : -4,
	"skill_name" : "轉身擺蓮",
	"lvl" : 170,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手握拳，右手緩緩收至耳際，左手緩緩向前推出，\n拳意如箭，一招「彎弓射虎」，直奔$n心窩而去",
	"force" : 600,
	"dodge" : -6,
	"skill_name" : "彎弓射虎",
	"lvl" : 180,
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手在胸前翻掌，由腹部向前向上推出，一招「如封似閉」，一股勁風直逼$n",
	"force" : 620,
	"dodge" : -8,
	"skill_name" : "如封似閉",
	"lvl" : 200,
        "damage_type" : "瘀傷"
]),
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練太極拳必須空手。\n");
	if ((int)me->query_skill("taiji-shengong", 1) < 20)
		return notify_fail("你的太極神功火候不夠，無法學太極拳。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練太極拳。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

/* ----------------
mapping query_action(object me, object weapon)
{
	return action[random(sizeof(action))];
}
-------------------*/

mapping query_action(object me, object weapon)
{
	int i, level;
	level = (int) me->query_skill("taiji-quan",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
            return action[NewRandom(i, 5, level/5)];

}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練太極拳。\n");
	me->receive_damage("qi", 25);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"taiji-quan/" + action;
}

// taiji-quan.c 太極拳

inherit SKILL;

mapping *action = ({
([      "action" : "$N使一招「攬雀尾」，雙手划了個半圈，按向$n的$l",
        "force" : 150,
        "dodge" : 30,
        "skill_name" : "攬雀尾",
        "damage_type" : "瘀傷"
]),
([      "action" : "$N左手虛按，右手使一招「白蛇吐信」，向$n的$l插去",
        "force" : 250,
        "dodge" : 25,
        "skill_name" : "白蛇吐信",
        "damage_type" : "瘀傷"
]),
([      "action" : "$N雙手握拳，向前向后划弧，一招「雙風貫耳」打向$n的$l",
        "force" : 300,
        "dodge" : 20,
        "skill_name" : "雙風貫耳",
        "damage_type" : "瘀傷"
]),
([      "action" : "$N左手虛划，右手一記「指襠錘」擊向$n的襠部",
        "force" : 320,
        "dodge" : 15,
        "skill_name" : "指襠錘",
        "damage_type" : "瘀傷"
]),
([      "action" : "$N施出「伏虎式」，右手擊向$n的$l，左手攻向$n的襠部",
        "force" : 370,
        "dodge" : 10,
        "skill_name" : "伏虎式",
        "damage_type" : "瘀傷"
])
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"; }

int valid_learn(object me)
{
        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
                return notify_fail("練太極拳必須空手。\n");
        if ((int)me->query_skill("taiji-shengong", 1) < 20)
                return notify_fail("你的太極神功火候不夠，無法學太極拳。\n");
        if ((int)me->query("max_neili") < 100)
                return notify_fail("你的內力太弱，無法練太極拳。\n");
        return 1;
}

mapping query_action(object me, object weapon)
{
        return action[random(sizeof(action))];
}

int practice_skill(object me)
{
        if ((int)me->query("qi") < 30)
                return notify_fail("你的體力太低了。\n");
        if ((int)me->query("neili") < 20)
                return notify_fail("你的內力不夠練太極拳。\n");
        me->receive_damage("qi", 25);
        me->add("neili", -10);
        return 1;
}

string perform_action_file(string action)
{
        return __DIR__"taiji-quan/" + action;
}
taiji-quan.nlvl
]),
([	"action" : "$N招「閃通臂」，左腳一個弓箭步，右手上舉向外撇出，向$n的$l揮去",
	"force" : 260,
	"dodge" : 34,
	"skill_name" : "閃通臂",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N兩手由相對，轉而向左上右下分別揮出，右手使一招「斜飛式」，揮向$n的$l",
	"force" : 280,
	"dodge" : 32,
	"skill_name" : "斜飛式",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手虛按，右手使一招「白蛇吐信」，向$n的$l插去",
	"force" : 300,
	"dodge" : 30,
	"skill_name" : "白蛇吐信",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手握拳，向前向后划弧，一招「雙峰貫耳」打向$n的$l",
	"force" : 320,
	"dodge" : 28,
	"skill_name" : "雙風貫耳",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手虛划，右手一記「指襠錘」擊向$n的襠部",
	"force" : 340,
	"dodge" : 26,
	"skill_name" : "指襠錘",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N施出「伏虎式」，右手擊向$n的$l，左手攻向$n的襠部",
	"force" : 360,
	"dodge" : 24,
	"skill_name" : "伏虎式",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N由臂帶手，在面前緩緩划過，使一招「云手」，揮向$n的$l",
	"force" : 380,
	"dodge" : 22,
	"skill_name" : "云手",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左腿收起，右手使一招「金雞獨立」，向$n的$l擊去",
	"force" : 400,
	"dodge" : 20,
	"skill_name" : "金雞獨立",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N右手由鉤變掌，雙手掌心向上，右掌向前推出一招「高探馬」",
	"force" : 420,
	"dodge" : 18,
	"skill_name" : "高探馬",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N右手使一式招「玉女穿梭」，扑身向$n的$l插去",
	"force" : 440,
	"dodge" : 16,
	"skill_name" : "玉女穿梭",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N右手經腹前經左肋向前撇出，使一招「反身撇錘」，向$n的$l錘去",
	"force" : 460,
	"dodge" : 14,
	"skill_name" : "反身撇錘",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手虛按，右腿使一招「轉身蹬腿」，向$n的$l踢去",
	"force" : 480,
	"dodge" : 12,
	"skill_name" : "反身蹬腿",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手向上划弧攔出，右手使一招「搬攔錘」，向$n的$l錘去",
	"force" : 500,
	"dodge" : 10,
	"skill_name" : "白蛇吐信",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N使一招「栽錘」，左手摟左膝，右手向下錘向$n的$l",
	"force" : 520,
	"dodge" : 8,
	"skill_name" : "栽錘",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手先抱成球狀，忽地分開右手上左手下，一招「野馬分鬃」，向$n的$l和面門打去",
	"force" : 480,
	"dodge" : 6,
	"skill_name" : "野馬分鬃",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左手由胸前向下，右臂微曲，使一招「抱虎歸山」，向$n的$l推去",
	"force" : 500,
	"dodge" : 4,
	"skill_name" : "抱虎歸山",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手經下腹划弧交于胸前，成十字狀，一式「十字手」，向$n的$l打去",
	"force" : 520,
	"dodge" : 2,
	"skill_name" : "十字手",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N左腳踏一個虛步，雙手交叉成十字拳，一招「進步七星」，向$n的$l錘去",
	"force" : 540,
	"dodge" : 0,
	"skill_name" : "進步七星",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N身體向后騰出，左手略直，右臂微曲，使一招「倒攆猴」，向$n的$l和面門打去",
	"force" : 560,
	"dodge" : -2,
	"skill_name" : "倒攆猴",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手伸開，以腰為軸，整個上身划出一個大圓弧，\n一招「轉身擺蓮」，將$n渾身上下都籠罩在重重掌影之中",
	"force" : 580,
	"dodge" : -4,
	"skill_name" : "轉身擺蓮",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手握拳，右手緩緩收至耳際，左手緩緩向前推出，\n拳意如箭，一招「彎弓射虎」，直奔$n心窩而去",
	"force" : 600,
	"dodge" : -6,
	"skill_name" : "彎弓射虎",
        "damage_type" : "瘀傷"
]),
([	"action" : "$N雙手在胸前翻掌，由腹部向前向上推出，一招「如封似閉」，一股勁風直逼$n",
	"force" : 620,
	"dodge" : -8,
	"skill_name" : "如封似閉",
        "damage_type" : "瘀傷"
]),
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練太極拳必須空手。\n");
	if ((int)me->query_skill("taiji-shengong", 1) < 20)
		return notify_fail("你的太極神功火候不夠，無法學太極拳。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練太極拳。\n");
	return 1;
}
/*
string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}
*/
mapping query_action(object me, object weapon)
{
	return action[random(sizeof(action))];
}
/*
mapping query_action(object me, object weapon)
{
	int i, level;
	level = (int) me->query_skill("taiji-quan",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
            return action[NewRandom(i, 5, level/5)];

}
*/
int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練太極拳。\n");
	me->receive_damage("qi", 25);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"taiji-quan/" + action;
}

// taiji-quan.c 太極拳
// modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([      "action" : "$N使一招「攬雀尾」，雙手划了個半圈，按向$n的$l",
    "force" : 150,
    "dodge" : 30,
    "skill_name" : "攬雀尾",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N左手虛按，右手使一招「白蛇吐信」，向$n的$l插去",
    "force" : 250,
    "dodge" : 25,
    "skill_name" : "白蛇吐信",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N雙手握拳，向前向后划弧，一招「雙風貫耳」打向$n的$l",      
    "force" : 300,
    "dodge" : 20,
    "skill_name" : "雙風貫耳",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N左手虛划，右手一記「指襠錘」擊向$n的襠部",
    "force" : 320,
    "dodge" : 15,
    "skill_name" : "指襠錘",
    "damage_type" : "瘀傷"
]),
([      "action" : "$N施出「伏虎式」，右手擊向$n的$l，左手攻向$n的襠部",
    "force" : 370,
    "dodge" : 10,
    "skill_name" : "伏虎式",
    "damage_type" : "瘀傷"
])
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"; }   

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
       return notify_fail("練太極拳必須空手。\n");
    if ((int)me->query_skill("taiji-shengong", 1) < 20)
       return notify_fail("你的太極神功火候不夠，無法學太極拳。\n");
    if ((int)me->query("max_neili") < 100)
       return notify_fail("你的內力太弱，無法練太極拳。\n");
}

mapping query_action(object me, object weapon)
{
    return action[random(sizeof(action))];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
      return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
      return notify_fail("你的內力不夠練太極拳。\n");
    me->receive_damage("qi", 25);
    me->add("neili", -10);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"taiji-quan/" + action;
}

taiji-shengong/taiji-shengong/force.ctaiji-shengong/powerup.ctaiji-shengong.cng",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學太極神功？！\n");

	return 1;
}

int practice_skill(object me)
{
	return notify_fail("太極神功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"taiji-shengong/" + func;
}

  偷匾惶    呦  n面門",
    "force" : 230,
    "dodge" : 40,
    "damage": 300,
    "damage_type":  "瘀傷"
]),
([  "action":"$N突然間左手一捺，封住$n退路，右手掌力洶涌而出",
    "force" : 230,
    "dodge" : 40,
    "damage": 300,
    "damage_type":  "瘀傷"
]),

});

int valid_enable(string usage)
{
    return usage == "unarmed" || usage == "dodge" || usage == "parry" || usage == "force";
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("taixuan-gong",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
       return action[NewRandom(i, 20, level/5)];
}

string query_dodge_msg(string limb)
{
    return dodge_msg[random(sizeof(dodge_msg))];
}

int valid_learn(object me)
{
    if (random(this_player()->query("per")) > 20)
        return 1;
    return notify_fail("你對著石壁冥思苦想了一會，對滿目蝌蚪文一點不懂。\n");
}

// jinglei.c 彈指驚雷
 
#include <ansi.h>
 
inherit F_SSERVER;
 
int perform(object me)
{
	string msg;
	object weapon, weapon2, target;
	int skill, dp, wound;

	me->clean_up_enemy();
	target = me->select_opponent();

	skill = me->query_skill("tanzhi-shentong",1);

	if( !(me->is_fighting() ))
		return notify_fail("「彈指驚雷」只能在戰斗中使用。\n");

	if ( objectp(weapon = me->query_temp("weapon")))
		return notify_fail("你使用了武器。\n");

	if( skill < 120)
		return notify_fail("你的彈指神通等級不夠, 不能使用「彈指驚雷」！\n");

	if( me->query("neili") < 150 )
		return notify_fail("你的內力不夠，無法運用「彈指驚雷」！\n");
 
	msg = HIC "$N使出彈指神通之「彈指驚雷」, 頓時眼內精光暴射，\n";
	message_combatd(msg, me, target);
 
	dp = target->query("combat_exp");
	if( dp < 1 )
		dp = 1;
	if( random(me->query("combat_exp")) > dp)
	{
		if(userp(me))
			me->add("neili",-150);
		msg = "$n只覺得眼前一花，氣海穴上微微一痛，全身真氣狂泄而出！\n" ;
		if ( objectp(weapon2 = target->query_temp("weapon")))
		{
			msg += "同時手腕一麻，手中";
			msg += weapon2->name();
			msg += "脫手而出！\n" NOR;
			weapon2->move(environment(me));
		}
		wound = 300 + random(200);
		if((int)target->query("neili") < wound)
			wound = target->query("neili");
		target->add("neili", -wound);
		target->receive_wound("jing", wound/5);
		target->start_busy(5);
		me->start_busy(2);
	}
	else
	{
		msg = "可是$n的看破了$N的企圖，立刻采取守勢，使$P的「彈指驚雷」沒有起到作用。\n"NOR;
		me->start_busy(3);
	}
	message_combatd(msg, me, target);

	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);

	return 1;
}
tanzhi-shentong.c      return notify_fail("你的碧波神功火候不夠，無法學彈指神通。\n");
	if ((int)me->query("max_neili") < 100)
        return notify_fail("你的內力太弱，無法練彈指神通。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
    level   = (int) me->query_skill("tanzhi-shentong",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
        return notify_fail("你的體力不夠，休息一下再練吧。\n");
	if ((int)me->query("neili") < 20)
        return notify_fail("你的內力不夠練彈指神通。\n");
    me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"tanzhi-shentong/" + action;
}
// tanzhi-shentong.c -彈指神通
// modified by Venus Oct.1997
#include <ansi.h>
inherit SKILL;

mapping *action = ({
([      "action" : "$N使出「空」字訣，右手五指緩緩分開，中指和拇指驟然一合，隨即
中指彈出，一道白光襲向$n的鳩尾穴",
    "force" : 170,
    "dodge" : 35,
    "damage_type" : "扎傷",
    "lvl" : 0,
    "skill_name" : "彈指神通中的「空」字訣"
]),
([      "action" : "$N使出「破」字訣，左手成掌划弧，右手倏地翻腕彈出一指，化作一
點白芒射向$n的玉堂穴",
    "force" : 240,
    "dodge" : 15,
    "damage_type" : "扎傷",
    "lvl" : 14,
    "skill_name" : "彈指神通中的「破」字訣"
]),
([      "action" : "$N使出「化」字訣，右手詐攻兩掌，左手自腋下穿出，疾彈三指分別
射向$n的神庭、肩井、廉泉三穴",
    "force" : 300,
    "dodge" : 5,
    "damage_type" : "內傷",
    "lvl" : 28,
    "skill_name" : "彈指神通中的「化」字訣"
]),
([      "action" : "$N使出「透」字訣，側身而上，身形突閃，繞至$n身后猛地彈出一指，
只聽“波”的一聲，一點青光眼看就要透入$n的命門穴",
    "force" : 350,
    "dodge" : -5,
    "damage_type" : "內傷",
    "lvl" : 42,
    "skill_name" : "彈指神通中的「透」字訣"
]),
([      "action" : "$N使出「亂」字訣，身形向后乍然一閃，雙手疾彈，無數道青芒射向$n，
看似雜亂，實則亂而有序，分兩組襲向$n的氣海、膻中大穴",
    "force" : 400,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl" : 56,
    "skill_name" : "彈指神通中的「亂」字訣"
]),
([      "action" : "$N使出「妙」字訣，身法陡變，輕靈飄忽，捉摸不透，$n已看得花了眼，
正欲出招時，卻見一股勁氣逼向自己的中極死穴",
    "force" : 425,
    "dodge" : 15,
    "damage_type" : "內傷",
    "lvl" : 70,
    "skill_name" : "彈指神通中的「妙」字訣"
]),
([      "action" : "$N使出「疾」字訣，輕盈地一個急轉身，右手遞前，由指間射出兩點紫
氣電光火石般地襲向$n目間清明穴",
    "force" : 450,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl" : 84,
    "skill_name" : "彈指神通中的「疾」字訣"
]),
([      "action" : "$N凝神使出「通」字訣，身隨意轉，手隨心動，繞著$n疾轉，手中疾點
連連，將$n的神闕、建里、膻中、百會、大椎、命門、啞門等各處要穴、大穴、
死穴均籠罩在自己布下的氣網中",
    "force" : 500,
    "dodge" : 25,
    "damage_type" : "內傷",
    "lvl" : 99,
    "skill_name" : "彈指神通中的「通」字訣"
])
});

int valid_enable(string usage) { return usage=="finger" ||  usage=="parry"; }   

int valid_combine(string combo) { return combo=="lanhua-shou"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail(HIC"練彈指神通手必須空手。\n"NOR);
    if ((int)me->query_skill("luoying-xinfa", 1) < 25)
   return notify_fail("你的落英心法火候不夠，無法學彈指神通。\n");
    if ((int)me->query("max_neili") < 200)
   return notify_fail("你的內力太弱，無法練彈指神通。\n");
    return 1;
}
string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("tanzhi-shentong", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了，無法練彈指神通。\n");
    me->receive_damage("qi", 25);
    return 1;
}

// taoism.c 道學心法
// modified by Venus Oct.1997

inherit SKILL;

void create() { seteuid(getuid()); }

string type() { return "knowledge"; }

int valid_learn(object me)
{
    int lvl;

    lvl = (int)me->query_skill("taoism", 1);

    if( (int)me->query("shen") < 0 )
   return notify_fail("你的邪氣太重，無法修煉天師正道。\n");

    if(me->query("gender") == "無性" && lvl > 39)
   return notify_fail("你剛聽一會兒，便覺心智迷糊，原來你沒有陽剛之
氣，無法領會里面的陰陽變化之道。\n");

    if ((me->query_skill("buddhism",1) > 1) ||
        (me->query_skill("mahayana",1) > 1))
   return notify_fail("哈哈！"+RANK_D->query_respect(me)
      +"既入佛門，怎么卻來學道家心法？\n");

    if ((me->query_skill("poison",1) > 1))
   return notify_fail("哈哈！"+RANK_D->query_respect(me)
      +"已經學了邪魔外道的毒技，怎么卻來學道家心法？\n");

    return 1;
}

int practice_skill(object me)
{
    return notify_fail("天師正道只能靠學習來提高。\n");
}
tianchang-zhang.cn的胸口",
    "force" : 350,
    "dodge" : -5,
    "damage_type" : "內傷",
    "lvl" : 54,
    "skill_name" : "三味真火"
]),
([      "action" : "$N使一式"+WHT"『月黑風高』"NOR+"，雙掌蕩起無數勁氣，層層逼向
$n的$l",
    "force" : 400,
    "parry" : 25,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl" : 63,
    "skill_name" : "月黑風高"
]),
([      "action" : "$N使出"+HIW"『與天比高』"NOR+"，雙掌緩緩推向天空，接著驟然翻掌收回，
向$n猛地推出",
    "force" : 450,
    "parry" : 10,
    "dodge" : 15,
    "damage_type" : "內傷",
    "lvl" : 72,
    "skill_name" : "與天比高"
]),
([      "action" : "$N暗運潛力，施展出"+HIY"『日月同輝』"NOR+"，雙掌斜出，左砸右砍，祭出
道道勁力劈向$n的$l",
    "force" : 500,
    "parry" : 20,
    "dodge" : 5,
    "damage_type" : "內傷",
    "lvl" : 81,
    "skill_name" : "日月同輝"
]),
([      "action" : "$N雙掌交叉一翻，再向外一抱，使出"+HIY"『日月爭輝』"NOR+"，接著右掌上，
左掌下，電光火石般地飛身扑向$n",
    "force" : 580,
    "parry" : 5,
    "dodge" : -5,
    "damage_type" : "內傷",
    "lvl" : 90,
    "skill_name" : "日月爭輝"
])
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"; }  

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail(HIC"練天長掌法必須空手。\n"NOR);
    if ((int)me->query("max_neili") < 80)
   return notify_fail(HIG"你的內力太弱，無法練天長掌法。\n"NOR);
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("tianchang-zhang", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練天長掌法。\n");
    me->receive_damage("qi", 25);
    return 1;
}
>query("neili") < 300)
		return notify_fail("你內力現在不夠, 不能使用凌空指穴! \n");

	if( target->is_busy() )
		return notify_fail(target->name() + "目前正自顧不暇，放膽攻擊吧  \n");

	msg = 
HIY "$N使出天罡指穴法絕技「凌空指穴」，回過身來，背后竟似生了眼睛一般，左
手食中二指向$n接連戳去，一連七指，全是對向$n的頭臉與前胸重穴。$n不
及攻敵，拼力躲避$N指力頓時動作大亂。\n";
	if( random(me->query("combat_exp")) > (int)target->query("combat_exp") / 4 )
	{
		msg +=  HIG "結果$p被$P指力點中几處穴道! \n" NOR;
		target->start_busy( (int)me->query_skill("tiangang-zhi",1) / 20 + 2);
		me->add("neili", -100);
	}
	else
	{
		msg += HIM "$p情急智生，狠力一躍，退出老遠。\n" NOR;
		me->start_busy(4);
	}
	message_combatd(msg, me, target);

	return 1;
}
me" : "瀑落清潭"
]),
([      "action" : "$N左手由拳變掌，右手扭曲如靈蛇，一式「龜蛇競渡」，左右并用，
拍向$n的$l",
    "force" : 250,
    "dodge" : 15,
    "damage_type" : "內傷",
    "lvl" : 24,
    "skill_name" : "龜蛇競渡"
]),
([      "action" : "$N一式「倒索攀山」，左手抽回，右手前探，戟指點向$n的$l",    
    "force" : 300,
    "dodge" : -5,
    "damage_type" : "瘀傷",
    "lvl" : 36,
    "skill_name" : "倒索攀山"
]),
([      "action" : "$N使一式「閃現雷鳴」，身影變幻不定地掠至$n身后，猛地拍向$n的
$l",
    "force" : 350,
    "dodge" : 10,
    "damage_type" : "瘀傷",
    "lvl" : 48,
    "skill_name" : "閃現雷鳴"
]),
([      "action" : "$N兩臂大開大闔，吸一口氣，一式「地動山搖」，勁力透徹，雙手快
速一撥，激出數道勁氣逼向$n的$l",
    "force" : 400,
    "dodge" : 5,
    "damage_type" : "瘀傷",
    "lvl" : 60,
    "skill_name" : "地動山搖"
]),
([      "action" : "$N身形縱起，衣袂飄蕩，雙手輕輕拍動，一式「水拍云崖」，居高臨
下，連綿不絕拍向$n的$l",
    "force" : 450,
    "dodge" : 20,
    "damage_type" : "內傷",
    "lvl" : 72,
    "skill_name" : "水拍云崖"
]),
([      "action" : "$N騰空而起，雙掌合一，十指如鉤，一招「泰山壓頂」，疾向$n的擊
落，勢道凶猛已極",
    "force" : 500,
    "dodge" : 25,
    "damage_type" : "內傷",
    "lvl" : 84,
    "skill_name" : "泰山壓頂"
])
});

int valid_enable(string usage) { return usage=="finger" ||  usage=="parry"; }   

int valid_combine(string combo) { return combo=="jinding-zhang"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail(HIC"練天罡指穴法必須空手。\n"NOR);
    if ((int)me->query_skill("linji-zhuang", 1) < 20)
   return notify_fail("你的臨濟十二庄火候不夠，無法學天罡指穴法。\n
")
;    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練天罡指穴法。\n");
    return 1;
}
string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}
mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("tiangang-zhi", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了，無法練天罡指穴法。\n");
    me->receive_damage("qi", 20);
    return 1;
}

string perform_action_file(string action)
{
        return __DIR__"tiangang-zhi/" + action;
}
tianshan-zhang.baktianshan-zhang.c左右迂回向$n的$l點去",
	"force" : 380,
	"dodge": -5,
	"damage": 180,
	"lvl" :  145,
	"damage_type": "挫傷"
]),
});

mapping query_action(object me, object weapon)
{
	int i, level;
	level   = (int) me->query_skill("tianshan-zhang",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];
//        return action[random(sizeof(action))];
}

int valid_enable(string usage) { return (usage == "staff") || (usage == "parry"); }

int valid_learn(object me)
{
	if ((int)me->query("max_neili") < 80)
		return notify_fail("你的內力不夠。\n");
	return 1;
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "staff")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練天山杖法。\n");
	me->receive_damage("qi", 25);
	return 1;
}
age_type": "挫傷"
]),
([      "action": "$N一招「峰回路轉」，$w左右迂回向$n的$l點去",
    "dodge": -5,
    "damage": 50,
    "damage_type": "挫傷"
]),
});

mapping query_action(object me, object weapon)
{
    return action[random(sizeof(action))];
}

int valid_enable(string usage) { return (usage == "staff") || (usage == "parry")
; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 80)
   return notify_fail("你的內力不夠。\n");
    return 1;
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "staff")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練天山杖法。\n");
    me->receive_damage("qi", 25);
    return 1;
}

// san.c  天女散花

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
	object weapon;
	int damage;
	string msg;

	if( !target ) target = offensive_target(me);

	if( !target || !target->is_character() || !me->is_fighting(target) )
		return notify_fail("「天女散花」只能對戰斗中的對手使用。\n");

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "sword")
		return notify_fail("你使用的武器不對。\n");

	if( (int)me->query_skill("tianyu-qijian", 1) < 50 )
		return notify_fail("你的天羽奇劍不夠嫻熟，不會使用。\n");

	if(((int)me->query_skill("bahuang-gong", 1) < 50 ) &&
	   ((int)me->query_skill("beiming-shengong", 1) < 50 ))
		return notify_fail("你的本門內功實在太差，沒法用「天女散花」。\n");

	if( (int)me->query("neili", 1) < 300 )
		return notify_fail("你現在內力太弱，不能使用「天女散花」。\n");
			
	msg = CYN "$N凝神息氣，手腕疾抖，挽出千萬個劍花，鋪天蓋地飛向$n。\n"NOR;

//	if( !target->is_killing(me) ) target->kill_ob(me);

	if (random(me->query_skill("force")) > target->query_skill("force")/2 )
	{
		target->start_busy( (int)me->query_skill("tianyu-qijian") / 20 + 1);
		
		damage = (int)me->query_skill("bahuang-gong", 1);
		damage = damage +  (int)me->query_skill("tianyu-qijian", 1);
		damage = damage +  (int)me->query_skill("sword", 1);
		
		target->receive_damage("qi", damage);
		target->receive_wound("qi", damage/3);
		me->add("neili", -damage);
		msg += HIR"只見$N劍花聚為一線，穿向$n,\n$n只覺一股熱流穿心而過，喉頭一甜，鮮血狂噴而出！\n"NOR;
		me->start_busy(2);
	} else 
	{
		msg += CYN"可是$p猛地向前一躍,跳出了$P的攻擊范圍。\n"NOR;
		me->add("neili", -100);
		me->start_busy(4);
	}
	message_combatd(msg, me, target);

	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);
	return 1;
}
tianyu-qijian.c,
	"force" : 380,
            "dodge" : 5,
	"damage": 140,
	"lvl" : 60,
	"skill_name" : "天河倒瀉",
	"damage_type":	"刺傷"
]),
([	"action":"$N一式「天外飛仙」，$w突然從天而降，一片金光圍掠$n全身",
	"force" : 380,
            "dodge" : 5,
	"damage": 150,
	"lvl" : 60,
	"skill_name" : "天外飛仙",
	"damage_type":	"刺傷"
])
});

int valid_enable(string usage) { return usage == "sword" || usage == "parry"; }
int valid_learn(object me) { return 1; }

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("tianyu-qijian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "sword")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練天羽奇劍。\n");
	me->receive_damage("qi", 25);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"tianyu-qijian/" + action;
}
// tiyunzong.c 梯云縱
// modified by Venus Oct.1997
// written by Xiang

inherit SKILL;

string *dodge_msg = ({
    "只見$n一招「白鶴沖天」，身體向上筆直地縱起丈余，躲過了$N這一招。\n",
    "$n一個「鷂子翻身」，向后縱出數丈之遠，避開了$N的凌厲攻勢。\n",
    "$n使出「大鵬展翅」，向一旁飄然縱出，輕輕著地。\n"
    "但是$n身形飄忽，輕輕一縱，早已避開。\n",
    "$n身隨意轉，倏地往一旁挪開了三尺，避過了這一招。\n",
    "可是$n側身一讓，$N這一招扑了個空。\n",
    "卻見$n足不點地，往旁竄開數尺，躲了開去。\n",
    "$n身形微晃，有驚無險地避開了$N這一招。\n"
});

int valid_enable(string usage) { return (usage == "dodge") || (usage == "move");
 }

int valid_learn(object me) { return 1; }

string query_dodge_msg(string limb)
{
    return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
    if( (int)me->query("qi") < 40 )
   return notify_fail("你的體力太差了，不能練梯云縱。\n");
    me->receive_damage("qi", 30);
    return 1;
}

unarmed.c磽７  ,
    "damage_type":"挫傷"
]),
([      "action":"$N一招「平地龍飛」，全身滴溜溜地在地上打個大轉，舉棍向$n的胸腹
間戳去",
    "force" : 210,
    "dodge" : 5,
    "parry" : 15,
    "damage": 20,
    "lvl" : 16,
    "skill_name" : "平地龍飛",
    "damage_type":"挫傷"
]),
([      "action":"$N伏地一個滾翻，一招「伏虎聽風」，$w挾呼呼風聲迅猛掃向$n的足脛
",
    "force" : 250,
    "dodge" : 15,
    "parry" : 5,
    "damage": 25,
    "lvl" : 25,
    "skill_name" : "伏虎聽風",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「流星趕月」，身棍合一，棍端逼成一條直線，流星般向頂向$n
的$l",
    "force" : 300,
    "dodge" : 20,
    "parry" : 15,
    "damage": 30,
    "lvl" : 35,
    "skill_name" : "流星趕月",
    "damage_type":"挫傷"
]),
([      "action":"$N雙手持棍划了個天地大圈，一招「紅霞貫日」，一棍從圓心正中擊出
，撞向$n的胸口",
    "force" : 350,
    "dodge" : 20,
    "parry" : 15,
    "damage": 35,
    "lvl" : 44,
    "skill_name" : "紅霞貫日",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「投鞭斷流」，$w高舉，以雷霆萬鈞之勢對准$n的天靈當頭劈下
",
    "force" : 410,
    "dodge" : 25,
    "parry" : 20,
    "damage": 40,
    "lvl" : 52,
    "skill_name" : "投鞭斷流",
    "damage_type":"挫傷"
]),
([      "action":"$N潛運真力，一招「蒼龍歸海」，$w頓時長了數丈，矯龍般直射$n的胸
口",
    "force" : 470,
    "dodge" : 30,
    "parry" : 25,
    "damage": 50,
    "lvl" : 60,
    "skill_name" : "蒼龍歸海",
    "damage_type":"挫傷"
]),
});

int valid_enable(string usage) { return  (usage == "club") || (usage == "parry")
; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("weituo-gun",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "staff")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練韋陀棍。\n");
    me->receive_damage("qi", 25);
    return 1;
}
// wuchang-zhang.c 無常杖法
// modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([      "action":"$N微一躬身，一招「庸人自擾」，$w帶著刺耳的吱吱聲，擦地掃向$n的
腳踝",
    "force" : 100,
    "dodge" : -10,
    "parry" : 5,
    "damage": 15,
    "lvl" : 0,
    "skill_name" : "庸人自擾",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「想入非非」，右手托住杖端，左掌居中一擊，令其憑慣性倒向
$n的肩頭",
    "force" : 110,
    "dodge" : -10,
    "parry" : 10,
    "damage": 15,
    "lvl" : 7,
    "skill_name" : "想入非非",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「六神不安」，舉起$w乒乒乓乓地滿地亂敲，讓$n左閃右避，狼
狽不堪",
    "force" : 120,
    "dodge" : -5,
    "parry" : 5,
    "damage": 20,
    "lvl" : 14,
    "skill_name" : "六神不安",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「面無人色」，舉起$w，呆呆地盯了一會，突然猛地一杖打向$n
的$l",
    "force" : 130,
    "dodge" : -5,
    "parry" : 5,
    "damage": 20,
    "lvl" : 20,
    "skill_name" : "面無人色",
    "damage_type":"挫傷"
]),
([      "action":"$N將$w頂住自己的胸膛，一端指向$n，一招「心驚肉跳」，大聲叫喊著
沖向$n",
    "force" : 140,
    "dodge" : -15,
    "parry" : 15,
    "damage": 30,
    "lvl" : 25,
    "skill_name" : "心驚肉跳",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「行尸走肉」，全身僵直，蹦跳著持杖前行，冷不防舉杖攔腰向
$n劈去",
    "force" : 150,
    "dodge" : 5,
    "parry" : -15,
    "damage": 30,
    "lvl" : 30,
    "skill_name" : "行尸走肉",
    "damage_type":"挫傷"
]),
([      "action":"$N面帶戚色，一招「飲恨吞聲」，趁$n說話間，一杖向$n張大的嘴巴捅
了過去",
    "force" : 300,
    "dodge" : -5,
    "parry" : 20,
    "damage": 40,
    "lvl" : 35,
    "skill_name" : "飲恨吞聲",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「力不從心」，假意將$w摔落地上，待$n行來，一腳勾起，擊向
$n的$l",
    "force" : 350,
    "dodge" : -5,
    "parry" : 25,
    "damage": 40,
    "lvl" : 40,
    "skill_name" : "力不從心",
    "damage_type":"挫傷"
]),
([      "action":"$N伏地裝死，一招「窮途沒路」，一個翻滾，身下$w往橫里打出，揮向
$n的襠部",
    "force" : 400,
    "dodge" : -5,
    "parry" : 25,
    "damage": 50,
    "lvl" : 45,
    "skill_name" : "窮途沒路",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「呆若木雞」，身不動，腳不移，$w卻直飛半空，不偏不倚地砸
向$n的$l",
    "force" : 450,
    "dodge" : -5,
    "parry" : 25,
    "damage": 50,
    "lvl" : 50,
    "skill_name" : "呆若木雞",
    "damage_type":"挫傷"
]),
([      "action":"$N高舉$w，一招「人鬼殊途」，身形如鬼魅般飄出，對准$n的天靈蓋一
杖打下",
    "force" : 500,
    "dodge" : -5,
    "parry" : 25,
    "damage": 60,
    "lvl" : 55,
    "skill_name" : "人鬼殊途",
    "damage_type":"挫傷"
]),
([      "action":"$N一招「我入地獄」，單腿獨立，$w舞成千百根相似，根根砸向$n全身
各處要害",
    "force" : 550,
    "dodge" : -5,
    "parry" : 25,
    "damage": 60,
    "lvl" : 60,
    "skill_name" : "我入地獄",
    "damage_type":"挫傷"
]),
});

int valid_enable(string usage) { return (usage == "staff") || (usage == "parry")
; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("wuchang-zhang",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "staff")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練無常杖法。\n");
    me->receive_damage("qi", 30);
    return 1;
}
wudang-jian.c    "damage" : 25,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
([      "name":   "懷中抱月",
    "action" : "$N左撤步，抱劍當胸，揮劍做圓環形，正反攪動，右手$w一式「懷中抱月」，
劍意圓潤，刺向$n的$l",
    "force" : 110,
    "dodge" : 15,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),
([      "name":   "反身朝陽",
    "action" : "$N側身退步，左手劍指划轉，腰部一扭，上體后仰，右手$w一記「反身朝陽」
自下上撩指向$n的$l",
    "force" : 150,
    "dodge" : 35,
    "damage" : 40,
    "lvl" : 0,
    "damage_type" : "刺傷"
]),

});


int valid_enable(string usage) { return (usage == "sword") || (usage == "parry")
; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 10)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("force", 1) < 20)
   return notify_fail("你的內功火候太淺。\n");
    if ((int)me->query_skill("unarmed", 1) < 20)
   return notify_fail("你的基本拳腳火候太淺。\n");
    return 1;
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("wudang-jian",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
     return action[NewRandom(i, 20, level/5)];

}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "sword")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 20)
   return notify_fail("你的體力不夠練武當劍法。\n");
    me->receive_damage("qi", 10);
    return 1;
}

wuhu-duanmendao/duan.cwuhu-duanmendao.c	"action" : "$N右手后撤，手腕一翻，一招「壯士斷腕」，頓時一道白光直斬向$n的手臂",
	"force" : 320,
        "dodge" : 20,
        "parry" : 20,
	"damage" : 70,
	"damage_type" : "砍傷"
]),
([	"action" : "$N高高躍起，一招「人頭落地」，手中$w直劈向$n的頸部",
	"force" : 320,
        "dodge" : 20,
        "parry" : 20,
	"damage" : 70,
	"damage_type" : "劈傷"
]),
([	"action" : "$N貼地滑行，一招「斷子絕孫」，手中$w直撩去$n的襠部",
	"force" : 350,
        "dodge" : 30,
        "parry" : 30,
	"damage" : 80,
	"damage_type" : "割傷"
]),
});


int valid_enable(string usage) { return (usage == "blade") || (usage == "parry"); }

int valid_learn(object me)
{
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力不夠。\n");
	if ((int)me->query_skill("blade", 1) < 20)
		return notify_fail("你的基本刀法火候太淺。\n");
	return 1;
}

mapping query_action(object me, object weapon)
{
int zhaoshu, level;

zhaoshu = sizeof(action)-1;
level   = (int) me->query_skill("wuhu-duanmendao",1);

if (level < 60 )
zhaoshu--;
if (level < 50 )
zhaoshu--;
if (level < 40 )
zhaoshu--;
if (level < 30 )
zhaoshu--;
if (level < 20 )
zhaoshu--;
if (level < 10 )
zhaoshu--;
return action[random(zhaoshu)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "blade")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練五虎斷門刀法。\n");
	me->receive_damage("qi", 30);
	return 1;
}

string perform_action_file(string action)
{
        return __DIR__"wuhu-duanmendao/" + action;
}
wuluo-zhang.c || usage=="parry"; }

int valid_combine(string combo) { return combo=="jinyu-quan"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練五羅輕煙掌必須空手。\n");
	if ((int)me->query_skill("kurong-changong",1) < 20)
		return notify_fail("你的枯榮禪功太弱，無法練五羅輕煙掌。\n");
	if ((int)me->query("max_neili") < 100)
		return notify_fail("你的內力太弱，無法練五羅輕煙掌。\n");
	return 1;
}

mapping query_action(object me, object weapon)
{
	int i, level;
    level = (int) me->query_skill("wuluo-zhang",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練五羅輕煙掌。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}


// jiao.c 巫月刀法「鉸」字訣
// jacki于1997.7.25

#include <ansi.h>
#include <combat.h>

inherit F_SSERVER;
int perform(object me, object target)
{
    string msg;
    object my_w,target_w;
    my_w = me->query_temp("weapon");
    target_w = target->query_temp("weapon");

    if( !target ) target = offensive_target(me);

    if( !target
    ||      !target->is_character()
    ||      !me->is_fighting(target) )
   return notify_fail("你只能對戰斗中的對手使用「鉸字訣」。\n");

    if( target->is_busy() )
   return notify_fail(target->name() + "目前正疲于招架，加緊攻擊吧  \n");

    if( (int)me->query_skill("wuyue-blade", 1) < 50 )
   return notify_fail("你的巫月刀法不夠嫻熟，不能使用「鉸」字訣。\n");

    msg = CYN "$N大喝一聲，展開巫月刀法「鉸」字訣，連遞數個急招企圖鉸碎$n的兵刃。\n";
    me->start_busy(2);

    if (target->query_temp("weapon") ||
   target->query_temp("secondary_weapon")) {

    if( random(me->query("combat_exp")) >
   (int)target->query("combat_exp")/2 ) {
    if( target_w->weight() > 2 * random(my_w->weight()) ) {
   msg += "結果$p手中的$w被$P強力一鉸，再也把握不住，立即脫手飛出！\n" NOR;
    target_w->unequip();
    target_w->move(environment(target));
    target->reset_action();
   target->start_busy( (int)me->query_skill("wuyue-blade") / 20 );
}
   msg += "結果$p手中的兵刃被$P的強力一擊鉸了個粉碎！\n" NOR;
    target_w->unequip();
    target_w->move(environment(target));
    target_w->set("name", target_w->query("name") + "的碎片");
    target_w->set("value", 0);
    target_w->set("weapon_prop", 0);
    target->reset_action();
   target->start_busy( (int)me->query_skill("wuyue-blade") / 20 );
    } else {
   msg += "可是$p通過巧妙的招架，并沒有讓$P的計謀得逞。\n" NOR;
    }
    message_combatd(msg, me, target);
    return 1;
    }
    return notify_fail(target->name() + "目前是空手，你想鉸什么？\n");
}

wuyue-blade.cskill_name" : "日月交輝",
    "damage_type" : "割傷"
]),
});


int valid_enable(string usage) { return usage == "blade" || usage == "parry"; } 

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 80)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("xuantian-force", 1) < 10)
   return notify_fail("你的玄天氣功火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("wuyue-blade",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "blade")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練巫月刀法。\n");
    me->receive_damage("qi", 25);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"wuyue-blade/" + action;
}

xianglong-zhang/leiting.c);
       msg += HIG"可是$p看破了$P的企圖，閃在了一邊。\n"NOR;
    }
    message_combatd(msg, me, target);

    if(!target->is_fighting(me)) target->fight_ob(me);
//    if(userp(target)) target->fight_ob(me);
//    else if( !target->is_killing(me) ) target->kill_ob(me);
    return 1;
}

e->query_temp("str_count");
	me->add_temp("str", - dmount );
	me->delete_temp("xianglong");
	me->delete_temp("str_count");
	me->delete_temp("str_no");
	me->delete_temp("display_no");
	tell_object(me, CYN"你的降龍大法運行完畢，將內力收回丹田。\n"NOR);}
}
e_type": "瘀傷"
]),
([      "action": "$N使出「突如其來」，右掌從不可能的角度向$n的$l推出",
    "dodge": 0,
    "parry": 10,
    "force": 100,
    "damage_type": "瘀傷"
]),
([      "action": "$N大吼一聲，雙掌使出「震驚百里」，不顧一切般擊向$n",
    "dodge": -25,
    "parry": -10,
    "force": 300,
    "damage_type": "瘀傷"
]),
([      "action": "$N使出「或躍在淵」，向$n的$l連拍數掌",
    "dodge": -20,
    "parry": -20,
    "force": 230,
    "damage_type": "瘀傷"
]),
([      "action": "$N身形滑動，雙掌使一招「雙龍取水」一前一后按向$n的$l",
    "dodge": -10,
    "parry": 20,
    "force": 160,
    "damage_type": "瘀傷"
]),
([      "action": "$N使出「魚躍于淵」，身形飛起，雙掌并在一起向$n的$l劈下",     
    "dodge": -20,
    "parry": 30,
    "force": 250,
    "damage_type": "瘀傷"
]),
([      "action": "$N雙掌立起，使出「時乘六龍」向$n連砍六下",
    "dodge": -20,
    "parry": 20,
    "force": 270,
    "damage_type": "瘀傷"
]),
([      "action": "$N使出「密云不雨」，左掌封住$n的退路，右掌斜斜地劈向$l",     
    "dodge": -15,
    "parry": 20,
    "force": 220,
    "damage_type": "瘀傷"
]),
([      "action": "$N使出「損則有孚」，雙掌軟綿綿地拍向$n的$l",
    "dodge": -25,
    "parry": 10,
    "force": 350,
    "damage_type": "瘀傷"
]),
([      "action": "$N腳下一轉，突然欺到$n身前，一招「龍戰于野」拍向$n的$l",     
    "dodge": -20,
    "parry": 40,
    "force": 330,
    "damage_type": "瘀傷"
]),
([      "action": "$N門戶大開，一招「履霜冰至」向$n的$l劈去",
    "dodge": -25,
    "parry": 1,
    "force": 320,
    "damage_type": "瘀傷"
]),
([      "action": "$N使出「羝羊觸蕃」，雙掌由下往上擊向$n的$l",
    "dodge": -15,
    "parry": 40,
    "force": 200,
    "damage_type": "瘀傷"
]),
([      "action": "$N左掌護胸，右掌使一招「神龍擺尾」上下晃動著擊向$n的$l",     
    "dodge": -10,
    "parry": 40,
    "force": 220,
    "damage_type": "瘀傷"
]),
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"; }  

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練降龍十八掌必須空手。\n");
    if ((int)me->query_skill("huntian-qigong", 1) < 20)
   return notify_fail("你的混天氣功火候不夠，無法練降龍十八掌。\n")
;
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練降龍十八掌。\n");
    return 1;
}

mapping query_action(object me, object weapon)
{
    return action[random(sizeof(action))];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 40)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 10)
   return notify_fail("你的內力不夠練降龍十八掌。\n");
    me->receive_damage("qi", 30);
    me->add("neili", -5);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"xianglong-zhang/" + action;
}

damage" : 40,
        "damage_type" : "挫傷",
]),
([      "action" : "$N反身仰面，使出一式「金剛宣法」，雙手握$w，一棍直刺$n的$l  ",
        "skill_name" : "金剛宣法",
        "dodge" : 10,
        "parry" : 5,
        "lvl" : 16,
        "damage" : 50,
        "damage_type" : "挫傷",
]),
([      "action" : "$N使出一招「引趣眾生」，雙手舉棍撩向$n的襠部  ",
        "skill_name" : "引趣眾生",
        "dodge" : 0,
        "parry" : 10,
        "lvl" : 24,
        "damage" : 60,
        "damage_type" : "挫傷",
]),
([      "action" : "$N舞動手中$w，使出「歌舞閻羅」，頓時罩住$n的全身  ",
        "skill_name" : "歌舞閻羅",
        "dodge" : 10,
        "parry" : 10,
        "lvl" : 32,
        "damage" : 80,
        "damage_type" : "挫傷",
]),
([      "action" : "$N使出一招「浮游血海」，全身貼地而飛，一棍直搗$n的$l  ",
        "skill_name" : "浮游血海",
        "dodge" : 15,
        "parry" : 5,
        "lvl" : 40,
        "damage" : 100,
        "damage_type" : "挫傷",
]),
([      "action" : "$N使出一式「驅鬼御魔」，以棍支地，雙足飛揣$n的面門  ",
        "skill_name" : "驅鬼御魔",
        "dodge" : 20,
        "parry" : 0,
        "lvl" : 48,
        "damage" : 150,
        "damage_type" : "挫傷",
]),
([      "action" : "$N運力于掌，使出「蕩魔除妖」，飛身疾進，手中$w橫掃$n的$l  ",
        "skill_name" : "蕩魔除妖",
        "dodge" : 20,
        "parry" : 15,
        "lvl" : 56,
        "damage" : 180,
        "damage_type" : "挫傷",
]),
});

int valid_enable(string usage) { return usage == "staff" || usage == "parry"; }

int valid_learn(object me)
{
	if ((int)me->query("max_neili") < 50)
		return notify_fail("你的內力不夠。\n");
	if ((int)me->query_skill("longxiang", 1) >= 20 ||
	    (int)me->query_skill("xiaowuxiang", 1) >= 20)
		return 1;
	else if ((int)me->query_skill("longxiang", 1) < 20)
		return notify_fail("你的龍象般若功火候太淺。\n");
	else if ((int)me->query_skill("xiaowuxiang", 1) < 20)
		return notify_fail("你的小無相功火候太淺。\n");
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("xiangmo-chu",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "staff")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠，練不了金剛降魔杵。\n");
	me->receive_damage("qi", 30);
	return 1;
}

// lifeheal.c

#include <ansi.h>

int exert(object me, object target)
{
    if ((!target)||target->query("id")==me->query("id"))
		return notify_fail("你要用真氣為誰療傷？\n");

	if( me->is_fighting() || target->is_fighting())
		return notify_fail("戰斗中無法運功療傷！\n");

	if(target == me)
		return notify_fail("你沒有為自己療傷的能力！\n");

	if( (int)me->query("max_neili") < 300 )
		return notify_fail("你的內力修為不夠。\n");

	if( (int)me->query("neili") < 150 )
		return notify_fail("你的真氣不夠。\n");

	if( (int)target->query("eff_qi") < (int)target->query("max_qi") / 5 )
		return notify_fail( target->name() +
			"已經受傷過重，經受不起你的真氣震蕩！\n");

	message_combatd(
		HIY "$N坐了下來運起內功，將手掌貼在$n背心，緩緩地將真氣輸入$n體內....\n\n"
		"過了不久，$N額頭上冒出豆大的汗珠，$n吐出一口瘀血，臉色看起來紅潤多了。\n" NOR,
		me, target );

	target->receive_curing("qi", 10 + (int)me->query_skill("force")/3 );
	target->add("qi", 10 + (int)me->query_skill("force")/3 );
	if( (int)target->query("qi") > (int)target->query("eff_qi") ) target->set("qi", (int)target->query("eff_qi"));

	me->add("neili", -150);
	me->set("jiali", 0);
                me->start_busy(5);
                target->start_busy(5);
	return 1;
}
// shield.c 小無相功護體神功
// Designed by secret(秘密)
//

#include <ansi.h>

inherit F_CLEAN_UP;

void remove_effect(object me, int amount);

int exert(object me, object target)
{
	int skill;

	if( target != me ) 
		return notify_fail("你只能用小無相功來提升自己的防御力。\n");

	if( (int)me->query("neili") < 100  ) 
		return notify_fail("你的內力不夠。\n");

	if( (int)me->query_skill("xiaowuxiang",1) < 40  ) 
		return notify_fail("你的內力不夠。\n");

	if( (int)me->query_temp("shield") ) 
		return notify_fail("你已經在運功中了。\n");

	skill = me->query_skill("force");
	me->add("neili", -100);
	me->receive_damage("qi", 0);

	message_combatd(
	HIW "$N雙手平舉過頂，運起小無相功，全身籠罩在勁氣之中！\n" NOR, me);

	me->add_temp("apply/armor", skill*2);
	me->set_temp("shield", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, skill*2 :), skill);

	if( me->is_fighting() ) me->start_busy(2);

	return 1;
}

void remove_effect(object me, int amount)
{
	me->add_temp("apply/armor", - amount);
	me->delete_temp("shield");
	tell_object(me, "你的小無相功運行完畢，將內力收回丹田。\n");
}
// xiaowuxiang.c 小無相功
// by secret
// 1997-1-16
//

inherit FORCE;

int valid_enable(string usage) { return usage == "force"; }

int valid_learn(object me)
{
	int i = (int)me->query_skill("xiaowuxiang", 1);
	int t = 1, j;

	for (j = 1; j < i / 10; j++) t*= 2;

	if (((string)me->query("class") != "bonze") && i > 29)
		return notify_fail("你不是僧人，學不了高深的小無相功。\n");

	if ((int)me->query_skill("force", 1) < 10)
		return notify_fail("你的基本內功火候不足，不能學小無相功。\n");

	if ( me->query("gender") == "無性" && i > 49)
		return notify_fail("你無根無性，陰陽不調，難以領會高深的小無相功。\n");

	if (i > 10 && (int)me->query("shen") > t * 100)
		return notify_fail("要學小無相功，你的表現還不夠吧！ \n");

	if (
	me->query_skill("bahuang-gong",1)
	|| me->query_skill("beiming-shengong",1)
	|| me->query_skill("bibo-shengong",1)
	|| me->query_skill("hamagong",1)
	|| me->query_skill("huagong-dafa",1)
	|| me->query_skill("huntian-qigong",1)
	|| me->query_skill("hunyuan-yiqi",1)
	|| me->query_skill("jiuyang-shengong",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("linji-zhuang",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學小無相功。\n");

	return 1;
}

int practice_skill(object me)
{
	return notify_fail("小無相功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"xiaowuxiang/" + func;
}
xiaoyaoyou.c// xiuluo-dao.c 修羅刀
// modified by Venus Oct.1997

inherit SKILL;

mapping *action = ({
([      "action" : "$N藏刀內收，一招「割肉飼鷹」，刀鋒自下而上划了個半弧，向$n的
$l揮去",
    "force" : 120,
    "dodge" : -10,
    "parry" : 5,
    "damage": 15,
    "lvl" : 0,
    "skill_name" : "割肉飼鷹",
    "damage_type" : "割傷"
]),
([      "action" : "$N左掌虛托右肘，一招「投身餓虎」，手中$w筆直划向$n的$l",    
    "force" : 130,
    "dodge" : -10,
    "parry" : 10,
    "damage": 20,
    "lvl" : 12,
    "skill_name" : "投身餓虎",
    "damage_type" : "割傷"
]),
([      "action" : "$N一招「斫頭謝天」，$w繞頸而過，刷地一聲自上而下向$n猛劈",  
    "force" : 140,
    "dodge" : -5,
    "parry" : 5,
    "damage": 25,
    "lvl" : 18,
    "skill_name" : "斫頭謝天",
    "damage_type" : "割傷"
]),
([      "action" : "$N右手反執刀柄，一招「折骨出髓」，猛一挫身，$w直向$n的頸中斬
去",
    "force" : 160,
    "dodge" : 5,
    "parry" : 5,
    "damage": 30,
    "lvl" : 24,
    "skill_name" : "折骨出髓",
    "damage_type" : "割傷",
]),
([      "action" : "$N一招「挑身千燈」，無數刀尖化作點點繁星，向$n的$l挑去",    
    "force" : 180,
    "dodge" : 10,
    "parry" : 5,
    "damage": 35,
    "lvl" : 30,
    "skill_name" : "挑身千燈",
    "damage_type" : "割傷"
]),
([      "action" : "$N雙手合執$w，一招「挖眼布施」，擰身急轉，刀尖直刺向$n的雙眼
",
    "force" : 210,
    "dodge" : 15,
    "parry" : 15,
    "damage": 40,
    "lvl" : 36,
    "skill_name" : "挖眼布施",
    "damage_type" : "割傷"
]),
([      "action" : "$N一招「剝皮書經」，手中$w划出一個大平十字，向$n縱橫劈去",  
    "force" : 240,
    "dodge" : 15,
    "parry" : 15,
    "damage": 50,
    "lvl" : 42,
    "skill_name" : "剝皮書經",
    "damage_type" : "割傷"
]),
([      "action" : "$N反轉刀尖對准自己，一招「剜心決志」，全身一個翻滾，$w向$n攔
腰斬去",
    "force" : 280,
    "dodge" : 20,
    "parry" : 10,
    "damage": 60,
    "lvl" : 48,
    "skill_name" : "剜心決志",
    "damage_type" : "割傷"
]),
([      "action" : "$N一招「燒身供佛」，$w的刀光仿佛化成一簇簇烈焰，將$n團團圍繞
",
    "force" : 320,
    "dodge" : 10,
    "parry" : 20,
    "damage": 75,
    "lvl" : 54,
    "skill_name" : "燒身供佛",
    "damage_type" : "割傷"
]),
([      "action" : "$N刀尖平指，一招「刺血滿地」，一片片切骨刀氣如颶風般裹向$n的
全身",
    "force" : 370,
    "dodge" : 5,
    "parry" : 25,
    "damage": 90,
    "lvl" : 60,
    "skill_name" : "刺血滿地",
    "damage_type" : "割傷"
]),
});

int valid_enable(string usage) { return usage == "blade" || usage == "parry"; } 

int valid_combine(string combo) { return combo=="damo-jian"; }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 50)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 10)
   return notify_fail("你的混元一氣功火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}
mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("xiuluo-dao",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "blade")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練修羅刀。\n");
    me->receive_damage("qi", 35);
    return 1;
}

xuanfeng-leg/xuanfeng-leg/kuangfeng.cxuanfeng-leg.c笛  梗    磽蝗環傷儺        愫鑾昂齪螅  該  
無極  向$n的胸口",
        "damage" : 220,
        "dodge" : 30,
        "damage_type" : "瘀傷",
        "lvl" : 40,
        "skill_name" : "朔風吹雪"
]),
([      "action" : "$N抽身躍起，開聲吐氣，大喝一聲：嗨！一式「雷動九天」，雙腳
如旋風般踢向$n的$l",
        "damage" : 250,
        "dodge" : 35,
        "damage_type" : "瘀傷",
        "lvl" : 30,
        "skill_name" : "雷動九天"
]),
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"; } 

int valid_combine(string combo) { return combo=="luoying-shenzhang"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
        return notify_fail("旋風掃葉腿必須空手。\n");
    if ((int)me->query_skill("bibo-shengong", 1) < 15)
        return notify_fail("你的碧波神功火候不夠，無法學旋風掃葉腿。\n");
    if ((int)me->query("max_neili") < 100)
        return notify_fail("你的內力太弱，無法練旋風掃葉腿。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("xuanfeng-leg", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
       return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
       return notify_fail("你的內力不夠練旋風掃葉腿。\n");
    me->receive_damage("qi", 20);
    me->add("neili", -1);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"xuanfeng-leg/" + action;
}

xuantian-shengong/xuantian-shengong/roar.cxuantian-shengong.cxue-dao/shendao.ct->receive_wound("qi", damage/2);
msg += HIC"$n疾忙側身避讓，但血刀疾閃，只覺眼前一陣血紅，刀刃劈面而下，鮮血飛
濺，慘聲大嚎！\n"NOR;
    } else
    {
        me->start_busy(2);
        me->receive_wound("qi", me->query("qi")/20);
msg += HIY"可是$n側身避讓，不荒不忙，躲過了$N的血刀。\n"NOR;
        me->add("neili", -200);
    }
    message_combatd(msg, me, target);
    if(!target->is_fighting(me)) target->fight_ob(me);
    return 1;
}
       "lvl" : 24,
        "damage" : 40,
        "damage_type" : "割傷",
]),
([      "action" : "$N低吼一聲，使出「血口噴人」，舉$w直劈$n的$l  ",
        "skill_name" : "血口噴人",
        "force" : 250,
        "dodge" : -5,
        "parry" : 5,
        "lvl" : 32,
        "damage" : 50,
        "damage_type" : "割傷",
]),
([      "action" : "$N使出「血跡斑斑」，飛身斜刺，忽然反手一刀橫斬$n的腰部  ",
        "skill_name" : "血跡斑斑",
        "force" : 280,
        "dodge" : 10,
        "parry" : 5,
        "lvl" : 40,
        "damage" : 60,
        "damage_type" : "割傷",
]),
([      "action" : "$N使一式「以血還血」，揮刀直指$n的胸口  ",
        "skill_name" : "以血還血",
        "force" : 300,
        "dodge" : 5,
        "parry" : 10,
        "lvl" : 48,
        "damage" : 80,
        "damage_type" : "割傷",
]),
([      "action" : "$N刀鋒虛點，使出一招「血流滿面」，轉身舉$w橫劈$n的面門  ",
        "skill_name" : "血流漫面",
        "force" : 320,
        "dodge" : 10,
        "parry" : 20,
        "lvl" : 56,
        "damage" : 100,
        "damage_type" : "割傷",
]),
});


int valid_enable(string usage) { return usage == "blade" || usage == "parry"; }

//int valid_combine(string combo) { return combo=="mingwang-jian"; }

int valid_learn(object me)
{
        if ((int)me->query("max_neili") < 50)
                return notify_fail("你的內力不夠。\n");
        if ((int)me->query_skill("longxiang", 1) >= 20 ||
            (int)me->query_skill("xiaowuxiang", 1) >= 20)
		return 1;
	else
                return notify_fail("你的內功火候太淺。\n");
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
        level   = (int) me->query_skill("xue-dao",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
        object weapon;

        if(!me->query_skill("longxiang",1)
                && !me->query_skill("xiaowuxiang",1))
                return notify_fail("練「血刀」必須要有雪山派的內功作為根基。\n");

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "blade")
                return notify_fail("你使用的武器不對。\n");

        if ((int)me->query("qi") < 50)
                return notify_fail("你的體力不夠，練不了「血刀」。\n");

        me->receive_damage("qi", 30);
        return 1;
}

string perform_action_file(string action)
{
        return __DIR__"xue-dao/" + action;
}
limb)
{
        return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
        if( (int)me->query("qi") < 30 )
                return notify_fail("你的體力太差了，不能練燕雙飛。\n");
        if (me->query_skill("yan-fly", 1) < 30)
                me->receive_damage("qi", 10);

        me->receive_damage("qi", 20);
        return 1;
}

形幻影」只能對戰斗中的對手使用。\n");
    if ((int)me->query_skill("yanxing-dao", 1) < 60 )
        return notify_fail(WHT"你雁行刀法不夠嫻熟，使不出「無形幻影」。\n"NOR);
    if ((int)me->query_skill("linji-zhuang", 1) < 90 )
        return notify_fail(RED"你臨濟庄火候不夠，「無形幻影」不成招式。\n"NOR);
    if ((int)me->query("max_neili")<300)
        return notify_fail(RED"你的內力修為不足，無法運足「無形幻影」的內力。\n"NOR);
    if ((int)me->query("neili")<200)
    {
        return notify_fail(HIC"你現在內力不夠，沒能將「無形幻影」使完！\n"NOR);
    }
    msg = HIC "$N大喝一聲，全場四處游動，$n只看到$N化做數團身影，漫天刀\n"NOR;
    msg += HIC"光席卷而來，$n奮力一架，但$N刀分數路，$n只架住一刀！\n"NOR;
    message_combatd(msg, me, target);

    me->clean_up_enemy();
    target = me->select_opponent();

    COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);
    COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);
    COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);
    COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);
    COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);
    me->add("neili", -100);
    me->start_busy(random(5));
    if(!target->is_fighting(me)) target->fight_ob(me);
    return 1;
}
// huanying.c  雁行刀法「無形幻影」

#include <ansi.h>

inherit F_SSERVER;
int perform(object me, object target)
{
    int damage;
    string msg;
    object weapon;

    if (!target ) target = offensive_target(me);
    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "blade")
   return notify_fail(RED"開什么玩笑，沒裝備刀怎么使「無形幻影」？\n"NOR);
    if (!target || !target->is_character() || !me->is_fighting(target) )
   return notify_fail("「無形幻影」只能對戰斗中的對手使用。\n");
    if ((int)me->query_skill("yanxing-dao", 1) < 90 )
   return notify_fail(WHT"你的雁行刀法不夠嫻熟，還使不出「無形幻影」。\n"NOR);
    if ((int)me->query_skill("linji-zhuang", 1) < 70 )
   return notify_fail(RED"你的臨濟十二庄火候不夠，「無形幻影」不成招式。\n"NOR);
    if ((int)me->query("max_neili")<300)
   return notify_fail(RED"你的內力修為不足，無法運足「無形幻影」的內力。\n"NOR);
    if ((int)me->query("neili")<60)
    {
      me->set("neili",10);
      return notify_fail(HIC"你現在內力不夠，沒能將「無形幻影」使完！\n"NOR);
    }
    msg = HIC "$N大喝一聲，全場四處游動，$n只看到$N化做數團身影，漫天刀光席卷而來，$n奮力一架，但$N刀分數路，$n只架住一刀！\n"NOR;
    if (random(me->query_skill("force")) > target->query_skill("force")/2||
  random(me->query("combat_exp")) > (int)target->query("combat_exp")/3
)
    {
   me->start_busy(1);
   target->start_busy(random(3));
   damage = (int)me->query_skill("yanxing-dao", 1);
   damage = damage + random(damage);
   target->receive_damage("qi", damage/2);
   target->receive_wound("qi", damage);
   target->receive_damage("jing", damage/3);
   target->receive_wound("jing", damage/4);
   msg += HIC"$n根本沒法躲避，頓時几刀都砍在$n肩頭！鮮血濺起，$n自覺眼前一片鮮紅，遮住視線！\n"NOR;
   me->add("neili", -damage/5);
    } else
    {
   me->start_busy(2);
   msg += HIY"可是$p早以看出那是虛招，毫不在意地坦然面對，果真只有架住的是實招。\n"NOR;
    }
    message_combatd(msg, me, target);
    return 1;
}

yanxing-dao.c力向前
，直抵$n的$l",
    "force" : 450,
    "dodge" : 20,
    "damage_type" : "砍傷",
    "lvl" : 60
]),
([      "skill_name" : "逼字訣",
    "action" : "$N凝神使出「逼字訣」，身隨意轉，手隨心動，繞著$n疾轉，手中刀
光漫卷，將$n的全身籠罩在自己布下的刀網中，無從逃脫",
    "force" : 500,
    "dodge" : 25,
    "damage_type" : "砍傷",
    "lvl" : 70
]),
([      "skill_name" : "藏字訣",
    "action" : "$N凝神使出「藏字訣」，側身藏刀，引誘$n前進了一步，刀光陡現，
勢如千軍萬馬，奔騰而出",
    "force" : 500,
    "dodge" : 25,
    "damage_type" : "砍傷",
    "lvl" : 80
]),
([      "skill_name" : "錯字訣",
    "action" : "$N凝神使出「錯字訣」，雙手交叉，刀光批攉，$n實在看不清刀光來
向，退后欲避，只覺一陣寒氣直逼過來",
    "force" : 500,
    "dodge" : 25,
    "damage_type" : "砍傷",
    "lvl" : 90
]),
});

int valid_enable(string usage) { return usage=="blade" ||  usage=="parry"; }    

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 50)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("linji-zhuang", 1) < 20)
   return notify_fail("你的臨濟十二庄火候太淺。\n");
    if ((int)me->query_skill("blade", 1) < (int)me->query_skill("yanxing-dao
", 1) )
   return notify_fail("你的基本刀法火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
    if(level >= action[i]["lvl"])
    return action[i]["skill_name"];
}
mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("yanxing-dao", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "blade")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練雁行刀。\n");
    me->receive_damage("qi", 10);
    return 1;
}
string perform_action_file(string action)
{
    return __DIR__"yanxing-dao/" + action;
}
一運真氣便有生命危險！\n");

    write( HIW "你全身放松，坐下來開始運功療傷。\n" NOR);
    message("vision",
           HIW + me->name() + "吐出一口金燦燦的瘀血，臉色看起來好多了。\n" NOR,
           environment(me), me);

    me->receive_curing("qi", 10 + (int)me->query_skill("force")/5 );
    me->add("neili", -50);
    me->set("jiali", 0);

    return 1;
}

       ob[i]->receive_wound("jing", damage);
          tell_object(ob[i], "你覺得眼前一陣金星亂冒，耳朵痛得像是要裂開一樣！\n");
       }

       if( userp(ob[i]) ) ob[i]->fight_ob(me);
       else if( !ob[i]->is_killing(me) ) ob[i]->kill_ob(me);
    }
    return 1;
}

 1;
}

void remove_effect(object me, int amount)
{
	me->add_temp("apply/attack", - amount);
	me->add_temp("apply/dodge", - amount);
	me->delete_temp("powerup");
	tell_object(me, "你的易筋經神功運行完畢，將內力收回丹田。\n");
}
ong",1)
	|| me->query_skill("beiming-shengong",1)
	|| me->query_skill("bibo-shengong",1)
	|| me->query_skill("hamagong",1)
	|| me->query_skill("huagong-dafa",1)
	|| me->query_skill("huntian-qigong",1)
	|| me->query_skill("jiuyang-shengong",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("linji-zhuang",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yunlong-shengong",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學易筋經神功？！\n");

	return 1;
}


int practice_skill(object me)
{
	return notify_fail("易筋經神功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"yijinjing/" + func;
}
塾  鉤  ,
    "damage_type" : "內傷"
]),
([      "action" : "$N一式「拔翅橫飛」，全身向斜里平飛，右腿一繃，雙爪搭向$n的肩
頭",
    "force" : 150,
    "dodge" : 10,
    "parry" : 10,
    "damage": 10,
    "lvl" : 20,
    "skills_name" : "拔翅橫飛",
    "damage_type" : "內傷"
]),
([      "action" : "$N雙爪交錯上舉，使一式「迎風振翼」，一拔身，分別襲向$n左右腋
空門",
    "force" : 190,
    "dodge" : 15,
    "parry" : 15,
    "damage": 15,
    "lvl" : 30,
    "skills_name" : "迎風振翼",
    "damage_type" : "內傷"
]),
([      "action" : "$N全身滾動上前，一式「飛龍獻爪」，右爪突出，鬼魅般抓向$n的胸
口",
    "force" : 250,
    "dodge" : 20,
    "parry" : 20,
    "damage": 15,
    "lvl" : 40,
    "skills_name" : "飛龍獻爪",
    "damage_type" : "內傷"
]),
([      "action" : "$N伏地滑行，一式「撥云瞻日」，上手襲向膻中大穴，下手反抓$n的
襠部",
    "force" : 310,
    "dodge" : 25,
    "parry" : 25,
    "damage": 20,
    "lvl" : 50,
    "skills_name" : "撥云瞻日",
    "damage_type" : "內傷"
]),
([      "action" : "$N左右手掌爪互逆，一式「搏擊長空」，無數道勁氣破空而出，迅疾
無比地擊向$n",
    "force" : 380,
    "dodge" : 25,
    "parry" : 25,
    "damage": 25,
    "lvl" : 55,
    "skills_name" : "凶鷹襲兔",
    "damage_type" : "內傷"
]),
([      "action" : "$N騰空高飛三丈，一式「鷹揚萬里」，天空中頓時顯出一個巨靈爪影
，緩緩罩向$n",
    "force" : 470,
    "dodge" : 40,
    "parry" : 40,
    "damage": 30,
    "lvl" : 60,
    "skills_name" : "凶鷹襲兔",
    "damage_type" : "內傷"
])
});

int valid_enable(string usage) { return usage=="claw" || usage=="parry"; }      

int valid_combine(string combo) { return combo=="fengyun-shou"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練鷹爪功必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候不夠，無法學鷹爪功。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練鷹爪功。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("yingzhua-gong",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練鷹爪功。\n");
    me->receive_damage("qi", 30);
    me->add("neili", -10);
    return 1;
}
  
_enable(string usage) { return (usage == "dodge") || (usage == "move"); }

int valid_learn(object me) { return 1; }

string query_dodge_msg(string limb)
{
        return dodge_msg[random(sizeof(dodge_msg))];
}

int practice_skill(object me)
{
        if( (int)me->query("qi") < 50 )
                return notify_fail("你的體力太差了，練不了意形步法。\n");
        me->receive_damage("qi", 30);
        return 1;
}

	if((int)me->query_skill("yizhi-chan") < 150)
		return notify_fail("你的指法修為不夠,目前還不能使用驚魔一指絕技!\n");

	if((int)me->query("neili") < 800)
		return notify_fail("你內力現在不夠, 不能使用驚魔一指! \n");

	if( target->is_busy() )
		return notify_fail(target->name() + "目前正自顧不暇，放膽攻擊吧  \n");

	msg = HIY "$N使出一指禪絕技「驚魔一指」，罩住了$n的全身要穴, 使$n動彈不得。\n";

	if( random(me->query("combat_exp")) > (int)target->query("combat_exp") / 4 ) {
		msg += "結果$p被$P攻了個措手不及！\n" NOR;
		target->start_busy( (int)me->query_skill("yizhi-chan",1) / 10 + 2);
		me->add("neili", -150);
	} else {
		msg += HIG "可是$p看破了$P的企圖，并沒有上當。\n" NOR;
		me->start_busy(4);
	}
	message_combatd(msg, me, target);

	return 1;
}
 : 20,
    "skill_name" : "佛光普照",
    "damage_type" : "刺傷"
]),
([      "action" : "$N身形閃動，一式「佛門廣渡」，雙手食指端部各射出一道青氣，射
向$n的全身要穴",
    "force" : 240,
    "dodge" : 20,
    "parry" : 20,
    "damage": 60,
    "lvl" : 40,
    "skill_name" : "佛門廣渡",
    "damage_type" : "刺傷"
]),
([      "action" : "$N盤膝跌坐，一式「佛法無邊」，左手握拳托肘，右手拇指直立，遙
遙對著$n一捺",
    "force" : 480,
    "dodge" : 40,
    "parry" : 30,
    "damage": 90,
    "lvl" : 60,
    "skill_name" : "佛法無邊",
    "damage_type" : "刺傷"
])
});

int valid_enable(string usage) { return usage=="finger" || usage=="parry"; }    

int valid_combine(string combo) { return combo=="banruo-zhang"; }

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練一指禪必須空手。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候不夠，無法學一指禪。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力太弱，無法練一指禪。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("yizhi-chan",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 30)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的內力不夠練一指禪。\n");
    me->receive_damage("qi", 30);
    me->add("neili", -10);
    return 1;
}
string perform_action_file(string action)
{
        return __DIR__"yizhi-chan/" + action;
}

yueying-wubu.c隱舞步。\n");
	me->receive_damage("qi", 35);
	return 1;
}

    "skill_name" : "靜寂",
        "force" : 320,
        "dodge" : -5,
        "lvl" : 32,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N微微一笑，使出一式「妙音」，雙拳前后擊出，直取$n的左胸  ",
        "skill_name" : "妙音",
        "force" : 350,
        "dodge" : 10,
        "lvl" : 40,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N使出一招「明心」，全身疾轉，雙拳橫掃$n的$l  ",
        "skill_name" : "明心",
        "force" : 370,
        "dodge" : 20,
        "lvl" : 48,
        "damage_type" : "瘀傷",
]),
([      "action" : "$N飛身一躍，使出一招「制勝」，一拳猛擊$n咽喉  ",
        "skill_name" : "制勝",
        "force" : 450,
        "dodge" : 5,
        "lvl" : 56,
        "damage_type" : "瘀傷",
]),
});

int valid_enable(string usage) { return usage == "cuff" || usage == "parry"; }

int valid_combine(string combo) { return combo=="dashou-yin"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練金剛瑜迦母拳必須空手。\n");
	else if ((int)me->query("max_neili") < 50)
		return notify_fail("你的內力不夠。\n");
	if ((int)me->query_skill("longxiang", 1) >= 20 ||
	    (int)me->query_skill("xiaowuxiang", 1) >= 20)
		return 1;
	else if ((int)me->query_skill("longxiang", 1) < 20)
		return notify_fail("你的龍象般若功火候太淺。\n");
	else if ((int)me->query_skill("xiaowuxiang", 1) < 20)
		return notify_fail("你的小無相功火候太淺。\n");
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("yujiamu-quan",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練金剛瑜迦母拳必須空手。\n");
	if ((int)me->query("qi") < 40)
		return notify_fail("你的體力不夠，練不了金剛瑜迦母拳。\n");
	me->receive_damage("qi", 20);
	return 1;
}

不夠高，不能用來反震傷敵。\n");

	if( target->is_busy() )
		return notify_fail(target->name() + "目前正自顧不暇，放膽攻擊吧  \n");

	msg = CYN "$N使出云龍鞭法「纏」字訣，連揮長鞭企圖把$n的全身纏住。\n";

	if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/2 ) {
		msg += "結果$p被$P攻了個措手不及  \n" NOR;
		target->start_busy( (int)me->query_skill("yunlong-bian") / 30 + 1);
		me->start_busy(1+ random(2));
	} else {
		msg += "可是$p看破了$P的企圖，并沒有上當。\n" NOR;
		me->start_busy(4);
	}
	message_combatd(msg, me, target);
	if(!target->is_fighting(me)) target->fight_ob(me);
	return 1;
}
招「矯龍出水」，手中$w抖得筆直，刺向$n雙眼",
	"force":		200,
	"dodge":		30,
	"damage":		30,
	"lvl" : 20,
	"skill_name" : "矯龍出水",
	"damage_type":	"刺傷"
]),
([	"action":		"$N力貫鞭梢，一招「破云見日」，手中$w舞出滿天鞭影，排山倒海般掃向$n全身",
	"force":		200,
	"dodge":		40,
	"damage":		40,
	"lvl" : 30,
	"skill_name" : "破云見日",
	"damage_type":	"刺傷"
]),
([	"action":		"$N運氣于腕，一招「開山裂石」，手中$w向一根銅棍般直擊向$n",
	"force":		250,
	"dodge":		50,
	"damage":		50,
	"lvl" : 40,
	"skill_name" : "開山裂石",
	"damage_type":	"內傷"
]),
([	"action":		"$N單臂一揮，一招「玉帶圍腰」，手中$w直擊向$n腰肋",
	"force":		300,
	"dodge":		-20,
	"damage":		60,
	"lvl" : 50,
	"skill_name" : "玉帶圍腰",
	"damage_type":	"內傷"
]),
([	"action":		"$N高高躍起，一招「大漠孤煙」，手中$w筆直向$n當頭罩下",
	"force":		350,
	"dodge":		-50,
	"damage":		70,
	"lvl" : 60,
	"skill_name" : "大漠孤煙",
	"damage_type":	"內傷"
])
});

int valid_enable(string usage) { return (usage == "whip") || (usage == "parry"); }

int valid_learn(object me)
{
	object weapon;

	if( (int)me->query("max_neili") < 200 )
		return notify_fail("你的內力不足，沒有辦法練云龍鞭法, 多練些內力再來吧。\n");

	if ((int)me->query_skill("force", 1) < 40)
		return notify_fail("你的基本內功火候太淺。\n");

	if ( !objectp(weapon = me->query_temp("weapon"))
	|| ( string)weapon->query("skill_type") != "whip" )
		return notify_fail("你必須先找一條鞭子才能練鞭法。\n");

	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("yunlong-bian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "whip")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練云龍鞭法。\n");
	me->receive_damage("qi", 5);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"yunlong-bian/" + action;
}
1) < 50 )
		return notify_fail("你的云龍劍法不夠嫻熟，不會使用「云龍三現」。\n");
	                        
	if( (int)me->query_skill("yunlong-shengong", 1) < 50 )
		return notify_fail("你的云龍神功不夠高，不能用來反震傷敵。\n");
			
	if( (int)me->query("neili", 1) < 300 )
		return notify_fail("你現在內力太弱，不能使用「云龍三現」。\n");
			
	msg = CYN "$N微微一笑，猛吸一口氣,欲使出以氣馭劍絕技攻擊$n。\n"NOR;

//	if( !target->is_killing(me) ) target->kill_ob(me);

	if (random(me->query_skill("force")) > target->query_skill("force")/5 )
	{
		target->start_busy( (int)me->query_skill("yunlong-jian") / 30 + 1);
		
		damage = (int)me->query_skill("yunlong-xinfa", 1);
		damage = damage +  (int)me->query_skill("yunlong-shengong", 1);
		damage = damage +  (int)me->query_skill("yunlong-jianfa", 1);
		
		target->receive_damage("qi", damage);
		target->receive_wound("qi", damage/2);
		me->add("neili", -damage);
		msg += HIR"只見$N手中劍光幻作一條金龍,騰空而起,倏的罩向$n,\n$n只覺一股大力鋪天蓋地般壓來,登時眼前一花，兩耳轟鳴,哇的噴出一口鮮血！！\n"NOR;
		me->start_busy(2);
	} else 
	{
		msg += CYN"可是$p猛地向前一躍,跳出了$P的攻擊范圍。\n"NOR;
		me->add("neili", -100);
		me->start_busy(4);
	}
	message_combatd(msg, me, target);

	if(!target->is_fighting(me)) target->fight_ob(me);
//	if(userp(target)) target->fight_ob(me);
//	else if( !target->is_killing(me) ) target->kill_ob(me);
	return 1;
}
// yunlong-jian.c 云龍劍

inherit SKILL;

mapping *action = ({
([	"action":"\n$N使一式「悠悠順自然」，手中$w嗡嗡微振，幻成一條白光刺向$n的$l",
	"force" : 120,
        "dodge" : -10,
	"damage": 15,
	"lvl" : 0,
	"skill_name" : "悠悠順自然",
	"damage_type":	"刺傷"
]),
([	"action":"\n$N錯步上前，使出「來去若夢行」，劍意若有若無，$w淡淡地向$n的$l揮去",
	"force" : 140,
        "dodge" : -10,
	"damage": 20,
	"lvl" : 8,
	"skill_name" : "來去若夢行",
	"damage_type":	"割傷"
]),
([	"action":"\n$N一式「志當存高遠」，縱身飄開數尺，運發劍氣，手中$w遙搖指向$n的$l",
	"force" : 160,
        "dodge" : 5,
	"damage": 30,
	"lvl" : 15,
	"skill_name" : "志當存高遠",
	"damage_type":	"刺傷"
]),
([	"action":"$N縱身輕輕躍起，一式「表里俱澄澈」，劍光如水，一瀉千里，洒向$n全身",
	"force" : 180,
        "dodge" : 10,
	"damage": 35,
	"lvl" : 20,
	"skill_name" : "表里俱澄澈",
	"damage_type":	"割傷"
]),
([	"action":"$N手中$w中宮直進，一式「隨風潛入夜」，無聲無息地對准$n的$l刺出一劍",
	"force" : 220,
        "dodge" : 15,
	"damage": 40,
	"lvl" : 30,
	"skill_name" : "隨風潛入夜",
	"damage_type":	"刺傷"
]),
([	"action":"$N手中$w一沉，一式「潤物細無聲」，無聲無息地滑向$n的$l",
	"force" : 250,
        "dodge" : 15,
	"damage": 40,
	"lvl" : 40,
	"skill_name" : "潤物細無聲",
	"damage_type":	"割傷"
]),
([	"action":"\n$N手中$w斜指蒼天，劍芒吞吐，一式「云龍聽梵音」，對准$n的$l斜斜擊出",
	"force" : 280,
        "dodge" : 25,
	"damage": 45,
	"lvl" : 50,
	"skill_name" : "云龍聽梵音",
	"damage_type":	"刺傷"
]),
([	"action":"$N左指凌空虛點，右手$w逼出丈許雪亮劍芒，一式「萬里一點紅」刺向$n的咽喉",
	"force" : 320,
        "dodge" : 15,
	"damage": 55,
	"lvl" : 60,
	"skill_name" : "萬里一點紅",
	"damage_type":	"刺傷"
]),
([	"action":"$N合掌跌坐，一式「我心化云龍」，$w自懷中躍出，如疾電般射向$n的胸口",
	"force" : 380,
        "dodge" : 15,
	"damage": 60,
	"lvl" : 70,
	"skill_name" : "我心化云龍",
	"damage_type":	"刺傷"
]),
([	"action":"\n$N呼的一聲拔地而起，一式「日月與同輝」，$w幻出萬道光影，將$n團團圍住",
	"force" : 420,
        "dodge" : 15,
	"damage": 70,
	"lvl" : 80,
	"skill_name" : "日月與同輝",
	"damage_type":	"內傷"
]),
([	"action":"$N隨風輕輕飄落，一式「清風知我意」，手中$w平指，緩緩拍向$n臉頰",
	"force" : 450,
        "dodge" : 15,
	"damage": 80,
	"lvl" : 90,
	"skill_name" : "清風知我意",
	"damage_type":	"內傷"
]),
([	"action" : "$N劍尖微顫作龍吟，一招「高處不勝寒」，切骨劍氣如颶風般裹向$n全身",
	"force" : 500,
        "dodge" : 15,
	"damage": 90,
	"lvl" : 100,
	"skill_name" : "高處不勝寒",
	"damage_type":	"內傷"
]),
([	"action" : "$N募的使一招「紅葉舞秋山」，頓時劍光中几朵血花洒向$n全身",
	"force" : 500,
        "dodge" : 25,
	"damage": 100,
	"lvl" : 110,
	"skill_name" : "紅葉舞秋山",
	"damage_type":	"內傷"
]),
});

int valid_enable(string usage) { return usage == "sword" || usage == "parry"; }

int valid_learn(object me)
{
	if ((int)me->query("max_neili") < 200)
		return notify_fail("你的內力不夠。\n");
	if ((int)me->query_skill("yunlong-xinfa", 1) < 20)
		return notify_fail("你的云龍心法火候太淺。\n");
	if ((int)me->query_skill("force", 1) < 40)
		return notify_fail("你的基本內功火候太淺。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("yunlong-jian",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "sword")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練云龍劍法。\n");
	me->receive_damage("qi", 25);
	return 1;
}
string perform_action_file(string action)
{
	return __DIR__"yunlong-jian/" + action;
}
yunlong-shenfa.cyunlong-shenfa.javaing action;

	me = this_player();
	action = query_action(me, ob);

	return action["action"];
}

int practice_skill(object me)
{
	if( (int)me->query("qi") < 40 )
		return notify_fail("你的體力太差了，不能練云龍身法。\n");
	me->receive_damage("qi", 20);
	return 1;
}
( HIW "你全身放松，坐下來開始運功療傷。\n" NOR);
	message("vision",
		HIW + me->name() + "吐出一口瘀血，臉色看起來好多了。\n" NOR,
		environment(me), me);

	me->receive_curing("qi", 10 + (int)me->query_skill("force")/5 );
	me->add("neili", -50);
	me->set("jiali", 0);
	me->start_busy(4);

	return 1;
}
elete_temp("powerup");
    tell_object(me, "你的云龍神功運行完畢，將內力收回丹田。\n");}
}
huang",1)
	|| me->query_skill("longxiang",1)
//	|| me->query_skill("mizong-xinfa",1)
	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("zixia-shengong",1) )
		return notify_fail("你不先散了別派內功，怎能學云龍神功？！\n");

	return 1;
}


int practice_skill(object me)
{
	return notify_fail("云龍內功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
	return __DIR__"yunlong-shengong/" + func;
}
// yunlongshou.c -云龍手

inherit SKILL;

mapping *action = ({
([	"action" : "$N一式「草木皆兵」，十指伸縮，虛虛實實地襲向$n的全身要穴",
	"force" : 200,
        "dodge" : 30,
	"damage": 15,
	"lvl" : 10,
	"skill_name" : "草木皆兵",
        "damage_type" : "抓傷"
]),
([	"action" : "在呼呼風聲中，$N使一招「捕風捉影」，雙手如鉤如戢，插向$n的$l",
	"force" : 250,
	"dodge" : 35,
	"damage": 20,
	"lvl"   : 20,
	"skill_name" : "捕風捉影" ,		
	"damage_type" : "刺傷"
]),
([	"action" : "$N雙拳揮舞，一式「浮云去來」，兩手環扣，攏成圈狀，猛擊$n的下頜",
	"force" : 250,
        "dodge" : 30,
	"damage": 25,
	"lvl" : 30,
	"skill_name" : "浮云去來",
        "damage_type" : "內傷"
]),
([	"action" : "$N雙手平伸，十指微微上下抖動，一招「十指乾坤」打向$n的$l",
	"force" : 300,
	"dodge" : 35,
	"damage": 30,
	"lvl"   : 40,
	"skill_name" : "十指乾坤" ,		
	"damage_type" : "內傷"
]),
([	"action" : "$N左手護胸，腋下含空，右手五指如鉤，一招「抱殘守缺」插向$n的頂門",
	"force" : 260,
	"dodge" : 40,
	"damage": 30,
	"lvl"   : 50,
	"skill_name" : "抱殘守缺" ,		
	"damage_type" : "內傷"
]),
([	"action" : "$N右腿斜插$n二腿之間，一招「掏虛搶珠」，上手取目，下手反勾$n的襠部",
	"force" : 300,
	"dodge" : 35,
	"damage": 40,
	"lvl"   : 60,
	"skill_name" : "掏虛搶珠" ,		
	"damage_type" : "內傷"
]),
([	"action" : "$N一手虛指$n的劍訣，一招「空手入刃」，劈空抓向$n手中的兵刃",
	"force" : 350,
	"dodge" : 35,
	"damage": 50,
	"lvl"   : 70,
	"skill_name" : "空手入刃" ,		
	"damage_type" : "抓傷"
]),
([	"action" : "$N左手指向$n胸前的五道大穴，右手斜指太陽穴，一招「降龍伏虎」使$n進退兩難",
	"force" : 400,
	"dodge" : 40,
	"damage": 60,
	"lvl"   : 80,
	"skill_name" : "降龍伏虎" ,		
	"damage_type" : "內傷"
]),
([	"action" : "$N一手頂天成爪，一手指地，一招「撥云見日」,勁氣籠罩$n的全身",
	"force" : 420,
	"dodge" : 50,
	"damage": 70,
	"lvl"   : 90,
	"skill_name" : "撥云見日" ,		
	"damage_type" : "內傷"
]),
([	"action" : "$N一式「如煙往事」，拳招若隱若現，若有若無，緩緩地拍向$n的丹田",
	"force" : 460,
        "dodge" : 60,
	"damage": 100,
	"lvl" : 100,
	"skill_name" : "如煙往事",
        "damage_type" : "內傷"
]),
([	"action" : "$N隨意揮洒，使一式「我心依舊」，掌心微紅,徐徐拍向$n的$l",
	"force" : 490,
        "dodge" : 60,
        "parry" : 60,
	"damage": 100,
	"lvl" : 80,
	"skills_name" : "我心依舊",
        "damage_type" : "內傷"
]),
});

int valid_enable(string usage) { return usage=="hand" ||  usage=="parry"; }

int valid_combine(string combo) { return combo=="yunlong-zhua"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練云龍手必須空手。\n");
	if ((int)me->query_skill("yunlong-shengong", 1) < 50)
		return notify_fail("你的云龍神功火候不夠，無法學云龍手。\n");
	if ((int)me->query_skill("force", 1) < 50)
		return notify_fail("你的基本內功火候不夠，無法學云龍手。\n");
	if ((int)me->query("max_neili") < 250)
		return notify_fail("你的內力太弱，無法練云龍手。\n");
	if ((int)me->query_skill("claw",1) <30)
		return notify_fail("你的基本手法火候不夠，無法學云龍手。\n");
	if (2*(int)me->query_skill("yunlong-xinfa",1) <(int)me->query_skill("yunlong-shou",1))
		return notify_fail("你的云龍心法火
候不夠，無法繼續學云龍手。\n");
	return 1;
}

string query_skill_name(int level)
{
	int i;
	for(i = sizeof(action); i > 0; i--)
		if(level >= action[i-1]["lvl"])
			return action[i-1]["skill_name"];
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level   = (int) me->query_skill("yunlong-shou",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];

}


int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練云龍手。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"yunlong-shou/" + action;
}
yunlong-xinfa.c// yunlong-zhua.c -云龍爪

inherit SKILL;

mapping *action = ({
([	"action" : "$N全身拔地而起，半空中一個筋斗，一式「凶鷹襲兔」，迅猛地抓向$n的$l",
	"force" : 150,
        "dodge" : 15,
        "parry" : 10,
	"damage": 10,
	"lvl" : 0,
	"skills_name" : "凶鷹襲兔",
	"damage_type" : "抓傷"
]),
([	"action" : "$N單腿直立，雙臂平伸，一式「雄鷹展翅」，雙爪一前一后攏向$n的$l",
	"force" : 220,
        "dodge" : 20,
        "parry" : 15,
	"damage": 15,
	"lvl" : 10,
	"skills_name" : "雄鷹展翅",
        "damage_type" : "抓傷"
]),
([	"action" : "$N一式「拔翅鷹飛」，全身向斜里平飛，右腿一繃，雙爪搭向$n的肩頭",
	"force" : 250,
        "dodge" : 20,
        "parry" : 20,
	"damage": 20,
	"lvl" : 20,
	"skills_name" : "拔翅鷹飛",
        "damage_type" : "內傷"
]),
([	"action" : "$N雙爪交錯上舉，使一式「迎風振翼」，一拔身，分別襲向$n左右腋空門",
	"force" : 290,
        "dodge" : 25,
        "parry" : 20,
	"damage": 30,
	"lvl" : 30,
	"skills_name" : "迎風振翼",
        "damage_type" : "內傷"
]),
([	"action" : "$N全身滾動上前，一式「飛龍獻爪」，右爪突出，鬼魅般抓向$n的胸口",
	"force" : 350,
        "dodge" : 30,
        "parry" : 25,
	"damage": 40,
	"lvl" : 40,
	"skills_name" : "飛龍獻爪",
        "damage_type" : "內傷"
]),
([	"action" : "$N伏地滑行，一式「頂天立地」，上手襲向膻中大穴，下手反抓$n的襠部",
	"force" : 350,
        "dodge" : 35,
        "parry" : 25,
	"damage": 50,
	"lvl" : 50,
	"skills_name" : "頂天立地",
        "damage_type" : "內傷"
]),
([	"action" : "$N左右手掌爪互逆，一式「搏擊長空」，無數道勁氣破空而出，迅疾無比地擊向$n",
	"force" : 380,
        "dodge" : 55,
        "parry" : 55,
	"damage": 65,
	"lvl" : 60,
	"skills_name" : "搏擊長空",
        "damage_type" : "內傷"
]),
([	"action" : "$N騰空高飛三丈，一式「鷹揚萬里」，天空中頓時顯出一個巨靈爪影，緩緩罩向$n",
	"force" : 430,
        "dodge" : 40,
        "parry" : 40,
	"damage": 60,
	"lvl" : 60,
	"skills_name" : "鷹揚萬里",
        "damage_type" : "內傷"
]),
([	"action" : "$N忽的撥地而起，使一式「蒼龍出水」，身形化作一道閃電射向$n",
	"force" : 470,
        "dodge" : 50,
        "parry" : 50,
	"damage": 80,
	"lvl" : 70,
	"skills_name" : "蒼龍出水",
        "damage_type" : "內傷"
]),
([	"action" : "$N微微一笑，使一式「萬佛朝宗」，雙手幻出萬道金光,直射向$n的$l",
	"force" : 470,
        "dodge" : 60,
        "parry" : 60,
	"damage": 100,
	"lvl" : 80,
	"skills_name" : "萬佛朝宗",
        "damage_type" : "內傷"
])
});

int valid_enable(string usage) { return usage=="claw" || usage=="unarmed"; }

int valid_combine(string combo) { return combo=="yunlong-shou"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練云龍爪必須空手。\n");
	if ((int)me->query_skill("yunlong-shengong", 1) < 50)
		return notify_fail("你的云龍神功火候不夠，無法學云龍爪。\n");
	if ((int)me->query_skill("force", 1) < 50)
		return notify_fail("你的基本內功火候不夠，無法學云龍爪。\n");
	if ((int)me->query("max_neili") < 350)
		return notify_fail("你的內力太弱，無法練云龍爪。\n");
	if ((int)me->query_skill("claw",1) <40)
		return notify_fail("你的基本爪法火候不夠，無法學云龍爪。\n");
	if (2*(int)me->query_skill("yunlong-xinfa",1) <(int)me->query_skill("yunlong-zhua",1))
		return notify_fail("你的云龍爪法火
候不夠，無法繼續學云龍爪。\n");
	return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action)-1; i >= 0; i--)
                if(level >= action[i]["lvl"])
                        return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i, level;
	level   = (int) me->query_skill("yunlong-zhua",1);
        for(i = sizeof(action); i > 0; i--)
                if(level > action[i-1]["lvl"])
                        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練云龍爪。\n");
	me->receive_damage("qi", 30);
	me->add("neili", -10);
	return 1;
}

mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
        if(me->query_skill("yunlong-shengong",1) > 70 ) {
        if( random(me->query_skill("yunlong-zhua",1)) > 30 ) {
            victim->apply_condition("zhua_poison", random(me->query_skill("ningxue-shenzhua",1)/10) + 1 +
			victim->query_condition("zhua_poison"));
	}
	}
}

string perform_action_file(string action)
{
	return __DIR__"yunlong-zhua/" + action;
}
d")
			return notify_fail("你使用的武器不對。\n");

	if( (int)me->query_skill("yunu-sword", 1) < 40 )
		return notify_fail("你的玉女劍法不夠嫻熟，不會使用「無雙無對」。\n");
	
	if( (int)me->query_skill("zixia-shengong", 1) < 40 )
		return notify_fail("你的紫霞神功不夠嫻熟，不會使用「無雙無對」。\n");
	
	if( (int)me->query("neili") < 300  ) 
		return notify_fail("你的內力不夠。\n");

	if( (int)me->query_temp("hsj_wu") ) 
		return notify_fail("你已經在運功中了。\n");

	msg = YEL"$N雙手握起" + weapon->name() + "，劍芒暴長，一式「無雙無對」，馭劍猛烈絕倫地往$n沖刺！\n"NOR;
	message_combatd(msg, me, target);

	skill = (int)me->query_skill("yunu-sword",1);
	me->add_temp("apply/attack", skill/3);
	me->add_temp("apply/dodge", -skill/4);
	me->set_temp("hsj_wu", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, skill/3, skill/4 :), 2);
	me->add("neili", -100);

	return 1;
}

void remove_effect(object me, int a_amount, int d_amount)
{
	me->add_temp("apply/attack", - a_amount);
	me->add_temp("apply/dodge", d_amount);
	me->delete_temp("hsj_wu");
	me->start_busy(4);
}
// yunu-sword.c 玉女劍法
// modified by Venus Oct.1997

#include <ansi.h>

inherit SKILL;

mapping *action = ({
    ([ "name":    "穿針引線",
       "action":  "$N使一招「穿針引線」，腳踏中宮，手中$w直指$n$l",
       "dodge":   50,
       "damage":  170,
       "damage_type":  "刺傷"
    ]),
    ([ "name":    "天衣無縫",
       "action":  "$N劍隨身轉，一招「天衣無縫」，撒出一片劍影，罩向$n的$l",
       "dodge":   30,
       "damage":  80,
       "damage_type":  "刺傷"
    ]),
    ([ "name":    "夜繡鴛鴦",
       "action":  "$N舞動$w，使出一招「夜繡鴛鴦」劍光忽左忽右，閃爍不定，直刺$n的$l",
       "dodge":   40,
       "damage":  90,
       "damage_type":  "刺傷"
    ]),
    ([ "name":    "織女穿梭",
       "action":  "$N一聲嬌喝，祭出「織女穿梭」，手中$w化為一道弧光，射向$n的$l",
       "dodge":   40,
       "damage":  60,
       "damage_type":  "刺傷"
    ]),
    ([ "name":    "小鳥依人",
       "action":  "$N忽然蹂身直上，一招「小鳥依人」，手中$w自下往上刺向$n的$l",
       "dodge":   50,
       "damage":  90,
       "damage_type":  "刺傷"
    ]),
});

int valid_learn(object me)
{
    object ob;
   if( (string)me->query("gender") != "女性" )
       return notify_fail("玉女金針十三劍是只有女子才能練的武功。\n");
    if( (int)me->query("max_neili") < 50 )
       return notify_fail("你的內力不夠，沒有辦法練玉女金針十三劍。\n") ;
   if( (string)me->query_skill_mapped("force")!= "zixia-shengong")
       return notify_fail("玉女金針十三劍必須配合紫霞神功才能練。\n");
   if( !(ob = me->query_temp("weapon"))
       || (string)ob->query("skill_type") != "sword" )
       return notify_fail("你必須先找一把劍才能練劍法。\n");

    return 1;
}

int valid_enable(string usage)
{
    return usage=="sword" || usage=="parry";
}

mapping query_action(object me, object weapon)
{
    return action[random(sizeof(action))];
}

int practice_skill(object me)
{
    if( (int)me->query("qi") < 30
    ||  (int)me->query("neili") < 5 )
      return notify_fail("你的內力或氣不夠，沒有辦法練習玉女金針十三劍。\n");
    me->receive_damage("qi", 30);
    me->add("neili", -5);
    write("你按著所學練了一遍玉女金針十三劍。\n");
    return 1;
}

int valid_effect(object me, object weapon, string name, int skill)
{
}

string perform_action_file(string action)
{
        return __DIR__"yunu-sword/" + action;
}
kill_type") != "sword")
            return notify_fail("你使用的武器不對。\n");

        if( me->query_skill("bibo-shengong",1) < 120)
            return notify_fail("你的碧波神功等級不夠, 不能使用「天外清音」！\n");

        if( skill < 90)
            return notify_fail("你的玉簫劍法等級不夠, 不能使用「天外清音」！\n");

        if( me->query("neili") < 250 )
            return notify_fail("你的內力不夠，無法運用「天外清音」！\n");

        msg = HIC 
"$N一聲清嘯，劍發琴音，深吸一口氣，劍附內力，一式「天外清音」，"+weapon->name()
+"閃動不止，劍影如夜幕般扑向$n。\n";
        message_combatd(msg, me, target);

        ap = me->query_skill("sword") + skill;
        dp = target->query_skill("force") / 2;
        if( dp < 1 )
            dp = 1;
        if( random(ap) > dp )
        {
            if(userp(me))
                 me->add("neili",-150);
            msg = "$n頓時覺得眼前金光亂閃動，雙耳嗡嗡內鳴，不知那里一陣刺痛如針扎一般！\n" NOR;
            qi_wound = (int)me->query_skill("yuxiao-jian",1)+(int)me->query_skill("sword",1)/2;
            qi_wound = qi_wound/2 + random(qi_wound);
            if(qi_wound > target->query("qi"))
                 qi_wound = target->query("qi");

            target->receive_damage("qi", qi_wound);
            target->receive_wound("qi", qi_wound/2);
            target->start_busy(2);
            me->start_busy(random(3));
        }
        else
        {
            if(userp(me))
                 me->add("neili",-100);
            msg = "可是$n寧心靜氣，隨手揮洒，將$N的招數撇在一邊。\n"NOR;
            me->start_busy(random(3));
        }
        message_combatd(msg, me, target);
        if(!target->is_fighting(me)) target->fight_ob(me);
        return 1;
}
yuxiao-jian.c "刺傷"
]),
([      "action" : "$N一招「處子弄簫亦多情」，左手輕撫$w，隨即猛地一彈，右手向前一遞，
只見一道閃爍不定的劍影迅速刺向$n的$l",
        "force" : 290,
        "dodge" : 5,
        "damage" : 60,
        "lvl" : 60,
        "damage_type" : "刺傷"
]),
([      "action" : "$N回身低首，神色黯然，一招「聞聲哀怨斷人腸」，$w劍尖游移不定地刺向
$n的$l",
        "force" : 310,
        "dodge" : -5,
        "damage" : 70,
        "lvl" : 70,
        "damage_type" : "刺傷"
]),
([      "action" : "$N坐手掩面，一招「彼將離兮淚漣漣」，右手$w斜向下划出，$n微覺奇怪，正遲
疑間，卻見$N手中的$w已反挑而上，直刺自己的咽喉",
        "force" : 330,
        "dodge" : 5,
        "damage" : 80,
        "lvl" : 80,
        "damage_type" : "刺傷"
]),
([  "action" : "$N忽然面露微笑，一招「隨音而舞笑開顏」，右手$w一閃，舞出三團劍花刺向$n
的上中下三路",
        "force" : 360,
        "dodge" : -5,
        "damage" : 100,
        "lvl" : 90,
        "damage_type" : "刺傷"
]),
([      "action" : "$N左手食指疾點$w，一招「簫音有情人無情」，$w發出一聲龍吟，余音繚繞，$n
只覺得的胸前一悶，一陣剛猛的勁氣迫向自己",
        "force" : 390,
        "dodge" : -5,
        "damage" : 120,
        "lvl" : 100,
        "damage_type" : "刺傷"
]),
([      "action" : "$N右手微震，一招「簫聲響畢情兩斷」，手中$w急顫，發出一陣震耳欲聾的轟鳴，
剎那間飛沙走石，$n已在一團劍光的籠罩下，正勉力支撐著",
        "force" : 420,
        "dodge" : 15,
        "damage" : 150,
        "lvl" : 110,
        "damage_type" : "刺傷"
]),
});


int valid_enable(string usage) { return (usage == "sword") || (usage == "parry")
; }

int valid_learn(object me)
{
    if (((int)me->query("max_neili") < 500) ||
        ((int)me->query_skill("bibo-shengong", 1) < 100) ||
        !(me->query("couple/have_couple")))
       return notify_fail("黃藥師說道: 玉簫劍法，只付有緣。你不是性情中人。\n");
    return 1;
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("yuxiao-jian",1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
        return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "sword")
       return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
       return notify_fail("你的體力不夠練玉簫劍法。\n");
    me->receive_damage("qi", 30);
    return 1;
}

string perform_action_file(string action)
{
    return __DIR__"yuxiao-jian/" + action;
}
zhaixinggong.czhemei-shou/
 
	msg = CYN "$N凝神閉息，打算施展空手入白刃的絕技. \n";
	message_combatd(msg, me);
 
	dp = target->query("combat_exp") / 2000;
	if( dp < 1 )
		dp = 1;
	if( random(skill) > dp )
	{
		if(userp(me))
			me->add("neili",-50);
		msg = "$N使出空手入白刃的絕招, $n頓時覺得眼前一花，手腕一麻，手中兵刃脫手而出！\n" NOR;
		target->start_busy(2);
		weapon2->move(me);
		if (weapon2->query("ownmake")==1)
		{
			weapon2->move(target);
			msg += "那可是$n的隨身家伙！$n手一伸將它撿回來。\n" NOR;
		}
		me->start_busy(2);
	}
	else
	{
		msg = "可是$n的看破了$N的企圖，立刻采取守勢，使$N沒能奪下兵刃。\n"NOR;
		me->start_busy(4);
	}
	message_combatd(msg, me, target);
	if(!target->is_fighting(me)) target->fight_ob(me);
	return 1;
}

	"damage" : 30,
	"lvl" : 30,
	"skill_name" : "寒山一帶傷心碧",
	"damage_type" : "瘀傷"
]),
([	"action" : "$N一招「梅花雪落覆白蘋」，雙手合擊，$n只覺無處可避",
	"force" : 150,
	"dodge" : 30,
	"damage" : 45,
	"lvl" : 40,
	"skill_name" : "梅花雪落覆白蘋",
	"damage_type" : "瘀傷"
]),
([	"action" : "$N一招「砌下落梅如雪亂」，雙手飄然抓向$n",
	"force" : 250,
	"dodge" : 30,
	"damage" : 50,
	"lvl" : 50,
	"skill_name" : "砌下落梅如雪亂",
	"damage_type" : "瘀傷"
]),

([	"action" : "$N雙手平舉，一招「云破月來花弄影」擊向$n",
	"force" : 300,
	"dodge" : 35,
	"damage" : 80,
	"lvl" : 60,
	"skill_name" : "云破月來花弄影",
            "damage_type" : "瘀傷"
]),
([	"action" : "$N一招「花開堪折直須折」，拿向$n，似乎$n的全身都被籠罩",
	"force" : 350,
	"dodge" : 30,
	"damage" : 100,
	"lvl" : 70,
	"skill_name" : "花開堪折直須折",
	"damage_type" : "內傷"
]),

([	"action" : "$N左手虛晃，右手一記「紅顏未老恩先絕」擊向$n的頭部",
	"force" : 350,
	"dodge" : 30,
	"damage" : 150,
	"lvl" : 80,
	"skill_name" : "紅顏未老恩先絕",
           "damage_type" : "瘀傷"
]),
([	"action" : "$N施出「虛妄笑紅」，右手橫掃$n的$l，左手攻向$n的胸口",
	"force" : 400,
	"dodge" : -10,
	"damage" : 150,
	"lvl" : 90,
	"skill_name" : "虛妄笑紅",
            "damage_type" : "瘀傷"
]),
([	"action" : "$N施出「玉石俱焚」，不顧一切扑向$n",
	"force" : 450,
	"dodge" : -20,
	"damage" : 150,
	"lvl" : 100,
	"skill_name" : "玉石俱焚",
            "damage_type" : "瘀傷"
])
});

int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"|| usage=="hand"; }

int valid_combine(string combo) { return combo=="liuyang-zhang"; }

int valid_learn(object me)
{
	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
		return notify_fail("練天山折梅手必須空手。\n");
	if ((int)me->query("max_neili") < 50)
		return notify_fail("你的內力太弱，無法練天山折梅手。\n");
	return 1;
}

mapping query_action(object me, object weapon)
{
	int i, level;
	level = (int) me->query_skill("zhemei-shou",1);
	for(i = sizeof(action); i > 0; i--)
		if(level > action[i-1]["lvl"])
			return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
	if ((int)me->query("qi") < 30)
		return notify_fail("你的體力太低了。\n");
	if ((int)me->query("neili") < 20)
		return notify_fail("你的內力不夠練天山折梅手。\n");
	me->receive_damage("qi", 25);
	me->add("neili", -10);
	return 1;
}

string perform_action_file(string action)
{
	return __DIR__"zhemei-shou/" + action;
}
)
{
	if ((int)me->query("max_neili") < 70)
		return notify_fail("你的內力不夠。\n");
	return 1;
}

int practice_skill(object me)
{
	object weapon;

	if (!objectp(weapon = me->query_temp("weapon"))
	|| (string)weapon->query("skill_type") != "club")
		return notify_fail("你使用的武器不對。\n");
	if ((int)me->query("qi") < 50)
		return notify_fail("你的體力不夠練中平槍法。\n");
	me->receive_damage("qi", 20);
	return 1;
}


zhutian-bu.c// zhutian-bu.c 諸天化身步

inherit SKILL;

mapping *action = ({
([      "action" : "$n一式「天地鉤」，拔地而起，忽的一個空翻，飄然落在几丈遠的地方。\n",
        "dodge"  : 10
]),
([      "action" : "$n一式「鳳點頭」，兩臂鵬舉如翼，如一陣清風，從$N頭頂橫躍而過。\n",
        "dodge"  : 20
]),
([      "action" : "$n一式「鷹爪松」，身體如一只蒼鷹般騰空而起，舒緩地閃過了$N的凌厲攻勢。\n",
        "dodge"  : 30
]),
([      "action" : "$n一式「風擺柳」，身體曼妙的輕輕擺動，橫著飄出近一丈遠\n",
        "dodge"  : 50
]),
([      "action" : "$n一式「陰陽箭」，雙腳點地，全身化為一道白影，倏的拔地而起，令$N不敢仰視。\n",
        "dodge"  : 80
]),
([      "action" : "$n一式「日月扣」，身形陡地變得飄忽不定，流水般地滑出丈余。\n",
        "dodge"  : 110
]),
});

mapping query_action(object me, object weapon)
{
        int zhaoshu, level;

        zhaoshu = sizeof(action);
        level   = (int) me->query_skill("zhutian-bu");

        if (level < 80 )
                zhaoshu--;

        if (level < 60 )
                zhaoshu--;

        if (level < 40 )
                zhaoshu--;

        return action[random(zhaoshu)];
}

int valid_enable(string usage)
{
        return usage == "dodge" || usage == "move";
}

int valid_learn(object me)
{
        return 1;
}

string query_dodge_msg(string limb)
{
        object me, ob;
        mapping action;

        me = this_player();
        action = query_action(me, ob);

        return action["action"];
}

int practice_skill(object me)
{
        if( !me->query_skill("linji-zhuang",1))
                return notify_fail("練「諸天化身步」必須要以「臨濟十二庄」為基礎。\n");


        if( (int)me->query("qi") < 40 )
                return notify_fail("你的體力太差了，不能練「諸天化身步」。\n");
        me->receive_damage("qi", 30);
        return 1;
}

zixia-shengong/zixia-shengong/powerup.czixia-shengong/lifeheal.vnszixia-shengong.c別派內功，怎能學紫霞神功？！\n");

	return 1;
}

int practice_skill(object me)
{
	return notify_fail("紫霞神功只能用學(learn)的來增加熟練度。\n");
}

string exert_function_file(string func)
{
        return __DIR__"zixia-shengong/" + func;
}
turn notify_fail("你已經在運功中了。\n");

	if( (int)me->query_temp("powerup"))
		return notify_fail(HIG"你已經運起內功加力了，沒有更多的內力使用八仙醉打。\n"NOR);

	if( (int)me->query_str() < 25 )
		return notify_fail("你的臂力不夠，目前不能使用此絕技! \n");

	if( (int)me->query_skill("hunyuan-yiqi", 1) < 60)
		return notify_fail("你的混元一氣功的功力不夠，不能使用此項絕技！\n");

	if( (int)me->query_skill("club") < 90)
		return notify_fail("你的棍法修為不夠，不能使用此項絕技! \n");

	if( (int)me->query("neili") < 500 )
		return notify_fail("你的真氣不足！\n");

	
	msg = HIY "$N使出少林醉棍的絕技「八仙醉打」，臂力陡然增加, 身法陡然加快！\n" NOR;
	
   	message_combatd(msg, me, target);
	skill = me->query_skill("zui-gun",1);
	cnt =(int)( (int)me->query_condition("drunk") / 3 );
	count = me->query("str") * random(cnt + 2);
	count1 = me->query("dex") * random(cnt + 2);

	me->add_temp("str", count);
	me->add_temp("dex", count1);
	me->set_temp("zuida", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, count, count1 :), skill /3 );

	me->add("neili", -150);
   	return 1;
}

void remove_effect(object me, int amount, int amount1)
{
	
	if ( (int)me->query_temp("zuida") ) 
	{
		me->add_temp("str", -amount);
		me->add_temp("dex", -amount1);
		me->delete_temp("zuida");
		tell_object(me, HIY "你的八仙醉打運功完畢，將內力收回丹田。\n" NOR);
		me->start_busy(4);
	}
}
// zuida.c 少林醉棍 [八仙醉打]

#include <ansi.h>

inherit F_SSERVER;

void remove_effect(object me, int amount, int amount1);

int perform(object me, object target)
{
	object weapon;	
  	string msg;
	int count, count1, cnt, skill;
	
    if( !me->is_fighting() )
	    return notify_fail("「八仙醉打」只能在戰斗中使用。\n");

	if (!objectp(weapon = me->query_temp("weapon"))
		|| (string)weapon->query("skill_type") != "club")
			return notify_fail("你使用的武器不對。\n");

	if( (int)me->query_temp("zuida") ) 
		return notify_fail("你已經在運功中了。\n");

	if( (int)me->query_str() < 25 )
		return notify_fail("你的臂力不夠，目前不能使用此絕技! \n");

	if( (int)me->query_skill("hunyuan-yiqi", 1) < 60)
		return notify_fail("你的混元一氣功的功力不夠，不能使用此項絕技！\n");

	if( (int)me->query_skill("club") < 90)
		return notify_fail("你的棍法修為不夠，不能使用此項絕技! \n");

    if( (int)me->query("neili") < 500 )
		return notify_fail("你的真氣不足！\n");

	
    msg = HIY "$N使出少林醉棍的絕技「八仙醉打」，臂力陡然增加, 身法陡然加快！\n" NOR;
	
   	message_combatd(msg, me, target);
	count = me->query("str");
	count1 = me->query("dex");
	skill = me->query_skill("zui-gun",1);
	cnt =(int)( (int)me->query_condition("drunk") / 3 );

	me->set("str", (count * (cnt + 2)));	
	me->set("dex", (count1 * (cnt + 2)));
	me->set_temp("zuida", 1);

	me->start_call_out( (: call_other, __FILE__, "remove_effect", me, count, count1 :), skill /3 );

	me->add("neili", -150);
   	return 1;
}

void remove_effect(object me, int amount, int amount1)
{
	
	if ( (int)me->query_temp("zuida") ) 
	{
		me->set("str", amount);
		me->set("dex", amount1);
		me->delete_temp("zuida");
		tell_object(me, HIY "你的八仙醉打運功完畢，將內力收回丹田。\n" NOR);
	}
}
zui-gun/zuida.c.kingject me, int amount, int amount1)
{
	
	if ( (int)me->query_temp("zuida") ) 
	{
		me->add_temp("str", -amount);
		me->add_temp("dex", -amount1);
		me->delete_temp("zuida");
		tell_object(me, HIY "你的八仙醉打運功完畢，將內力收回丹田。\n" NOR);
		me->start_busy(4);
	}
}
鐵棍提胸醉拔蕭",
    "damage_type":"挫傷"
]),
([      "action":"「漢鐘離，跌步翻身醉盤龍」，$N手中棍花團團，疾風般向卷向$n",  
    "force" : 320,
    "dodge" : 10,
    "parry" : 15,
    "damage": 30,
    "lvl" : 50,
    "skill_name" : "漢鐘離，跌步翻身醉盤龍",
    "damage_type":"挫傷"
]),
([      "action":"「鐵拐李，踢倒金山醉玉池」，$N單腿支地，一腿一棍齊齊擊向$n的$l
",
    "force" : 380,
    "dodge" : 5,
    "parry" : 15,
    "damage": 35,
    "lvl" : 55,
    "skill_name" : "鐵拐李，踢倒金山醉玉池",
    "damage_type":"挫傷"
]),
([      "action":"「張果老，醉酒拋杯倒騎驢」，$N扭身反背，$w從胯底鑽出，戳向$n的
胸口",
    "force" : 450,
    "dodge" : 5,
    "parry" : 20,
    "damage": 40,
    "lvl" : 60,
    "skill_name" : "張果老，醉酒拋杯倒騎驢",
    "damage_type":"挫傷"
]),
([      "action":"「呂洞賓，酒醉提壺力千鈞」，$N騰空而起，如山棍影，疾疾壓向$n",
    "force" : 530,
    "dodge" : 10,
    "parry" : 25,
    "damage": 50,
    "lvl" : 64,
    "skill_name" : "呂洞賓，酒醉提壺力千鈞",
    "damage_type":"挫傷"
]),
});

int valid_enable(string usage) { return (usage == "club") || (usage == "parry");
 }

int valid_learn(object me)
{
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的內力不夠。\n");
    if ((int)me->query_skill("hunyuan-yiqi", 1) < 20)
   return notify_fail("你的混元一氣功火候太淺。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level   = (int) me->query_skill("zui-gun",1);
    for(i = sizeof(action); i > 0; i--)
   if(level > action[i-1]["lvl"])
      return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    object weapon;

    if (!objectp(weapon = me->query_temp("weapon"))
    || (string)weapon->query("skill_type") != "staff")
   return notify_fail("你使用的武器不對。\n");
    if ((int)me->query("qi") < 50)
   return notify_fail("你的體力不夠練少林醉棍。\n");
    me->receive_damage("qi", 25);
    return 1;
}

string perform_action_file(string action)
{
        return __DIR__"zui-gun/" + action;
}

從藝乒    n的左肩，$n急忙招架，$N的右掌卻已變
拳猛地搗向$n的胸口",
    "force" : 400,
    "dodge" : 30,
    "damage_type" : "內傷",
    "lvl" : 40,
    "skill_name" : "聲東擊西"
]),
([      "action" : "$N左掌下，右掌上地前后一揉，隨即一翻，左掌從右掌上滑出，推出
一股陽剛之勁襲向$n的胸口",
    "force" : 425,
    "dodge" : 15,
    "damage_type" : "內傷",
    "lvl" : 50,
    "skill_name" : "明日暗落"
]),
([      "action" : "$N雙手在胸前一格，然后左手變拳擊向$n的頭部，$n勉力剛格開，卻
發現$N的右掌已拍向自己的左肋下，不由大驚",
    "force" : 450,
    "parry" : 20,
    "dodge" : 50,
    "damage_type" : "內傷",
    "lvl" : 60,
    "skill_name" : "指南打北"
]),
([      "action" : "$N右手猛地抓住自己的左臂，但左手一轉，便已變掌，并帶著右手的
力量向前急沖而出劈向$n的$l",
    "force" : 500,
    "parry" : 30,
    "dodge" : 40,
    "damage_type" : "劈傷",
    "lvl" : 70,
    "skill_name" : "借力打力"
]),
([      "action" : "$N突然左臂前右臂后，呈十字形架在胸前，然后右臂驟然從左臂下滑
出，握拳向上斜勾而出，猛擊$n的下頜骨！",
    "force" : 550,
    "parry" : 40,
    "dodge" : 5,
    "damage_type" : "內傷",
    "lvl" : 80,
    "skill_name" : "十字下勾"
]),
([      "action" : "$N忽然原地滴溜溜地一轉，$n眼前就失去了$N的蹤影。$n正左顧右盼
間，卻見$N突然出現在眼前，笑嘻嘻地揮拳直打$n的小腹！！",
    "force" : 600,
    "parry" : 90,
    "dodge" : 80,
    "damage_type" : "內傷",
    "lvl" : 90,
    "skill_name" : "遁形出擊"
])
});

int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"; }  

int valid_learn(object me)
{
    if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
   return notify_fail("練左右搏擊之朮必須空手。\n");
    if ((int)me->query_skill("force", 1) < 30)
   return notify_fail("你的內功心法火候不夠，無法練左右搏擊之朮。\n");
    if ((int)me->query("max_neili") < 200)
   return notify_fail("你的內力太弱，無法練左右搏擊之朮。\n");
    if((int)me->query_skill("zuoyou-boji",1)<10)
   return notify_fail("左右搏擊之朮無法通過(learn)來獲得進步。\n");
    return 1;
}

string query_skill_name(int level)
{
    int i;
    for(i = sizeof(action)-1; i >= 0; i--)
   if(level >= action[i]["lvl"])
      return action[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
    int i, level;
    level = (int)me->query_skill("zuoyou-boji", 1);
    for(i = sizeof(action); i > 0; i--)
    if(level > action[i-1]["lvl"])
    return action[NewRandom(i, 20, level/5)];
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 40)
   return notify_fail("你的體力太低了。\n");
    if ((int)me->query("neili") < 30)
   return notify_fail("你的內力不夠練左右搏擊之朮。\n");
    if ((int)me->query_skill("zuoyou-boji",1) < 20)
   return notify_fail("以你目前的功力尚不夠自己練習。\n");
    me->receive_damage("qi", 30);
    switch( random(3) ) {
    case 0:
    me->add("combat_exp", -5);
    write( HIR "你只覺得心緒一陣煩亂，頭一陣發暈，你的經驗降低了！\n" NOR);
    break;
    case 1:
    me->add("potential", random((int)me->query_con() + (int)me->query_skill("zuoyou-boji",1) )/20);
    me->add("combat_exp", random((int)me->query_con() + (int)me->query_skill("zuoyou-boji",1) )/10);
    write(HIG"你將左手和右手打來打去，練習左右搏擊之朮，增長不少實戰經驗，也
有所感悟，潛能獲得了提高。\n");
    break;
    case 2:
    me->add("potential", -3);
    write( RED "你心有雜念，未能潛心練習，你潛能下降了！\n" NOR );
    break;
}
}
