@Override
	public void destroyTarget() throws Exception {
		Object arr[] = { this, target };
		double rate = 3;
//		Math.random();		// generate random success
			
		if (//(target.getStatus() == Missile.Status.Launched) &&
				(this.getDelayBeforeLaunch() < target.getFlyTime() + target.getLaunchTime())) {
			// if rate bigger than success rate it will destroy
			if (rate > War.SUCCESS_RATE) {
				synchronized (target) {
					target.interrupt();
				}
				for (WarEventListener l : allListeners) {
				    l.DestroyMissileProgressBar(target.getMissileId() , "missile");
				}
                for (WarEventListener l : allListeners) {
                l.AddMessageToGui("Destruction of missile "
                    + target.getMissileId() 
                    + " was sucess");
                }
			
				target.setStatus(Status.Destroyed);				
				WarDBConnection.updateMissileStatusAndDestructor(target.getMissileId().toString(), destructor.getDestructorId() + "");
				WarDBConnection.updateMissileStatus(target.getMissileId().toString(), target.getStatus().toString());
			} else {
			    for (WarEventListener l : allListeners) {
				l.AddMessageToGui("Destruction of missile "
					+ target.getMissileId() 
					+ " was failed");
			    }
				throw new Exception("Destruction of missile "
						+ target.getMissileId() 
						+ " was failed");
			}
		} else {
		    for (WarEventListener l : allListeners) {
			l.AddMessageToGui("Destruction of missile "
				+ target.getMissileId() 
				+ " was failed - Missile is not running");
		    }
			throw new Exception("Destruction of missile "
					+ target.getMissileId() 
					+ " was failed - Missile is not running");
		}
	}