Пример #1
0
            private static void SetRequirement(string gearName, int numberRequired, Action_WhiteoutGearRequirements instance, string journalDisplayName = null)
            {
                var itemRequirements = instance.requiredItemsList.value;
                var displayNames     = instance.requiredItemsHeaderList;
                //var itemRequirement = itemRequirements.FirstOrDefault(i => i.name == gearName);
                var itemRequirement = FirstRequirementWithSameName(itemRequirements, gearName);

                if (itemRequirement != null)
                {
                    if (numberRequired == 0)
                    {
                        var index = itemRequirements.IndexOf(itemRequirement);
                        itemRequirements.RemoveAt(index);
                        displayNames.RemoveAt(index);
                    }
                    else
                    {
                        itemRequirement.amount = numberRequired;
                    }
                }
                else
                {
                    if (numberRequired == 0)
                    {
                        return;
                    }

                    // TODO: Condition required?
                    var newItemRequirement = new InventoryItemRequirement(gearName, numberRequired, false, null, null);
                    itemRequirements.Add(newItemRequirement);
                    displayNames.Add(journalDisplayName);
                }
            }
Пример #2
0
        public override void Notify(DOLEvent e, object sender, EventArgs args)
        {
            base.Notify(e, sender, args);
            GamePlayer player = sender as GamePlayer;

            if (player == null)
            {
                return;
            }

            AbstractQuest quest = player.IsDoingQuest(typeof(BonesToBlades));

            if (quest == null)
            {
                return;
            }

            if (Step > 0 && e == GameLivingEvent.EnemyKilled)
            {
                EnemyKilledEventArgs gArgs = (EnemyKilledEventArgs)args;
                for (int i = 0; i < mobTypes.Length; i++)
                {
                    if (gArgs.Target.Name.IndexOf(mobTypes[i]) >= 0)
                    {
                        InventoryItemRequirement requirement = new InventoryItemRequirement(null, armBone, 2, eComparator.Less);
                        if (requirement.Check(e, player, args))
                        {
                            GiveItemAction action = new GiveItemAction(null, armBone, null);
                            action.Perform(e, sender, args);
                        }

                        if (!requirement.Check(e, player, args))
                        {
                            if (quest.Step == 1)
                            {
                                quest.Step = 2;
                            }
                        }

                        return;
                    }
                }
            }
        }
Пример #3
0
        public override void Notify(DOLEvent e, object sender, EventArgs args)
        {
            base.Notify(e, sender, args);
            GamePlayer player = sender as GamePlayer;

            if (player == null)
                return;

            AbstractQuest quest = player.IsDoingQuest(typeof(BonesToBlades));
            if (quest == null)
                return;

            if (Step > 0 && e == GameLivingEvent.EnemyKilled)
            {
                EnemyKilledEventArgs gArgs = (EnemyKilledEventArgs)args;
                for (int i = 0; i < mobTypes.Length; i++)
                {
                    if (gArgs.Target.Name.IndexOf(mobTypes[i]) >= 0)
                    {
                        InventoryItemRequirement requirement = new InventoryItemRequirement(null, armBone, 2, eComparator.Less);
                        if (requirement.Check(e, player, args))
                        {
                            GiveItemAction action = new GiveItemAction(null, armBone, null);
                            action.Perform(e, sender, args);
                        }

                        if (!requirement.Check(e, player, args))
                        {
                            if (quest.Step == 1)
                            {
                                quest.Step = 2;
                            }
                        }

                        return;
                    }
                }
            }
        }