public void fire(Level level, int x, int y, int strength, double crit) {
		Player player = (Player) level.getPlayer();
		if(player != null && player.ammo > 0) {
			double px = player.x;
			double py = player.y - 4;
			
			double tx = x - (MainComponent.GAME_WIDTH/2);
			double ty = y - (MainComponent.GAME_HEIGHT/2);
			
			double tX = px - level.viewRadius;
			double tY = py - (level.viewRadius*9/16);

			if(tX < 0)
				tx+=(MainComponent.GAME_WIDTH/2) - px;
			if(tY < 0)
				ty+=(MainComponent.GAME_HEIGHT/2) - py;
			if(tX + 2*level.viewRadius > level.width)
				tx-=(MainComponent.GAME_WIDTH/2) - (level.width - px);
			if(tY + (level.viewRadius*9/8) > level.height)
				ty-=(MainComponent.GAME_HEIGHT/2) - (level.height - py);
			
			double theta = Math.atan2(tx, ty);
			double L = Math.sqrt((Math.pow(ty, 2) + Math.pow(tx,2)));
			
			for(int i=0; i<shots; ++i) {
				double phi = Math.min(rand.nextGaussian(),1.2);
				double t1x = (L*Math.sin(theta + phi*acc)) + px;
				double t1y = (L*Math.cos(theta + phi*acc)) + py;

				level.bullets.add(new Bullet(level, px, py, t1x, t1y, player.velocity, false,  strength+str, Math.min(1.0, crit+crt), speed));
				player.useAmmo();
			}
			level.firing = false;
		}
	}