铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 2151|回复: 4

[问题求助] 請發下太玄功taixuan-gong代碼。。

[复制链接]
发表于 2009-9-25 17:15 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
面壁時老是若有所悟但不能理解。。。。

[ 本帖最后由 adv123 于 2009-9-30 04:02 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-26 10:05 | 显示全部楼层
// kuihua-xinfa.c 葵花心法

inherit FORCE;

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

int valid_learn(object me)
{
        int i = (int)me->query_skill("kuihua-xinfa", 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 (i > 100 && (int)me->query("shen") > t )
//                return notify_fail("学葵花心法,要心狠手辣,奸恶歹毒,你可做得不够呀!\n");
       
                if(i<=200)
        {
                if (i > 10 && -(int)me->query("shen") < t * 2)
                        return notify_fail("学葵花心法,要心狠手辣,奸恶歹毒,你可做得不够呀!\n");
        }
        else
        {
                if (-(int)me->query("shen") < (51200 + (i - 100) * 1000))
                        return notify_fail("学葵花心法,要心狠手辣,奸恶歹毒,你可做得不够呀!\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("huagong-dafa",1)
        || me->query_skill("huntian-qigong",1)
        || me->query_skill("hunyuan-yiqi",1)
        || me->query_skill("jiuyang-shengong",1)
        ||  me->query_skill("kurong-changong",1)
        || me->query_skill("linji-zhuang",1)
        || me->query_skill("longxiang",1)
        || me->query_skill("shenlong-xinfa",1)
        || me->query_skill("taiji-shengong",1)
        || me->query_skill("xiantian-qigong",1)
        || me->query_skill("xiaowuxiang",1)
        || me->query_skill("yijinjing",1)
        || me->query_skill("yunv-xinfa",1)
        || me->query_skill("yunlong-shengong",1)   ||
me->query_skill("shayi-xinfa",1)||
me->query_skill("biyun-xinfa",1)||
me->query_skill("bingxue-xinfa",1)||
me->query_skill("wudu-shengong",1)||
me->query_skill("shenghuo-shengong",1)    ||
me->query_skill("shenyuan-gong",1)   ||
me->query_skill("huashan-neigong",1)   ||
me->query_skill("zixia-shengong",1) ||
me->query_skill("xuantian-wuji",1)  ||
me->query_skill("guiyuan-tunafa",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__"kuihua-xinfa/" + func;
}

[发帖际遇]: hxsd在牢房助狄云逃脱,获赠《神照经》,翻译成英语版《god bless you》贩卖后获利银两26。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-27 08:54 | 显示全部楼层
// xianglong-zhang.c 降龙十八掌
// modified by Venus Oct.1997
#include <ansi.h>

inherit SKILL;  
int sanhui(object me, object victim, object weapon, int damage);
string *order = ({""HIY"", ""HIG"", ""RED"", ""MAG"", ""YEL"", ""HIC"", ""HIW"", ""HIR"",""HIB"", ""CYN"",""WHT"",""HIM"",""BLU""});
string *parry_msg = ({
"$p不待回身,半招「神龙摆尾」,做势反劈。$P见这招势凶狠,不敢硬接,纵身避开。\n",
"只见$p左掌圆劲,右掌直推,挡在身前。一招纯是防御,却是在双方之间布了一道坚壁。\n",
"$p当下不敢怠慢,双掌当胸平推,将自己全身笼罩在掌力之下。守得稳若渊停岳峙,直无半点破绽。\n",
});

string query_parry_msg(object weapon, object victim)
{
        object me = victim->select_opponent();

if (me && victim
&& victim!=me)
{
        if ( victim->query_temp("weapon") || victim->query_skill("xianglong-zhang", 1) < 100
        || victim->query_skill_prepared("strike") != "xianglong-zhang" )
                return SKILL_D("parry")->query_parry_msg(weapon);
        else {
        string *slbw = ({
                "$n更不回身,右手一招「神龙摆尾」向后挥去,这是降龙十八掌中的救命绝招,$p在情急之下使将出来,更是威力倍增!!\n",
                "$n避让不及,不待回身,一招「神龙摆尾」,反手向$P还劈一掌!\n",
                "就在这一瞬之间,$p急忙转身,同时一招「神龙摆尾」向$P反手横劈!\n",
        });
                message_vision(YEL"\n"+slbw[random(sizeof(slbw))]+""NOR,me,victim);
                return COMBAT_D->do_attack(victim, me, me->query_temp("weapon")) + "";
                }
}
}


mapping *action = ({
([      "action": "$N突然身形加快,双掌平平推向$n的$l",
    "dodge": -30,
    "parry": 10,
    "force": 400,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N突然身形飞起,双掌居高临下一招"+(order[random(13)])+"「飞龙在天」"NOR"拍向$n的$l",     
    "dodge": -15,
    "parry": -20,
    "force": 180,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N右掌一招"+(order[random(13)])+"「见龙在田」"NOR",迅捷无比地劈向$n的$l",
    "dodge": -10,
    "parry": -10,
    "force": 120,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N双掌施出一招"+(order[random(13)])+"「鸿渐于陆」"NOR",隐隐带着风声拍向$n的$l",
    "dodge": -15,
    "parry": -10,
    "force": 160,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N左掌聚成拳状,右掌一招"+(order[random(13)])+"「潜龙勿用」"NOR"缓缓推向$n的$l",
    "dodge": -10,
    "parry": 10,
    "force": 200,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N施出一招"+(order[random(13)])+"「利涉大川」"NOR",右掌插腰,左掌劈向$n的$l",
    "dodge": -10,
    "parry": 20,
    "force": 250,
    "damage_type": "瘀伤"
]),
([      "action": "$N使出"+(order[random(13)])+"「突如其来」"NOR",右掌从不可能的角度向$n的$l推出",
    "dodge": 0,
    "parry": 10,
    "force": 100,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N大吼一声,双掌使出"+(order[random(13)])+"「震惊百里」"NOR",不顾一切般击向$n",
    "dodge": -25,
    "parry": -10,
    "force": 300,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N使出"+(order[random(13)])+"「或跃在渊」"NOR",向$n的$l连拍数掌",
    "dodge": -20,
    "parry": -20,
    "force": 230,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N身形滑动,双掌使一招"+(order[random(13)])+"「双龙取水」"NOR"一前一后按向$n的$l",
    "dodge": -10,
    "parry": 20,
    "force": 160,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N使出"+(order[random(13)])+"「鱼跃于渊」"NOR",身形飞起,双掌并在一起向$n的$l劈下",     
    "dodge": -20,
    "parry": 30,
    "force": 250,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N双掌立起,使出"+(order[random(13)])+"「时乘六龙」"NOR"向$n连砍六下",
    "dodge": -20,
    "parry": 20,
    "force": 270,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N使出"+(order[random(13)])+"「密云不雨」"NOR",左掌封住$n的退路,右掌斜斜地劈向$l",     
    "dodge": -15,
    "parry": 20,
    "force": 220,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N使出"+(order[random(13)])+"「损则有孚」"NOR",双掌软绵绵地拍向$n的$l",
    "dodge": -25,
    "parry": 10,
    "force": 350,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N脚下一转,突然欺到$n身前,一招"+(order[random(13)])+"「龙战于野」"NOR"拍向$n的$l",     
    "dodge": -20,
    "parry": 40,
    "force": 330,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N门户大开,一招"+(order[random(13)])+"「履霜冰至」"NOR"向$n的$l劈去",
    "dodge": -25,
    "parry": 1,
    "force": 320,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N使出"+(order[random(13)])+"「羝羊触蕃」"NOR",双掌由下往上击向$n的$l",
    "dodge": -15,
    "parry": 40,
    "force": 200,
        "damage": 100,
    "damage_type": "瘀伤"
]),
([      "action": "$N左掌护胸,右掌使一招"+(order[random(13)])+"「神龙摆尾」"NOR"上下晃动着击向$n的$l",     
    "dodge": -10,
    "parry": 40,
    "force": 220,
        "damage": 150,
    "damage_type": "瘀伤"
]),
});

int valid_enable(string usage) { return usage=="unarmed" || 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("huntian-qigong", 1) < 20)
   return notify_fail("你的混天气功火候不够,无法练降龙十八掌。\n");
if ((int)me->query_skill("huntian-qigong",1) < 120)
                return notify_fail("你的混天气功修为不够。\n");
       if (((int)me->query_skill("liuhe-zhang", 1)+100) < (int)me->query_skill("dagou-bang", 1))
               return notify_fail("你的六合掌法太低了。\n");
       if (((int)me->query_skill("fengmo-zhang", 1)+200) < (int)me->query_skill("dagou-bang", 1))
               return notify_fail("你的疯魔杖法太低了。\n");
       if (((int)me->query_skill("xiaoyaoyou", 1)+300) < (int)me->query_skill("dagou-bang", 1))
               return notify_fail("你的逍遥游太低了。\n");
    if ((int)me->query("max_neili") < 100)
   return notify_fail("你的内力太弱,无法练降龙十八掌。\n");
    return 1;
}

int practice_skill(object me)
{
    if ((int)me->query("qi") < 70)
   return notify_fail("你的体力太低了。\n");
if ((int)me->query_skill("huntian-qigong",1) < 120)
                return notify_fail("你的混天气功修为不够。\n");
       if (((int)me->query_skill("liuhe-zhang", 1)+100) < (int)me->query_skill("dagou-bang", 1))
               return notify_fail("你的六合掌法太低了。\n");
       if (((int)me->query_skill("fengmo-zhang", 1)+200) < (int)me->query_skill("dagou-bang", 1))
               return notify_fail("你的疯魔杖法太低了。\n");
       if (((int)me->query_skill("xiaoyaoyou", 1)+300) < (int)me->query_skill("dagou-bang", 1))
               return notify_fail("你的逍遥游太低了。\n");
    if ((int)me->query("neili") < 20)
   return notify_fail("你的内力不够练降龙十八掌。\n");
    me->receive_damage("qi", 50);
    me->add("neili", -15);
    return 1;
}
mapping query_action(object me, object weapon)
{
        int x = 1 + random(8);
        int y = 3 + random(10);
        string *sanhui_msg =
        ({
                HIW"$N大步迈出,左手一划,右掌呼的一声,便向$n击去,正是一招「亢龙有悔」,力自掌生,猛不可当"NOR,
                HIM"$N一掌既出,身子抢前,又是一招「亢龙有悔」,後掌推前掌,双掌力道并在一起,排山倒海的压将过来"NOR,
                HIG"$N跟着又是一招「亢龙有悔」,前招掌力相消,次招掌力又至。竟如怒涛狂涌,势不可挡,又如一堵无形的高墙,向$n身前疾冲"NOR,
        });

        if ( me->query_skill_mapped("force") == "huntian-qigong" )
        {
//             if ( me->query_skill("xianglong-zhang") > 280 && random(me->query_skill("force")) > 200 && me->query("neili") > 1000  )
             if ( random(me->query_skill("xianglong-zhang")) > 280 && random(me->query_skill("force")) > 200 && me->query("neili") > 1000  )
                {
                        return ([
                        "action": sanhui_msg[random(3)],
                        "dodge": 20,
                        "parry": 25,
                        "force": 650,
                        "damage": 420+random(600),
                        "damage_type": random(2)?"内伤":"瘀伤" ]);
                }
                else if ( random(me->query_skill("xianglong-zhang")) > 230 && random(me->query_skill("force")) > 200 && me->query("neili") > 1000  )
                {
                        me->add("neili", -50);
                        return ([
                        "action": HIY"$N一招「亢龙有悔」,平推出去。初推出去看似轻描淡写,但一遇阻力,刹时之间连加"+ chinese_number(y) +"道後劲,一道强似一道,重重叠叠,直至无坚不摧,无强不破"NOR,
                        "dodge": 20+random(20),
                        "parry": 25+random(20),
                        "force": 650+random(350),
                        "damage": 420+random(400),
                        "damage_type": random(2)?"内伤":"瘀伤" ]);
                }
                else if ( random(me->query_skill("xianglong-zhang")) > 200 && random(me->query_skill("force")) > 150 && me->query("neili") > 500)
                {
                        me->add("neili", -30);
                        return ([
                        "action": YEL"$N踏上两步,呼的一声,一招「亢龙有悔」当胸击去。这一掌"+ chinese_number(x) +"分发,"+ chinese_number(10-x) +"分收,劲道去而复回,实是非同小可"NOR,
                        "dodge": 20+random(100),
                        "parry": 25+random(100),
                        "force": 600+random(350),
                        "damage": 420+random(300),
                        "damage_type": random(2)?"内伤":"瘀伤" ]);
                }
    else    if (random(me->query_skill("xianglong-zhang",1)) > 250 &&                 me->query_skill("huntian-qigong",1) > 200 &&
        me->query("neili") > 200)
{
        me->add("neili", -50);
        return ([
        "action": HIY"$N左腿微屈,右臂内弯,右掌划了个圆圈,呼的一声向外急推,凌厉无比,正是威力最强的"+(order[random(13)])+"「亢龙有悔」"NOR""NOR,
        "dodge": 80,
        "parry": 330,
        "damage": 500,
        "force": 600,
        "damage_type": "瘀伤"]);
}
else        if (random(me->query_skill("xianglong-zhang",1)) > 200 &&                me->query_skill("huntian-qigong",1) > 100 &&
        me->query("neili") > 200)
{
        me->add("neili", -30);
        return ([
        "action": HIC"$N眼见$n招数凶猛。避让不及,急忙转身,同时反手猛劈,正是降龙掌的救命绝招"+(order[random(13)])+"「神龙摆尾」"NOR""NOR,
        "parry": 60,
        "damage": 600,
        "force": 600,
        "damage_type": "瘀伤"]);
}
        }

        return action[random(sizeof(action))];
}

int ob_hit(object ob, object me, int damage)
{
   int i, neili;
if (me->query_skill_mapped("force") != "huntian-qigong")
return damage;
if (ob && me &&
me!=ob)
{
   if(living(me) &&
      random(me->query("combat_exp")) > ob->query("combat_exp")/3 &&
      me->query_skill("xianglong-zhang", 1) >= 180
      &&      me->query("neili") > 600 &&
      me->query("qi") < me->query("max_qi")
      )
      {
        i = me->query("jiali");
        neili = me->query("neili");
        me->set("jiali", me->query_skill("force")*2);
        me->add_temp("apply/attack", 80);
        message_vision(HIC "但见$N硬接了$n这一招,右掌紧接着向后一摆,一招「神龙摆尾」出其不意地按在了$n的$l上!\n" NOR, me, ob );
        COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 1);
        COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), 1);
        if(me->query("neili") < neili) me->set("neili", neili-50);
        me->set("jiali", i);
        me->add_temp("apply/attack", -80);
      }
      return 1;
}
}

mixed hit_ob(object me, object victim, int damage_bonus)
{
        int lvl;

        lvl = me->query_skill("xianglong-zhang", 1);

        if (damage_bonus < 150 || lvl < 150) return 0;
if (me->query_skill_mapped("force") != "huntian-qigong")
return 0;
        if (random(5)==0)
        {
                victim->receive_wound("qi", (damage_bonus - 80) / 2, me);

                return random(2) ? HIR "只听$n" HIR "前胸「咔嚓」一声脆响,竟像是"
                                   "肋骨断折的声音。\n" NOR:

                                   HIR "$n" HIR "一声惨叫,胸前「咔嚓咔嚓」几声脆"
                                   "响,口中鲜血狂喷。\n" NOR;
        }
}
string perform_action_file(string action)
{
    return __DIR__"xianglong-zhang/" + action;
}

[发帖际遇]: yren完成赞美飞天神龙洪安通巨侠的对联一副,得到赏赐银两14。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-27 18:36 | 显示全部楼层
// zhou.c 周伯通

#include <ansi.h>
#include <skill.h>
inherit NPC;
string *questions = ({
        "西毒欧阳峰的绝技是什么?",
        "洪老叫花那个最具威力的掌法是什么?",
        "黄老邪打赌赢我用的功夫是什么?",
        "老哥哥我左手右手打着玩的功夫是什么?",
        "我师兄的无上内功心法是什么?",
        "我教最神奇的剑阵是什么?",
        "铁掌裘千仞的轻功是什么?",
        "西毒蛤蟆功的克星是什么?",
        "黄老邪是用什么奇学把我关在这里的?",
        "洪老叫花的打狗棒法中最具威力的一式是什么?",
        "杨过小兄弟自创的功夫是什么?",
        "天龙寺的镇寺武学是什么?",
        "逍遥派的那个能吸敌人内力的功夫是什么?",
        "段誉最拿手的轻功是什么?",
        "风老头教令狐冲的剑法是什么?",
        "明教的镇教武学是什么?",
        "洪老叫化的降龙十八掌中最具威力的一招是什么?",
        "白猿腹中的经书里记载的是什么武学?",
        "黄老邪的两个小徒弟偷学了九阴真经里什么武功?",
        "老哥哥我自创的独门拳法是什么?"});
int ask_jieyi();
int ask_hubo();
int do_fangyuan();
int do_learn(string arg);
int ask_jiuyin();
int ask_story();
int ask_story2();
int ask_quest();
int do_answer(string arg);
int ask_kungfu();

void create()
{
        set_name("周伯通", ({ "zhou botong", "zhou", "bo tong" }));
        set("gender", "男性");
        set("nickname", CYN "老顽童" NOR ) ;
        set("title", "全真教第一代弟子") ;
        set("age", 45);
        set("long",
        "他就是人称「老顽童」的周伯通。\n"
        "他本来是全真教掌门人的师弟,武功高强,但现在却被人囚禁在\n"
        "这小小山洞之中,头发胡子长长的,毛茸茸的象一个野人。\n",
        );

        set("no_get",1);
        set("combat_exp", 3000000);
        set("shen_type", 1);
        set("double_attack", 1);
        set("max_neili", 5000);
        set("neili", 5000);
        set("jiali", 0);

        set_skill("cuff", 300);
        set_skill("strike", 300);
        set_skill("force", 300);
        set_skill("sword", 300);
        set_skill("unarmed", 300);
        set_skill("dodge", 300);
        set_skill("parry", 300);
        set_skill("hubo" ,300);
        set_skill("qixing-array",300);
        set_skill("kongming-quan",300);
        set_skill("quanzhen-jian",250);
        set_skill("xiantian-qigong", 300);    //先天气功
        set_skill("haotian-zhang", 300);    //昊天掌
        set_skill("jinyan-gong", 300);   //金雁功
        map_skill("unarmed","kongming-quan");
        map_skill("parry","kongming-quan");
        map_skill("dodge","jinyan-gong");
        map_skill("force","xiantian-qigong");
        set("double_attack", 1);
        set_temp("apply/attack", 120);
        set_temp("apply/defense",150);
        set_temp("apply/armor", 150);
        set_temp("apply/damage", 120);

        set("inquiry", ([
                "东邪": "是黄药师这个无耻的家伙,骗了我的九....去看。",
                "黄药师": "这个无耻的家伙,骗了我的九....去看。",
                "中神通": "我的师兄是天下武功最高的,第一次华山论剑时公推为第一高手。",
                "王重阳": "我的师兄是天下武功最高的,第一次华山论剑时公推为第一高手。",
                "周伯通": "找我有什么事吗?",
                "瑛姑": "四张机,鸳鸯织就欲双飞....",
                "刘瑛": "四张机,鸳鸯织就欲双飞....",
                "段皇爷": "老顽童做事对不起他,没脸再见他了。",
                "段智兴": "老顽童做事对不起他,没脸再见他了。",
                "南帝": "老顽童做事对不起他,没脸再见他了。",
                "老顽童": "我就是啊,找我有什么事吗?",
                "空明拳": "空明拳共七十二路,口诀是:空朦洞松、风通容梦、冲穷中弄、童庸弓虫。",
                "kongming-quan": "空明拳共七十二路,口诀是:空朦洞松、风通容梦、冲穷中弄、童庸弓虫。",
                "黄蓉": "是几个月前来陪我聊天的那个小姑娘吗?",
                "郭靖": "那是我的结义兄弟,人虽然傻,心肠倒好。",
                "方": "方要正方!",
                "fang": "方要正方!",
                "圆": "圆要浑圆!",
                      "九阴真经": (: ask_jiuyin :),
                "双手互搏": (: ask_hubo :),
                "左右互搏": (: ask_hubo :),
                "结义": (: ask_jieyi :),
                "结拜": (: ask_jieyi :),
                "故事": (: ask_story :),
                "后来怎样": (: ask_story2 :),
                "问题": (: ask_quest :),
                "功夫": (: ask_kungfu :),

        ]) );

        create_family("全真教", 1, "弟子");

        setup();
        carry_object("/clone/misc/cloth")->wear();
}
void init()
{
        object ob = this_player();
        add_action("do_fangyuan","fangyuan");
        add_action("do_draw","draw");
        add_action("do_draw","hua");
        add_action("do_learn","learn");
        add_action("do_learn","xue");
        add_action("do_answer","answer");
        ::init();
        if (ob->query("family/family_name") == "全真教") {
                command("angry " + ob->query("id"));
                command("say 怎么你到今天才来找我?!明天我就去和处机说让他打你屁股。");
        }
}

void kill_ob(object me)
{
        command("chat* crazy " + me->query("id"));
        ::kill_ob(me);
}

void unconcious()
{
        command("chat 叹道:老顽童今日是要归天了,到阴世玩玩两只鬼打架,那些大头鬼、无常鬼一定瞧得莫名其妙,鬼色大变。");
        ::unconcious();
}

int ask_story()
{
        object me = this_player();
        string msg;
        if (me->query_temp("jiuyin/fanhe") && !me->query("jiuyin/full") && !me->query("jiuyin/shang") && me->query("jiuyin/shang-failed") < 3) {
                msg = HIY"周伯通听到$N要他讲故事,登时兴高采烈。\n"NOR;
                msg+= HIY"周伯通开始讲起九阴真经和黄裳的故事。\n"NOR;
                msg+= HIW"周伯通看$N不问后来怎样,便赌气不说了。\n"NOR;
                message_vision(msg, me);
                me->delete_temp("jiuyin/fanhe");
                me->set_temp("jiuyin/story",1);
                return 1;
        }
        return 0;
}

int ask_story2()
{
        object me = this_player();
        string msg;
        if (me->query_temp("jiuyin/story")==1)
        {
                msg = HIY"周伯通一听$N问他后来怎样,又口沫横飞的说起来。\n";
                msg+= HIY"周伯通讲完又开始对$N说起他和全真教的故事。\n";
                msg+= HIW"$N听着,也学到了些全真教练气的皮毛。\n"NOR;
                msg+= HIC"周伯通说完故事,又无聊的问道:“兄弟,我来考你几个问题吧!\n"NOR;
                message_vision(msg, me);
                me->set_temp("jiuyin/story",2);
                return 1;
        }
        return 0;
}

int ask_jieyi()
{
        object ob=this_player();
        if (ob->query("zhou/jieyi")) {
                command("? " + ob->query("id"));
                command("say 咱俩不是结拜过了吗?");
                return 1;
        }
        if (ob->query("zhou/fail") >=3 ){
                command("hmm");
                command("say 我不是说了,我没兴趣和你结拜啊!");
                return 1;
        }
//        if (ob->query("age") > 30){
//                command("shake");
//                command("say 我老顽童只喜欢和青年人玩,和你结拜?没意思,没意思!");
//                return 1;
//        }
        if (ob->query("gender") != "男性" && ob->query("gender") != "女性") {
                if (ob->query("age") > 45)
                        command("say 我本来也想与你结拜,就是不知是兄弟相称还是姐弟相称?");
                else
                        command("say 我本来也想与你结拜,就是不知是兄弟相称还是兄妹相称?");
                command("laugh");
                ob->add("zhou/fail", 1);
                return 1;
        }
        if ( ob->query("class") =="bonze" ){
                command("monk "+ ob->query("id"));
                command("say "+RANK_D->query_respect(ob)+",老顽童我可没有兴趣和你结拜。");
                ob->add("zhou/fail", 1);
                return 1;
        }
        if ( ob->query_skill("literate", 1) > 100) {
                command("shake");
                command("say 你这个人鬼灵精,保不准打着什么主意呢。");
                ob->add("zhou/fail", 1);
                return 1;
        }
        if ((int)ob->query("shen") <= -1) {
                command("shake");
                command("say 我虽然天性随便,但师尊教诲不敢忘,于正邪之道还是要分清的。");
                ob->add("zhou/fail", 1);
                return 1;
        }
        if ( ob->query("combat_exp") < 100000){
                command("shake "+ ob->query("id"));
                command("say 这位"+RANK_D->query_respect(ob)+"你的武艺实在太糟糕了,我可没兴趣和你结拜。");
                return 1;
        }
        if (random(ob->query("kar")) < 20){
                command("shake");
                command("say 我现在没有空,要不你先陪我玩玩?");
                ob->add("zhou/fail", 1);
                return 1;
        }
        command("nod " + ob->query("id"));
        if (ob->query("gender") == "男性") {
                command("say 好吧,你我就结拜为兄弟吧。");
        }
        else if (ob->query("gender") == "女性") {
                if (ob->query("age") > 48)
                        command("say 好吧,你我就结拜为姐弟吧。");
                else
                        command("say 好吧,你我就结拜为兄妹吧。");
        }
        message_vision("周伯通与$N并肩而跪,朗声说道:“老顽童周伯通,今日与" + ob->name() +"义结金兰,日后有福共享,有难共当。\n"+
                       "若是违此盟誓,教我武功全失,连小狗小猫也打不过。”\n", ob);
//        log_file("ZHOU",sprintf("%s(%s)与周伯通结拜于: %s\n",ob->name(1), getuid(ob), ctime(time())));
        ob->set("zhou/jieyi", 1);
        return 1;
}

int ask_jiuyin()
{
        object me=this_player();
        object ob;

        if (me->query("jiuyin/full")) {
                if(present("jiuyin zhenjing", me)) {
                        command("? " + me->query("id"));
                        command("say 不是已经给你了吗?");
                        return 1;
                } else {
                        ob = new("/clone/book/jiuyin-book.c");
                        ob->move(me);
                        message("channel:rumor", MAG"【谣言】某人:"+me->query("name")+"拿到《九阴真经》啦。\n"NOR, users());
                        command("say 好好保管,掉了可别再来找我了。");
                        return 1;
                }
        }
        command("say 你打听这个干什么?!");
        return 1;
}

int ask_hubo()
{
        object ob=this_player();
        int hubo;
        if(!ob->query("zhou/jieyi")){
                tell_object(ob,"周伯通正盯着你看,不知道打些什么主意。\n");
                command("say 你是谁啊,怎么莫名其妙地问我双手互搏的事啊?");
                return 1;
        }               
        if (ob->query("double_attack")) {
                command("? " + ob->query("id"));
                command("say 你不是已经学会了吗?");
                return 1;
        }
        if(ob->query("zhou/failed") >= 3){
                command("disapp " + ob->query("id"));
                command("say 已经试了这么多次,看来你一辈子也练不会这门功夫了。");
                return 1;
        }
        hubo = ob->query_temp("zuoyou_hubo");
        if (hubo == 22) {
                command("say 接着练第一课!");
                return 1;
        }
        if (hubo == 1) {
                command("say 让你练你就快练嘛!");
                return 1;
        }
        if (hubo > 1 && hubo <= 21) {
                command("say 怎么样,练不会吧?就象黄蓉那女孩儿玲珑剔透,一颗心儿上生了十七八个窍,可是这门功夫她便始终学不会!");
                return 1;
        }
        if (ob->query_skill("force") < 100 || ob->query("max_neili") < 500 || ob->query("combat_exp") < 10000) {
                command("say 你还是先打好武学基础再说吧。");
                return 1;
        }
        command("say 这门功夫是我在洞中无聊之时想出来的玩意儿,说难是难到极处,说容易也容易之至。\n"+
                "有的人一学便会,有的人一辈子也学不了,越是聪明,越是不成。");
        command("say 你先练练这第一课:左手画方(fang),右手画圆(yuan)。");
        ob->set_temp("zuoyou_hubo", 1);
        return 1;
}


int do_fangyuan()
{
        object ob=this_player();
        int hubo;
        if (ob->is_busy() || ob->is_fighting()) return notify_fail("你正忙着呢!\n");
        hubo = ob->query_temp("zuoyou_hubo");
        ob->start_busy(1);
        if (!hubo) return 0;
        if (hubo < 21) {
                message_vision("$N伸出两根食指在地上划画,但画出来的方块有点象圆圈,圆圈又有点象方块。\n", ob);
                ob->add_temp("zuoyou_hubo", 1);
                return 1;
        }
        if (hubo == 21) {
                message_vision("$N伸出两根食指在地上划画,但画出来的方块有点象圆圈,圆圈又有点象方块。\n", ob);
                command("haha " + ob->query("id"));
                command("say 是么?你这一下便办不到!");
                ob->add_temp("zuoyou_hubo", 1);
                return 1;
        }
        if (hubo == 22) {
                if ( ob->query("kar") > 40 ){
                    if( random(ob->query("kar")) > 30 ){
                        message_vision("$N微微一笑,凝神守一,心地空明,随随便便的伸出双手手指,左手画了一个方块,右手画了一个圆圈,\n"+
                                       "方者正方,圆者浑圆。\n", ob);
                        say("周伯通大吃一惊,过了半晌才道:“这定是你从娘胎里学来的本领,那便易办了。”\n");
                        message_vision("周伯通将他领悟出来的这门天下无比的奇功,一古脑儿都教给了$N。\n", ob);
                        ob->delete_temp("zuoyou_hubo");
//                        log_file("ZHOU",sprintf("%s(%s)从周伯通处领悟到双手互搏于: %s\n",ob->name(1), getuid(ob), ctime(time())));
                        ob->set("double_attack", 1);
                        return 1;
                    }
                    else {
                        ob->delete_temp("zuoyou_hubo");
                        message_vision("$N又伸出两根食指在地上划画,但画出来的仍旧是方块有点象圆圈,圆圈又有点象方块。\n", ob);
                        write("看来并不是这么简单。\n");
                        ob->add("zhou/failed", 1);
                        return 1;
                    }
                }
                message_vision("$N又伸出两根食指在地上划画,但画出来的仍旧是方块有点象圆圈,圆圈又有点象方块。\n", ob);
                message_vision("$N终于发现自己是一辈子也练不会这门功夫了。\n", ob);
                ob->delete_temp("zuoyou_hubo");
                ob->add("zhou/failed", 1);
                command("disapp " + ob->query("id"));
                return 1;
        }
        return 0;
}

int do_draw(string arg)
{
        object ob=this_player();

        if (!ob->query_temp("zuoyou_hubo")) return 0;
        if (arg == "fang" || arg == "方" || arg == "yuan" || arg == "圆") return notify_fail("周伯通怒道:让你同时画方圆!\n");
        if (arg == "fang yuan" || arg == "方圆") return do_fangyuan();
        return 0;
}

int do_learn(string arg)
{
        object me=this_player();
        string skill, teacher, skill_name;
        object ob;
        int master_skill, my_skill, gin_cost, rand;

        if (me->is_busy())
                return 0;

        if(!arg || (sscanf(arg, "%s %s", teacher, skill)!=2 ))
                return 0;

        if (teacher != "zhou" && teacher != "botong")
                return 0;

        if( me->is_fighting() )
                return 0;

        if( !(ob = present(teacher, environment(me))) || !ob->is_character()) {
                write("你要向谁求教?\n");
                return 1;
        }

        if( !living(ob) ) {
                write("嗯....你得先把" + ob->name() + "弄醒再说。\n");
                return 1;
        }

        if( !me->query("zhou/jieyi")) {
                write("周伯通奇怪地看着你,问道:你是谁呀?\n");
                return  1;
        }

        if (skill != "kongming-quan" && skill != "空明拳") {
                write("这项技能你恐怕必须找别人学了。\n");
                return 1;
        }

        my_skill = me->query_skill(skill, 1);
        master_skill = ob->query_skill(skill, 1);
        if( my_skill >= master_skill ) {
                write("你在空明拳上的造诣已经不下老顽童了!\n");
                return 1;
        }

        if( !SKILL_D(skill)->valid_learn(me) ) {
                write("你必须是空手并且有足够的内功和内力才可以学习空明拳。\n");
                return 1;
        }

        gin_cost = 150 / (int)me->query("int");

        if( !my_skill ) {
                gin_cost *= 2;
                me->set_skill(skill,0);
        }

        rand = random(20);
        if (rand == 4)
                gin_cost *= 2;
        else if (rand == 15)
                gin_cost += 4;
        if( (int)me->query("potential") < 1 ) {
                write("你的潜能已经发挥到极限了,没有办法再学了。\n");
                return 1;
        }

        message_vision("$N向$n请教有关「空明拳」的问题。\n", me, ob);

        if( (int)me->query("jing") > gin_cost ) {
        write("周伯通念道:老子《道德经》里有句话道:“埏植以为器,当其无,有器之用。凿户牖以为室,当其无,有室之用。”\n");
                write("周伯通吟口诀道:大成若缺,其用不弊,大盈若冲,其用不穷。\n");
                if( (string)SKILL_D(skill)->type()=="martial"
                &&      my_skill * my_skill * my_skill / 10 > (int)me->query("combat_exp") ) {
                        write("也许是缺乏实战经验,你对老顽童的讲解总是无法领会。\n");
                }
                else {
                        if (rand == 13) {
                                write("就在你试图领悟其中道理的时候,老顽童忽然在你旁边大做鬼脸,又故意放了个屁来捣乱,搞得你心烦意乱。\n");
                                write("结果你什么都没学到。\n");
                                return 1;
                        }
                        else if (rand == 5) {
                                write("周伯通讲解了两句,忽然不耐烦起来,拉着你道:“咱俩玩四个人打架可好?”\n");
                                write("结果你只好陪他玩耍了一阵。\n");
                                return 1;
                        }
                        else if (rand == 4) {
                                write("就在你试图领悟其中道理的时候,老顽童忽然在你旁边大做鬼脸,又故意放了个屁来捣乱,搞得你心烦意乱。\n");
                                write("结果你花了比平常多一倍的精力。\n");
                        }
                        else if (rand == 15) {
                                write("就在你试图领悟其中道理的时候,老顽童忽然在你旁边大做鬼脸,又故意放了个屁来捣乱,搞得你心烦意乱。\n");
                                write("结果你花了比平常多得多的精力。\n");
                        }
                        if(skill_name = SKILL_D(skill)->query_skill_name(my_skill))
                                write("你听了老顽童的指导,对「" + skill_name + "」这一招似乎有些心得。\n");
                        else
                                write("你听了老顽童的指导,似乎有些心得。\n");
                        me->add("potential", -1);
                        me->improve_skill(skill, random(me->query_int()));
                }
        }
        else {
                gin_cost = me->query("jing");
                write("你今天太累了,结果什么也没有学到。\n");
        }

        me->receive_damage("jing", gin_cost );

        return 1;
}

void finish(object me)
{
        me->delete_temp("jiuyin/asking");
        me->delete_temp("jiuyin/question");
        me->delete_temp("jiuyin/story");
        if (me->query_temp("jiuyin/count") > 0 && random(me->query_temp("jiuyin/count")) > 10) {
                me->delete_temp("jiuyin/count");
                me->set_temp("jiuyin/passed", 1);
                command("admire " + me->query("id"));
                command("say 原来我们是同道中人啊。");
                command("hoho");
                message_vision("\n", me);
                command("say 你陪我陪了这么久,一定很无聊吧?");
                command("hmm");
                command("ah " + this_object()->query("id"));
                command("say 这样吧,我教你点好玩的功夫!");
                command("grin");
        } else {
                me->delete_temp("jiuyin/count");
                me->add("jiuyin/shang-failed", 1);
                command("disapp");
                command("say 真可惜,你的见闻实在太差,下次再来陪我玩吧。");
        }
}

int ask_quest()
{
        object me = this_player();
        if (me->query_temp("jiuyin/story") == 2)
        {
                if (me->query_temp("jiuyin/asking")) {
                        command("say 我们不是正在玩么?专心点!");
                        command("kick " + me->query("id"));
                        return 1;
                }
                me->set_temp("jiuyin/asking", 1);
                me->set_temp("jiuyin/count", 0);
                command("say 准备好,我们开始啦!");
                 call_out("ask_question", 1, me);
                 call_out("finish", 60, me );
                return 1;
        }
        return 0;
}

int do_answer(string arg)
{
        object me = this_player();
        string answer;

        if (!me->query_temp("jiuyin/asking") || !me->query_temp("jiuyin/question"))
                return 0;
        if( !arg || arg=="" ) {
           write("想好答案再回答。\n");
           return 1;
        }
        switch ((int) me->query_temp("jiuyin/question")) {
          case 1: answer="hamagong"; break;
          case 2: answer="xianglong-zhang"; break;
          case 3: answer="tanzhi-shentong"; break;
          case 4: answer="hubo"; break;
          case 5: answer="xiantian-qigong"; break;
          case 6: answer="qixing-array"; break;
          case 7: answer="shuishangpiao"; break;
          case 8: answer="yiyang-zhi"; break;
          case 9: answer="qimen-wuxing"; break;
          case 10: answer="wugou"; break;
          case 11: answer="anran-zhang"; break;
          case 12: answer="six-finger"; break;
          case 13: answer="beiming-shengong"; break;
          case 14: answer="lingboweibu"; break;
          case 15: answer="lonely-sword"; break;
          case 16: answer="qiankun-danuoyi"; break;
          case 17: answer="kanglongwuhui"; break;
          case 18: answer="jiuyang-shengong"; break;
          case 19: answer="jiuyin-baiguzhua"; break;
          case 20: answer="kongming-quan"; break;
        }
        if (arg == answer) {
                me->add_temp("jiuyin/count", 1);
                command("say 不错不错,有点头脑嘛。");
                command("praise " + me->query("id"));
        } else {
                me->add_temp("jiuyin/count", -1);
                command("say 错!");
                command("papaya " + me->query("id"));
        }
        command("say 再来一题吧。");
        me->delete_temp("jiuyin/question");
        call_out("ask_question", 1, me);
        return 1;
}

void ask_question(object me)
{
        int quest;
        if (me->query_temp("jiuyin/asking")) {
                message_vision("\n", me);
                command("say 注意听好了!");
                message_vision(HIW"用 answer 来回答,回答请使用拼音输入,不要用汉字。\n"NOR, me);
                quest = random(20);
                command("say " + questions[quest]);
                message_vision("\n", me);
                me->set_temp("jiuyin/question", quest+1);
        }
        return;
}

int accept_object(object who, object ob)
{
        if ((string)ob->query("id") == "fan he") {
                command("say 是黄老邪的小丫头叫你帮忙送饭来么?");
                message_vision(HIC"周伯通不等$N回答,已经开始将食物塞进嘴中。\n"NOR, who);
                message_vision(HIC"周伯通吃完,干笑了一下,才对$N问道:“不知道你吃过了没有?\n"NOR, who);
                command("say 黄老邪想要我的九阴真经,把我关了十五年啦。");
                command("sing3");
                command("say 你想不想听听我说故事?");
                call_out("destroying", 1, ob);
                who->set_temp("jiuyin/fanhe", 1);
                return 1;
        }
        if (who->query("jiuyin/xia") && (string)ob->query("id") == "jiuyin xiajuan") {
                command("ah " + who->query("id"));
                command("say 这正是我被黄老邪骗去的九阴真经下卷。");
                command("say 不知道你有没有拿到上卷呢?");
                call_out("destroying", 1, ob);
                who->set_temp("jiuyin/give", 1);
                return 1;
        }
        if (who->query("jiuyin/shang") && (string)ob->query("id") == "jiuyin shangjuan") {
                if (!who->query_temp("jiuyin/give")) {
                        command("say 这本九阴真经上卷你不想要了?");
                        return 0;
                }
                who->delete_temp("jiuyin/give");
                call_out("destroying", 1, ob);
                message_vision(HIC"周伯通将手上的九阴真经的上卷和下卷合而为一。\n"NOR, who);
                command("say 兄弟,我就把这本九阴真经交给你了,你可要好好保管它!");
                who->delete("jiuyin/shang");
                who->delete("jiuyin/xia");
                who->set("jiuyin/full", 1);
                new("/clone/book/jiuyin-book.c")->move(who);
                message("channel:rumor", MAG"【谣言】某人:"+who->query("name")+"拿到《九阴真经》啦。\n"NOR, users());
                return 1;
        }
        return 0;
}

void destroying(object obj)
{     
        if (!obj) return;
        destruct(obj);
}

int ask_kungfu()
{
        object me = this_player();
        if (me->query_temp("jiuyin/passed")) {
                me->delete_temp("jiuyin/passed");
                command("say 这些功夫是我自己的创作,可厉害的很啊。");
                if (me->query("kar") > 40 && random(10) == 0) {
                        command("say 上次我碰巧误闯入黄老邪的五行阵,就把书藏在那里了。");
                        command("say 本来想自己去拿的,谁知道那个五行阵很邪,差点把老命送在那里了。");
                        command("say 我看小兄弟的运气好象不错,你自己去试试吧!");
                        me->delete("jiuyin/shang-failed");
                        me->set("jiuyin/shang", 1);
                } else {
                        command("heihei " + this_object()->query("id"));
                        message_vision(HIC"周伯通却只是告诉$N如何施展,完全不演练给$N看。\n", me);
                        message_vision("$N无论怎么练习就是无法成功。\n"NOR, me);
                        command("sigh");
                        command("say 我这高深武功,你大概别想学了吧。");
                        me->add("jiuyin/shang-failed", 1);
                }
                return 1;
        }
        return 0;
}

[发帖际遇]: yren在断肠崖见杨过要跳崖寻妻,急忙上面阻拦,可惜只抓住了杨过的衣袖,反被带下山崖,在崖底发现钱包丢失,失去银两2。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2009-10-5 00:50 | 显示全部楼层
改標題了~~麻煩再發下太玄功代碼。謝謝

[发帖际遇]: adv123冒充青木堂主向反清份子征收活动经费,结果:骗得银两49.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-12-19 06:13

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表