@Override
	public void update() {
		if (isFailing())
			return;
		if (!isReloading()) {
			Mob closestMob = super.nextMob();
			if (closestMob != null) {
				if (upg == 3) {
					double rand = Math.random();
					if (rand > .2 && rand < .5)
						bh.add(new SplashBullet((Point2D.Double)loc.clone(), closestMob.getLoc(),splash, dmg*10, 8.1, this));
					else if (rand > .5) {
						ArrayList<Mob> near = mh.proxMobs(loc, range/3, 100);
						for (Mob m: near) {
							m.defend(dmg*250);
						}
					}
						
					else if (rand > .9) {
						//bh.add(new BasicBullet((Point2D.Double)loc.clone(), closestMob.getLoc(), 9.5, dmg, splash, null));
						Point2D.Double mobLoc = closestMob.getLoc();
						double dir = Math.atan2(mobLoc.y-loc.y,mobLoc.x-loc.x);
						bh.add(new BasicBullet((Point2D.Double)loc.clone(), dir, 5.5, dmg, splash,
								this, upg));
					}
				}		
				lastShot = System.nanoTime()/1000000;
				SoundEffect.RAYGUN.play();
				bh.add(new GasBullet((Point2D.Double) loc.clone(), closestMob.getLoc(), 25000, splash, dmg, this));
			}
		}
	}