예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
        }