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)); } }
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 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); } }
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; }
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 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 Take(Player player) { player.Talk(global::Server.Instance.ServerPlayer, string.Format("Não parece possível carregar {0} confortavelmente", Name)); }
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); }
public override void Scream(Player author, string message, string action = "grita") { global::Server.Instance.Send(author, action, message); }
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 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 Describe(Player player) { player.Talk(global::Server.Instance.ServerPlayer, Description); }
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 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 override void Talk(Player author, string message, string action = "fala") { global::Server.Instance.Send(author, this, action, message); }
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 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; } }