bingdong.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 161 行
C
161 行
//Cracked by Kafei// road: /d/zhongnan/bingdong.c// by sdong 08/98#include <ansi.h>#include <room.h>inherit ROOM;private int blow_result(object victim);int blow();int do_dig();void setup_ob(object me,object victim);void create(){ set("short","冰洞"); set("long",@LONG这个大洞又高又宽,洞壁是天然花岗岩的,洞内寒气逼人,地上结着厚厚的坚冰。你冷的都有些发抖。LONG); set("exits",(["east": __DIR__"xuanya4", ]) ); set("cost",1); setup();}void init(){ add_action("do_dig", "dig"); remove_call_out("blow"); call_out("blow",4 + random(3) );}int do_dig(){ remove_call_out("blow"); call_out("blow",1 ); return 1;}int blow(){ object *inv = all_inventory(find_object(__DIR__"bingdong")); object ob, me= this_player(); int i; if( !this_player() || !environment(this_player()) ) return 1; if( base_name(environment(this_player())) != __DIR__"bingdong") return 1; message_vision( HIW"\n你觉得一阵冷气逼来,全身的血液都快冻僵了!\n"NOR, this_player() ); for ( i=0 ; i < sizeof(inv); i++) { if ( (string)inv[i]->query("race") == "人类" ) { blow_result(inv[i]); } } remove_call_out("blow"); call_out( "blow",4 + random(3) ); return 1;}private int blow_result(object victim){ object ob2; if( random(60)==1 ) { ob2=new(__DIR__"bigtiger"); ob2->move(environment(victim)); message_vision(HIR"突然从洞口中走进一只$N,它看到有人,怒吼一声,发疯似地向$n发起进攻!\n"NOR, ob2,victim); setup_ob(ob2,victim); ob2->kill_ob(victim); ob2->add_temp("offenders/"+victim->query("id"), 1); ob2->start_busy(1+random(3)); victim->kill_ob(ob2); } if( random( victim->query_skill("force") ) > 45 && victim->query("neili") > 20 ) { message_vision( HIG"\n$N赶紧运功抵御!\n"NOR, victim ); if( victim->query_skill("force",1) < 350 ) victim->improve_skill( "force",victim->query("con")+10 ); victim->add("neili",-random(40)); } else { message_vision( RED"\n$N打了个冷颤!\n"NOR, victim ); victim->receive_wound("qi", random(30)); victim->receive_damage("qi", random(50)); if( victim->query_skill("force",1) < 300 ) victim->improve_skill( "force",victim->query("con")/2+10 ); } return 1;}void setup_ob(object me,object victim){ object *inv; mapping skill_status; string *sname; int i, max = 0, max1, j; if ( !me->query_temp("copied") ) { if ( mapp(skill_status = victim->query_skills()) ) { skill_status = victim->query_skills(); sname = keys(skill_status); for(i=0; i<sizeof(skill_status); i++) { if ( skill_status[sname[i]] > max ) max = skill_status[sname[i]]; } max1 = (int)max + random(max*3); if( victim->query("combat_exp",1) < 10000 ) max1 = max1/2; me->set_skill("dodge", max1); me->set_skill("parry", max1 ); me->set_skill("force", max1); me->set_skill("strike", max1); me->set_skill("cuff", max1); me->set_skill("claw", max1); me->set_skill("force", max1); me->set_skill("taiji-shengong", max1); me->map_skill("force", "taiji-shengong"); me->set("combat_exp", victim->query("combat_exp",1)+random(victim->query("combat_exp",1)/2)); me->set("max_qi", victim->query("max_qi")); me->set("eff_qi", victim->query("max_qi")); me->set("max_jing", victim->query("max_jing")); me->set("eff_jing", victim->query("max_jing")); me->set("qi", me->query("max_qi")); me->set("max_neili", 6000); me->set("neili", victim->query("neili") ); me->set("jing", me->query("max_jing")); me->set("jiali", victim->query("jiali")*3/4); if ( victim->query("max_jing") > 0 ) { me->set("max_jing", victim->query("max_jing")); } else me->set("max_jing", 500); me->set("jing", me->query("max_jing")); me->set("no_sing", 1); me->set_temp("copied", 1); me->set_temp("apply/attack", 80); me->set_temp("apply/damage", victim->query_temp("apply/damage") ); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?