# 钓鱼功能实现记录
## 时间戳：2025年4月8日 23:47:25 (NOUVEAU DAY 1 - 锚点)

## 功能目标
为游戏添加钓鱼机制，让玩家可以在休息或静养时进行钓鱼活动，钓到的物品会存入鱼篓子中。

## 实现方法
1. 创建钓鱼物品抽选池文件 `fishing.php`
2. 创建钓鱼功能的核心逻辑文件 `fishing.func.php`
3. 创建钓鱼界面模板 `fishing.htm`
4. 修改休息界面，添加钓鱼选项
5. 修改 `command.php` 文件，添加钓鱼命令处理
6. 修改 `command.php` 文件，添加钓鱼模式处理
7. 修改模板加载部分，支持钓鱼界面

## 创建的文件
1. `gamedata/cache/fishing.php` - 钓鱼物品抽选池
2. `include/game/fishing.func.php` - 钓鱼功能的核心逻辑
3. `templates/default/fishing.htm` - 钓鱼界面模板

## 修改的文件
1. `templates/default/rest.htm` - 添加钓鱼按钮
2. `command.php` - 添加钓鱼命令处理和钓鱼模式处理
3. `command.php` - 修改模板加载部分，支持钓鱼界面

## 功能详情

### 钓鱼物品抽选池
在 `fishing.php` 文件中定义了各种可钓到的物品，包括：
- 常见鱼类（小鲫鱼、鲤鱼、黄鳝等）
- 中等稀有度鱼类（鲈鱼、鲑鱼等）
- 稀有鱼类（大马哈鱼、鲟鱼等）
- 非常稀有鱼类（金鱼、龙鱼等）
- 其他水生物（海藻、水草、贝壳等）
- 垃圾物品（破鞋、塑料袋等）
- 特殊物品（古代硬币、神秘宝箱等）

同时，还定义了不同地点可钓到的物品列表，以及时间和天气对钓鱼概率的影响。

### 钓鱼功能核心逻辑
在 `fishing.func.php` 文件中实现了钓鱼功能的核心逻辑，包括：
- `can_fishing()` - 检查当前位置是否可以钓鱼
- `start_fishing()` - 开始钓鱼
- `end_fishing()` - 结束钓鱼
- `check_fishing()` - 检查钓鱼状态，看是否钓到了新物品
- `create_fish_basket()` - 创建鱼篓子并将钓到的物品放入其中
- `fishing_command()` - 处理钓鱼状态下的命令

### 钓鱼界面
在 `fishing.htm` 文件中定义了钓鱼界面，显示当前钓到的物品数量，并提供继续钓鱼和结束钓鱼的按钮。

### 休息界面修改
在 `rest.htm` 文件中添加了钓鱼按钮，只在可钓鱼的地点显示。

### 命令处理修改
在 `command.php` 文件中添加了钓鱼命令处理和钓鱼模式处理，使玩家可以开始钓鱼、继续钓鱼和结束钓鱼。

### 模板加载修改
在 `command.php` 文件中修改了模板加载部分，支持钓鱼界面的显示。

## 使用方法
1. 玩家在可钓鱼的地点（广场、小树林、后山、湖滨、码头、温泉、白穗神社）进行休息或静养时，会看到钓鱼按钮。
2. 点击钓鱼按钮，开始钓鱼。
3. 钓鱼过程中，玩家会在一定时间后（约1分钟）开始累计钓上的东西。
4. 钓鱼结束后（点击钓鱼界面的返回按钮），显示钓到的物品，并将它们存入鱼篓子中。
5. 鱼篓子会放入玩家的 $itm0 中，玩家可以像使用普通背包一样使用鱼篓子。

## 后续改进
1. 添加钓鱼技能，影响钓鱼成功率和钓到稀有物品的概率
2. 添加钓鱼装备，如不同种类的鱼竿和鱼饵
3. 添加钓鱼成就系统
4. 添加钓鱼比赛活动
5. 添加钓鱼物品的特殊用途，如烹饪系统
