Beispiel #1
0
        void OnTriggerEnter2D(Collider2D collider)
        {
            if (PhotonNetwork.isMasterClient)
            {
                var target = collider.gameObject.GetComponent <IPhoton>();

                if (target == null)
                {
                    return;
                }
                if (TeamChecker.IsSameTeam(collider.gameObject, _skillUserObj))
                {
                    return;
                }
                if (_hitRistrictor.ShouldRistrict(collider.gameObject))
                {
                    return;
                }

                DamageCalculator.Calculate(_skillUserObj, _attackInfo);

                if (_isSecond)
                {
                    _synchronizer.SyncAttack(_skillUserViewID, target.PhotonView.viewID, (int)(DamageCalculator.Damage * _secondRatio), DamageCalculator.IsCritical, HitEffectType.Helena);
                }
                else
                {
                    _synchronizer.SyncAttack(_skillUserViewID, target.PhotonView.viewID, DamageCalculator.Damage, DamageCalculator.IsCritical, HitEffectType.Helena);
                    _isSecond = true;
                }
            }
        }
Beispiel #2
0
        void OnTriggerStay2D(Collider2D collider)
        {
            if (PhotonNetwork.isMasterClient && _animator.GetCurrentAnimatorStateInfo(0).IsName("CtrlBreak"))
            {
                var target = collider.gameObject.GetComponent <IPhoton>();

                if (target == null)
                {
                    return;
                }
                if (TeamChecker.IsSameTeam(collider.gameObject, _skillUserObj))
                {
                    return;
                }
                if (_hitRistrictor.ShouldRistrict(collider.gameObject))
                {
                    return;
                }

                DamageCalculator.Calculate(_skillUserObj, _attackInfo);

                _synchronizer.SyncAttack(_skillUserViewID, target.PhotonView.viewID, DamageCalculator.Damage, DamageCalculator.IsCritical, HitEffectType.Warrior);
                _synchronizer.SyncDebuff(target.PhotonView.viewID, DebuffType.Stun, _stunSec);
            }
        }
Beispiel #3
0
        void OnTriggerEnter2D(Collider2D collider)
        {
            if (PhotonNetwork.isMasterClient)
            {
                var target = collider.gameObject.GetComponent <IPhoton>();

                if (target == null)
                {
                    return;
                }
                if (TeamChecker.IsSameTeam(collider.gameObject, _skillUserObj))
                {
                    return;
                }
                if (_hitRistrictor.ShouldRistrict(collider.gameObject))
                {
                    return;
                }

                DamageCalculator.Calculate(_skillUserObj, _attackInfo);

                var direction = transform.eulerAngles.y == 180 ? Vector2.right : Vector2.left;

                _synchronizer.SyncAttack(_skillUserViewID, target.PhotonView.viewID, DamageCalculator.Damage, DamageCalculator.IsCritical, HitEffectType.Magician);
                _synchronizer.SyncDebuff(target.PhotonView.viewID, DebuffType.Slip, _duration);
                _synchronizer.SyncForce(target.PhotonView.viewID, _force, direction, false);
            }
        }
Beispiel #4
0
        void OnTriggerEnter2D(Collider2D collider)
        {
            if (PhotonNetwork.isMasterClient)
            {
                var target = collider.gameObject.GetComponent <IPhoton>();

                if (target == null)
                {
                    return;
                }
                if (TeamChecker.IsSameTeam(collider.gameObject, _skillUserObj))
                {
                    return;
                }
                if (_hitRistrictor.ShouldRistrict(collider.gameObject))
                {
                    return;
                }

                DamageCalculator.Calculate(_skillUserObj, _attackInfo);


                _synchronizer.SyncAttack(_skillUserViewID, target.PhotonView.viewID, DamageCalculator.Damage, DamageCalculator.IsCritical, HitEffectType.Panda);
                _synchronizer.SyncDebuff(target.PhotonView.viewID, DebuffType.Slow, _duration);
            }
        }
Beispiel #5
0
        void OnTriggerEnter2D(Collider2D collider)
        {
            var target = collider.gameObject.GetComponent <IPhoton>();

            if (target == null)
            {
                return;
            }
            if (TeamChecker.IsSameTeam(collider.gameObject, _skillUserObj))
            {
                return;
            }
            if (_hitRistrictor.ShouldRistrict(collider.gameObject))
            {
                return;
            }

            var marginTime = 0.1f;

            Observable.Timer(TimeSpan.FromSeconds(marginTime))
            .Where(_ => this != null)
            .Subscribe(_ => {
                GetComponent <SpriteRenderer>().enabled = false;
                GetComponent <BoxCollider2D>().enabled  = false;
            });

            if (PhotonNetwork.isMasterClient)
            {
                DamageCalculator.Calculate(_skillUserObj, _attackInfo);

                _synchronizer.SyncAttack(_skillUserViewID, target.PhotonView.viewID, DamageCalculator.Damage, DamageCalculator.IsCritical, HitEffectType.Helena);
                _synchronizer.SyncDebuff(target.PhotonView.viewID, DebuffType.Ice, _duration);
            }
        }
Beispiel #6
0
        void OnTriggerStay2D(Collider2D collider)
        {
            var target = collider.gameObject.GetComponent <IPhoton>();

            if (target == null)
            {
                return;
            }

            if (TeamChecker.IsSameTeam(collider.gameObject, _skillUserObj))
            {
                var teammate      = (Player)target;
                var damageReactor = teammate.DamageReactor;

                if (damageReactor.Slot.GetType() == typeof(Shield))
                {
                    return;
                }
                if (damageReactor.Slot.GetType() == typeof(Passing))
                {
                    damageReactor.SetSlot(_reduce);
                    return;
                }
                if (damageReactor.Slot.GetType() == typeof(Reduce))
                {
                    var reduce = (Reduce)(damageReactor.Slot);

                    if (reduce.ReduceRatio < _reduceRatio)
                    {
                        damageReactor.SetSlot(_reduce);
                    }

                    return;
                }
                if (damageReactor.Slot.GetType() == typeof(ReduceCritical))
                {
                    damageReactor.SetSubSlot(_reduce);
                    return;
                }
            }

            if (PhotonNetwork.isMasterClient)
            {
                if (_hitRistrictor.ShouldRistrict(collider.gameObject))
                {
                    return;
                }

                DamageCalculator.Calculate(_skillUserObj, _attackInfo);
                _synchronizer.SyncAttack(_skillUserViewID, target.PhotonView.viewID, DamageCalculator.Damage, DamageCalculator.IsCritical, HitEffectType.Nage);
            }
        }
Beispiel #7
0
        private int GetHealQuantity()
        {
            int healPercent = 250;

            if (_player.Level.Cur.Value >= 11)
            {
                healPercent = 400;
            }
            var healPower = new AttackInfo(healPercent, 0, 0);

            DamageCalculator.Calculate(_skillUserObj, healPower);

            return(DamageCalculator.Damage);
        }
Beispiel #8
0
        void Start()
        {
            if (PhotonNetwork.isMasterClient)
            {
                var target = GetMostNearestTarget();

                if (target == null)
                {
                    return;
                }

                DamageCalculator.Calculate(_skillUserObj, _attackInfo);

                _synchronizer.SyncAttack(_skillUserViewID, target.PhotonView.viewID, DamageCalculator.Damage, DamageCalculator.IsCritical, HitEffectType.Magician);
            }
        }