private Splitter(Splitter parent, int split) : base(parent.Position) { MaxHealth = parent.MaxHealth / 2; Defence = parent.Defence; MaxSpeed = parent.MaxSpeed * 4 / 3; Size = parent.Size * 3 / 4; Weapon = new SplitterWeapon((SplitterWeapon)parent.Weapon); drawable = new Rectangle(Position.X, Position.Y, Size.X, Size.Y); ShipAdder = parent.ShipAdder; if (split == 1) { onDeath += () => { ((SplitterWeapon)Weapon).ShootHealth(Position); } } ; if (split > 0) { onDeath += () => { split--; ShipAdder(new Splitter(this, split)); ShipAdder(new Splitter(this, split)); } } ; Health = MaxHealth; SetDefaultMoveStrategy(); }
public SplitterWeapon(SplitterWeapon parent) : base(parent.Ammo) { if (parent.bulletCount != 1) { parent.bulletCount -= 1; } bulletCount = parent.bulletCount; BulletAdder = parent.BulletAdder; ReloadTime = parent.ReloadTime; SuckOnShots(parent); }
public Splitter(Tier tier, Action <EnemyShip> adder) : base(new Vector(VALUES.WIDTH / 2, 50)) { ShipAdder = adder; Size = new Vector(100, 100); drawable = new Rectangle(Position, new Size(Size.X, Size.Y)); Weapon = new SplitterWeapon(tier); MaxSpeed = 7; int split = 1; switch (tier) { case Tier.T1: MaxHealth = 200; this.Weapon.AppendOnShot(new OnShots.SpeedChange(-10)); this.Weapon.Ammo.AppendOnHit(new OnHits.SlowEffect(1)); split = 2; break; case Tier.T2: MaxHealth = 300; this.Weapon.AppendOnShot(new OnShots.SizeChange(3)); this.Weapon.AppendOnShot(new OnShots.SpeedChange(-10)); this.Weapon.Ammo.AppendDmgModifier((ref int val) => { val += 5; }); this.Weapon.Ammo.AppendOnHit(new OnHits.SlowEffect(2)); split = 3; break; case Tier.T3: MaxHealth = 400; this.Weapon.AppendOnShot(new OnShots.SizeChange(5)); this.Weapon.AppendOnShot(new OnShots.SpeedChange(-10)); this.Weapon.Ammo.AppendDmgModifier((ref int val) => { val += 8; }); this.Weapon.Ammo.AppendOnHit(new OnHits.SlowEffect(3)); split = 4; break; } onDeath += () => { ShipAdder(new Splitter(this, split)); ShipAdder(new Splitter(this, split)); }; this.Health = MaxHealth; }