Example #1
0
            public void BeginInteraction()
            {
                foreach (unit possibleAuraCarrier in this)
                {
                    DBABILITIES auras = possibleAuraCarrier.acquiredAbilities.GetSpecific(
                        AbilitySpecs.IsAura,
                        AbilityMatchType.Intersects,
                        TargetType.Ally | TargetType.Allies | TargetType.Friend | TargetType.Self);

                    foreach (DBABILITY aura in auras)
                    {
                        foreach (unit possibleAuraTarget in this)
                        {
                            if (aura.TargetsMatch(possibleAuraTarget))
                            {
                                possibleAuraTarget.Buffs.Add(aura);
                            }
                        }
                    }
                }
            }
Example #2
0
        internal void PrepareInfo()
        {
            /////////////////////////
            //  PRE-CALC STATISTICS
            //////////////////////////

            ///////////////
            // on attack //
            ///////////////

            attackStacked = StackedAbilities.GetPossibleCombinations <FreeStackedAbilities>(unit.onAttackAbilities);
            onAttackStats = new StackedAbilityResults(attackStacked);

            ////////////////
            // on defense //
            ////////////////

            defenseStacked = StackedAbilities.GetPossibleCombinations <FreeStackedAbilities>(unit.onDefenceAbilities);

            DBDAMAGE       normalDamage    = new DBDAMAGE(armorDamage, AttackType.Hero, DamageType.Normal);
            AbilityResults initial_results = new AbilityResults();

            initial_results.SetDbDamage("DAMAGE", normalDamage);

            onNormalDefenseStats = new StackedAbilityResults(defenseStacked, initial_results);

            //////////////
            // on enemy //
            //////////////

            onEnemyAbilities = unit.acquiredAbilities.GetSpecific(AbilitySpecs.Any,
                                                                  AbilityTriggerType.Always,
                                                                  AbilityMatchType.NotIntersects,
                                                                  TargetType.None, TargetType.Self);
            onEnemyStats = new StackedAbilityResults(onEnemyAbilities);
        }
Example #3
0
        internal void ArrangeResearchAbilities(DBABILITIES abilities)
        {
            researchPointsPanel.Visible = false;

            unit hero = abilities.Owner as unit;
            if (hero == null) return;

            List<DBABILITY> baseAbils = abilities.GetRange(hero.BaseHeroAbilList);
            List<DBABILITY> availableForResearch = (researchRestriction == 0) ? abilities.GetWithAvailableResearchPoints(hero.BaseHeroAbilList) : baseAbils;

            bool found;
            for (int i = 0; i < abilitySlots.Count; i++)
            {
                found = false;
                Button b = abilitySlots[i] as Button;

                foreach (DBABILITY ability in baseAbils)
                    if (ability.Profile.ResearchSlotPriority == i)
                    {
                        PlaceResearchAbility(b, ability.Profile, availableForResearch.Contains(ability));
                        found = true;
                        break;
                    }

                if (!found)
                    PlaceResearchAbility(b, null, false);
            }
        }
Example #4
0
        internal void ArrangeReadyAbilities(DBABILITIES abilities)
        {
            int researchPoints = Current.unit.IsHero ? Current.unit.Level - Current.unit.heroAbilities.GetTotalResearchPoints(Current.unit.BaseHeroAbilList) : 0;
            if (researchPoints != 0)
            {
                researchPointsLabel.Text = researchPoints + "";
                researchPointsLabel.Width = (researchPointsLabel.Text.Length > 2) ? 19 : 15;

                researchPointsPanel.BackColor = Color.Black;
                researchPointsPanel.Visible = true;
                researchPointsPanel.BringToFront();
                researchPointsPanel.BackColor = Color.Gold;
            }
            else
                researchPointsPanel.Visible = false;

            int matchesFound = 0;

            foreach (Button c in abilitySlots)
            {
                matchesFound = 0;

                // find ability for that button

                foreach (DBABILITY ability in abilities)
                    if (ability.IsAvailable && ability.IsVisible && c.Name == "skill_" + ability.Profile.SlotPriority + "B")
                    {
                        matchesFound++;
                        if (matchesFound > 1)
                        {
                            Button emptySlot = GetEmptyAbilitySlot();
                            if (emptySlot != null)
                                PlaceAbility(emptySlot, ability.Profile);
                            matchesFound--;
                        }
                        else
                            PlaceAbility(c, ability.Profile);
                    }

                if (matchesFound == 0)
                    PlaceAbility(c, null);
            }
        }
Example #5
0
 internal void ArrangeAbilities(DBABILITIES abilities)
 {
     if (isResearching)
         ArrangeResearchAbilities(abilities);
     else
     if (fastResearch)
         ArrangeReadyAbilities(abilities);
     else
         ArrangeReadyAbilities(abilities.GetSpecific(AbilitySpecs.IsLearned));
 }
Example #6
0
        internal void PrepareInfo()
        {
            /////////////////////////
            //  PRE-CALC STATISTICS
            //////////////////////////

            ///////////////
            // on attack //
            ///////////////

            attackStacked = StackedAbilities.GetPossibleCombinations<FreeStackedAbilities>(unit.onAttackAbilities);
            onAttackStats = new StackedAbilityResults(attackStacked);

            ////////////////
            // on defense //
            ////////////////

            defenseStacked = StackedAbilities.GetPossibleCombinations<FreeStackedAbilities>(unit.onDefenceAbilities);

            DBDAMAGE normalDamage = new DBDAMAGE(armorDamage, AttackType.Hero, DamageType.Normal);
            AbilityResults initial_results = new AbilityResults();
            initial_results.SetDbDamage("DAMAGE", normalDamage);

            onNormalDefenseStats = new StackedAbilityResults(defenseStacked, initial_results);

            //////////////
            // on enemy //
            //////////////

            onEnemyAbilities = unit.acquiredAbilities.GetSpecific(AbilitySpecs.Any,
                                            AbilityTriggerType.Always,
                                            AbilityMatchType.NotIntersects,
                                            TargetType.None, TargetType.Self);
            onEnemyStats = new StackedAbilityResults(onEnemyAbilities);
        }