Beispiel #1
0
        public void SyncDie(IOnAttacked target)
        {
            Assert.IsTrue(target is IPhotonBehaviour);
            int targetViewID = ((IPhotonBehaviour)target).PhotonView.viewID;

            photonView.RPC("SyncDieRPC", PhotonTargets.All, targetViewID);
        }
Beispiel #2
0
 public AttackFlow(IAttacker attacker, IOnAttacked target, int damage, bool isCritical, HitEffectType hitEffectType)
 {
     Attacker      = attacker;
     Target        = target;
     Damage        = damage;
     IsCritical    = isCritical;
     HitEffectType = hitEffectType;
 }
Beispiel #3
0
        public int Calculate(IOnAttacked target, IAttacker attacker, int damage, bool isCritical)
        {
            if (isCritical)
            {
                int reducedDamage = (int)(damage / 2 * _applyRatio);
                return(reducedDamage);
            }

            return(damage);
        }
Beispiel #4
0
        private void SyncKillAndDeath(IAttacker attacker, IOnAttacked target)
        {
            bool isDead = target.Hp.Cur.Value == target.Hp.Min.Value;

            if (((IPhotonBehaviour)target).PhotonView.isMine && isDead)
            {
                _battleSynchronizer.SyncKill(attacker);
                _battleSynchronizer.SyncDie(target);
            }
        }
Beispiel #5
0
 private bool IsNewTarget(IOnAttacked target)
 {
     if (_curState.ContainsKey(target))
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Beispiel #6
0
        private bool IsMaxHitCount(IOnAttacked target)
        {
            if (IsNewTarget(target))
            {
                return(false);
            }

            if (_curState[target].HitCount < _hitInfo.MaxHitCount)
            {
                return(false);
            }

            return(true);
        }
Beispiel #7
0
        private bool IsNeedInterval(IOnAttacked target)
        {
            if (IsNewTarget(target))
            {
                return(false);
            }

            if ((Time.time - _curState[target].Timestamp) >= _hitInfo.Interval)
            {
                return(false);
            }

            return(true);
        }
Beispiel #8
0
        private void UpdateDictionary(IOnAttacked target)
        {
            if (IsNewTarget(target))
            {
                var state = new TargetHitState();
                state.HitCount  = 1;
                state.Timestamp = Time.time;

                _curState.Add(target, state);
            }
            else
            {
                _curState[target].HitCount += 1;
                _curState[target].Timestamp = Time.time;
            }
        }
Beispiel #9
0
        public int Calculate(IOnAttacked target, IAttacker attacker, int damage, bool isCritical)
        {
            if (IsBroken)
            {
                return(damage);
            }

            _durability -= (damage - 1);

            if (IsBroken)
            {
                return(-_durability);
            }
            else
            {
                return(1);
            }
        }
Beispiel #10
0
        public int ReactTo(IOnAttacked target, int damage)
        {
            if (IsBroken)
            {
                target.Hp.Subtract(damage);
                return(damage);
            }

            _durability -= (damage - 1);

            if (IsBroken)
            {
                target.Hp.Subtract(-_durability);
                return(-_durability);
            }
            else
            {
                target.Hp.Subtract(1);
                return(1);
            }
        }
Beispiel #11
0
        public int Calculate(IOnAttacked target, IAttacker attacker, int damage, bool isCritical)
        {
            float applyDamage = 1;

            if (_level <= attacker.CurLevel)
            {
                applyDamage = damage;
            }
            else if (_level - 1 == attacker.CurLevel)
            {
                applyDamage = damage * 0.75f;
            }
            else if (_level - 2 == attacker.CurLevel)
            {
                applyDamage = damage * 0.5f;
            }
            else if (_level - 3 == attacker.CurLevel)
            {
                applyDamage = damage * 0.25f;
            }

            return((int)applyDamage);
        }
Beispiel #12
0
 public HealFlow(IOnAttacked target, int quantity)
 {
     Target   = target;
     Quantity = quantity;
 }
Beispiel #13
0
 public static void OnNextDie(IOnAttacked target)
 {
     _dieSubject.OnNext(target);
 }
Beispiel #14
0
        public int Calculate(IOnAttacked target, IAttacker attacker, int damage, bool isCritical)
        {
            int reducedDamage = (int)(damage * (1.0f - ReduceRatio));

            return(reducedDamage);
        }
Beispiel #15
0
 public DamageReactor(IOnAttacked target)
 {
     _target = target;
     _slot   = new Passing();
 }
Beispiel #16
0
 public int Calculate(IOnAttacked target, IAttacker attacker, int damage, bool isCritical)
 {
     return(damage);
 }
Beispiel #17
0
 public int ReactTo(IOnAttacked target, int damage)
 {
     target.Hp.Subtract(damage);
     return(damage);
 }
Beispiel #18
0
 public KillDeathFlowEntity(IAttacker attacker, IOnAttacked target)
 {
     Attacker = attacker;
     Target   = target;
 }