示例#1
0
        public override void Action(CharacterBase character, SceneBattle battle)
        {
            if (this.moveflame)
            {
                character.animationpoint.X = this.motionX[this.waittime];
                character.animationpoint.Y = this.motionY[this.waittime];
                switch (this.waittime)
                {
                case 1:
                    this.sound.PlaySE(SoundEffect.Zblade);
                    AttackBase a1 = new LanceAttack(this.sound, character.parent, character.position.X + this.UnionRebirth(character.union), character.position.Y, character.union, this.Power(character), 2, this.element, true);
                    a1.invincibility = false;
                    character.parent.attacks.Add(this.Paralyze(a1));
                    break;

                case 4:
                    this.sound.PlaySE(SoundEffect.Zblade);
                    AttackBase a2 = new LanceAttack(this.sound, character.parent, character.position.X + this.UnionRebirth(character.union), character.position.Y, character.union, this.Power(character), 2, this.element, true);
                    a2.invincibility = false;
                    character.parent.attacks.Add(this.Paralyze(a2));
                    break;

                case 7:
                    this.sound.PlaySE(SoundEffect.Zblade);
                    character.parent.attacks.Add(this.Paralyze(new LanceAttack(this.sound, character.parent, character.position.X + this.UnionRebirth(character.union), character.position.Y, character.union, this.Power(character), 2, this.element, true)));
                    break;

                case 12:
                    base.Action(character, battle);
                    break;
                }
                ++this.waittime;
            }
            this.FlameControl(4);
        }
示例#2
0
        protected override void Moving()
        {
            switch (this.motion)
            {
            case HalfSoul.MOTION.neutral:
                if (this.moveflame)
                {
                    ++this.waittime;
                }
                if (this.moveflame || this.attack)
                {
                    this.animationpoint = this.AnimeNeutral(this.waittime);
                    if (this.waittime >= 4 || this.attack)
                    {
                        this.waittime = 0;
                        ++this.roopneutral;
                        if (this.roopneutral >= 8 && this.parent.nowscene != SceneBattle.BATTLESCENE.end || this.attack)
                        {
                            this.roopneutral = 0;
                            this.waittime    = 0;
                            this.motion      = HalfSoul.MOTION.move;
                        }
                    }
                    break;
                }
                break;

            case HalfSoul.MOTION.move:
                this.animationpoint = this.AnimeMove(this.waittime);
                if (this.moveflame)
                {
                    switch (this.waittime)
                    {
                    case 0:
                        if (this.attack)
                        {
                            this.MoveRandom(true, true);
                        }
                        else
                        {
                            this.MoveRandom(false, false);
                        }
                        if (this.position == this.positionre)
                        {
                            this.motion      = !this.attack ? HalfSoul.MOTION.neutral : HalfSoul.MOTION.attack;
                            this.waittime    = 0;
                            this.frame       = 0;
                            this.roopneutral = 0;
                            ++this.roopmove;
                            break;
                        }
                        break;

                    case 3:
                        this.position = this.positionre;
                        this.PositionDirectSet();
                        break;

                    case 5:
                        this.motion      = !this.attack ? HalfSoul.MOTION.neutral : HalfSoul.MOTION.attack;
                        this.waittime    = 0;
                        this.frame       = 0;
                        this.roopneutral = 0;
                        ++this.roopmove;
                        break;
                    }
                    ++this.waittime;
                    break;
                }
                break;

            case HalfSoul.MOTION.attack:
                this.animationpoint = this.AnimeAttack(this.waittime);
                if (this.moveflame)
                {
                    switch (this.waittime)
                    {
                    case 5:
                        this.sound.PlaySE(SoundEffect.sword);
                        AttackBase attackBase1 = new SwordAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, 100, 2, this.element, false, false);
                        attackBase1.invincibility = false;
                        this.parent.attacks.Add(attackBase1);
                        break;

                    case 9:
                        this.sound.PlaySE(SoundEffect.sword);
                        AttackBase attackBase2 = new LanceAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, 100, 2, this.element, true);
                        attackBase2.invincibility = false;
                        this.parent.attacks.Add(attackBase2);
                        break;

                    case 20:
                        this.motion   = HalfSoul.MOTION.move;
                        this.waittime = 0;
                        this.attack   = false;
                        break;
                    }
                    ++this.waittime;
                    break;
                }
                break;

            case HalfSoul.MOTION.lost:
                if (this.waittime < 4)
                {
                    this.animationpoint = this.AnimeLost(this.waittime);
                    if (this.waittime == 2)
                    {
                        this.nohit = true;
                    }
                    ++this.waittime;
                    break;
                }
                break;

            case HalfSoul.MOTION.unlost:
                this.animationpoint = this.AnimeUnLost(this.waittime);
                if (this.waittime == 3)
                {
                    this.nohit    = false;
                    this.waittime = 0;
                    this.motion   = HalfSoul.MOTION.neutral;
                }
                ++this.waittime;
                break;
            }
            this.FlameControl(4);
        }
示例#3
0
        protected override void Moving()
        {
            if (!this.godmode && this.Hp <= this.HpMax / 2)
            {
                this.GodMode();
            }
            else
            {
                this.neutlal = this.Motion == NaviBase.MOTION.neutral;
                switch (this.Motion)
                {
                case NaviBase.MOTION.neutral:
                    if (this.moveflame)
                    {
                        this.animationpoint = this.AnimeNeutral(this.waittime % 3);
                        ++this.waittime;
                    }
                    if (this.moveflame && (this.waittime >= 8 / (version == 0 ? 5 : version) || this.atack))
                    {
                        this.waittime = 0;
                        ++this.roopneutral;
                        if (this.roopneutral >= 1 && this.parent.nowscene != SceneBattle.BATTLESCENE.end)
                        {
                            this.roopneutral = 0;
                            if (this.roopmove > this.moveroop && !this.badstatus[4])
                            {
                                this.roopmove = this.version > 3 ? this.Random.Next(-1, this.moveroop + 1) : 0;
                                ++this.atackroop;
                                if (!this.atack)
                                {
                                    if (this.hp <= this.hpmax / 2)
                                    {
                                        this.attack    = (Mima.ATTACK) this.pattern2[this.action];
                                        this.powerPlus = this.powers[this.pattern2[this.action]];
                                    }
                                    else
                                    {
                                        this.attack    = (Mima.ATTACK) this.pattern[this.action];
                                        this.powerPlus = this.powers[this.pattern[this.action]];
                                    }
                                    ++this.action;
                                    if (this.action >= this.pattern.Length)
                                    {
                                        this.action = 0;
                                    }
                                    switch (this.attack)
                                    {
                                    case Mima.ATTACK.IllProminence:
                                        this.counterTiming = true;
                                        this.sound.PlaySE(SoundEffect.pikin);
                                        this.speed        = 4;
                                        this.targetPanels = ((IEnumerable <Point>) this.RandomMultiPanel(4, this.UnionEnemy)).ToList <Point>();
                                        for (int index = 0; index < this.targetPanels.Count; ++index)
                                        {
                                            List <AttackBase> attacks = this.parent.attacks;
                                            IAudioEngine      sound   = this.sound;
                                            SceneBattle       parent  = this.parent;
                                            Point             point   = this.targetPanels[index];
                                            int x = point.X;
                                            point = this.targetPanels[index];
                                            int y     = point.Y;
                                            int union = (int)this.union;
                                            point = new Point();
                                            Point hitrange = point;
                                            Dummy dummy    = new Dummy(sound, parent, x, y, (Panel.COLOR)union, hitrange, 25, true);
                                            attacks.Add(dummy);
                                        }
                                        break;

                                    case Mima.ATTACK.DarkWave:
                                        this.sound.PlaySE(SoundEffect.sand);
                                        this.speed = 3;
                                        break;

                                    case Mima.ATTACK.GrandSpear:
                                        this.sound.PlaySE(SoundEffect.quake);
                                        this.ShakeStart(1, 30);
                                        this.speed = 4;
                                        break;

                                    case Mima.ATTACK.SoulFlame:
                                        this.speed = 3;
                                        break;

                                    case Mima.ATTACK.CrescentCharge:
                                        this.speed = 3;
                                        this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.union == Panel.COLOR.blue ? 5 : 0, 1, this.union, new Point(6, 0), 30, true));
                                        break;

                                    case Mima.ATTACK.Reincarnation:
                                        this.sound.PlaySE(SoundEffect.charge);
                                        this.speed = 3;
                                        break;
                                    }
                                    this.attackProcess = 0;
                                }
                                this.waittime = 0;
                                this.Motion   = NaviBase.MOTION.attack;
                            }
                            else
                            {
                                this.speed    = 4;
                                this.waittime = 0;
                                if (this.atack)
                                {
                                    this.roopmove = this.moveroop + 1;
                                }
                                this.Motion = NaviBase.MOTION.move;
                            }
                        }
                        break;
                    }
                    break;

                case NaviBase.MOTION.attack:
                    if (this.moveflame)
                    {
                        ++this.waittime;
                        if (this.moveflame)
                        {
                            switch (this.attack)
                            {
                            case Mima.ATTACK.IllProminence:
                                if (this.attackProcess == 0)
                                {
                                    this.animationpoint = this.AnimeIllProminence1(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 2:
                                        this.counterTiming = false;
                                        ++this.attackProcess;
                                        this.waittime = 0;
                                        break;
                                    }
                                }
                                else
                                {
                                    this.animationpoint = this.AnimeIllProminence2(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 3:
                                        this.sound.PlaySE(SoundEffect.bombmiddle);
                                        Point point;
                                        for (int index = 0; index < this.targetPanels.Count; ++index)
                                        {
                                            this.ShakeStart(2, 8);
                                            List <AttackBase> attacks = this.parent.attacks;
                                            IAudioEngine      sound1  = this.sound;
                                            SceneBattle       parent1 = this.parent;
                                            point = this.targetPanels[index];
                                            int x1 = point.X;
                                            point = this.targetPanels[index];
                                            int        y1         = point.Y;
                                            int        union      = (int)this.union;
                                            int        power      = this.Power;
                                            BombAttack bombAttack = new BombAttack(sound1, parent1, x1, y1, (Panel.COLOR)union, power, 1, ChipBase.ELEMENT.poison);
                                            attacks.Add(bombAttack);
                                            List <EffectBase> effects = this.parent.effects;
                                            IAudioEngine      sound2  = this.sound;
                                            SceneBattle       parent2 = this.parent;
                                            point = this.targetPanels[index];
                                            int x2 = point.X;
                                            point = this.targetPanels[index];
                                            int    y2     = point.Y;
                                            Bomber bomber = new Bomber(sound2, parent2, x2, y2, Bomber.BOMBERTYPE.poison, 3);
                                            effects.Add(bomber);
                                        }
                                        if (this.attackProcess < 2)
                                        {
                                            this.targetPanels = ((IEnumerable <Point>) this.RandomMultiPanel(4, this.UnionEnemy)).ToList <Point>();
                                            for (int index = 0; index < this.targetPanels.Count; ++index)
                                            {
                                                List <AttackBase> attacks = this.parent.attacks;
                                                IAudioEngine      sound   = this.sound;
                                                SceneBattle       parent  = this.parent;
                                                point = this.targetPanels[index];
                                                int x = point.X;
                                                point = this.targetPanels[index];
                                                int y     = point.Y;
                                                int union = (int)this.union;
                                                point = new Point();
                                                Point hitrange = point;
                                                Dummy dummy    = new Dummy(sound, parent, x, y, (Panel.COLOR)union, hitrange, 25, true);
                                                attacks.Add(dummy);
                                            }
                                            break;
                                        }
                                        break;

                                    case 8:
                                        if (this.attackProcess >= 2)
                                        {
                                            this.waittime = 0;
                                            this.motion   = NaviBase.MOTION.move;
                                            break;
                                        }
                                        ++this.attackProcess;
                                        this.waittime = 0;
                                        break;
                                    }
                                }
                                break;

                            case Mima.ATTACK.DarkWave:
                                switch (this.attackProcess)
                                {
                                case 0:
                                    this.animationpoint = this.AnimeDarkWave1(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 1:
                                        this.effecting     = true;
                                        this.positionre    = this.RandomTarget(this.union);
                                        this.positionre.X -= this.UnionRebirth(this.union);
                                        if (!this.NoObject(this.positionre, this.number))
                                        {
                                            this.nohit       = false;
                                            this.Motion      = NaviBase.MOTION.move;
                                            this.frame       = 0;
                                            this.waittime    = 0;
                                            this.roopneutral = 0;
                                            ++this.roopmove;
                                            break;
                                        }
                                        break;

                                    case 6:
                                        this.counterTiming = true;
                                        this.position      = this.positionre;
                                        this.PositionDirectSet();
                                        break;

                                    case 9:
                                        ++this.attackProcess;
                                        this.waittime = 0;
                                        break;
                                    }
                                    break;

                                case 1:
                                    this.animationpoint = this.AnimeDarkWave2(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 3:
                                        this.counterTiming = false;
                                        this.sound.PlaySE(SoundEffect.wave);
                                        this.parent.effects.Add(new MimaWaveLong(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, 3));
                                        AttackBase attackBase1 = new LanceAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 2, ChipBase.ELEMENT.aqua, false);
                                        attackBase1.invincibility = false;
                                        this.parent.attacks.Add(attackBase1);
                                        break;

                                    case 7:
                                        ++this.attackProcess;
                                        this.waittime = 0;
                                        break;
                                    }
                                    break;

                                case 2:
                                    this.animationpoint = this.AnimeDarkWave3(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 3:
                                        this.sound.PlaySE(SoundEffect.wave);
                                        this.parent.effects.Add(new MimaWaveDream(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, 3));
                                        AttackBase attackBase2 = new Halberd(this.sound, this.parent, this.position.X, this.position.Y, this.union, this.Power, 2, ChipBase.ELEMENT.aqua, true);
                                        attackBase2.invincibility = false;
                                        this.parent.attacks.Add(attackBase2);
                                        break;

                                    case 6:
                                        this.waittime  = 0;
                                        this.effecting = false;
                                        this.motion    = NaviBase.MOTION.move;
                                        break;
                                    }
                                    break;
                                }
                                break;

                            case Mima.ATTACK.GrandSpear:
                                switch (this.attackProcess)
                                {
                                case 0:
                                    this.animationpoint = this.AnimeMove(this.waittime);
                                    if (this.moveflame)
                                    {
                                        switch (this.waittime)
                                        {
                                        case 1:
                                            this.MoveRandom(true, false);
                                            break;

                                        case 5:
                                            this.counterTiming = true;
                                            this.position      = this.positionre;
                                            this.PositionDirectSet();
                                            break;

                                        case 10:
                                            this.nohit = false;
                                            ++this.attackProcess;
                                            this.waittime = 0;
                                            break;
                                        }
                                        break;
                                    }
                                    break;

                                case 1:
                                    this.animationpoint = this.AnimeGrandSpear(this.waittime);
                                    if (this.moveflame)
                                    {
                                        switch (this.waittime)
                                        {
                                        case 2:
                                            this.counterTiming = false;
                                            this.parent.attacks.Add(new MimaRockTower(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, MimaRockTower.MOTION.init));
                                            break;

                                        case 4:
                                            this.parent.attacks.Add(new MimaRockTower(this.sound, this.parent, this.position.X + 2 * this.UnionRebirth(this.union), this.position.Y - 1, this.union, this.Power, MimaRockTower.MOTION.init));
                                            this.parent.attacks.Add(new MimaRockTower(this.sound, this.parent, this.position.X + 2 * this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, MimaRockTower.MOTION.init));
                                            this.parent.attacks.Add(new MimaRockTower(this.sound, this.parent, this.position.X + 2 * this.UnionRebirth(this.union), this.position.Y + 1, this.union, this.Power, MimaRockTower.MOTION.init));
                                            break;

                                        case 6:
                                            this.parent.attacks.Add(new MimaRockTower(this.sound, this.parent, this.position.X + 3 * this.UnionRebirth(this.union), this.position.Y - 1, this.union, this.Power, MimaRockTower.MOTION.init));
                                            this.parent.attacks.Add(new MimaRockTower(this.sound, this.parent, this.position.X + 3 * this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, MimaRockTower.MOTION.init));
                                            this.parent.attacks.Add(new MimaRockTower(this.sound, this.parent, this.position.X + 3 * this.UnionRebirth(this.union), this.position.Y + 1, this.union, this.Power, MimaRockTower.MOTION.init));
                                            this.waittime = 0;
                                            this.motion   = NaviBase.MOTION.move;
                                            break;
                                        }
                                        break;
                                    }
                                    break;
                                }
                                break;

                            case Mima.ATTACK.SoulFlame:
                                if (this.position.X != 1)
                                {
                                    this.sound.PlaySE(SoundEffect.dark);
                                    this.parent.attacks.Add(new MimaFrame(this.sound, this.parent, this.position.X, this.position.Y, this.union, this.Power, 2, new Vector2(this.positionDirect.X, this.positionDirect.Y + 16f), ChipBase.ELEMENT.heat, 2));
                                }
                                this.waittime = 0;
                                this.motion   = NaviBase.MOTION.move;
                                break;

                            case Mima.ATTACK.CrescentCharge:
                                if (this.moveflame)
                                {
                                    switch (this.attackProcess)
                                    {
                                    case 0:
                                        if (this.waittime < 5)
                                        {
                                            this.animationpoint = this.AnimeMove(this.waittime);
                                        }
                                        else
                                        {
                                            this.animationpoint.X = -1;
                                        }
                                        this.nohit = true;
                                        switch (this.waittime)
                                        {
                                        case 10:
                                            this.sound.PlaySE(SoundEffect.shoot);
                                            this.mimacharge = new MimaCharge(this.sound, this.parent, this.union == Panel.COLOR.blue ? 5 : 0, 1, this.union, this.Power, 1, this.positionDirect, this.element, 8);
                                            this.parent.attacks.Add(mimacharge);
                                            this.waittime = 0;
                                            ++this.attackProcess;
                                            break;
                                        }
                                        break;

                                    case 1:
                                        this.animationpoint.X = -1;
                                        if (!this.mimacharge.flag)
                                        {
                                            this.waittime = 0;
                                            ++this.attackProcess;
                                            break;
                                        }
                                        break;

                                    case 2:
                                        this.animationpoint = this.AnimeMove(this.waittime + 5);
                                        switch (this.waittime)
                                        {
                                        case 5:
                                            this.nohit            = false;
                                            this.waittime         = 0;
                                            this.motion           = NaviBase.MOTION.neutral;
                                            this.animationpoint.X = 0;
                                            break;
                                        }
                                        break;
                                    }
                                    break;
                                }
                                break;

                            case Mima.ATTACK.Reincarnation:
                                if (this.attackProcess == 1)
                                {
                                    this.counterTiming = true;
                                }
                                switch (this.attackProcess)
                                {
                                case 0:
                                case 1:
                                case 2:
                                    this.animationpoint = this.AnimeReincarnation(this.waittime);
                                    if (this.waittime >= 6)
                                    {
                                        ++this.attackProcess;
                                        this.waittime = 0;
                                        break;
                                    }
                                    break;

                                case 3:
                                    this.counterTiming = false;
                                    this.MoveRandom(true, false);
                                    this.sound.PlaySE(SoundEffect.dark);
                                    this.parent.objects.Add(new MimaNavi(this.sound, this.parent, this.positionre.X, this.positionre.Y, this.union));
                                    this.waittime = 0;
                                    this.roopmove = -4;
                                    this.motion   = NaviBase.MOTION.move;
                                    break;
                                }
                                break;
                            }
                        }
                        break;
                    }
                    break;

                case NaviBase.MOTION.move:
                    this.animationpoint = this.AnimeMove(this.waittime);
                    if (this.moveflame)
                    {
                        switch (this.waittime)
                        {
                        case 0:
                            this.MoveRandom(false, false);
                            if (this.position == this.positionre)
                            {
                                this.nohit       = false;
                                this.Motion      = NaviBase.MOTION.neutral;
                                this.frame       = 0;
                                this.roopneutral = 0;
                                ++this.roopmove;
                                break;
                            }
                            break;

                        case 3:
                            this.nohit = true;
                            break;

                        case 5:
                            this.position = this.positionre;
                            this.PositionDirectSet();
                            break;

                        case 8:
                            this.nohit = false;
                            break;

                        case 10:
                            this.nohit       = false;
                            this.Motion      = NaviBase.MOTION.neutral;
                            this.speed       = this.nspeed;
                            this.frame       = 0;
                            this.roopneutral = 0;
                            ++this.roopmove;
                            break;
                        }
                        ++this.waittime;
                        break;
                    }
                    break;

                case NaviBase.MOTION.knockback:
                    switch (this.waittime)
                    {
                    case 2:
                        this.NockMotion();
                        this.nohit         = false;
                        this.counterTiming = false;
                        this.effecting     = false;
                        this.PositionDirectSet();
                        break;

                    case 3:
                        this.NockMotion();
                        break;

                    case 15:
                        this.animationpoint = new Point(0, 2);
                        this.PositionDirectSet();
                        break;

                    case 21:
                        this.animationpoint = new Point(0, 0);
                        this.waittime       = 0;
                        this.Motion         = NaviBase.MOTION.neutral;
                        break;
                    }
                    if (this.waittime >= 2 && this.waittime <= 6)
                    {
                        this.positionDirect.X -= this.UnionRebirth(this.union);
                    }
                    ++this.waittime;
                    break;
                }
                if (this.effecting && !this.nohit)
                {
                    this.AttackMake(this.Power, 0, 0);
                }
                this.FlameControl();
                this.MoveAftar();
            }
        }
示例#4
0
        protected override void Moving()
        {
            this.neutlal = this.Motion == NaviBase.MOTION.neutral;
            switch (this.Motion)
            {
            case NaviBase.MOTION.neutral:
                if (this.moveflame)
                {
                    ++this.waittime;
                }
                if (this.moveflame)
                {
                    this.animationpoint = this.AnimeNeutral(this.waittime);
                    if (this.waittime >= (this.beast ? 2 : 8 - Math.Min(6, (int)this.version)))
                    {
                        this.waittime = 0;
                        ++this.roopneutral;
                        if (this.roopneutral >= 1 && this.parent.nowscene != SceneBattle.BATTLESCENE.end)
                        {
                            this.roopneutral = 0;
                            if (this.roopmove > this.moveroop && !this.badstatus[4])
                            {
                                this.roopmove = 0;
                                this.roopmove = this.version > 3 ? this.Random.Next(-1, this.moveroop + 1) : 0;
                                ++this.atackroop;
                                if (!this.atack)
                                {
                                    int index = this.Random.Next(4);
                                    this.attack    = (HakutakuMan.ATTACK)index;
                                    this.powerPlus = this.powers[index];
                                }
                                this.waittime      = 0;
                                this.attackFlag    = true;
                                this.Motion        = NaviBase.MOTION.move;
                                this.counterTiming = true;
                            }
                            else
                            {
                                this.waittime = 0;
                                this.Motion   = NaviBase.MOTION.move;
                            }
                        }
                    }
                    break;
                }
                break;

            case NaviBase.MOTION.attack:
                if (this.moveflame)
                {
                    ++this.waittime;
                    if (this.moveflame)
                    {
                        switch (this.attack)
                        {
                        case HakutakuMan.ATTACK.WideCrow:
                            if (!this.beast)
                            {
                                this.animationpoint = this.AnimeWide(this.waittime);
                                switch (this.waittime)
                                {
                                case 6:
                                    this.counterTiming = false;
                                    this.sound.PlaySE(SoundEffect.shotwave);
                                    this.parent.attacks.Add(new SwordAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 3, this.element, false, false));
                                    break;

                                case 10:
                                    this.motion      = NaviBase.MOTION.move;
                                    this.frame       = 0;
                                    this.speed       = this.nspeed;
                                    this.roopneutral = 0;
                                    this.waittime    = 0;
                                    break;
                                }
                            }
                            else
                            {
                                if (this.attackCombo == 0)
                                {
                                    this.animationpoint = this.AnimeWideBO(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 6:
                                        this.counterTiming = false;
                                        this.sound.PlaySE(SoundEffect.shotwave);
                                        AttackBase attackBase = new SwordAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 3, this.element, false, false);
                                        attackBase.invincibility = false;
                                        this.parent.attacks.Add(attackBase);
                                        break;

                                    case 8:
                                        ++this.attackCombo;
                                        this.frame       = 0;
                                        this.speed       = this.nspeed;
                                        this.roopneutral = 0;
                                        this.waittime    = 0;
                                        break;
                                    }
                                }
                                else
                                {
                                    this.animationpoint = this.AnimeLongBO(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 6:
                                        this.counterTiming = false;
                                        this.sound.PlaySE(SoundEffect.shotwave);
                                        this.parent.attacks.Add(new LanceAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 3, this.element, true));
                                        break;

                                    case 10:
                                        this.attackCombo = 0;
                                        this.motion      = NaviBase.MOTION.move;
                                        this.frame       = 0;
                                        this.speed       = this.nspeed;
                                        this.roopneutral = 0;
                                        this.waittime    = 0;
                                        break;
                                    }
                                }
                                break;
                            }
                            break;

                        case HakutakuMan.ATTACK.LongCrow:
                            if (!this.beast)
                            {
                                this.animationpoint = this.AnimeLong(this.waittime);
                                switch (this.waittime)
                                {
                                case 6:
                                    this.counterTiming = false;
                                    this.sound.PlaySE(SoundEffect.shotwave);
                                    this.parent.attacks.Add(new LanceAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 3, this.element, true));
                                    break;

                                case 10:
                                    this.motion      = NaviBase.MOTION.move;
                                    this.frame       = 0;
                                    this.speed       = this.nspeed;
                                    this.roopneutral = 0;
                                    this.waittime    = 0;
                                    break;
                                }
                            }
                            else
                            {
                                if (this.attackCombo == 0)
                                {
                                    this.animationpoint = this.AnimeLongBO(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 6:
                                        this.counterTiming = false;
                                        this.sound.PlaySE(SoundEffect.shotwave);
                                        AttackBase attackBase = new LanceAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 3, this.element, true);
                                        attackBase.invincibility = false;
                                        this.parent.attacks.Add(attackBase);
                                        break;

                                    case 8:
                                        ++this.attackCombo;
                                        this.frame       = 0;
                                        this.speed       = this.nspeed;
                                        this.roopneutral = 0;
                                        this.waittime    = 0;
                                        break;
                                    }
                                }
                                else
                                {
                                    this.animationpoint = this.AnimeWideBO(this.waittime);
                                    switch (this.waittime)
                                    {
                                    case 6:
                                        this.counterTiming = false;
                                        this.sound.PlaySE(SoundEffect.shotwave);
                                        this.parent.attacks.Add(new SwordAttack(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 3, this.element, false, false));
                                        break;

                                    case 10:
                                        this.attackCombo = 0;
                                        this.motion      = NaviBase.MOTION.move;
                                        this.frame       = 0;
                                        this.speed       = this.nspeed;
                                        this.roopneutral = 0;
                                        this.waittime    = 0;
                                        break;
                                    }
                                }
                                break;
                            }
                            break;

                        case HakutakuMan.ATTACK.Miss:
                            if (!this.beast)
                            {
                                this.animationpoint = this.AnimeMiss(this.waittime);
                                switch (this.waittime)
                                {
                                case 7:
                                case 9:
                                    this.counterTiming = false;
                                    this.sound.PlaySE(SoundEffect.lance);
                                    break;

                                case 13:
                                    this.sound.PlaySE(SoundEffect.canon);
                                    this.sound.PlaySE(SoundEffect.damageenemy);
                                    this.whitetime = 4;
                                    this.hp       -= 20 * version;
                                    break;

                                case 20:
                                    this.motion      = NaviBase.MOTION.move;
                                    this.frame       = 0;
                                    this.roopneutral = 0;
                                    this.waittime    = 0;
                                    this.speed       = this.nspeed;
                                    break;
                                }
                            }
                            else
                            {
                                this.animationpoint = this.AnimeCrossBO(this.waittime);
                                switch (this.waittime)
                                {
                                case 6:
                                    this.sound.PlaySE(SoundEffect.shotwave);
                                    this.parent.attacks.Add(new SwordCloss(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 3, this.element, false));
                                    break;

                                case 10:
                                    this.motion      = NaviBase.MOTION.move;
                                    this.frame       = 0;
                                    this.speed       = this.nspeed;
                                    this.roopneutral = 0;
                                    this.waittime    = 0;
                                    break;
                                }
                                break;
                            }
                            break;

                        case HakutakuMan.ATTACK.Hadouken:
                            if (!this.beast)
                            {
                                this.animationpoint = this.AnimeHadou(this.waittime);
                                switch (this.waittime)
                                {
                                case 8:
                                    this.counterTiming = false;
                                    int        x          = this.RandomTarget().X;
                                    int        num1       = 1;
                                    int        num2       = 8;
                                    AttackBase attackBase = new FireBreath(this.sound, this.parent, this.position.X + num1 * this.UnionRebirth(this.union), this.position.Y, this.union, this.Power, 2, this.element, x);
                                    attackBase.positionDirect.Y += num2;
                                    this.parent.attacks.Add(attackBase);
                                    break;

                                case 16:
                                    this.motion      = NaviBase.MOTION.move;
                                    this.frame       = 0;
                                    this.speed       = this.nspeed;
                                    this.roopneutral = 0;
                                    this.waittime    = 0;
                                    break;
                                }
                            }
                            else
                            {
                                switch (this.attackCombo)
                                {
                                case 0:
                                    this.animationpoint = this.AnimeSpin1BO(this.waittime);
                                    if (this.waittime == 4)
                                    {
                                        this.counterTiming = false;
                                        this.guard         = CharacterBase.GUARD.guard;
                                        switch (this.position.Y)
                                        {
                                        case 0:
                                            this.spinUP = false;
                                            this.spinGo = true;
                                            break;

                                        case 2:
                                            this.spinUP = true;
                                            this.spinGo = true;
                                            break;

                                        default:
                                            this.spinGo = false;
                                            break;
                                        }
                                        this.PositionDirectSet();
                                        this.HitFlagReset();
                                        this.sound.PlaySE(SoundEffect.knife);
                                        this.effecting = true;
                                        ++this.attackCombo;
                                        this.frame       = 0;
                                        this.speed       = this.nspeed;
                                        this.roopneutral = 0;
                                        this.waittime    = 0;
                                        this.DammySet();
                                        break;
                                    }
                                    break;

                                case 1:
                                    this.animationpoint = this.AnimeSpin2BO(this.waittime % 4);
                                    if (this.spinGo)
                                    {
                                        if (this.SlideMove(movespeed, 0))
                                        {
                                            this.SlideMoveEnd();
                                            this.PositionDirectSet();
                                            this.spinGo = false;
                                            break;
                                        }
                                        break;
                                    }
                                    if (this.spinUP)
                                    {
                                        if (this.SlideMove(movespeed, 2))
                                        {
                                            this.SlideMoveEnd();
                                            Point position = this.position;
                                            --position.Y;
                                            if (!this.InAreaCheck(position))
                                            {
                                                this.spinUP = !this.spinUP;
                                                position    = this.position;
                                                position.X += this.UnionRebirth(this.union);
                                                if (!this.InAreaCheck(position))
                                                {
                                                    ++this.attackCombo;
                                                    this.frame       = 0;
                                                    this.speed       = this.nspeed;
                                                    this.roopneutral = 0;
                                                    this.waittime    = 0;
                                                }
                                                this.PositionDirectSet();
                                                this.spinGo = true;
                                            }
                                        }
                                    }
                                    else if (this.SlideMove(movespeed, 3))
                                    {
                                        this.SlideMoveEnd();
                                        Point position = this.position;
                                        ++position.Y;
                                        if (!this.InAreaCheck(position))
                                        {
                                            this.spinUP = !this.spinUP;
                                            position    = this.position;
                                            position.X += this.UnionRebirth(this.union);
                                            if (!this.InAreaCheck(position))
                                            {
                                                this.HitFlagReset();
                                                ++this.attackCombo;
                                                this.frame       = 0;
                                                this.speed       = this.nspeed;
                                                this.roopneutral = 0;
                                                this.waittime    = 0;
                                            }
                                            this.PositionDirectSet();
                                            this.spinGo = true;
                                        }
                                    }
                                    break;

                                case 2:
                                    this.animationpoint = this.AnimeSpin2BO(this.waittime % 3);
                                    if (this.SlideMove(movespeed, 1))
                                    {
                                        Point position = this.position;
                                        position.X -= this.UnionRebirth(this.union);
                                        if (!this.InAreaCheck(position))
                                        {
                                            this.guard     = CharacterBase.GUARD.none;
                                            this.effecting = false;
                                            ++this.attackCombo;
                                            this.frame       = 0;
                                            this.speed       = this.nspeed;
                                            this.roopneutral = 0;
                                            this.waittime    = 0;
                                        }
                                        break;
                                    }
                                    break;

                                default:
                                    this.animationpoint = this.AnimeSpin3BO(this.waittime);
                                    if (this.waittime == 4)
                                    {
                                        this.effecting   = false;
                                        this.attackCombo = 0;
                                        this.motion      = NaviBase.MOTION.move;
                                        this.frame       = 0;
                                        this.speed       = this.nspeed;
                                        this.roopneutral = 0;
                                        this.waittime    = 0;
                                        break;
                                    }
                                    break;
                                }
                                break;
                            }
                            break;
                        }
                    }
                    break;
                }
                break;

            case NaviBase.MOTION.move:
                this.animationpoint = this.AnimeMove(this.waittime);
                if (this.moveflame)
                {
                    switch (this.waittime)
                    {
                    case 0:
                        if (!this.attackFlag || this.attack == HakutakuMan.ATTACK.Hadouken)
                        {
                            this.MoveRandom(false, false);
                        }
                        else
                        {
                            Point point = this.RandomTarget();
                            if (this.Canmove(new Point(point.X - this.UnionRebirth(this.union), point.Y), this.number, this.union == Panel.COLOR.blue ? Panel.COLOR.red : Panel.COLOR.blue) && !this.HeviSand)
                            {
                                this.positionre = new Point(point.X - this.UnionRebirth(this.union), point.Y);
                            }
                            else
                            {
                                this.MoveRandom(true, false);
                            }
                        }
                        if (this.position == this.positionre)
                        {
                            if (this.attackFlag)
                            {
                                this.Motion = NaviBase.MOTION.attack;
                                if (this.beast)
                                {
                                    this.speed *= 2;
                                }
                                this.attackFlag = false;
                                switch (this.attack)
                                {
                                case HakutakuMan.ATTACK.WideCrow:
                                    this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y - 1, this.union, new Point(0, 2), 60, true));
                                    break;

                                case HakutakuMan.ATTACK.LongCrow:
                                    this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, new Point(1, 0), 60, true));
                                    break;
                                }
                            }
                            else
                            {
                                this.dammy.flag = false;
                                this.Motion     = NaviBase.MOTION.neutral;
                            }
                            this.frame       = 0;
                            this.roopneutral = 0;
                            ++this.roopmove;
                            break;
                        }
                        break;

                    case 4:
                        var originalPosition = this.position;
                        this.position         = this.positionre;
                        this.positionReserved = null;
                        if (this.attackFlag)
                        {
                            this.positionReserved = originalPosition;
                            switch (this.attack)
                            {
                            case HakutakuMan.ATTACK.WideCrow:
                                this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y - 1, this.union, new Point(0, 2), 60, true));
                                break;

                            case HakutakuMan.ATTACK.LongCrow:
                                this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, new Point(1, 0), 60, true));
                                break;

                            case HakutakuMan.ATTACK.Miss:
                                if (this.beast)
                                {
                                    this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X + this.UnionRebirth(this.union), this.position.Y, this.union, new Point(0, 0), 60, true));
                                    this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X + 2 * this.UnionRebirth(this.union), this.position.Y - 1, this.union, new Point(0, 0), 60, true));
                                    this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X, this.position.Y - 1, this.union, new Point(0, 0), 60, true));
                                    this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X + 2 * this.UnionRebirth(this.union), this.position.Y + 1, this.union, new Point(0, 0), 60, true));
                                    this.parent.attacks.Add(new Dummy(this.sound, this.parent, this.position.X, this.position.Y + 1, this.union, new Point(0, 0), 60, true));
                                    break;
                                }
                                break;
                            }
                        }
                        this.PositionDirectSet();
                        break;

                    case 7:
                        if (this.attackFlag)
                        {
                            this.Motion     = NaviBase.MOTION.attack;
                            this.attackFlag = false;
                            this.speed     *= 2;
                        }
                        else
                        {
                            this.dammy.flag = false;
                            this.Motion     = NaviBase.MOTION.neutral;
                        }
                        this.frame       = 0;
                        this.roopneutral = 0;
                        ++this.roopmove;
                        break;
                    }
                    ++this.waittime;
                    break;
                }
                break;

            case NaviBase.MOTION.knockback:
                switch (this.waittime)
                {
                case 2:
                    this.NockMotion();
                    this.attackCombo   = 0;
                    this.speed         = this.nspeed;
                    this.guard         = CharacterBase.GUARD.none;
                    this.counterTiming = false;
                    this.effecting     = false;
                    this.attackFlag    = false;
                    this.PositionDirectSet();
                    break;

                case 3:
                    this.NockMotion();
                    break;

                case 15:
                    this.animationpoint = new Point(5, 0);
                    this.PositionDirectSet();
                    break;

                case 21:
                    this.animationpoint = new Point(0, 0);
                    this.waittime       = 0;
                    this.dammy.flag     = false;
                    this.Motion         = NaviBase.MOTION.move;
                    break;
                }
                if (this.waittime >= 2 && this.waittime <= 6)
                {
                    this.positionDirect.X -= this.UnionRebirth(this.union);
                }
                ++this.waittime;
                break;
            }
            if (this.effecting && !this.nohit)
            {
                this.AttackMake(this.Power, 0, 0);
            }
            this.FlameControl();
            this.MoveAftar();
        }