Exemplo n.º 1
0
        protected override void BeAttackedTriggerCallBack(BattleAgentController self, BattleAgentController enemy)
        {
            int manaDecrease = skillLevel * manaDecreaseBase;

            if (self.agent.mana < manaDecrease)
            {
                return;
            }

            float triggerProbability = fixTriggerProbability + skillLevel * triggerProbabilityBase;

            if (!isEffective(triggerProbability))
            {
                return;
            }

            int healthIncrease = skillLevel * healthIncreaseBase + self.agent.healthRecovery;

            self.agent.mana -= manaDecrease;

            self.AddHealthGainAndShow(healthIncrease);

            self.SetEffectAnim(selfEffectAnimName);

            //self.UpdateStatusPlane();
        }
Exemplo n.º 2
0
        protected override void ExcuteActiveSkillLogic(BattleAgentController self, BattleAgentController enemy)
        {
            int healthGain = (int)(skillLevel * self.agent.armor * healthGainScaler + fixHealthGain + self.agent.healthRecovery);

            self.AddHealthGainAndShow(healthGain);

            self.SetEffectAnim(selfEffectAnimName);
        }
Exemplo n.º 3
0
        protected override void ExcuteActiveSkillLogic(BattleAgentController self, BattleAgentController enemy)
        {
            // 计算生命回复值
            int healthGain = skillLevel * healthGainBase + fixHealthGain + self.agent.healthRecovery;

            // 生命回复生效
            self.AddHealthGainAndShow(healthGain);

            self.SetEffectAnim(selfEffectAnimName);
        }
Exemplo n.º 4
0
        protected override void HitTriggerCallBack(BattleAgentController self, BattleAgentController enemy)
        {
            float triggerProbability = fixTriggerProbability + triggerProbabilityBase * skillLevel;

            if (isEffective(triggerProbability))
            {
                int healthGain = Mathf.RoundToInt(self.agent.physicalHurtToEnemy * healthAbsorbScaler + self.agent.healthRecovery + fixHealthAbsorb);

                self.AddHealthGainAndShow(healthGain);

                SetEffectAnims(self, enemy);
            }
        }
Exemplo n.º 5
0
        protected override void HitTriggerCallBack(BattleAgentController self, BattleAgentController enemy)
        {
            float triggerProbability = fixTriggerProbability + skillLevel * triggerProbabilityBase;

            if (!isEffective(triggerProbability))
            {
                return;
            }

            int healthAbsorb = Mathf.RoundToInt(self.agent.magicalHurtToEnemy * healthAbsorbScaler + self.agent.healthRecovery);

            self.AddHealthGainAndShow(healthAbsorb);

            self.UpdateStatusPlane();

            self.SetEffectAnim(selfEffectAnimName);
        }
Exemplo n.º 6
0
        protected override void ExcuteActiveSkillLogic(BattleAgentController self, BattleAgentController enemy)
        {
            int healthGain = (int)(self.agent.maxHealth * healthRecoverScaler);

            //self.agent.health += healthGain;

            self.AddHealthGainAndShow(healthGain);

            if (selfEffectAnimName != string.Empty)
            {
                self.SetEffectAnim(selfEffectAnimName);
            }

            if (enemyEffectAnimName != string.Empty)
            {
                enemy.SetEffectAnim(enemyEffectAnimName);
            }

            //self.UpdateStatusPlane();
        }
Exemplo n.º 7
0
        protected override void ExcuteActiveSkillLogic(BattleAgentController self, BattleAgentController enemy)
        {
            // 计算原始伤害值
            int hurt = self.agent.attack + fixHurt + hurtBase * skillLevel;

            int armorCal = enemy.agent.armor - self.agent.armorDecrease / 2;

            if (armorCal < -50)
            {
                armorCal = -50;
            }
            // 结算护甲和护甲穿透后的伤害
            hurt = Mathf.RoundToInt(hurt / (armorCal / 100f + 1));
            // 吸血值
            int healthGain = (int)(hurt * absorbScaler + self.agent.healthRecovery);

            // 伤害生效
            enemy.AddHurtAndShow(hurt, HurtType.Physical, self.towards);
            // 生命回复生效
            self.AddHealthGainAndShow(healthGain);

            enemy.SetEffectAnim(enemyEffectAnimName);
        }
Exemplo n.º 8
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);
        }