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); } } } } }
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); }
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); } }
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); } }
internal void ArrangeAbilities(DBABILITIES abilities) { if (isResearching) ArrangeResearchAbilities(abilities); else if (fastResearch) ArrangeReadyAbilities(abilities); else ArrangeReadyAbilities(abilities.GetSpecific(AbilitySpecs.IsLearned)); }
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); }