def force_fire(self, **kwargs): self.play_sound('fire') ang = self.angle + (self.fire_n - 1) * self.inaccuracy * 180 proj = self.spawn_proj() proj.velocity = Vec2d.from_anglen(ang, self.proj_velocity) proj.angle = self.angle proj.target = kwargs.get('target_function', kwargs.get('target', None)) self.fire_n = (self.fire_n + 1) % 3
def force_fire(self, **kwargs): self.play_sound('fire') ca = self.angle da = self.inaccuracy * 360 sa = ca - da / 2 frag = self.fragmentation vel = self.proj_velocity segments = [] b_a = self.spawn(Ballast) b_a.set_parent(self) b_a.angle = sa b_a.velocity = Vec2d.from_anglen(sa, vel) b_b = self.spawn(Ballast) b_b.set_parent(self) b_b.angle = sa + da b_b.velocity = Vec2d.from_anglen(sa + da, vel) b_a.pair = b_b b_b.pair = b_a w = (self.Projectile.LENGTH - self.Projectile.RADIUS) / 2 for n in range(frag): proj = self.spawn_proj() if segments: Pivot(proj.body, segments[-1].body, (-w, 0), (w, 0)) segments.append(proj) ang = sa + da * (n / frag) proj.angle = ang - 90 proj.velocity = Vec2d.from_anglen(ang, vel * .8) Pivot(b_a.body, segments[0].body, (0, 0), (-w, 0)) Pivot(b_b.body, segments[-1].body, (0, 0), (w, 0))