- Split "discovery" into 2 stages: a check (to see if
there is even anything new to discover) and a
commit.
- When doing witness checks, check to see if there
is anything to be discovered first, before doing the
more expensive visibility checks. If the player
already knows all the discoveries, then we don't
need to do any of the raycasts.
This should speed up especially pathological cases
like door catapulting, which can cause witnessing to
happen at multiple points, and causes major
slowdowns when multiple players are within the
distance range and facing the correct direction due
to tons of raycasts happening.
- Fix door place-craft discovery not triggering due
to wrong label name
- Fix many door witnesses not working because the door
itself obstructs view of the action; "spread" the witness
event to multiple positions and give the player credit
if they can observe any part of the interacting nodes.
- Flexible discovery list format for discover and
witness APIs
- Add "discover" key to recipes that contains a list
of discoveries to give players so they can act like
recipe groups and allow different recipes to
complete hints
Recipe group system should be easier to setup for
hints than having to list all hints individually. We
can use them especially in recipes that are loop
generated.
If a player is close enough to an event when it
happens (withing "likely hearing" distance) then if
they later punch the node then they can "collect"
the discovery.
The idea is that if a player hears the sound of
something happening, then they might go and
investigate and discover the thing they thought
they had left there isn't what's there anymore.
In retrospect I may want to combine this with a
limited form of the visual witnessing, just as there
may be events that a player is less likely to touch
in aftermath, or may not be practical to (e.g.
if what's left behind is air)
- Move hint handling down to API layer
- Simplify stat data; old nc_stats counting can
be moved out to a separate mod. We only
need whether the player has seen or not.
- Invert inventory tab responsibility.
- Merge witness system in from crafting.
TODO:
- Redistribute hint registration responsibility
to individual mods.
- Test external mod compat.
- Retire old nc_stats and nc_guide systems.
- Add a way to reset hints.