protected override void ExcuteActiveSkillLogic(BattleAgentController self, BattleAgentController enemy) { int manaGain = (int)(skillLevel * manaRecoveryScaler * self.agent.magicAttack + fixManaRecovery + self.agent.magicRecovery); self.AddManaGainAndShow(manaGain); self.SetEffectAnim(selfEffectAnimName); }
protected override void ExcuteActiveSkillLogic(BattleAgentController self, BattleAgentController enemy) { int healthDecrease = skillLevel * healthDecreaseBase; float scaler = 1f; if (self.agent.health <= healthDecrease) { scaler = (self.agent.health - 1) / healthDecrease; healthDecrease = self.agent.health - 1; } self.agent.health -= healthDecrease; int manaIncrease = Mathf.RoundToInt(scaler * skillLevel * manaIncreaseScaler * self.agent.attack + fixManaIncrease) + self.agent.magicRecovery; self.AddManaGainAndShow(manaIncrease); self.SetEffectAnim(selfEffectAnimName); }
/// <summary> /// 使用消耗品 /// </summary> /// <returns>返回角色属性变化</returns> /// <param name="battleAgentController">Battle agent controller.</param> public PropertyChange UseConsumables(BattleAgentController battleAgentController) { Player player = Player.mainPlayer; PropertyChange propertyChange = new PropertyChange(); // 如果提升最大生命值 if (maxHealthGain > 0) { int maxHealthRecord = player.maxHealth; player.maxHealth += maxHealthGain; player.originalMaxHealth += maxHealthGain; // 按照最大生命值的提升比例同时提升实际生命值 player.health = Mathf.RoundToInt((player.health * (float)player.maxHealth / maxHealthRecord)); propertyChange.maxHealthChange = maxHealthGain; } // 如果提升最大魔法值 if (maxManaGain > 0) { int maxManaRecord = player.maxMana; player.maxMana += maxManaGain; player.originalMaxMana += maxManaGain; // 按照最大魔法值的提升比例同时提升实际魔法值 player.mana = Mathf.RoundToInt(player.mana * (float)player.maxMana / maxManaRecord); propertyChange.maxManaChange = maxManaGain; } // 如果提升实际生命值 if (healthGain > 0) { if (battleAgentController != null) { battleAgentController.AddHealthGainAndShow(healthGain + player.healthRecovery); battleAgentController.SetEffectAnim(CommonData.healthHealEffecttName); } else { player.health += healthGain + player.healthRecovery; } } // 如果提升实际魔法值 if (manaGain > 0) { if (battleAgentController != null) { battleAgentController.AddManaGainAndShow(manaGain + player.magicRecovery); battleAgentController.SetEffectAnim(CommonData.magicHealEffectName); } else { player.mana += manaGain + player.magicRecovery; } } else if (manaGain < 0) { player.mana += manaGain; } // 如果提升实际经验值 if (experienceGain > 0) { player.experience += experienceGain; bool isLevelUp = Player.mainPlayer.LevelUpIfExperienceEnough(); if (isLevelUp) { ExploreManager.Instance.battlePlayerCtr.SetEffectAnim(CommonData.levelUpEffectName); GameManager.Instance.soundManager.PlayAudioClip(CommonData.levelUpAudioName); ExploreManager.Instance.expUICtr.ShowLevelUpPlane(); } } // 提升物理攻击力 if (attackGain > 0) { player.attack += attackGain; player.originalAttack += attackGain; propertyChange.attackChange = attackGain; } // 提升魔法攻击力 if (magicAttackGain > 0) { player.magicAttack += magicAttackGain; player.originalMagicAttack += magicAttackGain; propertyChange.magicAttackChange = magicAttackGain; } // 提升护甲 if (armorGain > 0) { player.armor += armorGain; player.originalArmor += armorGain; propertyChange.armorChange = armorGain; } // 提升抗性 if (magicResistGain > 0) { player.magicResist += magicResistGain; player.originalMagicResist += magicResistGain; propertyChange.magicResistChange = magicResistGain; } // 提升护甲穿透 if (armorDecreaseGain > 0) { player.armorDecrease += armorDecreaseGain; player.originalArmorDecrease += armorDecreaseGain; propertyChange.armorDecreaseChange = armorDecreaseGain; } // 提升抗性穿透 if (magicResistDecreaseGain > 0) { player.magicResistDecrease += magicResistDecreaseGain; player.originalMagicResistDecrease += magicResistDecreaseGain; propertyChange.magicResistDecreaseChange = magicResistDecreaseGain; } // 提升移动速度 if (moveSpeedGain > 0) { player.moveSpeed += moveSpeedGain; player.originalMoveSpeed += moveSpeedGain; } // 提升暴击 if (critGain > 0) { float myCritGain = (float)critGain / 100; player.crit += myCritGain; player.originalCrit += myCritGain; propertyChange.critChange = myCritGain; } // 提升闪避 if (dodgeGain > 0) { float myDodgeGain = (float)dodgeGain / 100; player.dodge += myDodgeGain; player.originalDodge += myDodgeGain; propertyChange.dodgeChange = myDodgeGain; } // 提升暴击伤害倍率 if (critHurtScalerGain > 0) { float myCritHurtScalerGain = (float)critHurtScalerGain / 100; player.critHurtScaler += myCritHurtScalerGain; player.originalCritHurtScaler += myCritHurtScalerGain; } // 提升物理伤害系数 if (physicalHurtScalerGain > 0) { float myPhysicalHurtScalerGain = (float)physicalHurtScalerGain / 100; player.physicalHurtScaler += myPhysicalHurtScalerGain; player.originalPhysicalHurtScaler += myPhysicalHurtScalerGain; } // 提升魔法伤害系数 if (magicalHurtScalerGain > 0) { float myMagicalHurtScalerGain = (float)magicalHurtScalerGain / 100; player.magicalHurtScaler += myMagicalHurtScalerGain; player.originalMagicalHurtScaler += myMagicalHurtScalerGain; } // 提升额外金币 if (extraGoldGain > 0) { player.extraGold += extraGoldGain; player.originalExtraGold += extraGoldGain; propertyChange.extraGoldChange = extraGoldGain; } // 提升额外经验 if (extraExperienceGain > 0) { player.extraExperience += extraExperienceGain; player.originalExtraExperience += extraExperienceGain; propertyChange.extraExperienceChange = extraExperienceGain; } // 提升生命回复 if (healthRecoveryGain > 0) { player.healthRecovery += healthRecoveryGain; player.originalHealthRecovery += healthRecoveryGain; propertyChange.healthRecoveryChange = healthRecoveryGain; } // 提升魔法回复 if (magicRecoveryGain > 0) { player.magicRecovery += magicRecoveryGain; player.originalMagicRecovery += magicRecoveryGain; propertyChange.magicRecoveryChange = magicRecoveryGain; } return(propertyChange); }