protected internal override void Evolve() { base.Evolve(); for (var i = 0; i < Length; i++) { Character ch; if (Cur[i] > 0 && (ch = FindChar(i)) != null) { Buff.Prolong <Vertigo>(ch, Vertigo.Duration(ch)); } } }
protected internal override void OnZap(int cell) { var ch = Actor.FindChar(cell); if (ch != null) { if (ch == Dungeon.Hero) { Buff.Affect <Vertigo>(ch, Vertigo.Duration(ch)); } else { Buff.Affect <Amok>(ch, 3f + Level); } } else { GLog.Information("nothing happened"); } }
private void OnTriggerEnter2D(Collider2D collision) { if (!collider.IsTouching(collision)) { return; } if (IsEffectEnable && collision.gameObject.layer == 9 && !Player.IsDefence) { PlayerBase other = collision.gameObject.GetComponent <PlayerBase>(); float AttackPower = 0.0f; if (!other) { Vector2 origin2target = (collision.transform.position - transform.position).normalized; float angle = Vector2.Angle(LastVelocity, origin2target); AttackPower = LastVelocity.magnitude * Mathf.Cos(Mathf.Deg2Rad * angle); } else { if (other.FunctionBases.ContainsKey("VertigoAction")) { VertigoAction vertigoActionOther = other.FunctionBases["VertigoAction"] as VertigoAction; Vector2 otherVelocity = vertigoActionOther.LastVelocity; Vector2 myVelocity = LastVelocity; Vector2 origin2target = (collision.transform.position - transform.position).normalized; Vector2 attackVelocity = myVelocity - otherVelocity; float angle = Vector2.Angle(origin2target, attackVelocity); AttackPower = attackVelocity.magnitude * Mathf.Cos(Mathf.Deg2Rad * angle); } } if (AttackPower > MaxAttackPower) { Vertigo vertigo = new Vertigo(VertigoTime, AttackForceCoefficientAdd); Player.BuffManager.AddBuff(vertigo); vertigo.MaxTime.OnTimeOut += OnVertigoEnd; VertigoAct?.Invoke(true); } } }
public override bool Proc(Weapon weapon, Character attacker, Character defender, int damage) { // lvl 0 - 20% // lvl 1 - 33% // lvl 2 - 43% var level = Math.Max(0, weapon.level); if (pdsharp.utils.Random.Int(level + 5) < 4) { return(false); } if (defender == Dungeon.Hero) { Buff.Affect <Vertigo>(defender, Vertigo.Duration(defender)); } else { Buff.Affect <Terror>(defender, Terror.Duration).Source = attacker; } return(true); }