def fire(self): projectiles = [] if self.firing and self.current_cool_down == 0 and self.parent.reactor.current_power >= self.power_use\ and not self.parent.reactor.overheating: self.current_cool_down = self.cool_down self.parent.reactor.current_power -= self.power_use self.firing = False for projectile in range(self.projectiles): projectile = Projectile( size=self.projectile_size, pos=self.pos + pygame.Vector2( uniform(-self.projectile_grouping, self.projectile_grouping), uniform(-self.projectile_grouping, self.projectile_grouping)), health=0, speed=self.speed, damage=self.damage, color=self.projectile_color, parent=self.parent, direction=pygame.Vector2( 1, 0).rotate(-self.parent.angle + uniform(-self.spread, self.spread)), effects=copy(self.effects)) projectiles.append(projectile) return projectiles
def __init__(self, id): self.id = id self.sprite = SpriteSheet(res.weapon) self.sprite.init(12, 12, 0.06) self.sprite.set_frame_loop(5, 5, False) self.slot = None # WeaponSlot this weapon is in self.position = sf.Vector2(0, 0) self.firing = False # Whether or not it's firing this turn self.powered = False # Is the weapon powered or unpowered self.was_powered = False # Was the weapon powered last turn? (Used for weapon slide out/in animation) self.target = None # Target room self.charge = 0 self.required_charge = 1 self.required_power = 1 # Power consumption self.projectile_type = None self.num_shots = 2 self.projectiles = [Projectile(), Projectile()]