# Anchor & Hint Tags

Use **tags** to semantically steer where things spawn without hard-coding positions. Tags live in two places:

* **WaveSpawnPoint.AnchorTags** – tags that describe *what kind* of placement the wave wants (e.g., `"Flank"`, `"Ambush"`).
* **EnemySpawnHintPoint.tags** – tags that describe *what kind* of spot this hint represents.

When a wave fires, the system tries to pick hint points whose tags overlap with the anchor’s tags.

***

## How matching works

* **Scope:** Tag matching is only used by *wave* spawns (because they have an anchor). Global/Region spawns don’t supply tags, so hints are chosen by distance/LOS/etc. only.
* **Logic:** It’s an **OR** match. If **any** tag on the anchor is equal to **any** tag on the hint, it’s a match.
* **Case/spacing:** **Exact string equality**, case-sensitive, no trimming. `"Flank"` ≠ `"flank"` and `"HighGround"` ≠ `"High Ground"`.
* **Pass order:**
  1. Prefer tag-matched hints inside the search radius.
  2. If none qualify, try **any** eligible hint in range.
  3. If still none and **Hint-Only** is **off**, fall back to sampler. If **Hint-Only** is **on**, the spawn is skipped.
* **Empty tags:**
  * Anchor has no tags → the “prefer tag” pass is skipped (any hint may be used).
  * Hint has no tags → it won’t match the tag-preferred pass, but can still be used in the “any eligible” pass.

***

## Authoring guidelines

* **Define a small vocabulary** and stick to it (e.g., `Flank`, `Ambush`, `HighGround`, `Close`, `Far`, `Street`, `Cave`).
* **Be consistent in casing** and spelling. Consider using constants in your team docs.
* **Tag intent, not location.** A point behind cover might be `Flank`, a balcony might be `HighGround`.
* **Generic anchors:** If a wave doesn’t care, leave **Anchor Tags** empty so any suitable hint can be used.
* **Specific anchors:** Add 1–3 tags max. Too many tags can unintentionally exclude hints.

***

## Where tags are used

* **Wave spawns:** Anchor → preferred hint tags → placement.
* **Global & Region spawns:** Tags are currently **not** used (no anchor context). Hints are still considered (if enabled) by distance/LOS/NavMesh rules.

***

## Example tag sets

* **Flank engagement:**
  * Anchor: `["Flank"]`
  * Hints: mark spots behind cover with `Flank`.
* **Ambush from alleys:**
  * Anchor: `["Ambush","Close"]`
  * Hints: tight corners/doorways tagged `Ambush`, nearby ones also `Close`.
* **Ranged pressure from above:**
  * Anchor: `["HighGround","Far"]`
  * Hints: balconies and rooftops with `HighGround`; distant roofs add `Far`.
* **Biome-aware waves:**
  * Anchor: `["Cave"]`
  * Hints: cave interiors tagged `Cave` so waves in that area bias correctly.

***

## Troubleshooting

* **“No suitable hint found” while Hint-Only is ON:**
  * Check **spelling/case** of tags on anchors and hints.
  * Ensure the hint is within the wave’s **search radius** (anchor range + padding).
  * Verify **Min/Max Player Distance** on the hint vs. player position.
  * If needed, enable **Ignore Spawner’s Global Min Range** in *Spawn Hint Settings*.
  * Turn on **debug logs** in settings to see which rule filtered out a hint.
* **Hints used but not the tagged ones:**
  * Anchor tags empty → no preference.
  * Tags don’t match exactly → fix casing/spacing.
  * Tag-matched hints failed other checks (LOS/NavMesh/reservations) → inspect logs/Gizmos.

***

## Quick checklist

* Anchor and hint tags spelled the same? (case-sensitive)
* Anchor range + padding reaches the hints?
* Hint’s min/max player distance compatible with your current player position?
* Hint-Only vs. fallback behavior set as intended?
* Debug logs enabled during setup to verify match decisions?


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://megacrush.gitbook.io/megacrush-unity-assets/runtime-spawner/runtime-spawner-user-manual/getting-started/anchor-and-hint-tags.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
