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)); } }
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)); } }
public void Send(string destination, string action, string message, Player source, bool echo = true) { Player destPlayer = GetPlayerNode(destination); if (destPlayer != null) { Send(source, destPlayer, action, message, echo); } else { source.Talk(ServerPlayer, "Não há ninguém chamado '" + destination + "' aqui"); } }
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()); }
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)); }
public virtual void Describe(Player player) { player.Talk(global::Server.Instance.ServerPlayer, Description); }
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; }
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)); }
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)); }
public virtual void Take(Player player) { player.Talk(global::Server.Instance.ServerPlayer, string.Format("Não parece possível carregar {0} confortavelmente", Name)); }
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)); }
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; } }
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)); }
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); } }