public override int AttackProc(Character enemy, int damage) { if (Random.Int(3) != 0) { return(damage); } buffs.Buff.Affect <Charm>(enemy, Charm.durationFactor(enemy) * Random.IntRange(2, 5)); enemy.Sprite.CenterEmitter().Start(Speck.Factory(Speck.HEART), 0.2f, 5); Sample.Instance.Play(Assets.SND_CHARMS); return(damage); }
public override int Proc(Armor armor, Character attacker, Character defender, int damage) { var level = (int)GameMath.Gate(0, armor.level, 6); if (!Level.Adjacent(attacker.pos, defender.pos) || pdsharp.utils.Random.Int(level / 2 + 5) < 4) { return(damage); } var duration = pdsharp.utils.Random.IntRange(2, 5); Buff.Affect <Charm>(attacker, Charm.durationFactor(attacker) * duration); attacker.Sprite.CenterEmitter().Start(Speck.Factory(Speck.HEART), 0.2f, 5); Buff.Affect <Charm>(defender, pdsharp.utils.Random.Float(Charm.durationFactor(defender) * duration / 2, duration)); defender.Sprite.CenterEmitter().Start(Speck.Factory(Speck.HEART), 0.2f, 5); return(damage); }