⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tanzhi-shentong.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// tanzhi.c 弹指神通#include <ansi.h>#include <combat.h>inherit SKILL;#include "/kungfu/skill/eff_msg.h";string *xue_name1 = ({         "大锥穴",        "百会穴",        "志室穴",        "肩井穴",        "劳宫穴",        "内关穴",        "外关穴",        "会宗穴",});string *xue_name2 = ({        "曲池穴",        "冲阳穴",        "臂儒穴",        "白海穴",        "灵台穴",        "风府穴",        "神风穴",        "玉书穴",}); string *xue_name3 = ({        "青门穴",        "商阳穴",        "丝空竹穴",        "气海穴",        "冲门穴",        "大椎穴",        "百里穴",        "槐阳穴",}); string* xuedao = ({	"巨骨穴",	"地仓穴",	"肩井穴",	"颊车穴",	"承泣穴",	"风池穴",	"章门穴",	"风府穴",	"精促穴",	"陶道穴",	"强间穴",	"少海穴",	"犊鼻穴",	"神门穴",	"华盖穴",	"大椎穴",	"凤尾穴",	"至阳穴",	"劳宫穴",	"百会穴",	"灵台穴",	"太阳穴",	"膻中穴",	"命门穴",	"鸠尾穴",	"三阴交",	"天柱穴"});mapping *action = ({([  "action" : "$N右指划了个半圈,一式「划天裂地」自上而下划向$n的全身",    "force" : 320,    "dodge" : 15,    "damage": 135,    "lvl" : 20,    "skill_name" : "划天裂地",	"damage_type" : "刺伤"]),([  "action" : "$N左掌护胸,一招「我心悠悠」,右指欲举无力指向$n的额头",    "damage": 155,    "force" : 280,    "dodge" : 20,    "lvl" : 0,    "skill_name" : "我心悠悠",    "damage_type" : "刺伤"]),([  "action" : "$N双手齐出,一式「千夫所指」,疾指向$n的$l",    "damage": 105,    "force" : 190,    "dodge" : 15,    "lvl" : 0,    "skill_name" : "千夫所指",    "damage_type" : "刺伤"]),([  "action" : "$N仰天一叹,一招「弹指人生」,双手幻出重重指影,点向$n的$l",    "force" : 380,    "dodge" : 50,    "damage": 140,    "lvl" : 50,    "skill_name" : "弹指人生",    "damage_type" : "刺伤"]),([  "action" : "$N一式「笑指天南」,左掌蓄式,右指弹出一缕指风点向$n的$l",    "force" : 240,    "dodge" : 35,    "damage": 200,    "lvl" : 10,    "skill_name" : "笑指天南",    "damage_type" : "刺伤"]),([  "action" : "$N用出「擎天一指」,蓄集全身力气,一指点向$n的$l",    "force" : 420,    "dodge" : 40,    "damage": 330,    "lvl" : 80,    "skill_name" : "擎天一指",    "damage_type" : "刺伤"]),([      "action" : "$N曲起食指,嗤的一声轻响,一股细细气劲射向$n"+xuedao[random(sizeof(xuedao))],	"force" : 250,	"dodge" : 0,	"parry" : 0,	"damage": 325,	"lvl" : 5,	"weapon": "指力", 	"damage_type" : "刺伤"]),([      "action" : "$N扣住中指,哧哧哧连弹三下,三缕指风锋锐若剑,风驰电挚般射向$n的"+xuedao[random(sizeof(xuedao))]+"、"+xuedao[random(sizeof(xuedao))]+"、"+xuedao[random(sizeof(xuedao))],	"force" : 300,	"dodge" : 20,	"parry" : 15,	"damage": 240,	"lvl" : 20,	"weapon": "指风",	"damage_type" : "刺伤"]),([      "action" : "$N扣起中指、无名指,一齐弹出,中指指劲激射$n"+xuedao[random(sizeof(xuedao))]+",无名指上暗劲则已悄无声息的掩至"+xuedao[random(sizeof(xuedao))],	"force" : 350,	"dodge" : 25,	"parry" : 20,	"damage": 250,	"lvl" : 40,	"damage_type" : "内伤"]),([      "action" : "$N双足不丁不八,踏着东方乙木之位,食中二指反扣住拇指,一声长啸,反手弹出,但见一股凌厉无极的指劲激射向$n的"+xuedao[random(sizeof(xuedao))],	"force" : 400,	"dodge" : 30,	"parry" : 15,	"damage": 260,	"lvl" : 60,	"damage_type" : "瘀伤"]),([      "action" : "$N冷哼一声,双手笼入袖中,脸上青气一闪即逝,几缕指风已无声无息的袭向$n的"+xuedao[random(sizeof(xuedao))]+"、"+xuedao[random(sizeof(xuedao))]+"、"+xuedao[random(sizeof(xuedao))]+"数处要穴",	"force" : 450,	"dodge" : 40,	"parry" : 10,	"damage": 280,	"lvl" : 80,	"weapon": "指风",	"damage_type" : "刺伤"]),([      "action" : "$N面色凝重,真气流转,只见$N右手中指渐变为淡青色,缓缓弹向$n,$n只觉胸口一窒,被一股森寒之极的指风压得几乎连气也喘不过来",	"force" : 500,	"dodge" : 50,	"parry" : 10,	"damage": 400,	"lvl" : 100,	"damage_type" : "内伤"]),});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("练弹指神通必须空手。\n");    if ((int)me->query_skill("bibo-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;	string xue;    level   = (int) me->query_skill("tanzhi-shentong",1);	xue = xuedao[random(sizeof(xuedao))];        if (random(level) > 200 && me->query_skill("force") > 200 && me->query("neili") >= 500)         {	return ([	"action": HIG"$N身子滴溜溜的打了半个圈子,丹田中提一口真气,青芒犹似长蛇般伸缩不定,蓦地真气突盛,刺向$n的"+xue+""NOR,	"force" : 600,	"dodge" : 140,	"parry" : 140,	"damage": 600,	"weapon": HIG"指气"NOR,	"damage_type":  "内伤"]);}        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;}mixed hit_ob(object me, object victim, int damage_bonus, int factor){        int lvl = me->query_skill("finger");        string name1,name2, name3;        name1 = xue_name1[random(sizeof(xue_name1))];        name2 = xue_name2[random(sizeof(xue_name2))];        name3 = xue_name3[random(sizeof(xue_name3))];        if ( lvl > 200          && me->query("neili") > 300         && !victim->is_busy()         && random(10) > 5 && lvl > random( victim->query("dodge", 1)/2)){              message_vision(HIR "$n被$N点中了「"HIC + name1 + HIR"」,内息大乱!\n" NOR,me,victim);              victim->start_busy(random(3)+1);           if (random(lvl) > 200) {              message_vision(HIY "$N手指微动,又点中了$n的「"HIC + name2 + HIY"」!\n" NOR,me,victim);              message_vision(HIY "$n只觉得头微微晕眩,精神不能集中!\n" NOR,me,victim);               if (userp(victim))              victim->add("jing",- lvl); else victim->add("jing",- victim->query("jing")/4);               }           if (random(lvl) > 200) {              message_vision(HIG "$N反手再点向$n的「"HIC + name3 + HIG"」!\n" NOR,me,victim);              message_vision(HIG "$n丹田一阵剧痛,内力无法凝聚!\n" NOR,me,victim);              victim->add("neili",- lvl*2); }        }}int ob_hit(object ob, object me, int damage){        object wp1;        string msg;        string name1;        int p,j,skill, neili, neili1, exp, exp1;        wp1 = ob->query_temp("weapon");        skill = me->query_skill("parry");        neili = me->query("neili");        neili1 = ob->query("neili");        exp = me->query("combat_exp");        exp1 = ob->query("combat_exp");        name1 = xue_name1[random(sizeof(xue_name1))];        if(skill > 150         && living(ob)         && random(15) > 6 ) {          if(wp1){           msg = HIW"$N百忙中抽出手指来,使出弹指神通向$n的$w弹去!\n"NOR;           msg = replace_string(msg, "$w", wp1->name());           if(neili >= random(neili1)+damage){              if(random(me->query_dex()) > ob->query_str()/2 && skill > 140){                  msg += HIR"$n虎口一热,"+wp1->name()+HIR"飞出数丈!\n"NOR;                  msg += HIR"$n胸口气血翻腾,似乎受到轻微的内伤!\n"NOR;                  wp1->unequip();                  wp1->move(environment(ob));                  j = -(damage);              }              else{                  ob->receive_damage("qi", damage/5);                  ob->receive_wound("qi", damage/5);                  p = ob->query("qi")*100/ob->query("max_qi");                  msg += damage_msg(damage/20, "伤害");                  msg += "( $n"+eff_status_msg(p)+" )\n";                  j = -(damage/2+skill/2);              }           }           else if(neili >= random(neili1)+damage){              msg += GRN"结果把$n的攻势阻了一阻。\n"NOR;                            j = -(damage/2+skill/2);           }           else{              j = damage/2+random(damage/2);              if(j<damage/2) msg += GRN"结果把$n大半的力道转了开去。\n"NOR;              else msg += GRN"结果把$n大半的力道转了开去。\n"NOR;              j = -j;           }           message_vision(msg, me, ob);           return j;          }          else{           msg = HBMAG"$N危急中,伸出手指弹向$n的「"HBRED + name1 + HBMAG"」!\n"NOR;           if(neili >= neili1+random(neili1)+damage){              ob->receive_damage("qi", damage/5);              ob->receive_wound("qi", damage/5);              p = ob->query("qi")*100/ob->query("max_qi");              msg += damage_msg(damage, "内伤");              msg += "( $n"+eff_status_msg(p)+" )\n";              j = -(damage*2+skill);           }           else if(neili >= random(neili1)+damage){              msg += GRN"结果将$n的攻势阻了一阻。\n"NOR;              j = -(damage+skill);           }           else{              j = damage/2+random(damage/2);               if(j<damage/2) msg += GRN"结果把$n一些力道转移开去。\n"NOR;              else msg += GRN"结果把$n一些力道转移开去。\n"NOR;              j = -j;           }                      message_vision(msg, me, ob);           return j;          }        }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -