Many forests are mapped as multipolygon relations, rather than ways, as forests often have non-forest areas inside them. For example Gütschwald, https://www.openstreetmap.org/relation/1298342 , is a multipolygon - there is an outer way around the forest but it is not tagged - the tagging is on the relation. So for each way[…] in your query you will need to include a corresponding relation […].
(There may be other issues but that is the most obvious one).
Aside from including multipolygons in your search, there is another issue.
To include ways tagged landuse=forest and natural=wood in your search result, you need to create a union of both separate sets you get. This can be archieved by enclosing both lines starting with way in brackets:
(
way...;
way...;
);
This will result in over 2000 ways for Luzern, testing queries on a smaller area might be advisable.