east_xiangfang.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 207 行
C
207 行
//Cracked by Kafei// group bwdh/room east xiangfang
// Apache 09/27/98
#include <ansi.h>
inherit ROOM;
#include "entrance.h"
#include "xiangfang.h"
#define BOARD "/clone/board/bwboard"
void death_stage(object ob, int stage);
void setup_weishi(object weishi,object ob);
void create() {
set("short", "东厢房");
set("long", @LONG
这里是东厢房。比武较量的选手在这里组队准备入场。
厢房里面放者几个兵器架(jia),摆满了兵器。
LONG
);
set("no_fight",1);
set("no_death",1);
set("exits", ([
"up" : __DIR__"wizroom",
//"east" : __DIR__"kantai_e1",
]));
create_xiangfang();
setup();
}
void init() {
init_xiangfang();
go_xiangfang();
call_out( "death_stage", 90, previous_object(), 0 );
}
void death_stage(object ob, int stage)
{
object weishi, *weishis;
int nMyWeiShi=0, nOtherWeiShi=0;
int i;
object board;
if( !ob || !objectp(ob) || !userp(ob) ) return;
tell_object(ob, HIW "一股阴冷的浓雾突然出现,很快地包围了你。\n\n" NOR );
//if( !ob->query("sjsz/team_name") ) ob->set("sjsz/team_name",HIW"飞虎队"NOR);
ob->set("sjsz/fighting",1);
ob->set("sjsz/white",1);
ob->delete("sjsz/red");
if( !ob->query("sjsz/team_name") )
{
board = find_object(BOARD);
if (!objectp(board)) {
board = load_object(BOARD);
if (!objectp(board))
return;
}
ob->set( "sjsz/team_name",board->query("eastname") );
}
ob->set_temp("apply/short", ({HIW""+ob->query("sjsz/team_name")+" "NOR+ob->name()+"("+ob->query("id")+")"}));
ob->move("/d/bwdh/sjsz/egate.c");
message("vision", "你忽然发现前面多了一个人影。\n", environment(ob), ob);
weishis = filter_array(children(__DIR__"npc/weishi.c"), (: clonep :));
for( i = 0; i < sizeof(weishis); i++)
{
weishi = weishis[i];
if( weishi->query("sjsz/team_name") == ob->query("sjsz/team_name") )
nMyWeiShi++;
else nOtherWeiShi++;
}
if( nMyWeiShi > nOtherWeiShi+3 || nMyWeiShi >8 ) return;
else
{
weishi = new (__DIR__"npc/weishi.c");
if(!weishi)return;
if(random(4)==1)
weishi->move(__DIR__"etang");
else weishi->move(__DIR__"room_09");
setup_weishi(weishi,ob);
message("vision",
"你忽然发现前面多了一个人影。\n", environment(weishi), weishi);
}
}
void setup_weishi(object me,object obj)
{ mapping skills; string *names; int level,i; int exp; if(!objectp(me) || !objectp(obj) )return;
exp = 10000000 - obj->query("combat_exp");
if( exp < 0 ) exp = 100000;
me->set("combat_exp", exp );
level = pow( exp*10.,0.33333 );
if(level < 10) level = 10;
if( obj->query("combat_exp") < 300000 )
{
level = level/2 + random(level*2/3);
}
else if( obj->query("combat_exp") < 500000)
{
level = level/2 + random(level/2);
}
else if( obj->query("combat_exp") < 800000)
{
level = level/2 + random(level/3);
}
else if( obj->query("combat_exp") < 1000000)
{
level = level/2 + random(level/4);
}
else
level = level/2 + random(level/5);
skills = me->query_skills();
names = keys(skills); for (i=0; i<sizeof(names); i++) { me->set_skill(names[i], level); } me->set("sjsz/team_name",obj->query("sjsz/team_name")); if(exp > 8000000)me->set("name","特级武士"); else if(exp > 6000000)me->set("name","一级武士"); else if(exp > 4000000)me->set("name","二级武士"); else if(exp > 2000000)me->set("name","三级武士"); else if(exp > 500000)me->set("name","四级武士"); else me->set("name","五级武士"); me->set_temp("apply/short", ({HIW""+obj->query("sjsz/team_name")+" "NOR+me->name()+"(wu shi)"}));}
int do_open(string arg) {
if ( !wizardp(this_player()) )
return notify_fail("你不是巫师。\n");
if (!arg || (arg != "entrance" && arg != "exit") )
return notify_fail("你要打开什么?\n");
if( arg == "entrance" )
{
if ( query("exits/west") )
return notify_fail("比武场入口已经是打开的。\n");
set("exits/west", __DIR__"egate");
}
else
{
if ( query("exits/east") )
return notify_fail("比武场入口已经是打开的。\n");
set("exits/east", __DIR__"kantai_e1");
}
message_vision("$N用手指凌空一点,吱地一声,打开了比武场入口。\n", this_player());
remove_call_out("close");
call_out("close", 60);
return 1;
}
int close() {
message("vision", "比武场入口慢慢地关上了。\n", this_object());
delete("exits/west");
delete("exits/east");
return 1;
}
int auto_open() {
if ( query("exits/west") || query("exits/west") )
return notify_fail("比武场入口已经是打开的。\n");
set("exits/west", __DIR__"egate");
message("vision", "“吱~吱~呀~”,比武场入口慢慢打开了。\n", this_object());
remove_call_out("close");
call_out("close", 60);
return 1;
}
int auto_out_open() {
if ( query("exits/east") )
return notify_fail("比武场入口已经是打开的。\n");
set("exits/east", __DIR__"kantai_e1");
message("vision", "“吱~吱~呀~”,比武场入口慢慢打开了。\n", this_object());
remove_call_out("close");
call_out("close", 60);
return 1;
}
int valid_leave(object player, string dir) {
if (!wizardp(player) && dir == "up")
return notify_fail("此间主人并没有邀请你去那里!\n");
return ::valid_leave(player, dir);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?