Esempio n. 1
0
    public override void FireRanger(ActionController target, Transform firePoint, RangerAgent.FirePort rfp)
    {
        RangerAgent.FireRangeInfo fri = rfp._rangeInfo;
        base.FireRanger(target, firePoint, rfp);
        _attackInfo._attackPoints = _owner.TotalAttackPoints;
        _step = 0;
        _damageReceiver.SetRadius(_startRadus);

        if (fri != null)
        {
            _damageScale              = rfp.DamageScale;
            _fireMaxRaduis            = 1f * fri._param1;
            _followAnchor             = fri._needAnchor;
            _hitInfo[_step]._lifeTime = fri._effectTime;
            _attackInfo._damageScale  = _damageScale;
        }
        _deadTime        = -1;
        _target          = null;
        _isFrom2P        = _owner.IsClientPlayer;
        ThisObject.layer = (int)_faction + 1;


        ThisTransform.localPosition = firePoint.position;
        ThisTransform.forward       = _owner.ThisTransform.forward;
        _attackInfo._hitType        = _hitInfo[_step]._hitType;

        _firePoint = firePoint;

        _enableDamage = false;
        ActiveLogic(rfp);
    }
    public override void FireRanger(ActionController target, Transform firePoint, RangerAgent.FirePort rfp)
    {
        _duration            = rfp._attribute1;
        _curLevelTargetCount = Mathf.RoundToInt(rfp._attribute2);
        _damageReceiver.SetRadius(rfp._rangeInfo._param1);
        RangerAgent.FireRangeInfo fri = rfp._rangeInfo;
        base.FireRanger(target, firePoint, rfp);
        _attackInfo._attackPoints       = _owner.TotalAttackPoints;
        _attackInfo._criticalChance     = _owner.Data.TotalCritRate;
        _attackInfo._criticalDamage     = _owner.Data.TotalCritDamage;
        _attackInfo._skillTriggerChance = _owner.Data.TotalSkillTriggerRate;
        _attackInfo._skillAttackDamage  = _owner.Data.TotalSkillAttackDamage;
        if (fri != null)
        {
            _damageScale             = rfp.DamageScale;
            _attackInfo._effectTime  = fri._effectTime;
            _attackInfo._damageScale = _damageScale;
        }
        if (_hitInfo.Length > 0)
        {
            Assertion.Check(_hitInfo.Length == 1);
            _attackInfo._hitType = _hitInfo[0]._hitType;
        }

        _target          = null;
        _isFrom2P        = _owner.IsClientPlayer;
        ThisObject.layer = (int)_faction + 1;

        ThisTransform.localPosition = firePoint.position;

        _firePoint = firePoint;

        ActiveLogic(rfp);
    }
Esempio n. 3
0
    public override void FireRanger(ActionController target, Transform firePoint, RangerAgent.FirePort rfp)
    {
        int index = Mathf.RoundToInt(rfp._attribute1);

        _renderer.SetColor(_levelColor[index]);
        Vector3 scale = _lineTransform.localScale;

        scale.x = _levelWidth[index];
        _lineTransform.localScale = scale;

        RangerAgent.FireRangeInfo fri = rfp._rangeInfo;
        base.FireRanger(target, firePoint, rfp);
        _attackInfo._attackPoints       = _owner.TotalAttackPoints;
        _attackInfo._criticalChance     = _owner.Data.TotalCritRate;
        _attackInfo._criticalDamage     = _owner.Data.TotalCritDamage;
        _attackInfo._skillTriggerChance = _owner.Data.TotalSkillTriggerRate;
        _attackInfo._skillAttackDamage  = _owner.Data.TotalSkillAttackDamage;
        if (fri != null)
        {
            _damageScale             = rfp.DamageScale;
            _attackInfo._effectTime  = fri._effectTime;
            _attackInfo._damageScale = _damageScale;
        }
        if (_hitInfo.Length > 0)
        {
            Assertion.Check(_hitInfo.Length == 1);
            _attackInfo._hitType = _hitInfo[0]._hitType;
        }

        _target          = null;
        _isFrom2P        = _owner.IsClientPlayer;
        ThisObject.layer = (int)_faction + 1;

        ThisTransform.localPosition = firePoint.position;

        _firePoint = firePoint;

        ActiveLogic(rfp);
    }
Esempio n. 4
0
    public override void FireRanger(ActionController target, Transform firePoint, RangerAgent.FirePort rfp)
    {
        RangerAgent.FireRangeInfo fri = rfp._rangeInfo;
        base.FireRanger(target, firePoint, rfp);
        _attackInfo._attackPoints = _owner.TotalAttackPoints;
        if (fri != null)
        {
            _damageScale = rfp.DamageScale;
            _damageReceiver.SetRadius(fri._param1);
            _followAnchor            = fri._needAnchor;
            _attackInfo._effectTime  = fri._effectTime;
            _attackInfo._damageScale = _damageScale;
        }

        _deadTime        = -1;
        _target          = null;
        _isFrom2P        = _owner.IsClientPlayer;
        ThisObject.layer = (int)_faction + 1;
        _step            = 0;

        ThisTransform.localPosition = firePoint.position;
        _attackInfo._hitType        = _hitInfo[_step]._hitType;

        _firePoint = firePoint;

        if (_attackInfo._hitType == AttackHitType.BlackHole ||
            _attackInfo._hitType == AttackHitType.ParrySuccess)
        {
            _enableDamage = false;
        }
        else
        {
            //_enableDamage = true;
        }
        ActiveLogic(rfp);
    }
Esempio n. 5
0
    //must not be override by any other child class
    public void Fire(ActionController target, Transform firePoint, int angleOffset, int angleOffsetY, float lifeTime, RangerAgent.FirePort rfp)
    {
        _isDead = false;
        _attackInfo._isFromSkill = rfp.IsFromSkill;

        _lifeTime                       = lifeTime;
        _deadTime                       = -1;
        _target                         = target;
        _isFrom2P                       = _owner.IsClientPlayer;
        ThisObject.layer                = (int)_faction + 1;
        _firePoint                      = firePoint;
        _step                           = 0;
        _attackInfo._attackPoints       = _owner.TotalAttackPoints;
        _attackInfo._criticalChance     = _owner.Data.TotalCritRate;
        _attackInfo._criticalDamage     = _owner.Data.TotalCritDamage;
        _attackInfo._skillTriggerChance = _owner.Data.TotalSkillTriggerRate;
        _attackInfo._skillAttackDamage  = _owner.Data.TotalSkillAttackDamage;
        _attackInfo._pushStrength       = _pushStrength;
        _attackInfo._pushTime           = _pushTime;
        _attackInfo._pushAngle          = _pushAngle;
        _attackInfo._pushByPoint        = _pushByPoint;
        RangerAgent.FireRangeInfo fri = rfp._rangeInfo;
        if (angleOffsetY != 0)
        {
            _enableSpeedY = true;
            _fireAngleY   = angleOffsetY;
        }
        if (fri != null)
        {
            _attackInfo._effectTime = fri._effectTime;
        }
        //_damageScale = rfp.DamageScale;
        if (!_owner.IsPlayer && _owner.ACGetCurrentAttack() != null)
        {
            _attackInfo._damageScale = _damageScale * _owner.ACGetCurrentAttack().DamageScale;
        }
        else
        {
            _attackInfo._damageScale = _damageScale * rfp.DamageScale;
        }
        if (_firePorts != null && _firePorts.Length != 0)
        {
            foreach (RangerAgent.FirePort pt in _firePorts)
            {
                pt.IsFromSkill = rfp.IsFromSkill;
                pt.DamageScale = _attackInfo._damageScale;
            }
        }

        ThisTransform.localPosition = firePoint.position;
        if (rfp._shootByFirePointDirection)
        {
            ThisTransform.forward = firePoint.forward;
        }
        else if (target != null)
        {
            if (target.ThisTransform.localPosition != ThisTransform.localPosition)
            {
                Vector3 d3 = target.ThisTransform.localPosition - ThisTransform.localPosition;
                d3.y = 0;
                ThisTransform.forward = d3;
            }
            else
            {
                ThisTransform.forward = _owner.ThisTransform.forward;
            }
        }
        else
        {
            ThisTransform.forward = _owner.ThisTransform.forward;
        }
        if (angleOffset != 65535)
        {
            ThisTransform.Rotate(new Vector3(0, angleOffset, 0));
        }
        if (rfp.IsOverride && _hitInfo != null && _hitInfo.Length > 0)
        {
            foreach (Eot eot in _hitInfo[_step]._eots)
            {
                eot.lastTime = rfp.DotDamageTime;
            }
        }
        //add record to remeber ther port name
        // for if some one want to kill bullet
        _firePortName = rfp._portName;
        ActiveLogic(rfp);
    }