> For the complete documentation index, see [llms.txt](https://sunfish-studios.gitbook.io/main/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sunfish-studios.gitbook.io/main/main-components/fishing-rod.md).

# Fishing Rod

A specialized melee weapon that acts as your fishing rod. Handles casting, cooldowns, state activation, and integrates with hand-swapping for two-handed animations.

> ✅ **Requires**: A `FishingCaster` on the same `MAnimal`, and a `Fishing` state in your Malbers state machine.

***

#### 🔧 Inspector Settings

* **Cooldown**\
  Minimum time (in seconds) between casts. Prevents rapid spamming.
* **Middle Rod Offset**\
  Adjusts position, rotation, and scale when the rod is held with both hands (e.g., during reeling or idle poses).

***

#### 📈 Key Behavior

* **Casting**\
  Triggered via the **Main Attack** input. On cast:
  * Checks for valid water using `FishingCaster.TryCastToWater()`.
  * If successful, activates the `Fishing` state (ID `16` by default).
  * Passes the hit water object to the fishing state for fish spawning.
* **Unequipping**\
  Automatically blocked while in the fishing state. When forced (e.g., via inventory), it gracefully exits the fishing state.
* **Hand Swapping**\
  Implements `IHandSwapper`—supports switching between one-handed and two-handed grips. Use `ApplyMiddleRodOffset()` or animation events to apply the middle grip pose.
* **Rod Bending Feedback**\
  If a `FishingRodBendController` is attached, it receives hit/miss feedback to drive visual bending.

***

#### 💡 Notes

* Casting respects the **cooldown** even if it fails to find water.
* Auto-assigns its `FishingCaster` on equip by searching the animal’s children.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://sunfish-studios.gitbook.io/main/main-components/fishing-rod.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
