Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Features "Ritual Circles satisfy spell component requirements"
Purpose of change
Ritual circles were neat but spellcasting didn't recognize anything that wasn't in your personal inventory, including the furniture pseudoitem generated by a ritual circle. This also solves #63888
Describe the solution
The window to display available spell components was using the default crafting inventory with its range of 6. Then, when determining whether or not you could cast the spell it was trying to use a radius of 0 which was bugged with clearpath=true and so was ignoring any items in your tile. The spell window now correctly also uses radius 0, and actually makes the items on your tile available to be consumed.
Describe alternatives you've considered
Using a radius of 1 to allow for other furniture involved in ritual casting.
Some other workaround to make rituals work.
Testing
Compiled, testing casting spells without components, spells with components in inventory, spells with components at the character's feet, and spells with components adjacent.
Additional context
There was a comment about making a const cast of the caster to maybe not write to cache? Except the code which was populating the window was making use of the exact same function without doing the cast so I don't think it was doing anything. Can easily be restored if I was mistaken.