nuoyi.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 208 行
C
208 行
// nuoyi.c 乾坤大挪移大法// by King 97.05#include <ansi.h>inherit F_SSERVER;int main(object me, string arg){ string who1, who2; object target, victim; int damage, lvl, r_lvl, count, form, skill, i; string msg;// if( !me->query_skill("qiankundanuoyi", 1) ) if( !me->query_skill("qiankun-danuoyi", 1) ) return notify_fail("你不会乾坤大挪移大法。\n"); if( environment(me)->query("no_fight") ) return notify_fail("这里没有人打斗!\n"); if ((int)me->query_skill("jiuyang-shengong", 1) < 100) return notify_fail("你的九阳神功火候还不够,小心走火入魔!\n"); if( !arg ) { target = offensive_target(me); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("乾坤大挪移大法只能对自己或战斗中的对手使用。\n"); form = 2; } else if( sscanf(arg, "%s to %s", who1, who2) == 2) { target = present(who1, environment(me)); victim = present(who2, environment(me)); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("乾坤大挪移大法只能对战斗中的对手使用。\n"); if( !victim || !victim->is_character() || victim==me) return notify_fail("你想挪移攻击的对象不在这里。\n"); form = 3; } else { sscanf(arg, "%s", who1); target = present(who1, environment(me)); if( target == me) form = 1; else if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("乾坤大挪移大法只能对自己或战斗中的对手使用。\n"); else form = 2; } if( me->is_busy() ) return notify_fail("你的动作还没有完成,不能发功。\n");// if( (int)me->query_skill("qiankundanuoyi", 1) < 50 ) if( (int)me->query_skill("qiankun-danuoyi", 1) < 50 ) return notify_fail("你的乾坤大挪移不够高,小心走火入魔!\n"); if( (int)me->query("neili", 1) < 1500 ) return notify_fail("你现在内力太弱,不能使用乾坤大挪移大法。\n");// skill = (int)me->query_skill("qiankundanuoyi", 1); skill = (int)me->query_skill("qiankun-danuoyi", 1); lvl = skill/20; r_lvl = lvl/2+10; if( r_lvl < 1) r_lvl = 1; count = me->query_str(); if( form == 1) { if( (int)me->query_temp("nuoyi") ) return notify_fail("你已经在运功中了。\n"); if( !me->is_fighting() ) return notify_fail("乾坤大挪移只能在战斗中使用。\n"); message_vision( HIR"$N默运乾坤大挪移大法,脸色忽青忽红,连变"CYN + lvl + HIR"次,将全身内力尽数提起!\n"NOR, me); me->add_temp("apply/attack",count * r_lvl/10); me->add_temp("apply/defense",count * r_lvl/10); me->set_temp("nuoyi", 1); me->start_call_out( (: call_other, __FILE__, "remove_effect", me, count * r_lvl :), skill); me->add("neili", -300); me->start_busy(3); return 1; } if( form == 2 ) { msg = CYN "$N默运神功,使出乾坤大挪移大法。\n"NOR; me->start_busy(3); if (random(me->query("neili",1)) > 2*target->query("neili",1)/4 ) { target->start_busy(random(3)); damage = skill/2 + r_lvl*target->query("jiali",1); target->receive_damage("qi", damage); target->receive_wound("qi", damage/3); me->add("neili", -damage); msg += CYN "将$n的内力全数反击回去!\n" NOR; 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 { msg += CYN"可是$n内力深厚,丝毫不为所动。\n"NOR; me->add("neili", -100); } message_vision(msg, me, target); return 1; } if( form == 3 ) { write( CYN "你默运神功,使出乾坤大挪移大法,试图将" + target->name() + "的攻击挪移到" + victim->name() + "身上。\n"NOR); tell_object(target, CYN"忽然,你发现有一股奇怪的力量向你袭来!\n"NOR); me->start_busy(3); if ( (random(me->query("neili",1)) > 2*target->query("neili",1)/4 ) && ( r_lvl > random(5) ) ) { write( CYN"哈哈,成功了!\n"NOR); if( target == victim) { tell_object(target, CYN"你身不由己,一招击向自己!\n"NOR); message("vision", CYN"\n" + target->name() + "忽然如中魔一般,招招击向自己!\n\n"NOR, environment(me), target); for(i = 0; i < r_lvl; i++)if (!target->query("hunmi")){ COMBAT_D->do_attack(target, victim, target->query_temp("weapon") );}else message("vision", CYN"\n" + target->name() + "已经快不行了,打不动了!\n\n"NOR, environment(me), target); } else { tell_object(target, CYN"你身不由几,向" + victim->name() + "扑去!\n"NOR); message("vision", CYN"\n" + target->name() + "忽然向" + victim->name() +"扑去!\n\n"NOR, environment(me), ({target, victim}) ); tell_object(victim, CYN"\n" + target->name() + "忽然向你扑来!\n\n"NOR);if (!target->query("hunmi")){ COMBAT_D->do_attack(target, victim, target->query_temp("weapon") );}else message("vision", CYN"\n" + target->name() + "已经快不行了,打不动了!\n\n"NOR, environment(me), target); if( random(me->query("combat_exp")) > (int)victim->query("combat_exp")/2 ) { if( !victim->is_killing(target) ) victim->fight_ob(target); } else { tell_object(victim, CYN"你一定神,原来是" + me->name() + "在捣鬼!\n"NOR); tell_object(target, CYN"还好,幸亏" + victim->name() + "经验老到,没有上当。\n"NOR); write( CYN "不好,被" + victim->name() + "发觉了!\n"NOR); if( !victim->is_killing(me) ) me->kill_ob(victim); } target->start_busy(random(3)); me->add("neili", -300); } } else { write( CYN"可惜没成功。"NOR); tell_object(target, CYN"你强用心神,终于控制住自己。\n"NOR); me->add("neili", -100); } return 1; } return 1;}void remove_effect(object me, int amount){ int lvl, r_lvl, count, skill; skill = (int)me->query_skill("qiankun-danuoyi", 1); lvl = skill/20; r_lvl = lvl/2+10; if( r_lvl < 1) r_lvl = 1; count = me->query_str(); me->delete_temp("nuoyi"); if ( (int)me->query_temp("nuoyi") ) { me->add_temp("apply/attack",-count * r_lvl/10); me->add_temp("apply/defense",-count * r_lvl/10); me->delete_temp("nuoyi"); tell_object(me, "你的乾坤大挪移大法运行完毕,将内力收回丹田。\n");}}int help(object me){write(@HELP指令格式 : 1. nuoyi <自己> : 用来提升自己的战斗力。2. nuoyi 或 nuoyi <人物> : 用来反击。3. nuoyi <人物1> to <人物2> : 用来将人物1的攻击挪移到人物2身上。4. 如果<3>中<人物1>=<人物2>,哈哈,则会有非常有趣的现象。HELP ); return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?