示例#1
0
    private IEnumerator Run(Player player, Loc to, MainSystem sys)
    {
        yield return(CAction.MovePlayer(player, to));

        // とびついた先が水ならワープ
        if (sys.IsWater(player.Loc))
        {
            yield return(new SkillWarp().Use(player, sys));
        }
    }
示例#2
0
    public override IEnumerator Hit(CharacterBase sender, CharacterBase target, MainSystem sys)
    {
        Assert.IsTrue(target is Enemy);

        // target をsender.Dir 方向にふきとばす
        CharacterBase hitTarget;
        Loc           to = sys.FindHitTarget(target.Loc, sender.Dir, out hitTarget);

        // hitTarget != null なら他の敵と衝突した。TODO:5 ダメージ与える
        yield return(CAction.MoveEnemy((Enemy)target, to));

        // ふきとんだ後の着地点
        Loc loc = to.Backward(sender.Dir);

        target.UpdateLoc(loc);
        // 着地点が水ならワープ
        if (sys.IsWater(loc))
        {
            yield return(new SkillWarp().Use(target, sys));
        }
    }