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; } }
//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); }