Beispiel #1
0
int do_look(string arg)
{
	object env1, env2, env3, env4;
    object *obj1, *obj2, *obj3, *obj4;
    object me = this_player();
	string msg;
    int i, i1, i2, i3, i4;

	if (!arg || arg != "board") return 0;

	env1 = load_object(__DIR__"mjroom1.c");
	obj1 = all_inventory(env1);

	env2 = load_object(__DIR__"mjroom2.c");
	obj2 = all_inventory(env2);

	env3 = load_object(__DIR__"mjroom3.c");
	obj3 = all_inventory(env3);

	env4 = load_object(__DIR__"mjroom4.c");
	obj4 = all_inventory(env4);

	msg ="";
	if (env1->query_temp("mjstart")  ==  1) msg += RED"红木亭"NOR":牌局正在进行中。\n";
	if (env2->query_temp("mjstart")  ==  1) msg += YEL"黄菊苑"NOR":牌局正在进行中。\n";
	if (env3->query_temp("mjstart")  ==  1) msg += HIC"蓝天阁"NOR":牌局正在进行中。\n";
	if (env4->query_temp("mjstart")  ==  1) msg += GRN"绿竹馆"NOR":牌局正在进行中。\n";

	for (i = 0; i < sizeof(obj1); i++) 
        if (userp(obj1[i]))
            i1++;

    for (i = 0; i < sizeof(obj2); i++) 
        if (userp(obj2[i]))
            i2++;

    for (i = 0; i < sizeof(obj3); i++) 
        if (userp(obj3[i]))
            i3++;

    for (i = 0; i < sizeof(obj4); i++) 
        if (userp(obj4[i]))
            i4++;

        tell_object(me, "现在各麻将室里的人数有:\n"+ 
		"    "HIC"蓝天阁\n"+
		"     "+i3+NOR"\n"+
		YEL" 黄菊苑 "+i2+NOR"  "GRN+i4+" 绿竹馆\n"NOR+ 
		"     "RED+i1+"\n"+
		"    红木亭\n\n"NOR+msg);
    return 1;
}
Beispiel #2
0
load() {
# if USE_ICQ_GATEWAY
	D(" " GATEWAY_PATH "icq");
	load_object(GATEWAY_PATH "icq");
# endif
# if USE_AIM_GATEWAY
	D(" " GATEWAY_PATH "aim2");
	load_object(GATEWAY_PATH "aim2");
# endif
# ifdef RELAY_OBJECT
	D(" " RELAY_OBJECT "\n");
	call_out(load_object, 0, RELAY_OBJECT);
# endif
}
Beispiel #3
0
varargs int move_to_start(object ob) {
    object where;
    
    if (!ob) ob = this_object(); /* move us */
    
    if (start_location && (where = load_object(start_location))
	&& ob->move(where) == MOVE_OK)
	return 1;
    where = load_object(wizardp(this_user()) ? WIZARD_START : START);
    if (where && ob->move(where) == MOVE_OK)
	return 1;

    return (ob->move(VOID_ROOM) == MOVE_OK);
}
Beispiel #4
0
int do_climb(string arg)
{
   object me, room; 
   me = this_player();
   if(me->is_busy() || me->is_fighting())
                return notify_fail("你现在没空!\n");
   switch (random(3)) {
   case 0:
      message_vision("$N手脚并用地往上爬,才爬到一半,一失手又摔了下来。\n", me);
      me->receive_damage("gin",20);
                me->start_busy(3);
      break;
   case 1:
      message_vision("$N手脚并用地往上爬,眼看快到井口了,结果一失手又摔了下来。\n", me);
      me->receive_damage("gin",40);
                me->start_busy(3);
      break;
   case 2:
      if(!arg || arg != "上" && arg != "up" ) return 0;
      room = find_object(__DIR__"woodroad");
      if(!objectp(room)) room=load_object(__DIR__"woodroad");
      me->move(room);
      message_vision("$N浑身湿淋淋地从水井中爬了上来。\n", me);
      break;
   }
   return 1;
}
Beispiel #5
0
int cmd(string str) {
    if(!sizeof(str)){
        write(GetHelp());
        return 1;
    }

    str = homedir(this_player()) + "/area/room/" + str;
    if(last(str,2) != ".c") str += ".c";

    if(!directory_exists(homedir(this_player()) + "/area")){
        write(homedir(this_player()) + "/area/ does not exist!");
        return 1;
    }

    if(!file_exists(str)){
        write("The file "+str+" does not exist.");
        return 1;
    }

    if(strsrch(str,homedir(this_player()))){
        write("You can only use this command to travel to rooms "+
                "under your control.");
        return 1;
    }

    if(catch(load_object(truncate(str,2)))){
        write("There is a problem with that room. You stay where you are.");
        return 1;
    }

    this_player()->eventMoveLiving(str);

    return 1;
}
Beispiel #6
0
void create() {
  object otherroom;
  set_server(SERVER);
  ::create();
    set_exits( ([
"west" : WHITE "a17",
    ]) );
  set_no_clean(1);
  if(random(2) == 0)
    otherroom = load_object(WHITE "b10");
  else
    otherroom = load_object(WHITE "b2");
  add_exit(base_name(otherroom), "north");
  otherroom->set_no_clean(1);
  otherroom->add_exit(base_name(this_object()), "south");
}
Beispiel #7
0
int perform(object me, object target)
{
	string msg;
	int extra;
	object qer;
	string qqq;

	int lvl=90;

	qqq="/d/maze/jq2-entry";

	
	extra = me->query_skill("pathfinding",1);

	if (extra < lvl && userp(me))
		return notify_fail("需要至少"+lvl+"级的天路引归。\n");

	if (me->is_fighting())
		return notify_fail("你现在正在战斗,无法使用天路引归。\n");
	
msg=HIB"一阵阴风吹过,刺人骨髓,仿佛一场恶梦。。。\n"NOR;

if (base_name(environment(me))[0..15] == "/d/maze/jq2-maze")
{
	tell_object(me,msg+"\n");
	qer=find_object(qqq);
	if (!qer)
		qer=load_object(qqq);
	me->move(qqq);
}
else
	tell_object(me,HIG"你失败了。\n"NOR);
	me->perform_busy(3);
	return 1;
}
Beispiel #8
0
int random_go(object me, string* dirs)
{
    int		i, j, k;
    object	newob;
    mixed*	file;

    if( !sizeof(dirs) )  return 1;

    i = random(sizeof(dirs));    // pick up one directory

    file = get_dir( dirs[i]+"*.c", -1 );
    if( !sizeof(file) )		return 1;

    k = sizeof(file);
    while(1)  {
        j = random(k);
        if( file[j][1] > 0 )		break; 		// pick up a file with size > 0
    }

    if( (newob=find_object(dirs[i]+file[j][0])) )   {
        me->move( newob );
    }
    else  {
        seteuid(getuid(me));
        newob = load_object(dirs[i]+file[j][0]);
        if (newob)   // now this is not necessary, only for debug use
            me->move(newob);
        else  {
            tell_object(me, "Error.\n");
        }
    }

    return 1;
}
Beispiel #9
0
void check_trigger()
{
	object room;

	if(!query("exits/enter") )
	{
		if( !(room = find_object(__DIR__"basket")) )
			room = load_object(__DIR__"basket");
		if( room = find_object(__DIR__"basket") )
		{
			if((int)room->query("insert_trigger")==0 )
			{
				room->set("insert_trigger", 1);
				set("exits/enter", __DIR__"basket");
				room->set("exits/out", __FILE__);
				message("vision","只见一个掉篮(basket)从天而降,你不禁一怔!\n" , this_object() );
				set("item_desc", ([
					"basket" : "这是一个掉篮,是传说中的交通工具。\n",
				]));
				remove_call_out("on_board");
				call_out("on_board", 15);
			}
			else
				message("vision", "看样子你得等下拨儿。\n",this_object() );
		}
Beispiel #10
0
int do_enter(string arg)
{
 object room;
 object who = this_player();
 if(!arg || arg != "cave")
    return notify_fail("你要进哪里?\n");
if(random(who->query_kar())>25 && who->query("max_mana")>1000)
 {
  if(!( room = find_object(__DIR__"valley")) )
                room = load_object(__DIR__"valley");
                if(objectp(room))
             {
              message_vision("$N钻出了小洞,眼前豁然一亮,原来是个开满鲜花的小山谷!\n",who);
              who->move(room);
             }
         return 1;
     }
     else
{
message_vision("$N试着往洞里爬,突然一股寒风吹来,$N全身都被冻僵了!\n",who);
who->recieve_damage(who->query("kee")/5);
who->recieve_wound(who->query("max_kee")/5);
who->start_busy(5);
return 1;
}
}
Beispiel #11
0
int do_dive(){
	object me, obj, room, octopus, jiaonv;
	
	me = this_player();
	obj = me->query_temp("armor/mask");
	
	if (jiaonv = present("jiao nu",this_object()))
		return notify_fail("鲛女在水中畅游,挡住了你的去路。\n");
	
	room = find_object(__DIR__"midsea2");
	        if(!objectp(room)){
	            room = load_object(__DIR__"midsea2");
	        }
	
	if (room->query("underwater") <= me->query_skill("swimming",1)) {
		message_vision("$N继续向下潜去。\n", me);
		if (room->usr_in()) {
			tell_object(me,"下面好像有人,潜不下去耶。\n");
			return 1;
		}  else 
			{
				if (objectp(octopus=present("octopus", room)))
					destruct(octopus);
				room->reset();
			}
		me->move(room);
	        this_object()->reset();
	        message("vision", me->name() + "潜到你身边的水中。\n", environment(me), me);
	} else {
	    	return notify_fail("你的游泳技能太差,没法潜下去呀。\n");
    	}
    	return 1;
}
Beispiel #12
0
int do_up(string arg)
{
   object me, room;
	
   if (arg != "up")	return 0;
   me = this_player();
   me->add_temp("up_time",1);
   
   if((int) me->query_temp("up_time") <= (2+random(8))) {
      message_vision("$N挣扎着想摆脱水草,可却被越缠越紧了...\n",me);
      tell_object(me, "你感觉到一股很大的力量在把你往下扯。 \n");
      me->receive_damage("kee",10+random(100));
      me->set_temp("last_damage_from","在清平的池塘里被水鬼缠死了。\n");
      return 1;
   }
   else {
      tell_object(me, "猛然间一股很大的力量把你拖入了水中。 \n");
      room = find_object(__DIR__"underwater");
      if(!objectp(room)) room=load_object(__DIR__"underwater");
      me->move(room);
      return 1;
   }
   
   return 0;
}
Beispiel #13
0
int do_jumpto (string arg)
{
        object me,room;
		int dodge;
		if (!arg || (arg != "yard" && arg != "Ժ��"))
			return notify_fail("��Ҫ����������\n");
		
		me = this_player();
		dodge = me->query_skill("move",1);
		message_vision("\n$N���������������۾����͵��������˳�ȥ....\n",me); 
		if(!room)
			room = find_object(__DIR__"jinyuan");
			room=load_object(__DIR__"jinyuan");
		if (dodge < 50)
		{
			message_vision("\nֻ��һ������˺�Ѻ���֦�۶ϵ�������Ȼ��$N���ص�ˤ���˵���...\n\n",me);
			me->move(room);
			me->unconcious();
		}
		else
		{
			message_vision("\n$N������֦����֮������Խ�˴Դ���Ҷ��һ�������˽𸮴�Ժ��\n\n",me);
	        me->move(room);
	        me->start_busy(1);
		}
		return 1;
}
Beispiel #14
0
int do_around(){
	object me, room;
	object bandit;
	
	me=this_player();
	if (me->is_busy())
		return notify_fail("你现在正忙。\n");
		
	if (present("bandit") && me->query("combat_exp")<2500000) {
		tell_object(me,"马贼说:瞎转转什么转,嫁过来大爷陪你一起转。\n");
		return 1;
	}
			
	if (present("bandit") && me->query("combat_exp")>2500000) 
		tell_object(me,"马贼看看你,摸了摸刀,想动却没敢动。\n");
		
		
	tell_object(me,YEL"\n你在废墟里仔仔细细转了几个来回,眼前忽然一亮。\n\n"NOR);
	room = find_object(__DIR__"banditcamp1");
    if(!objectp(room)) 
      	room = load_object(__DIR__"banditcamp1");
    me->move(room); 
	message("vision",me->query("name")+"向废墟后跑去,绕了几圈不见了。\n",this_object());
	return 1;
}
Beispiel #15
0
int do_open(string arg)
{
	object room;
	object me = this_player();

	if (is_open())
		return notify_fail("大门已经是开着了。\n");

	if (!arg || (arg != "men" && arg != "door" && arg != query("door_dir")))
		return notify_fail("你要开什么?\n");

	if(!objectp( room = find_object(query("outroom"))) )
		room = load_object(query("outroom"));
	if(objectp(room))
	{
		open_door();
		message_vision("$N轻手轻脚地把门打开。\n", this_player());
		room->open_door(__FILE__);
		
		if (me->query_temp("sleeped"))
		message("vision", "吱地一声,"+me->query("name")+"精神焕发地从里面把门打开了。\n",room);
		else
		message("vision", "梆地一声,"+me->query("name")+"从里面把门打开,一脸的不耐烦。\n",room);
		
		remove_call_out("close_men");
		call_out("close_men", 10);
	}

	return 1;
}
Beispiel #16
0
int main(object me, string arg)
{
	int i;
	string direc,*dir, roomname;
	string status;
	object room;
        if(!me->query("env/yesiknow")) return notify_fail("╒т╕Ў╓╕┴ю╥╤╛н▒╗╖╧│¤┴╦гб\n");
	status = wizhood(me);
	if( me!=this_player(1)
	|| wiz_level(me) < wiz_level(status) )
		return notify_fail("─у├╗╙╨╚и┴ж╩╣╙├╒т╕Ў╓╕┴юбг\n");
	if( !arg ) return notify_fail(SYNTAX);
	if( sscanf(arg, "%s", direc)!=1 )
		return notify_fail(SYNTAX);
	seteuid(getuid());
	dir = get_dir(arg+"/");
        for(i=0; i<sizeof(dir); i++) {
	if( sscanf(dir[i],"%s.c", roomname) != 1) continue;
	if( room = find_object(arg+"/"+roomname+".c"))
			destruct(room);	
	room = load_object(arg+"/"+roomname+".c");
	if(!room->query("coor"))
	log_file("LEAK",sprintf("%s/%s\n",arg,roomname));
	}
	return 1;
}
Beispiel #17
0
int
main(string a)
{
    object ret;
    mixed code;

    if (file_size("/tmp_eval_file.c") != -1)
	rm ("/tmp_eval_file.c");
    if (find_object("/tmp_eval_file"))
	destruct(find_object("/tmp_eval_file"));

    write_file("/tmp_eval_file.c", "mixed eval() { " + a + "; }\n");

    ret = load_object("/tmp_eval_file");

    dump_prog(ret, 1, "/CODE_TMP_FILE");
    code = read_file( "/CODE_TMP_FILE");
    rm("/CODE_TMP_FILE");
    rm("/tmp_eval_file.c");

    code = explode(code, ";;;  *** Disassembly ***\n");
    code = code[1];
    write(code[0..strlen(code)-1]);
    return 1;
}
Beispiel #18
0
int valid_leave(object me, string dir)
{
	mapping exits;
	object room;
	exits=query("exits");
	room=load_object(exits["down"]);
	if( dir == "up" && (int)me->query("food")-random(10)> 650)
	{
		message_vision(HIR"“喀吧!”腐朽的木板难以承受$N之重,一下子断裂开来!\n\n"NOR,me);
		message_vision(HIR"$N一不小心,姿势美妙地倒栽葱摔了下来......\n“呯!”$N脑袋插进了腐朽的木板里面。\n "NOR,me);
		tell_room(room,HIR+me->query("name")+"一不小心,摔了下来。\n "NOR);
		me->move(room);
		me->receive_wound("kee",2);
		return notify_fail(HIW" “这楼梯可不太结实,下回来爬得少吃点先。。。”\n"NOR);
	}
//	if(!NATURE_D->is_day_time()){
		tell_object(me,HIM "\n
		
你刚一上来,隐约听见头顶上传来两个人断续的对话声:

“你...不到我...来?但是...却早已想到你......”
“我们...的事,...并没有错。最不幸的,...我已来了,你...来了。”
\n\n"NOR);
//	}		
	return 1;
}
Beispiel #19
0
int do_open(string arg)
{
	object me=this_player(), room;
	object *inv;
	int j;

	if(!arg || arg!="door") return notify_fail("你要开什么?\n");
	if( query_temp("lock") == 1 && !present("key", me) )
		return notify_fail("钥匙都没有,怎么开门?\n");
	if(!( room = find_object(__DIR__"storeroom")) )
		room = load_object(__DIR__"storeroom");
	inv = all_inventory(me);
        for (j = 0; j < sizeof(inv); j++)
            {
              if (inv[j]->is_character())
                  {
                   return notify_fail("屋子里位置有限,挤不下那么多人。\n");
                    }
             }
	if(!objectp(room))
		return notify_fail("ERROR:not found 'storeroom.c' \n");
	if(query_temp("lock") == 1 && present("key", me))
	{
		set_temp("lock", 0);
		message_vision("$N把钥匙插进锁孔,只听见‘卡嗒’一声,锁开了。\n", me);
		message("vision","外面传来一阵开锁的声音,只听见‘卡嗒’一声,锁开了。\n",room);
	}
	message_vision("$N轻轻推开门,走了进去,随手把门掩了起来。\n",me);
	message("vision", "有人走了进来,随手把门掩上了。\n",room);
	me->move(room);
	return 1;
}
Beispiel #20
0
int do_climb (string arg)
{
	object npc,me,room;
	int dodge;
	me = this_player();
	dodge = me->query_skill("move",1);
	if (!arg || (arg != "tree" && arg != "光阴树" && arg != "up"))
		return notify_fail("你要爬什么?\n");
	else if( npc = present("bancha bana", this_object()) )
	{
		message_vision("$N斜瞥了$n一眼:班察的五花神箭很久没有饮血了,你莫非想试一下?\n",npc,me);
		return notify_fail("看来不杀班察巴那,是上不了树的.\n");
	}
	else if (dodge < 120)
		return notify_fail("树太高,你的轻功太差,爬不上去耶(需120级)\n");
	else
	{
		room = find_object(__DIR__"birdhouse");
		if(!room)
			room=load_object(__DIR__"birdhouse");
		message_vision("$N手足并用,慢慢的爬上光阴树.\n",me);
		me->move(room);
		me->start_busy(2);
        	message("vision",me->name()+"从树下爬了上来。\n",room,me);
		return 1;
	}
}
Beispiel #21
0
void check_trigger()
{
    object room;

    if(!query("exits/enter") ) {
        if( !(room = find_object(__DIR__"chuan")) )
            room = load_object(__DIR__"chuan");
        if( room = find_object(__DIR__"chuan") ) {
            if((int)room->query("zuo_trigger")==0 ) {
                room->set("zuo_trigger", 1);
                set("exits/enter", __DIR__"chuan");
                room->set("exits/out", __FILE__);
                message("vision", "一艘木船从海上漂了过来。\n", this_object() );
                message("vision", "木船缓缓的靠岸了。\n", room);
                remove_call_out("on_board");
                call_out("on_board", 15);
            }
            else
                message("vision", "木船正驶向岸边,看样子还得耐心地等等。\n",this_object() );
        }
        else
            message("vision", "ERROR: chuan not found\n", this_object() );
    }
    else 
        message("vision", "木船已经靠岸了,随时都可上去。\n",
            this_object() );
}
Beispiel #22
0
varargs mixed do_codesay_str(string str) {
    string filename = DIR_TMP + "/" + this_player()->GetKeyName() + ".codesay";
    if( !str ) {
        write("Huh?");
        return 1;
    }
    if(!creatorp(this_player())) {
        write("This is a command for creators.");
        return 1;
    }
    if(strsrch(str,";") == -1){
        write("You codesay: "+"%^BOLD%^CYAN%^"+str+"%^RESET%^");
        say(this_player()->GetCapName()+" codesays: "+
                "%^BOLD%^CYAN%^"+str+"%^RESET%^");
    }
    else {
        str = replace_string(str, ";", ";\n");
        str = replace_string(str, "{", "{\n");
        str = replace_string(str, "}", "}\n");
        write_file(filename,str,1);
        write_file(filename+"_rule","I",1);
        load_object(CMD_LSED)->cmd(filename+"_rule "+filename);
        write("You codesay: ");
        say(this_player()->GetCapName()+" codesays: ");
        tell_room(environment(this_player()),"\n"+
                "%^BOLD%^CYAN%^"+read_file(filename)+"%^RESET%^");
    }
    return 1;
}
Beispiel #23
0
int
main() {
	asn_TYPE_descriptor_t *td = &asn_DEF_UserIdentifier;
	UserIdentifier_t user;
	UserIdentifier_t user_new;
	int ret;

	memset(&user, 0, sizeof user);
	memset(&user_new, 0, sizeof user_new);

	user.present = UserIdentifier_PR_phoneNumber;
	OCTET_STRING_fromBuf(
		&user.choice.phoneNumber,
		"0123456789", -1);

	/* Save->Load must succeed */
	save_object(&user, td);
	ret = load_object(&user_new, td);

	assert(user_new.present == UserIdentifier_PR_phoneNumber);

	assert(ret == 0);

	printf("OK\n");

	return ret;
}
Beispiel #24
0
int do_mianbi()
{
        object me, mengzhu, room;
        int shen, ep, gain;
        me = this_player();
        shen = me->query("shen");
        ep = me->query("combat_exp");

        if (me->is_busy()
        || me->query_temp("pending/exercising")
        || me->query_temp("exit_blocked"))
                return notify_fail("你现在正忙着呢。\n");

        if (me->query("jing") < 200 || me->query("jingli") < 200)
        return notify_fail("你觉得烦躁不安,难以聚精入定。\n");
        
        message_vision("$N面对着石梁跌坐静思,良久,似有所悟。\n", me);

        me->start_busy(8);
        me->set("jing",1);
        me->add("jingli", -200);

        if(!( room = find_object("/d/taishan/fengchan")) )
        room = load_object("/d/taishan/fengchan");
        seteuid(getuid(me));
        if( !objectp(mengzhu = present("mengzhu", room)) ){
        mengzhu = new("/clone/npc/meng-zhu");
        mengzhu->move("/d/taishan/fengchan");
        }
Beispiel #25
0
string ask_jingtie()
{
	int num;
	object me=this_player();
	object jingtie,room;
	string job_flg;

	job_flg = judge_jobmsg(me,1);
	if (job_flg != "打造火枪")
		return "这位"+RANK_D->query_respect(me)+"好象没有造火枪的任务吧。\n";
	
	if (present("jing tie",me) )
	{
		command("hmm "+me->query("id"));
		return "你不是已经有一块了吗?还想要,真是贪得无厌。\n";
	}

	if ( get_jingtie_num() <= 0 )
		return "对不起,我这里已经没有精铁了。\n";

	command("nod "+me->query("id"));
	message_vision("吴劲草拿了一块精铁给$N\n",me);
        if (!(room = find_object("/d/mingjiao/mj_center.c")))
		room = load_object("/d/mingjiao/mj_center.c");
	room->add("jingtie",-1);

	jingtie=new(OBJ_PATH"/jingtie");
	jingtie->move(me);

	return "这是兄弟们辛辛苦苦炼出来的精铁,你要用它好好打造兵器。\n";
}
Beispiel #26
0
/* 
 * Called to init a shared library.
 */
Object::Object (const pdstring fileName, const Address /*BaseAddr*/,
        void (*err_func)(const char *))
  :AObject(fileName,err_func)
{

  load_object(true);
}
Beispiel #27
0
void DynamicDataLoader::load_deferred( deferred_json &data )
{
    while( !data.empty() ) {
        const size_t n = data.size();
        auto it = data.begin();
        for( size_t idx = 0; idx != n; ++idx ) {
            try {
                std::istringstream str( it->first );
                JsonIn jsin( str );
                JsonObject jo = jsin.get_object();
                load_object( jo, it->second );
            } catch( const std::exception &err ) {
                debugmsg( "Error loading data from json: %s", err.what() );
            }
            ++it;
        }
        data.erase( data.begin(), it );
        if( data.size() == n ) {
            std::ostringstream discarded;
            for( const auto &elem : data ) {
                discarded << elem.first;
            }
            debugmsg( "JSON contains circular dependency. Discarded %i objects:\n%s",
                      data.size(), discarded.str().c_str() );
            data.clear();
            return; // made no progress on this cycle so abort
        }
    }
}
Beispiel #28
0
int do_open(string arg)
{
	object env = this_object();
	object who = this_player();
	object letter = present("feng yin", who);
	object guard = present("shan shen", env);
	object shandi = load_object(__DIR__"shandi");
	object prisoner = letter ? find_player(letter->query("prisoner_id")) : 0;

	if( !arg || arg != "zhou" ) 
		return notify_fail("你要打开什么?\n");

	if (!letter || letter->query("savior_id") != getuid(who))
		return notify_fail("你没有得到佛祖的点化,无法五行山下定心猿。\n");

	if (!prisoner || environment(prisoner) != shandi)
		return notify_fail("山下没有压着人!\n");

	if(!guard && !who->query_temp("kill_guard")) {
		guard = new(__DIR__"guard");
		guard->move(env);
		guard->copy_status(who);
		message_vision(CYN"$N正要去揭开咒符,突然面前出现了一个人。\n"NOR, who);
		who->set_temp("kill_guard", 1);
		return 1;
	}
Beispiel #29
0
int do_push(string arg)
{
	object room;

	if (is_open())
	return notify_fail("门已经是开着了。\n");

	if (!arg || (arg != "door" && arg != "men"))
	return notify_fail("你要推什么?\n");

	room = find_object(query("restroom"));
	if(! objectp(room) )
	room = load_object(query("restroom"));	
	
	if(objectp(room))
	{
		if( room->query_inside_person()<=0 )
		{
			open_door();
			message_vision("$N轻轻地把门推开。\n", this_player());
			room->open_door(__FILE__);
			remove_call_out("close_men");
			call_out("close_men", 10);
		}
		else 
		{
			message_vision("$N想把门推开,却发觉门被人从里面闩上了。\n",this_player());
		}
	}

	return 1;
}
Beispiel #30
0
void check_trigger()
{
    object room;

    if(!query("exits/enter") ) {
        if( !(room = find_object(__DIR__"duchuan")) )
            room = load_object(__DIR__"duchuan");
        if( room = find_object(__DIR__"duchuan") ) {
            if((int)room->query("yell_trigger")==0 ) {
                room->set("yell_trigger", 1);
                set("exits/enter", __DIR__"duchuan");
                room->set("exits/out", __FILE__);
                message("vision", "一叶扁舟缓缓地驶了过来,艄公将一块踏脚"
                    "板搭上堤岸,以便乘客\n上下。\n", this_object() );
                message("vision", "艄公将一块踏脚板搭上堤岸,形成一个向上"
                    "的阶梯。\n", room);
                remove_call_out("on_board");
                call_out("on_board", 15);
            }
            else
                message("vision", "只听得江面上隐隐传来:“别急嘛,"
                    "这儿正忙着呐……”\n",this_object() );
        }
        else
            message("vision", "ERROR: boat not found\n", this_object() );
    }
    else 
        message("vision", "岸边一只渡船上的老艄公说道:正等着你呢,上来吧。\n",
            this_object() );
}