private void PerformLook(string[] words)
{
if ((words != null) && (words.Length > 1))
{
// Look at
string name = String.Join(" ", words, 1, words.Length - 1);
IEntity at = Location.ResolveName(name);
if (at == this)
{
SendMessage("You look fabulous!");
}
else if (at != null)
{
SendMessage("You see {0} {1}.", at.Name, at.State ?? "standing nearby");
if (at is CombatEntity)
{
var ce = (CombatEntity)at;
SendMessage(
"{0} has {1} health points remaining{2}",
at.Name, ce.CurrentHealth, ce.InCombat ? " and is currently engaged in battle." : "."
);
}
}
else
{
SendMessage("You don't see '{0}' around here.", name);
}
}
else
{
// Look around
if (Location.Description != null)
{
SendMessage(Location.Description);
}
if (Location.Exits.Count != 0)
{
SendMessage("Exits from this location:");
for (int i = 0; i < Location.Exits.Count; i++)
{
SendMessage("{0}: {1}", Location.Exits[i].Name, Location.Exits[i].Description);
}
}
foreach (var e in this.Location.Entities)
{
if (e.Value != this)
{
SendMessage("{0} is {1}.", e.Value.Description, e.Value.State ?? "standing nearby");
}
}
}
}