public AnchorBomb( IAudioEngine so, SceneBattle p, int pX, int pY, Panel.COLOR u, int po, int s, Vector2 v, Point end, int t, AnchorBomb.TYPE ty, int color = -1) : base(so, p, pX, pY, u, po, ChipBase.ELEMENT.aqua) { this.breaking = true; this.hitting = false; this.speed = s; this.positionDirect = v; this.time = t; this.position = end; this.endposition = new Vector2(end.X * 40 + 20, end.Y * 24 + 80); this.movex = (v.X - this.endposition.X) / t; this.movey = (v.Y - this.endposition.Y) / t; this.plusy = 0.0f; this.speedy = 6f; this.plusing = this.speedy / time; this.rebirth = this.union == Panel.COLOR.red; this.type = ty; if (color >= 0) { this.colorA = color; } else { this.colorA = (int)this.type; } }
public override void Action(CharacterBase character, SceneBattle battle) { if (!this.BlackOut(character, battle, this.name, this.Power(character).ToString())) { return; } if (character.waittime == 1) { character.animationpoint.X = -1; this.sound.PlaySE(SoundEffect.warp); } switch (this.action) { case 0: this.animePoint.X = 0; if (this.waittime >= 24) { ++this.action; this.waittime = 0; break; } break; case 1: case 2: case 3: this.animePoint = this.AnimeAncerThrow(this.waittime); if (this.waittime == 9) { this.sound.PlaySE(SoundEffect.throwbomb); AnchorBomb.TYPE ty = AnchorBomb.TYPE.singleG; if (this.action == 3) { ty = AnchorBomb.TYPE.single; } Point end = new Point(character.position.X + 3 * this.UnionRebirth(character.union), character.position.Y); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 30, ty, this.Random.Next(6)))); end = new Point(character.position.X + 3 * this.UnionRebirth(character.union), character.position.Y + 1); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 35, ty, this.Random.Next(6)))); end = new Point(character.position.X + 3 * this.UnionRebirth(character.union), character.position.Y - 1); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 40, ty, this.Random.Next(6)))); end = new Point(character.position.X + 2 * this.UnionRebirth(character.union), character.position.Y); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 45, ty, this.Random.Next(6)))); end = new Point(character.position.X + 2 * this.UnionRebirth(character.union), character.position.Y + 1); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 50, ty, this.Random.Next(6)))); end = new Point(character.position.X + 2 * this.UnionRebirth(character.union), character.position.Y - 1); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 55, ty, this.Random.Next(6)))); end = new Point(character.position.X + 4 * this.UnionRebirth(character.union), character.position.Y); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 60, ty, this.Random.Next(6)))); end = new Point(character.position.X + 4 * this.UnionRebirth(character.union), character.position.Y + 1); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 65, ty, this.Random.Next(6)))); end = new Point(character.position.X + 4 * this.UnionRebirth(character.union), character.position.Y - 1); battle.attacks.Add(this.Paralyze(new AnchorBomb(this.sound, character.parent, character.position.X, character.position.Y, character.union, this.Power(character), 1, new Vector2(character.positionDirect.X, character.positionDirect.Y - 16f), end, 70, ty, this.Random.Next(6)))); break; } if (this.waittime >= 72) { ++this.action; this.waittime = 0; break; } break; case 4: if (this.waittime >= 120 && this.BlackOutEnd(character, battle)) { base.Action(character, battle); break; } break; } ++this.waittime; }