Exemple #1
0
        private void HPLosted(float hurt, CharHandler srcHandler, SkillDataSon srcSkillDataSon = null)
        {
            //受击特效
            SetEffect(srcSkillDataSon, _charHandler.m_ParentTrans.position);

            if (_charHandler.m_CharData.CurHP <= 0)
            {
                _charHandler.ToDead();
                if (BattleEnum.Enum_CharType.Monster == _charHandler.m_CharData.m_eType)
                {
                    BattleManager.GetInst().m_CharInScene.AddMPAll(_MPData.m_fAddMPFromMonsterDead);
                }
                else
                {
                    BattleManager.GetInst().m_CharInScene.AddMPAll(_MPData.m_fAddMPFromHeroDead);
                }
            }

            if (BattleEnum.Enum_CharType.Monster == _charHandler.m_CharData.m_eType)
            {
                //击退
                if (null != srcHandler && (null == srcSkillDataSon || srcSkillDataSon.m_Parent.m_bHitBackward))
                {
                    float t = Time.time;
                    if (t - m_fBackwardClock > ApplicationConst.fBackwardCD)
                    {
                        Vector3 dir = (_charHandler.m_ParentTrans.position - srcHandler.m_ParentTrans.position).normalized * 1f;
                        _charHandler.m_ParentTrans.Translate(dir, Space.World);
                        m_fBackwardClock = t;
                    }
                }
            }
            else
            {
                //全局加魔
                _iLoseHpTemp += hurt;
                if (_iLoseHpTemp >= _charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercent)
                {
                    int mult = Mathf.FloorToInt(_iLoseHpTemp / (_charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercent));
                    _iLoseHpTemp -= _charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercent * mult;
                    BattleManager.GetInst().m_CharInScene.AddMPAll(_MPData.m_fAddMPFromHPLose * mult);
                }

                //单人加魔
                _iLoseHpSingleTemp += hurt;
                if (_iLoseHpSingleTemp >= _charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercentSingle)
                {
                    int mult = Mathf.FloorToInt(_iLoseHpSingleTemp / (_charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercentSingle));
                    _iLoseHpSingleTemp            -= _charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercentSingle * mult;
                    _charHandler.m_CharData.CurMP += _MPData.m_fAddMPFromHPLoseSingle * mult;
                }

                //损血Trigger
                BattleManager.GetInst().m_TriggerManager.HPChanged(Mathf.CeilToInt(_charHandler.m_CharData.CurHP * 100 / _charHandler.m_CharData.MaxHP), _charHandler);
            }
        }