Hi. I don't know if you know of RogueBasin, but there is a link to some articles on line of sight and field of vision. There are tons of other articles, links, and other great content there, too. You can find good info on procedural generation of content there as well.
I think the problem that you had with the inventory may have been due to Else statements. They work a bit better with the newer versions of Construct, but it's best to keep them as simple as possible if you use them. I've not been able to get them to work reliably in nested code.
For picking closest enemies, there is a condition for that. Look for the Pick group under conditions. There are a few picking options there. You can do something like:
+ Enemies: Pick closest to: Player.X, Player.Y -> (do action to enemy here)
A couple of other tips:
I also noticed that you have a lot of unnecessary Always (every tick) conditions in there. Those are useful if that's the only thing there for a condition. If you already have another condition there, you don't need to add the Always, as it will always check the condition anyway, unless it's in a sub-event of another condition...
With your clothing system, if you plan to add to it, you may want to look into making one sprite for each type of item, and put the variations of it into different animation frames of the sprite. Then you can just set the one sprite for each type of item to the proper frame. You could also possibly use the Container functionality to keep them on the sprite, or only update them when the character moves.