Exemple #1
0
int main(string args)
{
    int i;
    object targetob, *roominv, *playerinv;
    playerinv = all_inventory(this_player());
    roominv = all_inventory(environment(this_player()));

    if(!args) return(notify_fail("SYNTAX: info <thing>\n"));
    if(args == ("here"||"room")) targetob = environment(this_player());
    if(args == ("me"||"self")) targetob = this_player();
    else{
        for(i=0;i < sizeof(roominv); i++) if(roominv[i]->id(args))
          targetob = roominv[i];
        for(i=0;i < sizeof(playerinv); i++) if(playerinv[i]->id(args))
          targetob = playerinv[i];
    }
    if(targetob){
        write(
          "Path: "+file_name(targetob)+"\n"
          "Launchpad: http://bazaar.launchpad.net/~dock9/dock9/trunk/annotate/head%3A/lib"
             +file_name(targetob)+".c\n" //This should try to see the extension, not assume .c
          "Short name: "+targetob->query_short()+"\n"
          "Heartbeat "+query_heart_beat(targetob)+"\n"
        );
        return 1;
    }
    else return(notify_fail("SYNTAX: info <thing>\n\n"+args+" is not a valid thing.\n"));
}
Exemple #2
0
int main(object me, string arg)
{
        int i, j;
        object obj, *inv;
        string *id;

        if( !arg ) {
                inv = all_inventory(me);
                if( !sizeof(inv) )
                        return notify_fail("你身上没有任何东西。\n");
        write( "你身上携带物品的别称如下(右方) :\n");
                for(i=0; i<sizeof(inv); i++) {
                        if( !me->visible(inv[i]) ) continue;
                        printf("%-20s = %s\n", inv[i]->name(),
                                implode(inv[i]->parse_command_id_list(), ", ") 
);
                }
                return 1;
        }

        if( arg=="here" ) {
                inv = all_inventory(environment(me));
                if( !sizeof(inv) )
                        return notify_fail("这里没有任何东西。\n");
        write( "在这个房间中, 生物及物品的(英文)名称如下 :\n");
                for(i=0; i<sizeof(inv); i++) {
                        if( !me->visible(inv[i]) ) continue;
                        printf("%-20s = %s\n", inv[i]->name(),
                                implode(inv[i]->parse_command_id_list(), ", 
") );
                }
                return 1;
        }
Exemple #3
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;
}
Exemple #4
0
int valid_leave(object me, string dir)
{
        object *inv;
        object ob;
        int i;
        if( userp(me))
        {
        if( dir == "north" 
        && !random(10) && ob=present("garrison", this_object()))
        {
                inv = all_inventory(me);
                for(i=0; i<sizeof(inv); i++)
           {
                        if((int)(inv[i]->query("weapon_prop")) && (int)(inv[i]->query("equipped")))
                        return notify_fail(ob->name()+"向你喝道:不可手持兵器入风云城!\n");    
                        
                }
        }
        if( dir == "up" && ob=present("garrison", this_object()))
        {
                inv = all_inventory(me);
                for(i=0; i<sizeof(inv); i++)
                {
                        if(((string)(inv[i]->name()) == "风云战甲") && (int)(inv[i]->query("equipped")))
                        return 1; 
                }
                return notify_fail(ob->name()+"向你喝道:闲杂人等不可上登护城墙!\n");
        }
                tell_room("/d/fywall/supgate",
                "城墙下" + me->name() + "往" + to_chinese(dir) + "离开了。\n");
        
         if( me->query("class")== "shenshui"||me->query("class")== "knight"||
            me->query("class")== "bat"||me->query("class")== "wolfmount")
            {
                if( dir == "north" && ob=present("garrison", this_object()))
        {
                inv = all_inventory(me);
                for(i=0; i<sizeof(inv); i++)
                {
                        if(((string)(inv[i]->name()) == "风云战甲") && (int)(inv[i]->query("equipped")))
                        return 1; 
                }
                return notify_fail(ob->name()+"大声喝止:皇上有令,番帮野民,不得入城!\n");
        }
                tell_room("/d/fywall/supgate",
                "城墙下" + me->name() + "往" + to_chinese(dir) + "离开了。\n");
         }
        return 1;
        
        }
                else return 1;
}      
Exemple #5
0
int do_leave() 
{
  object *inv,env,me,*inv_con,env_con,mbox; 
  string data,data_con;
  int i,staff_count,j,con_count,item_count;

  con_count=0;
  staff_count=0;
  me=this_player();
  env=environment(me);
  inv=all_inventory(env);

  if(sizeof(inv)) {
    if(sizeof(inv)>MAX_STAFF)
       return notify_fail("你在房间里放了太多的东西,连门都打不开了。"); 
    for(i=0;i<sizeof(inv);i++){
     if(inv[i]->is_character());
     else{
      if(inv[i]->is_container())
       {
         item_count=0;
         env_con=present((string)inv[i]->query("id"),environment(me));
         inv_con=all_inventory(env_con);
         for(j=0;j<sizeof(inv_con);j++){
           if(inv_con[j]->is_character());
           else{ 
            data_con = base_name(inv_con[j])+".c";
            me->set("container"+sprintf("%d/%d",con_count,item_count),data_con);
            destruct(inv_con[j]);
            item_count=item_count+1;
            }       
          }
          con_count=con_count+1;
       }
      data=base_name(inv[i])+".c"; 
      me->set("homestaff/"+sprintf("%d",staff_count),data);
      destruct(inv[i]);
      staff_count=staff_count+1;
      }
    }
   }
   if( mbox = me->query_temp("mbox_ob") ) {
                tell_object(me, "你将信箱交回领班. \n");
                destruct(mbox);
        }

   tell_object(me,"你摁铃招来领班\n
   “出门哪您?”领班毕恭毕敬的接过你手中的钥匙,恭送你出了大门。\n");  
   me->save();
   me->move("/open/mac/qianfo/shungeng.c");
   return 1;
 }
Exemple #6
0
void do_tests() {
#ifndef __NO_ENVIRONMENT__
    int s = sizeof(all_inventory(this_object()));
    
    ASSERT(sizeof(all_inventory()) == s);
    
    for (int i = 0; i < 5; i++) {
	ASSERT(sizeof(all_inventory()) == s + i);
	clone_object(file_name());
    }
    ASSERT(filter(all_inventory(this_object()), (: !$1->is_all_inv_test() :)));
#endif
}
Exemple #7
0
int main(string arg)
{
     int i;
     object target;
     object *inventory;

     if(!arg) target = this_player();
     else
     {
          if(arg[0]!='/') arg = resolve_path(this_player()->query("cwd"), arg);
          if(arg[<2..<1] != ".c") arg += ".c";
          if(!target) target = find_object(arg);
          if(!target) target = present(arg, this_player());
          if(!target) target = present(arg, environment(this_player()));
     }

     if(!target) return notify_fail("Error [clean]: Error locating target.\n");
     write("Success [clean]: Destryoing all objects in '" + target->query_short() + "'.\n");
     inventory = all_inventory(target);

     for(i=0; i<sizeof(inventory); i++)
     {
          if(inventory[i]->query("no_clean") || inventory[i]->clean_up()) continue;
          if(living(inventory[i])) continue;

          write("\tObject '" + inventory[i]->query_short() + "' destroyed.\n");
          inventory[i]->remove();

     }

     return 1;
}
Exemple #8
0
void init()
{
// clean up all trash
	object room;
	int i;
	object *inv;
	dest_trash();
	room = environment(this_object());
	if(room)
	{
	inv = all_inventory(room);
        for(i=0; i<sizeof(inv); i++) {

	if( userp( inv[i]) ) 
	{
	if ( !random(5))
	set_leader(inv[i]);
	continue;
	}
	if( inv[i]->query("no_shown")) continue;
	if( inv[i]->query("no_get")) continue;
        if( inv[i]->is_character()) continue;
        if( inv[i]->is_corpse()) continue;
	command("get "+ inv[i]->query("id"));
	}
	}

}
Exemple #9
0
int valid_leave(object me, string dir)
{
        object ob;
	object *inv;
	int i;
        if( dir == "west" && !(int)this_object()->query("enter_permission") && ob = present("guinu",this_object()))
        {
		message_vision("$N望望天,对$n笑着说:时辰尚早,姑娘们还在睡,您...\n", ob, me);
		return		notify_fail("忍耐一下吧!\n");
        }
        if( dir == "west" &&  ob = present("guinu",this_object()))
        {
                inv = all_inventory(me);
                for(i=0; i<sizeof(inv); i++)
                {
                        if((int)inv[i]->query("weapon_prop"))
			return notify_fail(ob->name()+"向你笑道:千金楼有千金楼的楼规,您请看牌.\n");
			if((int)inv[i]->query("food_remaining") != 0)
			return notify_fail(ob->name()+"向你笑道:千金楼有千金楼的楼规,您请看牌.\n");
			if((int)inv[i]->query("liquid/remaining") !=0)
			return notify_fail(ob->name()+"向你笑道:千金楼有千金楼的楼规,您请看牌.\n");
			if((int)inv[i]->is_container()) 
//			if(check_container(inv[i]))
			return notify_fail(ob->name()+"向你笑道:千金楼有千金楼的楼规,您请看牌.\n");
		}
        me->set("food",0);
        me->set("water",0);
        }
	return 1;
}
Exemple #10
0
int main(object me, string arg)
{
	object ob, *inv;
	int i, count;

	if( !arg ) return notify_fail("你要装备什么武器?\n");

	if(this_player()->query_temp("weapon"))
		return notify_fail("你已经装备武器了。\n");

	if(arg=="all")
	{
		inv = all_inventory(me);
		for(count=0, i=0; i<sizeof(inv); i++) {
			if( inv[i]->query("equipped") ) continue;
			if(this_player()->query_temp("weapon")) break;
			if(do_wield(me, inv[i]) ) count ++;
		}
		write("好了。\n");
		return 1;
	}

	if( !objectp(ob = present(arg, me)) )
		return notify_fail("你身上没有这样东西。\n");

	if( ob->query("equipped") )
		return notify_fail("你已经装备着了。\n");

	return do_wield(me, ob);
}
Exemple #11
0
int valid_leave(object me, string dir)
{
        mapping myfam;
        object wp, *inv;
        int i, j=0;

        if ( dir == "up" )
        {
			inv = all_inventory(this_object());
    
			for (i = 0; i < sizeof(inv); i++)
				if ( objectp(inv[i]) && living(inv[i]) && (inv[i]->query("sjsz/team_name") != me->query("sjsz/team_name"))  && inv[i]->query("id") !="sheying shi" )
                {
                        j++;
                        if (objectp(wp = inv[i]->query_temp("weapon")))
                                message_vision("$N对$n喝道:尔等邪魔歪道人物,要想过此路,得先问问我手中的"
                                + wp->query("name")+ "答应不答应!\n", inv[i], me); 
                        else 
                                message_vision("$N对$n喝道:只要我在,尔等邪魔歪道人物,便休想过此路!\n", inv[i], me);
                }
           
	        if (j) return notify_fail("\n");    
        }
        
        return ::valid_leave(me, dir);
}
Exemple #12
0
int main(object me, string arg)
{
	int i;
	object *inv, ob;

	if( wizardp(me) && arg ) {
		ob = find_player(arg);
		if( !ob ) ob = find_living(arg);
		if( !ob ) ob = present(arg, environment(me));
	}

	if( !ob ) ob = me;

	inv = all_inventory(ob);
	if( !sizeof(inv) ) {
		write((ob==me)? "目前你身上没有任何东西。\n"
			: ob->name() + "身上没有携带任何东西。\n");
		return 1;
	}
	printf("%s身上带著下列这些东西(负重 %d%%):\n%s\n",
		(ob==me)? "你": ob->name(),
		(int)ob->query_encumbrance() * 100 / (int)ob->query_max_encumbrance(),
		implode(map_array(inv, "inventory_desc", this_object()), "\n") );

	return 1;
}
Exemple #13
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;
}
Exemple #14
0
void init() 
{
        int i;
        object* inv;
        object me = this_object();
  delete("exits/out");
  if(this_player()->query_temp("shendian/jinmigong_kill") >= 2)
    {
        message_vision(HIY"\n刹那间所有的剑都消失了,出口出现了。\n\n"NOR,this_player());
     set("exits/out", __DIR__"zhenwai");
    } 
 if (!((this_player()->query_temp("shendian/jinmigong") == "begin") || (this_player()->query("id") == "shen jiang")))
   {
    message_vision(HIW"\n岂有此理,$N是怎么进来的?出去!\n\n"NOR,this_player());
    this_player()->move("/d/city/kezhan");
   }
 if (this_player()->query_temp("shendian/jinmigong") == "begin")
    {
    remove_call_out ("check_hp");
    call_out ("check_hp", 3,this_player());
    }
        inv = all_inventory(this_player());
        for(i=0; i<sizeof(inv); i++) 
        {
                if( inv[i]->query_unique() ) {
message_vision(HIW"突然间,$n化一道白光飞去,无影无踪!\n"NOR,inv[i]);
                        destruct(inv[i]);
                }
        }
   add_action ("do_cast","cast");
}
Exemple #15
0
int valid_leave(object me, string dir)
{
    object guard, *inv, letter;
    int i;

    if(dir != "up")
        return ::valid_leave(me, dir);
    inv=all_inventory(me);
    i=sizeof(inv);
    me->delete_temp("condition/carrying_player");
    if(objectp(present("luo chun", environment(me))))
   guard=present("luo chun", environment(me));
    if(!guard) return ::valid_leave(me,dir);
    while (i--)
    {
        if (userp(inv[i]))
            me->add_temp("condition/carrying_player", 1);
        continue;
    }
    if(me->query_temp("condition/carrying_player"))
    {
        return notify_fail(CYN "罗春喝道:呔!若想上楼,先把背上的那个放下了!\n"NOR);
    }
    if (!(letter=present("shu xin", me)
       && letter->query("header")=="秦琼至罗成") 
     && me->query("family/master_id")!="luo cheng"
     && guard)
    {
        return notify_fail(CYN "罗春喝道:呔!楼上乃贵人居住之处,不得擅闯!\n"NOR);
    }

    //finally...
    return ::valid_leave(me, dir);
}
Exemple #16
0
int do_give(string arg)
{
	object obj, obj2, me, *inv, who;
	string item;
	int amount, i;

	me = this_player();

	if(!arg) return notify_fail("你要给谁什么东西?\n");

	if( sscanf(arg, "%s to ding", item) == 1 || sscanf(arg, "ding %s", item)==1 );
		else 
			return notify_fail("你要给谁什么东西?\n");

	if(!objectp(who = present("jia ding", environment(me))) || !living(who))
		return notify_fail("这里没有这个人。\n");

	if(sscanf(item, "%d %s", amount, item)==2)
	{
		if( !objectp(obj = present(item, me)) )	
			return notify_fail("你身上没有这样东西。\n");
		if( !obj->query_amount() )	
			return notify_fail( obj->name() + "不能被分开给人。\n");
		if( amount < 1 )
			return notify_fail("东西的数量至少是一个。\n");
		if( amount > obj->query_amount() ) 
			return notify_fail("你没有那么多的" + obj->name() + "。\n");
		else 
			if( amount == (int)obj->query_amount() )
				return do_giveto(me, obj2);
			else
			{
				obj->set_amount( (int)obj->query_amount() - amount );
				obj2 = new(base_name(obj));
				obj2->set_amount(amount);
				if (do_giveto(me, obj2))
					return 1;
				else
				{
					obj->set_amount((int)obj->query_amount() + amount);
					return 0;
				}
			}
	}

	if(arg=="all")
	{
		inv = all_inventory(me);
		for(i=0; i<sizeof(inv); i++)
		{
			do_giveto(me, inv[i]);
		}
		write("Ok.\n");
		return 1;
	}

	if(!objectp(obj = present(item, me)))
		return notify_fail("你身上没有这样东西。\n");
	return do_giveto(me, obj);
}
Exemple #17
0
int main(object me, string arg)
{
	string what, who;
	object ob, obj, victim;
	int sp, dp;

	if( !wizardp(me) && environment(me)->query("no_fight") )
		return notify_fail("这里禁止行窃。\n");

	if( !wizardp(me) && environment(me)->query("no_steal") )
               return notify_fail(HIR"这里禁止行窃 \n"NOR);
       //By waiwai@mszj 2000/10/30

	if( !wizardp(me) && environment(me)->query("no_kill") )
               return notify_fail(HIR"这里禁止行窃 \n"NOR);
       //By waiwai@mszj 2000/10/30

	if( me->query_temp("stealing") )
		return notify_fail("你已经在找机会下手了!\n");

      if(me->query("combat_exp") <= 500000)
       return notify_fail(HIR"功夫这么差就想学着偷东西吗?\n"NOR);
       //By waiwai@mszj 2000/10/30

	if( !arg || sscanf(arg, "%s from %s", what, who)!=2 ) return
		notify_fail("指令格式:steal <物品> from <人物>\n");

	victim = present(who, environment(me));
	if( !victim || victim==me) return notify_fail("你想行窃的对象不在这里。\n");
        if(!valid_kill(me,victim,0)) return 0;

	if( !wizardp(me) && wizardp(victim) )
		return notify_fail("玩家不能偷巫师身上的东西。\n");

	if( !ob = present(what, victim) ) {
		object *inv;
		inv = all_inventory(victim);
		if( !sizeof(inv) )
			return notify_fail( victim->name() + "身上看起来没有什么值钱的东西好偷。\n");
		ob = inv[random(sizeof(inv))];
	}
	sp = (int)me->query_skill("stealing",1) * 5 +((int)me->query("kar")+(int)me->query("age"))*2
		- (int)me->query("thief") * 20;
	if( sp < 1 ) sp = 1;
	if( me->is_fighting() ) {
		sp /= 2;
//		me->start_busy(3);
	}
	dp = ((int)victim->query("sen")+(int)victim->query("age")+(int)victim->query_kar())*2+(int)ob->weight()/25;
	if( victim->is_fighting() ) dp *= 10;
	if( ob->query("equipped") ) dp *= 10;

	write("你不动声色地慢慢靠近" + victim->name() + ",等待机会下手 ...\n\n");

	me->set_temp("stealing", 1);
	me->add("steal_times",1);
	call_out( "complete_steal", 3, me, victim, ob, sp, dp);

	return 1;
}
Exemple #18
0
void wield_new_weapon()
{
    object old_weapon = query_temp("weapon");
    object me = this_object();
    object *inv;
    int i;
    string wskill, pskill;
    
    if (old_weapon) {
	/*
	if (old_weapon->is_unique()) {
	    "/cmds/std/drop.c"->do_drop(me, old_weapon);
	}else{
	    destruct(old_weapon);
	}
	*/
	"/cmds/std/drop.c"->do_drop(me, old_weapon);
    }
    inv = all_inventory(me);
    for (i=sizeof(inv)-1; i>=0; i--){
	if (inv[i]->query("weapon_prop")) {
	    "/cmds/std/wield.c"->do_wield(me, inv[i]);
	    wskill = inv[i]->query("skill_type");
	    pskill = me->query_skill_mapped(wskill);
	    if (pskill) {
		map_skill("parry", pskill);
	    }
	    if (inv[i]->is_unique()) {
		me->delete("default_weapon");
	    }else{
Exemple #19
0
void do_drink()
{
    object *list, ob;
    int i, can_drink;
    if ((int)this_object()->query("water") >= 380) return;
    list = all_inventory(this_object());
    i = sizeof(list);
    can_drink = 0;
    while (i--) {
        if ((string)list[i]->query("liquid/type") == "alcohol") {
            ob = list[i];
            can_drink = 1;
        }
    }
    if (can_drink) {
        command("drink "+(string)ob->query("id"));
        if ((int)ob->query("liquid/remaining") == 0)
            command("drop wineskin");
    }
    else {
        command("sigh");
        command("say 酒..... 给我酒....");
    }
    return;
}
Exemple #20
0
int conjure(object me, object target)
{
	
	object *inv;
	int lvl, i, num;
	
	lvl = me->query_skill("ninjitsu",1);	
	if (lvl < 100)
    	return notify_fail("追牙需要100级忍术。\n");
	
	if( me->query("atman") < 300 )
		return notify_fail("追牙需要300点的灵力!\n");
        if (userp(me))	me->add("atman", -300);
	
	message_vision(RED"一团血雾从$N手中撒出,无声无息地在半空中炸开。。\n"NOR,me);
	
	inv = all_inventory(environment(me));
	for (i=0;i<sizeof(inv);i++)
	{
		if( inv[i]==me ) continue;
		if( inv[i]->is_corpse() ) continue;
		if( !inv[i]->is_character()) continue;
		if(!COMBAT_D->legitimate_kill(me,inv[i]))	continue;
     	if( wizardp(inv[i]) && inv[i]->query("wiz_invis"))	continue;
        if (ANNIE_D->check_buff(inv[i],"invisible")>0) 
           {
           		message_vision(RED"$N未及闪避,已溅上了数滴血珠,一阵晕眩。\n"NOR,inv[i]);
                inv[i]->perform_busy(3);
                ANNIE_D->debuff(inv[i],"invisible");
           	    inv[i]->set("timer/no_shade",time());
           }	
    }
    return 1;
}        
Exemple #21
0
int do_say(string arg)
{
	object *inv, me = this_player();
	int i, count = 0;

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

	inv = all_inventory(environment(me));

/*	for (i=0; i<sizeof(inv); i++) {
		if (inv[i]->is_character() && 
		(string)inv[i]->query("family/family_name") != "丐帮" ) count ++;
	}
*/
	
	if( (arg=="天堂有路你不走呀" || arg=="地狱无门你进来啊" )
	&& this_player()->query("family/family_name") == "丐帮")
	{
		write("只听里面有人说了声:是本帮兄弟吧?快请进来吧。\n");
		message("vision", "树洞边上一堵墙缓缓移了开来,原来是道小木门。\n", this_player());
		set("exits/down", __DIR__"undertre");

		remove_call_out("close");
		call_out("close", 3, this_object());
		return 1;
	}
	else if ( (arg=="天堂有路你不走呀" || arg=="地狱无门你进来啊" ) 
	&& this_player()->query("family/family_name") != "丐帮" ) 
	{
		write("只听里面有人说了声:阁下光临敝帮有何贵干?\n");
		return 1;
	}

	return 0;
}
Exemple #22
0
int perform(object me, object target)
{
	int i;
	object env;
	object * inv;

	if(userp(me))
		return notify_fail("你所选用的武功中没有这种必杀技。。\n");

	if( !me->is_fighting())
		return notify_fail("「鬼神破灭」只能对战斗中的对手使用。\n");
	
	message_vision(HIY"\n$N反握左拳平举,右掌虚抱胸前,眉间隐隐泛起一层黑气。" NOR, me);
	message_vision(HIY"\n$N眼中精光陡然大盛,断声喝道:"HIR"燹"HIY"!\n\n" NOR, me);
	message_vision(HIY"一道奇异的旋流自$N身边散开,漫过在场的每个人,幻化为七彩异境。\n" NOR, me);
	env = environment(me);
	inv = all_inventory(env);
	for(i=0; i<sizeof(inv); i++) {
		if (check_legit(inv[i])) continue;
		if (!COMBAT_D->legitimate_kill(me, inv[i])) continue;
		purgepets(me, inv[i]);
	}
	if (userp(me))
		me->start_busy(2);
	else
		me->start_busy(1);
	return 1;
}
Exemple #23
0
int
cmd_mist(string str)
{
    if (!spell())
	return notify_fail("What?\n");

    if (this_player()->query_disable())
	return notify_fail("You are busy.\n");

    if (this_player()->query_mp() < 50)
	return notify_fail("Your magic powers are exhausted.\n");

    if (environment(this_player())->query_property("no magic"))
	return notify_fail("A mysterious force prevents you from casting this spell.\n");

    this_player()->add_mp(-30 - random(50));
    write("A steamy mist forms around you...");
    message("info", "A mist slowly starts to form around "+this_player()->query_cap_name()+"!",
      environment(this_player()), this_player());
    this_player()->set_magic_round();
    this_player()->set_disable();

    call_out("cast_mist", 1, environment(this_player()), all_inventory(environment(this_player())));

    return 1;
}
Exemple #24
0
int clean_up()
{
	object *inv;
	int i;

	if( !clonep() && this_object()->query("no_clean_up") )
		return 1;

	if( interactive(this_object()))
		return 1;

	// by babe
	// 若此物件已被其他物件所包含, 就不再重复 clean_up, 以节省时间
	// 请勿再 environment()->query("no_clean_up");
	if(environment())
		return 1;

	inv = all_inventory();
	for( i=sizeof(inv)-1; i>=0; i-- )
		if(interactive(inv[i]))
			return 1;

	destruct(this_object());

	return 0;
}
Exemple #25
0
void begin_kill(object me,string target)
{  object obj,*ob;
   int i,flag=0;
   if(!me->query_condition("zzz_mission"))
   return;
   if (me->query_temp("zzz_job_type")!="保护"||me->query_temp("zzz_job_target")!=target)
   return;
   ob = all_inventory(environment(me));
   for(i=0; i<sizeof(ob); i++)
   {
   if( !living(ob[i])||userp(ob[i])||ob[i]==me ) continue;
   if(ob[i]->query("name")==target)
   {flag=1;
	break;
   }
   }
   if (flag==0)
   { call_out("begin_kill",30,me,target);
     return;	   
   } 
	obj=new(__DIR__"killer");
	obj->move(environment(me));
    if(random(10)>7||me->query("id")=="zzz")
	{obj->do_copy(me,1);
	 obj->set("title",HIR"天宫败类"NOR);
	 me->set_temp("zzz_job_super",1);
	}
	else
	obj->do_copy(me,0);
	obj->set_temp("must_killby",me->query("id"));
	message_vision(GRN"\n$N对着"+target+"发出一阵阴笑声,令"+target+"全身上下的寒毛根根竖起,不寒而栗。\n"NOR,obj); 
	message_vision(HIY"$N对$n喝道:大胆狂徒,竟敢在这撒野!!\n"NOR,me,obj);    
    message_vision(HIY"$N阴阴一笑:要你多管闲事,去死吧!!\n"NOR,obj);
    obj->kill_ob(me);
}
Exemple #26
0
main(string param) {
   object ob, *obs, i, n, env;
   string s;

   ADM_CHECK

   if(!param) {
      msg("==> [Format] nuke <objects>");
      return 1;
   }

   ob = find_thing(param);

   if(!ob) {
      notify_fail("==> [Error] Unable to locate object "+param+"\n");
      return 0;
   }

   obs = all_inventory( ob );

   set_target(ob);
   this_player()->msg_local("~CBRT~Name ~verbclap ~poss hands. A heavy banging sound is heard, like a cannon-shot.~CDEF");

   foreach( ob : obs ) {
      if( !ob->query_is_player() )
         destruct(ob);
   }
   return 1;
}
Exemple #27
0
int main(object me, string arg)
{
        object ob, *inv;
        int i, count;
 
        if( !arg ) return notify_fail("你要穿戴什么?\n");
        arg = lower_case(arg);
 
        if(arg=="all") {
                inv = all_inventory(me);
                for(count=0, i=0; i<sizeof(inv); i++) {
                        if( inv[i]->query("equipped") ) continue;
                        if(do_wear(me, inv[i]) ) count ++;
                }
                write("Ok.\n");
                return 1;
        }
 
        if( !objectp(ob = present(arg, me)) )
                return notify_fail("你身上没有这样东西。\n");
 
        if( ob->query("equipped") )
                return notify_fail("你已经装备着了。\n");
 
        return do_wear(me, ob);
}
Exemple #28
0
int main(object me, string arg)
{
	object ob, *inv;
	int i, count;

	if( !arg ) return notify_fail("��Ҫ����ʲ�᣿\n");

	if(arg=="all") {
		inv = all_inventory(me);
		for(count=0, i=0; i<sizeof(inv); i++) {
			if( inv[i]->query("equipped") ) continue;
			if(do_wear(me, inv[i]) ) count ++;
		}
	if (!count)
		write("�ܴ��Ķ������ˡ�������\n");
		return 1;
	}

	if( !objectp(ob = present(arg, me)) )
		return notify_fail("������û������������\n");

	if( ob->query("equipped") )
		return notify_fail("���Ѿ��������ˡ�\n");

	return do_wear(me, ob);
}
Exemple #29
0
int valid_leave(object me, string dir)
{
	object *inv;
	object ob;
	if( userp(me))
	{
	switch(random(9)){
		case 0:
	message_vision("$N脚下一滑,在独木桥上晃了晃..\n",me);
	return notify_fail("还好,没掉下去!\n");
		break;
		case 1:
	inv = all_inventory(me);
	if(sizeof(inv)>=1)	
	{
		ob = inv[random(sizeof(inv))];
	message_vision(ob->name()+"从$N身上滑了出来,落入万丈深渊.\n",me);
		destruct(ob);
	}
	tell_object(me,"你在独木桥上前仰后合地晃着...\n");
	return 1;
		break;
		default:
		return 1;
		break;
			}
	return 1;
	}
	else
	return 1;
}
Exemple #30
0
void finish_party(object who)
{
	object me=this_object();
        int i;
        object *list;

	message_vision("$N����˵������ϯ�ʹ˽�������л��ҹ��٣�\n", me);

	// mon
	environment(me)->set("resource/nuerhong",0);

	command("gongxi " + who->query("id"));

	me->delete_temp("party_start_already");
	who->delete_temp("host_of_party");
//	who->set_temp("married_party", 1);
	list=all_inventory(environment(me));
	i=sizeof(list);
	while (i--)
	{
		if(list[i]->query("id") != "ban niang")
			continue;
		else
			destruct (list[i]);
	}
}