public void SyncDie(IOnAttacked target) { Assert.IsTrue(target is IPhotonBehaviour); int targetViewID = ((IPhotonBehaviour)target).PhotonView.viewID; photonView.RPC("SyncDieRPC", PhotonTargets.All, targetViewID); }
public AttackFlow(IAttacker attacker, IOnAttacked target, int damage, bool isCritical, HitEffectType hitEffectType) { Attacker = attacker; Target = target; Damage = damage; IsCritical = isCritical; HitEffectType = hitEffectType; }
public int Calculate(IOnAttacked target, IAttacker attacker, int damage, bool isCritical) { if (isCritical) { int reducedDamage = (int)(damage / 2 * _applyRatio); return(reducedDamage); } return(damage); }
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); } }
private bool IsNewTarget(IOnAttacked target) { if (_curState.ContainsKey(target)) { return(false); } else { return(true); } }
private bool IsMaxHitCount(IOnAttacked target) { if (IsNewTarget(target)) { return(false); } if (_curState[target].HitCount < _hitInfo.MaxHitCount) { return(false); } return(true); }
private bool IsNeedInterval(IOnAttacked target) { if (IsNewTarget(target)) { return(false); } if ((Time.time - _curState[target].Timestamp) >= _hitInfo.Interval) { return(false); } return(true); }
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; } }
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); } }
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); } }
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); }
public HealFlow(IOnAttacked target, int quantity) { Target = target; Quantity = quantity; }
public static void OnNextDie(IOnAttacked target) { _dieSubject.OnNext(target); }
public int Calculate(IOnAttacked target, IAttacker attacker, int damage, bool isCritical) { int reducedDamage = (int)(damage * (1.0f - ReduceRatio)); return(reducedDamage); }
public DamageReactor(IOnAttacked target) { _target = target; _slot = new Passing(); }
public int Calculate(IOnAttacked target, IAttacker attacker, int damage, bool isCritical) { return(damage); }
public int ReactTo(IOnAttacked target, int damage) { target.Hp.Subtract(damage); return(damage); }
public KillDeathFlowEntity(IAttacker attacker, IOnAttacked target) { Attacker = attacker; Target = target; }