Exemple #1
0
        public void SetDone()
        {
            if (Type == ConditionType.Loot || Type == ConditionType.Acquire)
            {
                var itemNeeded   = (string)Parameters["ItemName"];
                var amountNeeded = (int)(long)Parameters["Amount"];
                var item         = RPG.PlayerData.Inventory.FirstOrDefault(i => i.Name == itemNeeded);
                if (!Parameters.ContainsKey("Current"))
                {
                    Parameters.Add("Current", 0);
                }
                Parameters["Current"] = item != null?Math.Min(amountNeeded, item.Quantity) : 0;

                Done = item != null && item.Quantity >= amountNeeded;
            }
            else
            {
                switch (Type)
                {
                case ConditionType.Kill:
                case ConditionType.DestroyVehicle:
                    var currentAmount = Convert.ToInt32(Parameters["Current"]);
                    var amountNeeded  = Convert.ToInt32(Parameters["Amount"]);
                    Done = currentAmount >= amountNeeded;
                    break;

                case ConditionType.Interact:
                    break;

                case ConditionType.Escort:
                    break;

                case ConditionType.Race:
                    break;

                case ConditionType.EvadeCops:
                    break;

                case ConditionType.Custom:
                    Done = QuestRepository.GetCustomCondition(QuestName, Name);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }