示例#1
0
 public override void Leave(Player player)
 {
     if (player.Items.Contains(this))
     {
         player.Items.Remove(this);
         player.Room.Items.Add(this);
         player.Scream(player, Name, "largou");
     }
     else
     {
         global::Server.Instance.LogWindow.Log(string.Format("{0} tentou largar um item {1} que ele não possui", player.Name, Name));
     }
 }
示例#2
0
 public override void Take(Player player)
 {
     if (player.Items.Contains(this))
     {
         player.Talk(global::Server.Instance.ServerPlayer, string.Format("Você já possui {0}", Name));
     }
     else if (player.Room.Items.Contains(this))
     {
         player.Room.Items.Remove(this);
         player.Items.Add(this);
         player.Scream(player, Name, "pegou");
     }
     else
     {
         global::Server.Instance.LogWindow.Log(string.Format("{0} tentou pegar um item {1} que não está nem no inventário nem na sala", player.Name, Name));
     }
 }
示例#3
0
文件: Room.cs 项目: diogoriba/Kroz
 public override void Go(string target, Player player)
 {
     target = target.ToLower();
     if (neighbors.ContainsKey(target))
     {
         if (!doors.ContainsKey(target) || !doors[target].Locked)
         {
             player.Scream(player, "", "deixa a sala pela saída " + target);
             player.Room = neighbors[target];
             player.Scream(player, "", "entra na sala");
             player.Room.Describe(player);
         }
         else
         {
             player.Talk(global::Server.Instance.ServerPlayer, doors[target].Description + " impede sua passagem");
         }
     }
     else
     {
         player.Talk(global::Server.Instance.ServerPlayer, "Não há saída na direção " + target);
     }
 }
示例#4
0
文件: Door.cs 项目: diogoriba/Kroz
        public override bool UseOn(Item source, Player player)
        {
            if (source.Name.Equals(KeyName))
            {
                Locked = !Locked;
                string text;
                string action;
                if (Locked)
                {
                    action = "fecha uma porta";
                    text = LockDescription;
                }
                else
                {
                    action = "abre uma porta";
                    text = UnlockDescription;
                }
                player.Scream(player, text, action);
                return true;
            }

            return false;
        }
示例#5
0
文件: Key.cs 项目: diogoriba/Kroz
 public override void Use(Command command, Player player)
 {
     string tail = string.Join("", command.Tail);
     Item targetItem = player.Find(tail) ?? player.Room.Find(tail);
     if (targetItem != null)
     {
         if (player.Items.Contains(this))
         {
             player.Scream(player, "", "usa uma chave em " + tail);
             if (targetItem.UseOn(this, player) && Consumable)
             {
                 player.Items.Remove(this);
             }
         }
         else
         {
             player.Talk(global::Server.Instance.ServerPlayer, string.Format("Do que você está falando? Não há nada chamado {0}", Name));
         }
     }
     else
     {
         player.Talk(global::Server.Instance.ServerPlayer, string.Format("Do que você está falando? Não há nada chamado {0}", tail));
     }
 }
示例#6
0
文件: Item.cs 项目: diogoriba/Kroz
        public virtual void Inventory(Player author)
        {
            Dictionary<string, int> inventory = new Dictionary<string, int>();
            foreach (Item item in author.Items)
            {
                if (inventory.ContainsKey(item.Name))
                {
                    inventory[item.Name] += 1;
                }
                else
                {
                    inventory.Add(item.Name, 1);
                }
            }

            StringBuilder result = new StringBuilder();
            result.AppendLine("Lista de itens:");
            foreach (string key in inventory.Keys)
            {
                result.AppendLine(string.Format("{0}\tx{1}", key, inventory[key]));
            }

            author.Talk(global::Server.Instance.ServerPlayer, result.ToString());
        }
示例#7
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual void Take(Player player)
 {
     player.Talk(global::Server.Instance.ServerPlayer, string.Format("Não parece possível carregar {0} confortavelmente", Name));
 }
示例#8
0
文件: Map.cs 项目: diogoriba/Kroz
 public override void Describe(Player player)
 {
     string[] parameters = global::Server.Instance.Map.Select(room => player.Room == room ? "X" : " ").ToArray();
     Description = string.Format(mapString, parameters);
     base.Describe(player);
 }
示例#9
0
文件: Player.cs 项目: diogoriba/Kroz
 public override void Scream(Player author, string message, string action = "grita")
 {
     global::Server.Instance.Send(author, action, message);
 }
示例#10
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual void Go(string target, Player player)
 {
     player.Talk(global::Server.Instance.ServerPlayer, string.Format("\"{0}\" não é um lugar onde você possa ir", Name));
 }
示例#11
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual bool UseOn(Item source, Player player)
 {
     player.Talk(global::Server.Instance.ServerPlayer, string.Format("{0} não parece interagir com {1} de nenhuma maneira interessante", source.Name, Name));
     return false;
 }
示例#12
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual void Describe(Player player)
 {
     player.Talk(global::Server.Instance.ServerPlayer, Description);
 }
示例#13
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual void Talk(Player author, string message, string action = "fala")
 {
     author.Talk(global::Server.Instance.ServerPlayer, string.Format("Você fala \"{0}\" para {1}, mas a falta de consciência de {1} parece ser um problema para a compreensão de sua mensagem", message, Name));
 }
示例#14
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual void Use(Command command, Player player)
 {
     player.Talk(global::Server.Instance.ServerPlayer, string.Format("Como assim? Não me parece o momento apropriado para usar {0}", Name));
 }
示例#15
0
文件: Player.cs 项目: diogoriba/Kroz
 public override void Talk(Player author, string message, string action = "fala")
 {
     global::Server.Instance.Send(author, this, action, message);
 }
示例#16
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual void Scream(Player author, string message, string action = "grita")
 {
     author.Talk(global::Server.Instance.ServerPlayer, string.Format("Após berrar \"{0}\" vigorosamente você se sente mais calmo, mas {1} não parece se importar", message, Name));
 }
示例#17
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual void Parse(Command command, Player player)
 {
     string message = String.Join(" ", command.Tail.ToArray());
     switch (command.Verb)
     {
         case "examinar":
             Describe(player);
             break;
         case "falar":
             Talk(player, message);
             break;
         case "gritar":
             Scream(player, message);
             break;
         case "inventario":
             Inventory(player);
             break;
         case "usar":
             Use(command, player);
             break;
         case "pegar":
             Take(player);
             break;
         case "largar":
             Leave(player);
             break;
         default:
             player.Talk(global::Server.Instance.ServerPlayer, string.Format("Você não pode {0} {1}", command, Name));
             break;
     }
 }
示例#18
0
文件: Item.cs 项目: diogoriba/Kroz
 public virtual void Leave(Player player)
 {
     player.Talk(global::Server.Instance.ServerPlayer, string.Format("Você tenta, mas {0} não quer deixar suas mãos", Name));
 }
示例#19
0
文件: Room.cs 项目: diogoriba/Kroz
 public override void Parse(Command command, Player player)
 {
     switch (command.Verb)
     {
         case "ir":
             string destination = command.Tail.FirstOrDefault();
             Go(destination, player);
             break;
         case "examinar":
             DetailedDescribe(player);
             break;
         default:
             base.Parse(command, player);
             break;
     }
 }