public void setNotificacionsPowerCalculation(int level, bool enable) { if (transform.name != "Level " + level) { return; } for (int i = 0; i < transform.parent.parent.childCount; ++i) { Transform child = transform.parent.parent.GetChild(i); if (child.name == "Effects") { for (int j = 0; j < child.childCount; ++j) { Transform childEffect = child.transform.GetChild(j); AbilityPower abilityPower = childEffect.GetComponent <AbilityPower>(); if (enable) { this.AddObserver(onGetPowerCalculation, AbilityPower.getPowerCalculation, abilityPower); } else { this.RemoveObserver(onGetPowerCalculation, AbilityPower.getPowerCalculation, abilityPower); } } } } }
protected virtual void InitializUnitStats(BaseStats baseStats) { Health = new Health(baseStats.BaseHealth); AttackDamage = new AttackDamage(baseStats.BaseAttackDamage); AbilityPower = new AbilityPower(); Armor = new Resistance(baseStats.BaseArmor); MagicResistance = new Resistance(baseStats.BaseMagicResistance); AttackSpeed = new AttackSpeed(baseStats.BaseAttackSpeed); CooldownReduction = new CooldownReduction(); CriticalStrikeChance = new CriticalStrikeChance(); MovementSpeed = new MovementSpeed(baseStats.BaseMovementSpeed); HealthRegeneration = new ResourceRegeneration(); Lethality = new Lethality(); ArmorPenetrationPercent = new ResistancePenetrationPercent(); MagicPenetrationFlat = new ResistancePenetrationFlat(); MagicPenetrationPercent = new ResistancePenetrationPercent(); LifeSteal = new PercentBonusOnlyStat(); SpellVamp = new PercentBonusOnlyStat(); AttackRange = new AttackRange(baseStats.BaseAttackRange); Tenacity = new Tenacity(); CriticalStrikeDamage = new CriticalStrikeDamage(); CriticalStrikeDamageReduction = new PercentBonusOnlyStat(); PhysicalDamageModifier = new DamageModifier(); MagicDamageModifier = new DamageModifier(); PhysicalDamageReceivedModifier = new DamageModifier(); MagicDamageReceivedModifier = new DamageModifier(); HealAndShieldPower = new PercentBonusOnlyStat(); SlowResistance = new SlowResistance(); GrievousWounds = new GrievousWounds(); ExtraAdjustments(); }
public void RemoveModifier(IStatsModifier modifier) { if (AbilityPower.RemoveStatModificator(modifier.AbilityPower)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Base_Ap, AbilityPower.BaseValue); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Bonus_Ap_Flat, AbilityPower.FlatBonus); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Bonus_Ap_Pct, AbilityPower.PercentBonus); } if (Armor.RemoveStatModificator(modifier.Armor)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Armor, Armor.Total); } if (ArmorPenetration.RemoveStatModificator(modifier.ArmorPenetration)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Armor_Pen_Flat, ArmorPenetration.FlatBonus); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Armor_Pen_Pct, ArmorPenetration.PercentBonus); } if (AttackDamage.RemoveStatModificator(modifier.AttackDamage)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Base_Ad, AttackDamage.BaseValue); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Bonus_Ad_Flat, AttackDamage.FlatBonus); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Bonus_Ad_Pct, AttackDamage.PercentBonus); } if (AttackSpeedMultiplier.RemoveStatModificator(modifier.AttackSpeed)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Atks_multiplier, AttackSpeedMultiplier.Total); } if (CriticalChance.RemoveStatModificator(modifier.CriticalChance)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Crit_Chance, CriticalChance.Total); } GoldPerSecond.RemoveStatModificator(modifier.GoldPerSecond); if (HealthPoints.RemoveStatModificator(modifier.HealthPoints)) { appendStat(_updatedStats, MasterMask.MM_Four, FieldMask.FM4_MaxHp, HealthPoints.Total); } if (HealthRegeneration.RemoveStatModificator(modifier.HealthRegeneration)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Hp5, HealthRegeneration.Total); } if (LifeSteal.RemoveStatModificator(modifier.LifeSteel)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_LifeSteal, LifeSteal.Total); } if (MagicResist.RemoveStatModificator(modifier.MagicResist)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Magic_Armor, MagicResist.Total); } if (MagicPenetration.RemoveStatModificator(modifier.MagicPenetration)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Magic_Pen_Flat, MagicPenetration.FlatBonus); appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Magic_Pen_Pct, MagicPenetration.PercentBonus); } if (ManaPoints.RemoveStatModificator(modifier.ManaPoints)) { appendStat(_updatedStats, MasterMask.MM_Four, FieldMask.FM4_MaxMp, ManaPoints.Total); } if (ManaRegeneration.RemoveStatModificator(modifier.ManaRegeneration)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Mp5, ManaRegeneration.Total); } if (MoveSpeed.RemoveStatModificator(modifier.MoveSpeed)) { appendStat(_updatedStats, MasterMask.MM_Four, FieldMask.FM4_Speed, MoveSpeed.Total); } if (Range.RemoveStatModificator(modifier.Range)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Range, Range.Total); } if (Size.RemoveStatModificator(modifier.Size)) { appendStat(_updatedStats, MasterMask.MM_Four, FieldMask.FM4_ModelSize, Size.Total); } if (SpellVamp.RemoveStatModificator(modifier.SpellVamp)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_SpellVamp, SpellVamp.Total); } if (Tenacity.RemoveStatModificator(modifier.Tenacity)) { appendStat(_updatedStats, MasterMask.MM_Two, FieldMask.FM2_Tenacity, Tenacity.Total); } }
public void display(GameObject obj) { bool levelDataFound = false; bool bonusFound = false; string levelText = ""; string bonusText = ""; AbilityGeneralData generalData = obj.GetComponent <AbilityGeneralData>(); if (generalData) { nameLabel.text = generalData.abilityName; categoryLabel.text = generalData.abilityCategoryText; descriptionLabel.text = generalData.abilityDescription; } AbilityCostData costData = obj.GetComponent <AbilityCostData>(); if (costData) { int costPanels = 0; if (costData.abilityMentalCost == 0 && costData.abilityPhysicalCost == 0) { costPanel.SetActive(false); } else { costPanel.SetActive(true); } if (costData.abilityMentalCost > 0) { mentalCostPanel.SetActive(true); costPanels++; } else { mentalCostPanel.SetActive(false); } if (costData.abilityPhysicalCost > 0) { physicalCostPanel.SetActive(true); costPanels++; } else { physicalCostPanel.SetActive(false); } if (costPanels == 0) { costPanel.SetActive(false); } else { costPanel.SetActive(true); if (costPanels > 1) { separatorPanel.SetActive(true); } else { separatorPanel.SetActive(false); } } mentalCostLabel.text = costData.abilityMentalCost.ToString(); physicalCostLabel.text = costData.abilityPhysicalCost.ToString(); } AbilityRange abilityRange = obj.GetComponent <AbilityRange>(); if (abilityRange) { rangeTypeLabel.text = abilityRange.getAbilityRangeDescription(); } AbilityArea abilityArea = obj.GetComponent <AbilityArea>(); if (abilityArea) { areaTypeLabel.text = abilityArea.getAbilityAreaDescription(); } for (int i = 0; i < obj.transform.childCount; ++i) { Transform child = obj.transform.GetChild(i); if (child.name == "Bonus") { string levelChildName; AbilityLevelData abilityLevelData = child.GetComponent <AbilityLevelData>(); if (abilityLevelData != null) { levelDataFound = true; levelText = "Nivel " + abilityLevelData.level.ToString(); levelChildName = "Level " + abilityLevelData.level; for (int j = 0; j < child.transform.childCount; ++j) { Transform bonusChild = child.transform.GetChild(j); if (bonusChild.name == levelChildName) { AbilityBonus[] abilityBonusList = bonusChild.GetComponents <AbilityBonus>(); foreach (AbilityBonus abilityBonus in abilityBonusList) { bonusFound = true; if (bonusText != "") { bonusText += "\n"; } bonusText += abilityBonus.getAbilityBonusDescription(); } break; } } } } foreach (Transform effectChild in effectsPanel.transform) { Destroy(effectChild.gameObject); } if (child.name == "Effects") { for (int j = 0; j < child.childCount; ++j) { Transform childEffect = child.transform.GetChild(j); GameObject effectPanelObject = Instantiate(effectPanelPrefab); effectPanelObject.transform.SetParent(effectsPanel.transform); effectPanelObject.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); effectPanelObject.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); EffectPanel effectPanel = effectPanelObject.GetComponent <EffectPanel>(); if (effectPanel) { AbilityPower abilityPower = childEffect.GetComponent <AbilityPower>(); if (abilityPower) { effectPanel.powerLabel.gameObject.SetActive(true); effectPanel.powerLabel.text = abilityPower.getAbilityPower().ToString() + "%"; } else { effectPanel.powerLabel.gameObject.SetActive(false); } AbilityHitRate abilityHitRate = childEffect.GetComponent <AbilityHitRate>(); if (abilityHitRate) { effectPanel.hitRateLabel.gameObject.SetActive(true); effectPanel.hitRateLabel.text = abilityHitRate.getAbilityHitRateDescription(); } else { effectPanel.hitRateLabel.gameObject.SetActive(false); } } } } } if (levelDataFound) { levelPanel.gameObject.SetActive(true); levelLabel.text = levelText; } else { levelPanel.gameObject.SetActive(false); } if (bonusFound) { CentralPanelSeparator.SetActive(true); bonusLabel.gameObject.SetActive(true); bonusLabel.text = bonusText; } else { CentralPanelSeparator.SetActive(false); bonusLabel.gameObject.SetActive(false); bonusLabel.text = ""; } }