Ejemplo n.º 1
0
            private static bool CheckTarget(Ability ability, Unit unit)
            {
                foreach (AbilityInfoGetter infoGetter in ability.m_InfoGetters)
                {
                    if (infoGetter.m_Automatic)
                    {
                        continue;
                    }

                    if (infoGetter.GetType() == typeof(SelectTargetInfoGetter))
                    {
                        SelectTargetInfoGetter select = (SelectTargetInfoGetter)infoGetter;
                        select.GetAvaliableTargets(unit);

                        List <FieldBlock>   options     = select.m_AvaliableBlocks;
                        List <TargetOption> optionsList = EvaluateOptions(ability, options);

                        if (optionsList.Count == 0)
                        {
                            return(false);
                        }

                        if (Common.RandomOptionOfBest <TargetOption>(optionsList).score < 0)
                        {
                            return(false);
                        }

                        SelectTargets(select, optionsList);
                    }
                }
                return(true);
            }
Ejemplo n.º 2
0
            private static void SelectTargets(SelectTargetInfoGetter select, List <TargetOption> optionsList)
            {
                select.Reset();
                select.EnemySelect = true;
                for (int i = 0; i < select.m_Num; i++)
                {
                    TargetOption target = Common.RandomOptionOfBest <TargetOption>(optionsList);

                    select.m_Blocks.Add(target.block);

                    if (!select.m_CanRepeat)
                    {
                        optionsList.Remove(target);
                    }
                }
            }