示例#1
0
        public override void Break()
        {
            if (!this.AllowedToBreak)
            {
                return;
            }

            this.frame    = 0;
            this.breaking = true;

            if (this.screenGreyOut != null)
            {
                this.screenGreyOut.end = true;
                this.screenGreyOut     = null;

                foreach (var elementInfoText in this.infoText)
                {
                    elementInfoText.end = true;
                }
                this.infoText.Clear();
            }
        }
示例#2
0
        public override void Action(CharacterBase character, SceneBattle battle)
        {
            if (this.screen == null)
            {
                this.screen = new ScreenBlack(this.sound, battle, new Vector2(), new Point(), this.element, 0, false);
                battle.effects.Add(screen);
                this.position = new Point(character.union == Panel.COLOR.red ? 1 : 4, 2);
            }
            if (!this.BlackOut(character, battle, this.name, this.Power(character).ToString()))
            {
                return;
            }
            switch (character.waittime)
            {
            case 1:
                character.animationpoint.X = 1;
                break;

            case 3:
                character.animationpoint.X = 2;
                break;

            case 5:
                character.animationpoint.X = 3;
                break;

            case 7:
                character.animationpoint.X = -1;
                break;
            }
            if (character.waittime % 2 == 0)
            {
                this.eye = !this.eye;
            }
            int num = 30;

            if (character.waittime == 44)
            {
                this.sound.PlaySE(SoundEffect.pikin);
            }
            if (character.waittime == 44 + num)
            {
                battle.effects.Add(new Charge(this.sound, battle, this.position.X, this.position.Y));
            }
            if (character.waittime > 44 + num + 50)
            {
                this.FlameControl(1);
                if (this.count < 10)
                {
                    if (this.frame > 20)
                    {
                        this.frame = 0;
                        this.sound.PlaySE(SoundEffect.thunder);
                        AttackBase a = new ElekiFang(this.sound, battle, character.union == Panel.COLOR.red ? 2 : 3, 1, character.union, this.Power(character), 2, this.element, this.count % 2 == 0);
                        a.knock = true;
                        battle.attacks.Add(this.Paralyze(a));
                        ++this.count;
                    }
                }
                else if (this.frame > 60)
                {
                    switch (this.frame)
                    {
                    case 61:
                        character.animationpoint.X = 3;
                        break;

                    case 63:
                        character.animationpoint.X = 2;
                        break;

                    case 65:
                        character.animationpoint.X = 1;
                        break;

                    case 67:
                        character.animationpoint.X = 0;
                        break;
                    }
                    if (this.frame > 80)
                    {
                        if (!this.screen.end)
                        {
                            this.screen.end = true;
                        }
                        if (this.BlackOutEnd(character, battle))
                        {
                            base.Action(character, battle);
                        }
                    }
                }
            }
        }
示例#3
0
        public override void Action(CharacterBase character, SceneBattle battle)
        {
            if (this.screen == null)
            {
                this.screen = new ScreenBlack(this.sound, battle, new Vector2(), new Point(), this.element, 0, false);
                battle.effects.Add(screen);
                this.position = new Point(character.union == Panel.COLOR.red ? 1 : 4, 2);
            }
            CharacterBase character1 = character;
            SceneBattle   parent     = battle;
            string        name       = this.name;
            int           num1       = this.Power(character);
            string        power      = num1.ToString();

            if (!this.BlackOut(character1, parent, name, power))
            {
                return;
            }
            switch (character.waittime)
            {
            case 1:
                character.animationpoint.X = 1;
                break;

            case 3:
                character.animationpoint.X = 2;
                break;

            case 5:
                character.animationpoint.X = 3;
                break;

            case 7:
                character.animationpoint.X = -1;
                break;
            }
            if (character.waittime % 2 == 0)
            {
                this.eye = !this.eye;
            }
            int num2 = 30;

            if (character.waittime == 44)
            {
                this.sound.PlaySE(SoundEffect.pikin);
                List <Point> source = new List <Point>();
                for (int x = 0; x < battle.panel.GetLength(0); ++x)
                {
                    for (int y = 0; y < battle.panel.GetLength(1); ++y)
                    {
                        if (battle.panel[x, y].color == character.UnionEnemy)
                        {
                            source.Add(new Point(x, y));
                        }
                    }
                }
                this.posis = source.OrderBy <Point, Guid>(i => Guid.NewGuid()).ToArray <Point>();
            }
            if (character.waittime == 44 + num2)
            {
                battle.effects.Add(new Charge(this.sound, battle, this.position.X, this.position.Y));
            }
            if (character.waittime > 44 + num2 + 50)
            {
                this.FlameControl(1);
                if (this.count < 45)
                {
                    if (this.frame > 10)
                    {
                        this.frame = 0;
                        this.sound.PlaySE(SoundEffect.canon);
                        Point point = new Point();
                        point.X = character.union == Panel.COLOR.red ? 2 : 3;
                        point.Y = 1;
                        Vector2 position = this._position;
                        position.Y += 80f;
                        AttackBase a1 = new DarkHand(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, position, this.posis[this.count % this.posis.Length], 15);
                        num1 = this.posis[this.count % this.posis.Length].X;
                        string str1 = num1.ToString();
                        num1 = this.posis[this.count % this.posis.Length].Y;
                        string str2 = num1.ToString();
                        battle.attacks.Add(this.Paralyze(a1));
                        ++this.count;
                        AttackBase a2 = new DarkHand(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, position, this.posis[this.count % this.posis.Length], 15);
                        num1 = this.posis[this.count % this.posis.Length].X;
                        string str3 = num1.ToString();
                        num1 = this.posis[this.count % this.posis.Length].Y;
                        string str4 = num1.ToString();
                        battle.attacks.Add(this.Paralyze(a2));
                        ++this.count;
                        AttackBase a3 = new DarkHand(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, position, this.posis[this.count % this.posis.Length], 15);
                        num1 = this.posis[this.count % this.posis.Length].X;
                        string str5 = num1.ToString();
                        num1 = this.posis[this.count % this.posis.Length].Y;
                        string str6 = num1.ToString();
                        battle.attacks.Add(this.Paralyze(a3));
                        ++this.count;
                    }
                }
                else if (this.frame > 60)
                {
                    switch (this.frame)
                    {
                    case 61:
                        character.animationpoint.X = 3;
                        break;

                    case 63:
                        character.animationpoint.X = 2;
                        break;

                    case 65:
                        character.animationpoint.X = 1;
                        break;

                    case 67:
                        character.animationpoint.X = 0;
                        break;
                    }
                    if (this.frame > 80)
                    {
                        if (!this.screen.end)
                        {
                            this.screen.end = true;
                        }
                        if (this.BlackOutEnd(character, battle))
                        {
                            base.Action(character, battle);
                        }
                    }
                }
            }
        }
示例#4
0
        public override void Action(CharacterBase character, SceneBattle battle)
        {
            if (this.screen == null)
            {
                this.screen = new ScreenBlack(this.sound, battle, new Vector2(), new Point(), this.element, 0, false);
                battle.effects.Add(screen);
                this.position = new Point(character.union == Panel.COLOR.red ? 0 : 5, 2);
                int[] numArray = new int[6];
                foreach (CharacterBase characterBase in battle.AllChara())
                {
                    if (characterBase.union == character.UnionEnemy)
                    {
                        switch (characterBase.element)
                        {
                        case ChipBase.ELEMENT.heat:
                            ++numArray[1];
                            ++numArray[5];
                            break;

                        case ChipBase.ELEMENT.aqua:
                            ++numArray[3];
                            ++numArray[4];
                            break;

                        case ChipBase.ELEMENT.eleki:
                            ++numArray[2];
                            ++numArray[5];
                            break;

                        case ChipBase.ELEMENT.leaf:
                            ++numArray[0];
                            ++numArray[4];
                            break;

                        case ChipBase.ELEMENT.poison:
                            ++numArray[0];
                            ++numArray[3];
                            break;

                        case ChipBase.ELEMENT.earth:
                            ++numArray[1];
                            ++numArray[2];
                            break;
                        }
                    }
                }
                int num = 1;
                for (int index = 0; index < numArray.Length; ++index)
                {
                    if (numArray[index] >= num)
                    {
                        switch (index)
                        {
                        case 0:
                            this.element = ChipBase.ELEMENT.heat;
                            break;

                        case 1:
                            this.element = ChipBase.ELEMENT.aqua;
                            break;

                        case 2:
                            this.element = ChipBase.ELEMENT.leaf;
                            break;

                        case 3:
                            this.element = ChipBase.ELEMENT.eleki;
                            break;

                        case 4:
                            this.element = ChipBase.ELEMENT.poison;
                            break;

                        case 5:
                            this.element = ChipBase.ELEMENT.earth;
                            break;
                        }
                        num = numArray[index];
                    }
                }
            }
            if (!this.BlackOut(character, battle, this.name, this.Power(character).ToString()))
            {
                return;
            }
            switch (character.waittime)
            {
            case 1:
                character.animationpoint.X = 1;
                break;

            case 3:
                character.animationpoint.X = 2;
                break;

            case 5:
                character.animationpoint.X = 3;
                break;

            case 7:
                character.animationpoint.X = -1;
                break;
            }
            if (character.waittime % 2 == 0)
            {
                this.eye = !this.eye;
            }
            int num1 = 30;

            if (character.waittime == 44)
            {
                this.sound.PlaySE(SoundEffect.pikin);
            }
            if (character.waittime == 44 + num1)
            {
                battle.effects.Add(new Charge(this.sound, battle, this.position.X, this.position.Y));
            }
            if (character.waittime > 44 + num1 + 50)
            {
                this.open = true;
                this.FlameControl(1);
                if (this.count < 3)
                {
                    if (this.frame > 8)
                    {
                        this.frame = 0;
                        this.sound.PlaySE(SoundEffect.quake);
                        this.ShakeStart(8);
                        Point point = new Point();
                        switch (this.count)
                        {
                        case 0:
                            point.X = character.union == Panel.COLOR.red ? 2 : 4;
                            point.Y = 1;
                            ElementFire elementFire1 = new ElementFire(this.sound, character.parent, point.X, point.Y, character.union, this.Power(character), 6, this.element, false, 1);
                            battle.attacks.Add(this.Paralyze(elementFire1));
                            break;

                        case 1:
                            point.X = character.union == Panel.COLOR.red ? 3 : 3;
                            point.Y = 0;
                            ElementFire elementFire2 = new ElementFire(this.sound, character.parent, point.X, point.Y, character.union, this.Power(character), 6, this.element, false, 1);
                            battle.attacks.Add(this.Paralyze(elementFire2));
                            point.Y = 1;
                            ElementFire elementFire3 = new ElementFire(this.sound, character.parent, point.X, point.Y, character.union, this.Power(character), 6, this.element, false, 1);
                            battle.attacks.Add(this.Paralyze(elementFire3));
                            point.Y = 2;
                            ElementFire elementFire4 = new ElementFire(this.sound, character.parent, point.X, point.Y, character.union, this.Power(character), 6, this.element, false, 1);
                            battle.attacks.Add(this.Paralyze(elementFire4));
                            break;

                        default:
                            point.X = character.union == Panel.COLOR.red ? 4 : 2;
                            point.Y = 0;
                            ElementFire elementFire5 = new ElementFire(this.sound, character.parent, point.X, point.Y, character.union, this.Power(character), 6, this.element, false, 1);
                            battle.attacks.Add(this.Paralyze(elementFire5));
                            point.Y = 1;
                            ElementFire elementFire6 = new ElementFire(this.sound, character.parent, point.X, point.Y, character.union, this.Power(character), 6, this.element, false, 1);
                            battle.attacks.Add(this.Paralyze(elementFire6));
                            point.Y = 2;
                            ElementFire elementFire7 = new ElementFire(this.sound, character.parent, point.X, point.Y, character.union, this.Power(character), 6, this.element, false, 1);
                            battle.attacks.Add(this.Paralyze(elementFire7));
                            break;
                        }
                        ++this.count;
                    }
                }
                else if (this.frame > 60)
                {
                    switch (this.frame)
                    {
                    case 61:
                        this.ShakeEnd();
                        character.animationpoint.X = 3;
                        break;

                    case 63:
                        character.animationpoint.X = 2;
                        break;

                    case 65:
                        character.animationpoint.X = 1;
                        break;

                    case 67:
                        character.animationpoint.X = 0;
                        break;
                    }
                    if (this.frame > 80)
                    {
                        if (!this.screen.end)
                        {
                            this.screen.end = true;
                        }
                        if (this.BlackOutEnd(character, battle))
                        {
                            base.Action(character, battle);
                        }
                    }
                }
            }
        }
示例#5
0
        public override void Action(CharacterBase character, SceneBattle battle)
        {
            if (this.screen == null)
            {
                this.screen = new ScreenBlack(this.sound, battle, new Vector2(), new Point(), this.element, 0, false);
                battle.effects.Add(screen);
                this.position = new Point(character.union == Panel.COLOR.red ? 1 : 4, 2);
            }
            if (!this.BlackOut(character, battle, this.name, this.Power(character).ToString()))
            {
                return;
            }
            switch (character.waittime)
            {
            case 1:
                character.animationpoint.X = 1;
                break;

            case 3:
                character.animationpoint.X = 2;
                break;

            case 5:
                character.animationpoint.X = 3;
                break;

            case 7:
                character.animationpoint.X = -1;
                break;
            }
            if (character.waittime % 2 == 0)
            {
                this.eye = !this.eye;
            }
            int num = 30;

            if (character.waittime == 44)
            {
                this.sound.PlaySE(SoundEffect.pikin);
            }
            if (character.waittime == 44 + num)
            {
                battle.effects.Add(new Charge(this.sound, battle, this.position.X, this.position.Y));
            }
            if (character.waittime > 44 + num + 50)
            {
                this.FlameControl(1);
                if (this.count < 6)
                {
                    if (this.frame > 20)
                    {
                        Point point = new Point();
                        switch (this.count)
                        {
                        case 0:
                            this.sound.PlaySE(SoundEffect.beamlong);
                            point.X   = character.union == Panel.COLOR.red ? 2 : 3;
                            point.Y   = 1;
                            this.beam = new JusticeBeam(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 0);
                            battle.attacks.Add(this.Paralyze(beam));
                            break;

                        case 1:
                            point.X = character.union == Panel.COLOR.red ? 2 : 3;
                            point.Y = 1;
                            AttackBase a1 = new JusticeRing(this.sound, battle, point.X, point.Y, character.union, this.Power(character), this.element);
                            battle.attacks.Add(this.Paralyze(a1));
                            break;

                        case 2:
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 1;
                            AttackBase a2 = new JusticeRing(this.sound, battle, point.X, point.Y, character.union, this.Power(character), this.element);
                            battle.attacks.Add(this.Paralyze(a2));
                            break;

                        case 3:
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 1;
                            AttackBase a3 = new JusticeRing(this.sound, battle, point.X, point.Y, character.union, this.Power(character), this.element);
                            battle.attacks.Add(this.Paralyze(a3));
                            break;

                        case 4:
                            point.X = character.union == Panel.COLOR.red ? 5 : 0;
                            point.Y = 1;
                            AttackBase a4 = new JusticeRing(this.sound, battle, point.X, point.Y, character.union, this.Power(character), this.element);
                            battle.attacks.Add(this.Paralyze(a4));
                            break;

                        case 5:
                            this.beam.end = true;
                            break;
                        }
                        this.frame = 0;
                        ++this.count;
                    }
                }
                else if (this.frame > 60)
                {
                    switch (this.frame)
                    {
                    case 61:
                        character.animationpoint.X = 3;
                        break;

                    case 63:
                        character.animationpoint.X = 2;
                        break;

                    case 65:
                        character.animationpoint.X = 1;
                        break;

                    case 67:
                        character.animationpoint.X = 0;
                        break;
                    }
                    if (this.frame > 80)
                    {
                        if (!this.screen.end)
                        {
                            this.screen.end = true;
                        }
                        if (this.BlackOutEnd(character, battle))
                        {
                            base.Action(character, battle);
                        }
                    }
                }
            }
        }
示例#6
0
        public override void Action(CharacterBase character, SceneBattle battle)
        {
            if (this.screen == null)
            {
                this.screen = new ScreenBlack(this.sound, battle, new Vector2(), new Point(), this.element, 0, false);
                battle.effects.Add(screen);
                this.position = new Point(character.union == Panel.COLOR.red ? 1 : 4, 2);
            }
            if (!this.BlackOut(character, battle, this.name, this.Power(character).ToString()))
            {
                return;
            }
            switch (character.waittime)
            {
            case 1:
                character.animationpoint.X = 1;
                break;

            case 3:
                character.animationpoint.X = 2;
                break;

            case 5:
                character.animationpoint.X = 3;
                break;

            case 7:
                character.animationpoint.X = -1;
                break;
            }
            if (character.waittime % 2 == 0)
            {
                this.eye = !this.eye;
            }
            int num = 30;

            if (character.waittime == 44)
            {
                this.sound.PlaySE(SoundEffect.pikin);
            }
            if (character.waittime == 44 + num)
            {
                Charge charge = new Charge(this.sound, battle, this.position.X, this.position.Y);
                charge.positionDirect.Y -= 24f;
                battle.effects.Add(charge);
            }
            if (character.waittime > 44 + num + 50)
            {
                this.FlameControl(1);
                Point point = new Point();
                if (this.count < 5)
                {
                    switch (this.frame)
                    {
                    case 1:
                        switch (this.count)
                        {
                        case 0:
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 0;
                            break;

                        case 1:
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 1;
                            break;

                        case 2:
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 0;
                            break;

                        case 3:
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 1;
                            break;

                        case 4:
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 1;
                            break;
                        }
                        NSEffect.DreamMeteo dreamMeteo = new NSEffect.DreamMeteo(this.sound, battle, point.X, point.Y, 30, (uint)character.union > 0U);
                        if (this.count < 4)
                        {
                            dreamMeteo.positionDirect.X += 20 * this.UnionRebirth(character.union);
                            dreamMeteo.positionDirect.Y += 12f;
                        }
                        battle.effects.Add(dreamMeteo);
                        break;

                    case 30:
                        this.sound.PlaySE(SoundEffect.bombmiddle);
                        switch (this.count)
                        {
                        case 0:
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 0;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 0;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            this.frame = 0;
                            ++this.count;
                            break;

                        case 1:
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 2;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 2;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            this.frame = 0;
                            ++this.count;
                            break;

                        case 2:
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 0;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 5 : 0;
                            point.Y = 0;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 5 : 0;
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            this.frame = 0;
                            ++this.count;
                            break;

                        case 3:
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 5 : 0;
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 2;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.X = character.union == Panel.COLOR.red ? 5 : 0;
                            point.Y = 2;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            this.frame = 0;
                            ++this.count;
                            break;

                        case 4:
                            this.frame = 11;
                            ++this.count;
                            break;
                        }
                        this.ShakeStart(8, 8);
                        break;
                    }
                }
                else if (this.count < 8)
                {
                    if (this.frame == 12)
                    {
                        switch (this.count)
                        {
                        case 5:
                            point.X = character.union == Panel.COLOR.red ? 3 : 2;
                            point.Y = 0;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.Y = 2;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            this.frame = 0;
                            ++this.count;
                            break;

                        case 6:
                            this.sound.PlaySE(SoundEffect.bombmiddle);
                            point.X = character.union == Panel.COLOR.red ? 4 : 1;
                            point.Y = 0;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.Y = 2;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            this.frame = 0;
                            ++this.count;
                            break;

                        case 7:
                            this.sound.PlaySE(SoundEffect.bombmiddle);
                            point.X = character.union == Panel.COLOR.red ? 5 : 0;
                            point.Y = 0;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.Y = 1;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            point.Y = 2;
                            battle.effects.Add(new ImpactBomb(this.sound, battle, point.X, point.Y));
                            battle.attacks.Add(this.Paralyze(new BombAttack(this.sound, battle, point.X, point.Y, character.union, this.Power(character), 1, this.element)));
                            this.frame = 0;
                            ++this.count;
                            break;
                        }
                        this.ShakeStart(8, 8);
                    }
                }
                else if (this.frame > 60)
                {
                    switch (this.frame)
                    {
                    case 61:
                        character.animationpoint.X = 3;
                        break;

                    case 63:
                        character.animationpoint.X = 2;
                        break;

                    case 65:
                        character.animationpoint.X = 1;
                        break;

                    case 67:
                        character.animationpoint.X = 0;
                        break;
                    }
                    if (this.frame > 80)
                    {
                        if (!this.screen.end)
                        {
                            character.barrierType = CharacterBase.BARRIER.PowerAura;
                            character.barierPower = 100;
                            character.barierTime  = 7200;
                            this.screen.end       = true;
                        }
                        if (this.BlackOutEnd(character, battle))
                        {
                            base.Action(character, battle);
                        }
                    }
                }
            }
        }
示例#7
0
        public override void Action(CharacterBase character, SceneBattle battle)
        {
            if (this.screen == null)
            {
                this.screen = new ScreenBlack(this.sound, battle, new Vector2(), new Point(), this.element, 0, false);
                battle.effects.Add(screen);
                this.position = new Point(character.union == Panel.COLOR.red ? 1 : 4, 2);
            }
            if (!this.BlackOut(character, battle, this.name, this.Power(character).ToString()))
            {
                return;
            }
            switch (character.waittime)
            {
            case 1:
                character.animationpoint.X = 1;
                break;

            case 3:
                character.animationpoint.X = 2;
                break;

            case 5:
                character.animationpoint.X = 3;
                break;

            case 7:
                character.animationpoint.X = -1;
                break;
            }
            if (character.waittime % 2 == 0)
            {
                this.eye = !this.eye;
            }
            int num = 30;

            if (character.waittime == 44)
            {
                this.sound.PlaySE(SoundEffect.pikin);
                this.sound.PlaySE(SoundEffect.shoot);
                int pX = character.union == Panel.COLOR.red ? 0 : 5;
                for (int pY = 0; pY < 3; ++pY)
                {
                    Wind wind = new Wind(this.sound, battle, pX, pY, character.union, true);
                    if (pX == 0)
                    {
                        wind.positionDirect.X = 0.0f;
                    }
                    if (pX == 5)
                    {
                        wind.positionDirect.X = 240f;
                    }
                    battle.attacks.Add(wind);
                }
            }
            if (character.waittime == 44 + num)
            {
                battle.effects.Add(new Charge(this.sound, battle, this.position.X, this.position.Y));
            }
            if (character.waittime > 44 + num + 50)
            {
                this.FlameControl(1);
                if (this.count < 3)
                {
                    if (this.frame > 60)
                    {
                        switch (this.count)
                        {
                        case 0:
                            this.frame = 0;
                            this.ShakeStart(8, 120);
                            this.sound.PlaySE(SoundEffect.bird);
                            this.sound.PlaySE(SoundEffect.shoot);
                            this.sound.PlaySE(SoundEffect.quake);
                            AttackBase a = new TornadeSide(this.sound, battle, character.union == Panel.COLOR.red ? 2 : 3, 1, character.union, this.Power(character), this.element);
                            a.knock = true;
                            battle.attacks.Add(this.Paralyze(a));
                            break;

                        case 1:
                            this.frame = 0;
                            break;
                        }
                        ++this.count;
                    }
                }
                else if (this.frame > 60)
                {
                    switch (this.frame)
                    {
                    case 61:
                        character.animationpoint.X = 3;
                        break;

                    case 63:
                        character.animationpoint.X = 2;
                        break;

                    case 65:
                        character.animationpoint.X = 1;
                        break;

                    case 67:
                        character.animationpoint.X = 0;
                        break;
                    }
                    if (this.frame > 80)
                    {
                        if (!this.screen.end)
                        {
                            this.screen.end = true;
                        }
                        if (this.BlackOutEnd(character, battle))
                        {
                            base.Action(character, battle);
                        }
                    }
                }
            }
        }
示例#8
0
        public override void Updata()
        {
            if (!this.breaking)
            {
                this.hp = 99999;
                if (this.moveflame)
                {
                    switch ((this.frame / 6) % 4)
                    {
                    case 0:
                        this.animationpoint.X = 0;
                        break;

                    case 1:
                        this.animationpoint.X = 1;
                        break;

                    case 2:
                        this.animationpoint.X = 2;
                        break;

                    case 3:
                        this.animationpoint.X = 1;
                        break;
                    }
                }
                this.FlameControl(4);

                if (this.ForcedShowState ?? this.parent.player.position == this.panelPosition)
                {
                    if (this.screenGreyOut == null)
                    {
                        this.screenGreyOut = new ScreenBlack(
                            this.sound,
                            this.parent,
                            Vector2.Zero,
                            new Point(5, 2),
                            ChipBase.ELEMENT.normal,
                            0,
                            false,
                            Color.FromArgb(96, Color.Black),
                            6);
                        this.screenGreyOut.downprint = false;
                        this.parent.effects.Add(this.screenGreyOut);

                        foreach (var elementEntry in ElementTextLocations)
                        {
                            var hidden = elementEntry.Key != ChipBase.ELEMENT.normal && this.elementAmountFunc(elementEntry.Key) <= 0;

                            var elementIndicator = new ScreenObjectFade(
                                this.sound,
                                this.parent,
                                "bomber",
                                () => new Rectangle(0 + 32 * (this.frame % 3), 805, 32, 32),
                                elementEntry.Value.Item1 - new Vector2(8, 7),
                                new Point(5, 2),
                                0,
                                false,
                                () =>
                            {
                                hidden = elementEntry.Key != ChipBase.ELEMENT.normal && this.elementAmountFunc(elementEntry.Key) <= 0;
                                if (elementEntry.Key == ChipBase.ELEMENT.normal || this.elementAmountFunc(elementEntry.Key) > 0)
                                {
                                    return(Color.Transparent);
                                }

                                // 0: None, 1: part of cancel trio, 2: is last cancelled part of trio, 3: is last cancelling part of trio
                                var hintState             = 0;
                                var cancellingElements    = GetEffectiveElements(elementEntry.Key);
                                var elementsToBeCancelled = ElementTextLocations.Keys.Where(e =>
                                {
                                    var elementHasDamageToBeCancelled = e != ChipBase.ELEMENT.normal && this.elementAmountFunc(e) > 0;
                                    var elementCancellingElements     = GetEffectiveElements(e);
                                    var elementOnlyNeedsThis          = elementCancellingElements.All(ee => ee == elementEntry.Key || this.elementAmountFunc(ee) > 0);
                                    return(elementHasDamageToBeCancelled && elementOnlyNeedsThis);
                                });

                                if (cancellingElements.Any(e => this.elementAmountFunc(e) > 0))
                                {
                                    hintState = 1;
                                }
                                if (cancellingElements.All(e => this.elementAmountFunc(e) > 0))
                                {
                                    hintState = 2;
                                }
                                else if (elementsToBeCancelled.Any())
                                {
                                    hintState = 3;
                                }

                                hidden &= hintState == 0;

                                switch (hintState)
                                {
                                default:
                                case 0:
                                    return(Color.Transparent);

                                case 1:
                                    // By modulation, blue
                                    return(Color.FromArgb(128, Color.White));

                                case 2:
                                    // By modulation, green
                                    return(Color.Yellow);

                                case 3:
                                    // By modulation, green
                                    //return Color.White;
                                    return(Color.Yellow);
                                }
                            },
                                8);
                            this.parent.effects.Add(elementIndicator);
                            this.infoText.Add(elementIndicator);

                            var elementIcon = new ScreenObjectFade(
                                this.sound,
                                this.parent,
                                "battleobjects",
                                new Rectangle(216 + 16 * (int)elementEntry.Key, 88, 16, 16),
                                elementEntry.Value.Item1,
                                new Point(5, 2),
                                0,
                                false,
                                () =>
                            {
                                if (hidden)
                                {
                                    return(Color.Transparent);
                                }

                                return(Color.White);
                            },
                                8);
                            this.parent.effects.Add(elementIcon);
                            this.infoText.Add(elementIcon);

                            var elementText = new ScreenObjectFade(
                                this.sound,
                                this.parent,
                                () => this.elementAmountFunc(elementEntry.Key).ToString(),
                                elementEntry.Value.Item1 + new Vector2(16 + 2 - 1, 0 - 1),
                                new Point(5, 2),
                                0,
                                false,
                                () =>
                            {
                                if (hidden)
                                {
                                    return(Color.Transparent);
                                }

                                return(elementEntry.Value.Item2);
                            },
                                8);
                            this.parent.effects.Add(elementText);
                            this.infoText.Add(elementText);
                        }

                        var totalDamageText = new ScreenObjectFade(
                            this.sound,
                            this.parent,
                            () => ElementTextLocations.Select(kvp => this.elementAmountFunc(kvp.Key)).Sum().ToString(),
                            new Vector2(106, 48) + new Vector2(16 + 2 - 1 - 8, 0 - 1),
                            new Point(5, 2),
                            0,
                            false,
                            Color.Red,
                            8);
                        this.parent.effects.Add(totalDamageText);
                        this.infoText.Add(totalDamageText);
                    }
                }
                else
                {
                    if (this.screenGreyOut != null)
                    {
                        this.screenGreyOut.end = true;
                        this.screenGreyOut     = null;

                        foreach (var elementInfoText in this.infoText)
                        {
                            elementInfoText.end = true;
                        }
                        this.infoText.Clear();
                    }
                }
            }
            else
            {
                var fadeProgress = this.frame / 60.0;
                this.color = Color.FromArgb((int)Math.Max(0, 255 - fadeProgress * 255), Color.White);

                this.FlameControl(1);

                if (this.frame > 60)
                {
                    this.flag = false;
                }
            }

            base.Updata();
        }