Exemplo n.º 1
0
        public void Craftsman_Build_Armor()
        {
            DateTime start  = DateTime.Now;
            IResult  result = craftsman.Build(npc.Object, pc.Object, AvalableItemPosition.Feet, 1, "keyword", "sentenceDescription", "shortDescription", "lookDescription", "examineDescription");

            Assert.IsFalse(result.AllowAnotherCommand);
            Assert.AreEqual("", result.ResultMessage);
            Assert.AreEqual(1, craftsmanObjects.Count);
            ICraftsmanObject craftsmanObject = craftsmanObjects[0];
            IArmor           item            = craftsmanObject.Item as IArmor;

            Assert.IsNotNull(item);
            Assert.AreEqual(AvalableItemPosition.Feet, item.ItemPosition);
            Assert.AreEqual(1, item.Level);
            Assert.AreEqual(1, item.KeyWords.Count);
            Assert.AreEqual("keyword", item.KeyWords[0]);
            Assert.AreEqual("sentenceDescription", item.SentenceDescription);
            Assert.AreEqual("shortDescription", item.ShortDescription);
            Assert.AreEqual("lookDescription", item.LookDescription);
            Assert.AreEqual("examineDescription", item.ExamineDescription);
            Assert.AreEqual(1, craftsmanObject.CraftsmanId.Zone);
            Assert.AreEqual(2, craftsmanObject.CraftsmanId.Id);

            DateTime end = DateTime.Now;

            Assert.IsTrue(start.AddMinutes(1) <= craftsmanObject.Completion);
            Assert.IsTrue(end.AddMinutes(1) >= craftsmanObject.Completion);
        }
Exemplo n.º 2
0
        public void Craftsman_Build_Held()
        {
            DateTime start  = DateTime.Now;
            IResult  result = craftsman.Build(npc.Object, pc.Object, AvalableItemPosition.Held, 1, "keyword", "sentenceDescription", "shortDescription", "longDescription", "examineDescription");

            Assert.IsTrue(result.ResultSuccess);
            Assert.AreEqual("", result.ResultMessage);
            Assert.AreEqual(1, craftsmanObjects.Count);
            ICraftsmanObject craftsmanObject = craftsmanObjects[0];
            IEquipment       item            = craftsmanObject.Item as IEquipment;

            Assert.IsNotNull(item);
            Assert.AreEqual(AvalableItemPosition.Held, item.ItemPosition);
            Assert.AreEqual(1, item.Level);
            Assert.AreEqual(1, item.KeyWords.Count);
            Assert.AreEqual("keyword", item.KeyWords[0]);
            Assert.AreEqual("sentenceDescription", item.SentenceDescription);
            Assert.AreEqual("shortDescription", item.ShortDescription);
            Assert.AreEqual("longDescription", item.LongDescription);
            Assert.AreEqual("examineDescription", item.ExamineDescription);
            Assert.AreEqual(1, craftsmanObject.CraftsmanId.Zone);
            Assert.AreEqual(2, craftsmanObject.CraftsmanId.Id);

            DateTime end = DateTime.Now;

            Assert.IsTrue(start.AddMinutes(1) <= craftsmanObject.Completion);
            Assert.IsTrue(end.AddMinutes(1) >= craftsmanObject.Completion);
        }
Exemplo n.º 3
0
        public IResult PerformCommand(IMobileObject performer, ICommand command)
        {
            IPlayerCharacter pc = performer as IPlayerCharacter;

            if (pc == null)
            {
                return(new Result(false, "Only player characters can receive."));
            }

            Tuple <INonPlayerCharacter, ICraftsman> foundCraftsman = null;

            foreach (INonPlayerCharacter npc in performer.Room.NonPlayerCharacters)
            {
                foreach (IPersonality personality in npc.Personalities)
                {
                    ICraftsman craftsman = personality as ICraftsman;
                    if (craftsman != null)
                    {
                        foundCraftsman = new Tuple <INonPlayerCharacter, ICraftsman>(npc, craftsman);
                        break;
                    }
                }
                if (foundCraftsman != null)
                {
                    break;
                }
            }

            if (foundCraftsman == null)
            {
                return(new Result(false, "No craftsman found at this location."));
            }

            bool foundItem = false;

            for (int i = pc.CraftsmanObjects.Count - 1; i >= 0; i--)
            {
                ICraftsmanObject craftsmanObject = pc.CraftsmanObjects[i];

                if (craftsmanObject.CraftsmanId.Zone == foundCraftsman.Item1.Zone &&
                    craftsmanObject.CraftsmanId.Id == foundCraftsman.Item1.Id &&
                    craftsmanObject.Completion < DateTime.Now)
                {
                    pc.Items.Add(craftsmanObject.Item);
                    pc.CraftsmanObjects.RemoveAt(i);
                    foundCraftsman.Item1.EnqueueCommand($"Tell {pc.KeyWords[0]} As promised, here is your {craftsmanObject.Item.KeyWords[0]}.");
                    foundItem = true;
                }
            }

            if (foundItem)
            {
                return(new Result(true, ""));
            }
            else
            {
                foundCraftsman.Item1.EnqueueCommand($"Tell {pc.KeyWords[0]} Sorry I don't have anything for you to pick up at this time.");
                return(new Result(false, ""));
            }
        }
Exemplo n.º 4
0
        public void Craftsman_Build_Weapon()
        {
            DateTime start  = DateTime.Now;
            IResult  result = craftsman.Build(npc.Object, pc.Object, AvalableItemPosition.Wield, 1, "keyword", "sentenceDescription", "shortDescription", "lookDescription", "examineDescription", DamageType.Pierce);

            Assert.IsFalse(result.AllowAnotherCommand);
            Assert.AreEqual("", result.ResultMessage);
            Assert.AreEqual(1, craftsmanObjects.Count);
            ICraftsmanObject craftsmanObject = craftsmanObjects[0];
            IWeapon          item            = craftsmanObject.Item as IWeapon;

            Assert.IsNotNull(item);
            Assert.AreEqual(AvalableItemPosition.Wield, item.ItemPosition);
            Assert.AreEqual(1, item.Level);
            Assert.AreEqual(1, item.KeyWords.Count);
            Assert.AreEqual("keyword", item.KeyWords[0]);
            Assert.AreEqual("sentenceDescription", item.SentenceDescription);
            Assert.AreEqual("shortDescription", item.ShortDescription);
            Assert.AreEqual("lookDescription", item.LookDescription);
            Assert.AreEqual("examineDescription", item.ExamineDescription);
            Assert.AreEqual(1, craftsmanObject.CraftsmanId.Zone);
            Assert.AreEqual(2, craftsmanObject.CraftsmanId.Id);

            DateTime end = DateTime.Now;

            Assert.IsTrue(start.AddMinutes(1) <= craftsmanObject.Completion);
            Assert.IsTrue(end.AddMinutes(1) >= craftsmanObject.Completion);

            IDamage damage = new Objects.Damage.Damage(GlobalReference.GlobalValues.DefaultValues.DiceForWeaponLevel(item.Level));

            Assert.AreEqual(1, item.DamageList.Count);
            IDamage itemDamge = item.DamageList[0];

            Assert.AreEqual(damage.BonusDamageStat, itemDamge.BonusDamageStat);
            Assert.AreEqual(damage.BonusDefenseStat, itemDamge.BonusDefenseStat);
            Assert.AreEqual(damage.Dice.Die, itemDamge.Dice.Die);
            Assert.AreEqual(damage.Dice.Sides, itemDamge.Dice.Sides);
            Assert.AreEqual(DamageType.Pierce, itemDamge.Type);
        }