예제 #1
0
        public override void InitAfter()
        {
            base.InitAfter();

            var barriers = this.Parent.AllChara().Where(c => c.union == this.union).OfType <HeavenBarrier>();

            if (this.controller == null && this == barriers.OrderBy(b => b.position.X).ThenBy(b => b.position.Y).First())
            {
                this.controller = barriers.Select(b => b.controller).FirstOrDefault(c => c != null) ?? barriers.FirstOrDefault() ?? this;
                this.controller.controlledBarriers = barriers.ToList();

                var newDeathOrder = 0;
                this.controller.controlledBarriers.ForEach(c =>
                {
                    c.controller             = this.controller;
                    this.controller.totalHp += c.Hp;
                    c.Hp         = Constants.ArbitraryLargeValue;
                    c.deathOrder = newDeathOrder++;
                });

                this.controller.damageBuildup = new Dictionary <ChipBase.ELEMENT, int>
                {
                    { ChipBase.ELEMENT.normal, 0 },
                    { ChipBase.ELEMENT.heat, 0 },
                    { ChipBase.ELEMENT.aqua, 0 },
                    { ChipBase.ELEMENT.eleki, 0 },
                    { ChipBase.ELEMENT.leaf, 0 },
                    { ChipBase.ELEMENT.poison, 0 },
                    { ChipBase.ELEMENT.earth, 0 }
                };
                this.controller.unprocessedAttacks = new List <Tuple <HeavenBarrier, ChipBase.ELEMENT, int> >();

                var infoPositionX = !this.parent.panel[0, 1].Hole && this.parent.panel[0, 1].state != Panel.PANEL._un
                    ? 0 : 1;
                var infoPositionY = !this.parent.panel[0, 1].Hole && this.parent.panel[0, 1].state != Panel.PANEL._un
                    ? 1 : 2;
                this.controller.infoPanel = new BarrierInfoPanel(this.sound, this.parent, this.UnionEnemy, infoPositionX, infoPositionY, elem => this.controller.damageBuildup[elem]);
                this.controller.parent.objects.Add(this.controller.infoPanel);

                this.parent.custom.escapeV = Constants.ArbitraryLargeValue;
            }
        }
예제 #2
0
        //public SceneMain main;

        public static EnemyBase EnemyMake(int number, EnemyBase e, bool rank)
        {
            IAudioEngine sound  = e?.Sound;
            SceneBattle  parent = e?.parent;
            Point        point  = e != null ? e.position : new Point(0, 0);
            byte         n      = e != null ? (byte)e.number : (byte)0;

            Panel.COLOR u  = e != null ? e.union : Panel.COLOR.red;
            byte        v  = e != null ? e.version : (byte)1;
            int         h  = 1;
            int         c1 = 0;
            int         c2 = 0;
            int         c3 = 0;
            //SaveData sa = this.savedata;
            //ChipFolder[,] zChip = parent.main.chipfolder;
            // SaveData sev = parent.sev;
            string names = "";

            if (e is NormalNavi normalNavi)
            {
                h     = normalNavi.InitialHP;
                c1    = normalNavi.InitialChips[0];
                c2    = normalNavi.InitialChips[1];
                c3    = normalNavi.InitialChips[2];
                names = normalNavi.InitialName;
            }
            Dictionary <int, EnemyBase> dictionary = new Dictionary <int, EnemyBase>();
            EnemyBase enemyBase;

            switch (number)
            {
            case 1:
                enemyBase = new ReyCanon(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 2:
                enemyBase = new FlowerTank(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 3:
                enemyBase = new Gelpark(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 4:
                enemyBase = new Mossa(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 5:
                enemyBase = new FireCat(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 6:
                enemyBase = new Kedamar(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 7:
                enemyBase = new Poisorlin(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 8:
                enemyBase = new Screwn(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 9:
                enemyBase = new Shellrun(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 10:
                enemyBase = new Brocooler(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 11:
                enemyBase = new Puchioni(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 12:
                enemyBase = new EvilEye(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 13:
                enemyBase = new BibityBat(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 14:
                enemyBase = new Junks(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 15:
                enemyBase = new Ikary(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 16:
                enemyBase = new GekoHuts(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 17:
                enemyBase = new Zarinear(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 18:
                enemyBase = new Barlizard(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 19:
                enemyBase = new Musya(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 20:
                enemyBase = new SwordDog(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 21:
                enemyBase = new Lanster(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 22:
                enemyBase = new Doripper(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 23:
                enemyBase = new Flea(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 24:
                enemyBase = new Bronzer(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 25:
                enemyBase = new Furjirn(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 26:
                enemyBase = new Bouzu(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 27:
                enemyBase = new Riveradar(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 28:
                enemyBase = new Juraigon(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 29:
                enemyBase = new PaneMole(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 30:
                enemyBase = new OnoHawk(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 31:
                enemyBase = new Mantiser(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 32:
                enemyBase = new Ponpoko(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 33:
                enemyBase = new Massdliger(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 34:
                enemyBase = new KorYor(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 35:
                enemyBase = new Rieber(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 36:
                enemyBase = new GunBatta(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 37:
                enemyBase = new DanBeetle(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 38:
                enemyBase = new RayJune(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 39:
                enemyBase = new Holenake(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 40:
                enemyBase = new Woojow(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 41:
                enemyBase = new BakeBake(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 42:
                enemyBase = new NormalNavi(sound, parent, point.X, point.Y, n, u, v, h, c1, c2, c3, names);
                break;

            case 43:
                enemyBase = new Marisa(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 44:
                enemyBase = new Sakuya(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 45:
                enemyBase = new TankMan(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 46:
                enemyBase = new SpannerMan(sound, parent, point.X, point.Y, n, u, v);
                break;

            // 47
            case 48:
                enemyBase = new HakutakuMan(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 49:
                enemyBase = new TortoiseMan(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 50:
                enemyBase = new BeetleMan(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 51:
                enemyBase = new Yorihime(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 52:
                enemyBase = new Cirno(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 53:
                enemyBase = new Medicine(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 54:
                enemyBase = new Iku(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 55:
                enemyBase = new PyroMan(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 56:
                enemyBase = new Mrasa(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 57:
                enemyBase = new ScissorMan(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 58:
                enemyBase = new Chen(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 59:
                enemyBase = new Ran(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 60:
                enemyBase = new Uthuho(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 61:
                enemyBase = new Madman(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 62:
                enemyBase = new Youmu(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 63:
                enemyBase = new HeavenBarrier(sound, parent, point.X, point.Y, n, u, v);
                break;

            // 64
            case 65:
                enemyBase = new Kikuri(sound, parent, point.X, point.Y, n, u, v);
                break;

            // 66-67
            case 68:
                enemyBase = new Mima(sound, parent, point.X, point.Y, n, u, v);
                break;

            // 69-80
            case 81:
                enemyBase = new ShanghaiDS(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 82:
                enemyBase = new Flandre(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 83:
                enemyBase = new yuyuko(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 84:
                enemyBase = new DruidMan(sound, parent, point.X, point.Y, n, u, v);
                break;

            case 85:
                enemyBase = new CirnoBX(sound, parent, point.X, point.Y, n, u, v);
                break;

            default:
                enemyBase = null;
                break;
            }
            try
            {
                if (number > 0)
                {
                    enemyBase.ID = (EnemyBase.VIRUS)number;
                }
            }
            catch
            {
            }
            if (parent != null)
            {
                e.Init();
            }
            return(enemyBase);
        }