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

📄 aikido.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// Copyright (C) 1995, by Tie Yu and Daniel Yu. All rights reserved.
// This software can not be used, copied, or modified in any form without
// the written permission from authors.
#include <ansi.h>
inherit SKILL;
object offensive_target(object me)
{
	int sz;
	object *enemy;

	enemy = me->query_enemy();
	if( !enemy || !arrayp(enemy) ) return 0;

	sz = sizeof(enemy);
	if( sz > 4 ) sz = 4;

	if( sz > 0 ) return enemy[random(sz)];
	else return 0;
}
string* buwei = ({
        "右手肘部",
        "手腕",
        "左手关节",
        "颈部",
        "肩部关节",
        "背心要穴",
        "膝关节",
        "命门"
});
mapping *action = ({
        ([      "action":               
"$N左腿在前,右腿在后,双掌用力向$n的$l挥来",
                "dodge":                30,
                "parry":                10,
                "force":                90,
                "damage":                90,
                "damage_type":  "瘀伤"
        ]),
        ([      "action":               
"$N左脚点地,身体向后旋转,右腿向疾风扫落叶般扫向$n的$l",
                "dodge":                10,
                "parry":                30,
                "force":                90,
                "damage":                90,
                "damage_type":  "瘀伤"
        ]),
        ([      "action":               
"$N右手虚晃,左肘从我意想不到的角度撞向我$n的$l",
                "dodge":                30,
                "parry":                10,
                "force":                90,
                "damage":                120,
                "damage_type":  "瘀伤"
        ]),
        ([      "action":               
"$N右脚凌空,晃出一片腿影,霎那间向$n的$l一连踢出三脚",
                "dodge":                10,
                "parry":                30,
                "force":                90,
                "damage":                130,
                "damage_type":  "瘀伤"
        ]),
        ([      "action":               
"$N凌空跃起,身体向后急转,双脚从下往上一前一后地撩向$n的$l",
                "dodge":                20,
                "parry":                30,
                "force":                90,
                "damage":                140,
                "damage_type":  "瘀伤"
        ]),
});

int valid_learn(object me)
{
    if ((int)me->query_skill("shayi-xinfa", 1) < 30)
   return notify_fail("你的杀意心法火候不够。\n");
        if( me->query_temp("weapon") || me->query_temp("secondary_weapon") )
                return notify_fail("练合气道必须空手。\n");
        return 1;
}

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

mapping query_action(object me, object weapon)
{
        int i, level;
        object victim;
        string bw;
        
        if( !victim && me->is_fighting() ) victim = offensive_target(me);
        level   = (int) me->query_skill("aikido",1);
        
        bw = buwei[random(sizeof(buwei))];
if (me && victim)
{
        if ((int) me->query_skill("aikido",1) > random(50)  && me->query("neili") > 300
        && random(me->query("combat_exp")) > victim->query("combat_exp")/2 && random(4)==0
         && me->query_skill_mapped("unarmed") == "aikido"
         && me->query_skill_mapped("parry") == "aikido"
         && !me->is_busy()
         && victim->query("qi") > 100
         && !victim->is_busy()
         && !me->query_temp("weapon")) {
                me->add("neili", -50);
                message_vision(HIY"$N用合气道擒拿法斗然间抓住了$n的"+bw+"!\n"NOR,me,victim);
                message_vision(CYN"$N退避不及被$n抓住了"+bw+",然后被抛出!\n"NOR,victim,me);
if (userp(victim))
                victim->add("qi",-victim->query("qi")/20);
else            victim->add("qi",-level);
                victim->start_busy(1 + random(level/50));
        }
}
        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_skill("shayi-xinfa", 1) < 10)
   return notify_fail("你的杀意心法火候不够。\n");

        if( (int)me->query("qi") < 80 )
                return notify_fail("你的体力不够了,休息一下再练吧。\n");
        if( (int)me->query("neili") < 50 )
                return notify_fail("你的内力不够了,休息一下再练吧。\n");
        me->receive_damage("qi", 40);
        me->add("neili", -30);
        return 1;
}
int effective_level() { return 10;}
 
string *parry_msg = ({
        "$n就势一滚,双手一撑地,全身弹出$N的$w的攻击范围。\n",
});

string *unarmed_parry_msg = ({
        "$n就势一滚,双手一撑地,全身弹出$N的攻击范围。\n",
});

string query_parry_msg(object weapon)
{
        if( weapon )
                return parry_msg[random(sizeof(parry_msg))];
        else
                return unarmed_parry_msg[random(sizeof(unarmed_parry_msg))];
}

int learn_bonus()
{
	return 10;
}
int practice_bonus()
{
	return 5;
}
int black_white_ness()
{
	return -10;
}

string perform_action_file(string action)
{
    return __DIR__"aikido/" + action;
}

⌨️ 快捷键说明

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