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); }
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); }
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); }
//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); }