@Override
	public void unInvoke()
	{
		// undo the affects of this spell
		final boolean canBeUninvoked=canBeUninvoked();
		final MOB invoker=invoker();
		final Room room=CMLib.map().roomLocation(affected);
		if(canBeUninvoked&&(room!=null)&&(affected instanceof MOB))
			room.show((MOB)affected,null,CMMsg.MSG_OK_VISUAL,L("The lighthouse above <S-NAME> dims."));
		super.unInvoke();
		this.invoker=invoker;
		if(canBeUninvoked&&(room!=null))
		{
			final List<Room> rooms=new LinkedList<Room>();
			synchronized(roomSet)
			{
				rooms.addAll(roomSet);
				roomSet.clear();
			}
			for(Room R : rooms)
				this.delFromRoom(R, null, -1);
		}
		if(canBeUninvoked&&(room!=null))
			room.recoverRoomStats();
	}