예제 #1
0
        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);
        }
예제 #2
0
        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);
        }