//weilai 2009 7.18
#include <ansi.h>
#define JG 50000//
#define DZ 2//打折
#define JGXYB 1
inherit NPC;
 mapping *baoshi=({(["name":"铸剑图谱","id":"shenjian pu","xqlb":"w","leixin":"sword"]),
  (["name":"铸刀图谱","id":"dao pu","xqlb":"w","leixin":"blade"]),
            (["name":"铸叉图谱","id":"shencha pu","xqlb":"w","leixin":"fork"]),
            (["name":"铸棍图谱","id":"gun pu","xqlb":"w","leixin":"stick"]),
            (["name":"铸鞭图谱","id":"bian pu","xqlb":"w","leixin":"whip"]),
            (["name":"铸锤图谱","id":"chui pu","xqlb":"w","leixin":"hammer"]),
            (["name":"铸枪图谱","id":"qiang pu","xqlb":"w","leixin":"spear"]),
            (["name":"铸杖图谱","id":"zhang pu","xqlb":"w","leixin":"staff"]),
            (["name":"铸斧图谱","id":"fu pu","xqlb":"w","leixin":"axe"]),
            (["name":"铸锏图谱","id":"jian pu","xqlb":"w","leixin":"mace"]),
            (["name":"铸甲图谱","id":"kaijia pu","xqlb":"f","leixin":"armor"]),
            (["name":"铸衫图谱","id":"shan pu","xqlb":"f","leixin":"cloth"]),
            (["name":"铸裳图谱","id":"xiong pu","xqlb":"f","leixin":"cloth"]),
            (["name":"铸盔图谱","id":"kui pu","xqlb":"f","leixin":"head"]),
            (["name":"铸钗图谱","id":"chai pu","xqlb":"f","leixin":"head"]),
            (["name":"铸鞋图谱","id":"xie pu","xqlb":"f","leixin":"boots"]),
            (["name":"项链图谱","id":"xianglian pu","xqlb":"f","leixin":"neck"]),
            (["name":"护腕图谱","id":"huwan pu","xqlb":"f","leixin":"wrists"]),
            (["name":"铸戒图谱","id":"jiezhi pu","xqlb":"f","leixin":"finger"]),
            (["name":"腰带图谱","id":"yaodai pu","xqlb":"f","leixin":"waist"]),
            (["name":"披风图谱","id":"pifeng pu","xqlb":"f","leixin":"surcoat"]),
            (["name":"护手图谱","id":"hushou pu","xqlb":"f","leixin":"hands"]),
            (["name":"盾牌图谱","id":"dunpai pu","xqlb":"f","leixin":"shield"]),
            });

            int *daohang=({200,500,1000,4000,10000,25000,40000});
            int *daohang2=({50,100,200,500,1000,2000,4000,6000,10000,15000,20000,25000,30000,35000});
 int cha(int *a,int b);
 int cha2(int *a,int b);
   int vawue(int s,string xx);
        int do_buy2(int a,string tupu,int dh);


mixed shengcheng(string arg)
{
     string tupu,*zong;//所有图谱
     int dh;
    object ob;
    string *shitou;
    mapping shi;
   
           
            if(arg)
              if( sscanf(arg, "%s for %d", tupu, dh)==2 )
              {
                  if(tupu=="ss")
                  {
                     ob=new("/u/weilai/dazao/tupu/jian");//生成初始图谱
                     shi=baoshi[random(sizeof(baoshi))];
                     shitou=keys(shi);//所有属性
                  if(shi["xqlb"]=="w")
                          dh=cha2(daohang,dh);
                         if(shi["xqlb"]=="f")
                            dh=cha2(daohang2,dh);
                         ob->set("daohang",dh);//确定道行
                  for(int i=0;i<sizeof(shitou);i++)
                    {
                        ob->set(shitou[i],shi[shitou[i]]);
                    }
                          ob->set_name(BLINK""HIY+shi["name"]+NOR, ({shi["id"]}));
                           ob->miaosu();
                          return ob;

                  }
                  if(dh<50||dh>40000) return 0;
                  for(int j=0;j<sizeof(baoshi);j++)
                  {
                      if(tupu==baoshi[j]["id"])
                      {
                          ob=new("/u/weilai/dazao/tupu/jian");
                          shitou=keys(baoshi[j]);
                          if(baoshi[j]["xqlb"]=="w")
                              if(!cha(daohang,dh)) return 0;
                         if(baoshi[j]["xqlb"]=="f")
                            if(!cha(daohang2,dh)) return 0;
                         ob->set("daohang",dh);//确定道行
                         shitou=keys(baoshi[j]);
                           for(int i=0;i<sizeof(shitou);i++)
                    {
                        ob->set(shitou[i],baoshi[j][shitou[i]]);
                    }
                          ob->set_name(BLINK""HIY+baoshi[j]["name"]+NOR, ({baoshi[j]["id"]}));
                          ob->miaosu();
                          return ob;
                      }
                  }
                  if(!ob) return 0;
              }
            return 0;
}
 int cha(int *a,int b)
 {
     if(!a||!sizeof(a)) return 0;
     for(int i=0;i<sizeof(a);i++)
     {
         if(b==a[i])
             return 1;
     }
     return 0;
 }
  int cha2(int *a,int b)
 {
      int c,d;
     if(!a||!sizeof(a)) return 0;
     for(int i=0;i<sizeof(a);i++)
     {
         if(b==a[i])
             return b;
         if(i>1)
         if(b<a[i])
             return a[i-1];


     }
     return 0;
 }
  int sssccc(string arg)
{
      object me,ob;

      me=this_player();
    if(ob=shengcheng(arg))
        ob->move(me);
      return 1;
}
  int list()
  {
      string mm;
      mm="此处的物品如下\n";
      for(int i=0;i<sizeof(baoshi);i++)
      {
           mm+=sprintf("%s(%s)   黄金价格： %d，或 西游币价格 ： %d\n",baoshi[i]["name"],baoshi[i]["id"],JG/10000,JGXYB);

      }
      mm+="您看到的价格是基础价格想要查询具体的价格请输入指令jiage id for 道行\n";
      write(mm);
      return 1;
  }
  int jiage(string arg)
  {
  string brg,tupu,*shitou;
  int dh,l;
        if( sscanf(arg, "%s for %d", tupu, dh)==2 )
            if(!tupu) {write("无此图谱"); return 1;}

         for(int j=0;j<sizeof(baoshi);j++)
                  {
                      if(tupu==baoshi[j]["id"])
                      {
                          shitou=keys(baoshi[j]);
                          if(baoshi[j]["xqlb"]=="w")
                          {

                                  dh=cha2(daohang,dh);
                                  write(sprintf("%d 年道行的%s（%s）价格是%d黄金或%d西游币\n",dh,baoshi[j]["name"],tupu,vawue(dh,"gold"),vawue(dh,"xyb")));
                                  l=1;
                                  return 1;
          
                              
                          }
                              if(baoshi[j]["xqlb"]=="f")
                              {  dh=cha2(daohang2,dh);
                            write(sprintf("%d 年道行的%s（%s）价格是%d黄金或 %d西游币\n",dh,baoshi[j]["name"],tupu,vawue(dh,"gold"),vawue(dh,"xyb")));
                            l=1;
                            return 1;
                      }
                      }
                    
      
  }
         if(!l)   write("无此图谱\n");

         return 1;
  }
         int vawue(int s,string xx)
         {
         int ss;
         if(xx=="gold")
         {
          if(s<=10000)
              ss=s*(JG/10000)*DZ/10;
         if(s>10000)
             ss=3*s*(JG/10000)*DZ/10/2;
          if(ss<100) ss=100;
         }
         if(xx=="xyb")
         {
          if(s<10000)
              ss=s/700;
          if(s>=10000)
              ss=2+s/1000;
         }
         if(ss<=0) ss=1;
         return ss;
         }
         int do_buy(string arg)
         {
             string brg,tupu,*shitou;
             int dh,l,d;
             if(!arg)
                 brg="请输入buy 图谱id for 道行\n";
             else if(sscanf(arg, "%s for %d", tupu, dh)!=2)
                 brg="格式错误 请输入buy 图谱id for 道行\n";
             if(brg){write(brg);return 1;}
             if(dh<0||dh>40000)     return notify_fail("道行输入有误！\n");




                      for(int j=0;j<sizeof(baoshi);j++)
                  {
                      if(tupu==baoshi[j]["id"])
                      {
                          shitou=keys(baoshi[j]);
                          if(baoshi[j]["xqlb"]=="w")
                          {

                                  d=cha(daohang,dh);
                                  l=1;

                          }
                              if(baoshi[j]["xqlb"]=="f")
                              {  d=cha(daohang2,dh);
                              l=1;
                      }
                          if(!d) return notify_fail("无此道行的"+baoshi[j]["name"]+"\n");
                      }
                    

  }
  if(!l)  return notify_fail("无此图谱\n");
                     jiage(arg);
write("请输入你要购买的方式【1】为普通方式【2】为西游币方式");
input_to("do_buy2",tupu,dh);
return 1;
     }
         int do_buy2(string b,string tupu,int dh)
         {
             object me,ob,g_ob;
             int jj,a,gc,xyk;//价格
             string brg,ka;
             me=this_player();
             a=atoi(b);
             if(a==1)
             {
              jj=  vawue(dh,"gold");
              //////
              	if (g_ob = present("gold", me))
		gc = g_ob->query_amount();
              brg="开始对所携带黄金进行成色检验\n";
              if(gc)
                 brg+=this_object()->query("name")+"检查黄金数额为"+gc+"\n";
              if(gc<jj)
              
                  if(present("baijing ka", me)||present("master card", me))
                  {
              xyk=me->query("c_balance");
              if(present("baijing ka", me))
              ka=present("baijing ka", me)->query("name");
              if(present("master card", me))
                   ka=present("master card", me)->query("name");
                   }
              if(xyk)
              {
                   brg+="所携带黄金数额不足支付，对"+ka+"进行查账\n";
              if((xyk/10000+gc)<jj)
              {
                  brg+=ka+"与现金总和不足支付\n";
                  write(brg);
                  write(CYN + name() + "冷笑道：“穷光蛋，一边呆着去！”\n" NOR);
		return 1;
              }
                   if(g_ob)
              destruct(g_ob);
                   me->add("c_balance",-(jj-gc)*10000);
                   brg+="图谱总额"+jj+"\n现金支付"+gc+ka+"支付"+(jj-gc)+"\n";
                   write(brg);
                   set_temp("busy", 1);
                ob=shengcheng(sprintf("%s for %d",tupu,dh));
        if(!ob)   return write("生成失败！\n");
                write("购买成功\n");
	ob->move(me,1);
        return 1;
              }
              if(brg)
                  write(brg+"\n");
           //////////////
             // if(gc>=jj)
              switch (MONEY_D->player_pay(me,jj*10000))
	{
	case 0:
		write(CYN + name() + "冷笑道：“穷光蛋，一边呆着去！”\n" NOR);
		return 1;
	case 2:
		write(CYN + name() + "皱眉道：“您还有没有零"
			"钱啊？银票我可找不开。”\n" NOR);
		return 1;
	default:
		set_temp("busy", 1);
                ob=shengcheng(sprintf("%s for %d",tupu,dh));
        if(!ob)   return write("生成失败！\n");
                write("购买成功\n");
	ob->move(me,1);
        return 1;

              }

              /////////////////////////////
             }
             if(a==2)
             {
                 jj=vawue(dh,"xyb");
                 ///////////////////////////////////
                 {
	if(me->query("lxqxyb")<jj)
		return notify_fail("您的西游币不够！ \n");
              ob=shengcheng(sprintf("%s for %d",tupu,dh));
              if(!ob)   return write("生成失败！\n");
	ob->move(me,1);
	me->add("lxqxyb",-jj);
	write("购买成功\n");
	return 1;

	}
                 /////////////////////////////////////////
             }
             write("怎么忽视"+a);
               return notify_fail("购买失败！\n");
         }