佣兵雇佣系统
Mercenary Hiring System v0.6.4
概述
佣兵管理面板,支持招募新佣兵、挖墙脚(从其他雇主处招募)和查看所有佣兵状态。雇佣费用从玩家金币余额扣除,通过
TradeManager 完成经济交易。
功能入口:按键5 / 底部快捷栏 ⚔️佣兵按钮
面板结构
┌─────────────────────────────────────┐
│ ⚔️ 佣兵管理 │
│ 💰 可用金币: 12,500 │
├─────────────────────────────────────┤
│ 🎯 推荐招募 (4个随机槽位) │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐│
│ │ 阿克 │ │ 维克 │ │ 艾拉 │ │ 马库 ││
│ │ 战士 │ │ 战士 │ │ 弓手 │ │ 学者 ││
│ │50000金│ │1500金│ │3000金│ │2000金││
│ │[雇佣] │ │[雇佣] │ │[雇佣] │ │[雇佣] ││
│ └──────┘ └──────┘ └──────┘ └──────┘│
├─────────────────────────────────────┤
│ 👥 已雇佣 │
│ ┌──────┐ │
│ │ ⚔️阿克│ ← 悬浮显示详细属性 │
│ │ Lv.15│ │
│ │✓已雇佣│ │
│ └──────┘ │
├─────────────────────────────────────┤
│ 🏴☠️ 可挖墙脚 (被其他人雇佣的) │
│ ← 2倍雇佣费 │
├─────────────────────────────────────┤
│ 📋 可招募 (30+人) │
│ ┌────┐ ┌────┐ ┌────┐ ... 可滚动 │
│ └────┘ └────┘ └────┘ │
└─────────────────────────────────────┘
核心功能
1. 雇佣佣兵
- 从可招募列表选择佣兵
- 扣除雇佣费(走
TradeManager.transfer_gold()经济系统) - 更新佣兵的
employer_code为玩家
2. 挖墙脚
- 显示被其他 AI 雇主雇佣的佣兵
- 费用 = 基础雇佣费 × 2
- 原雇主自动解除雇佣关系
3. 解雇佣兵
- 从已雇佣列表选择佣兵
- 清除
employer_code,佣兵恢复可招募状态
关键文件
| 文件 | 职责 |
|---|---|
mercenary_panel.gd |
UI面板,显示佣兵列表和处理用户交互 |
mercenary_manager.gd |
业务逻辑,hire_mercenary() / fire_mercenary() |
trade_manager.gd |
金币转账,transfer_gold() |
memory_mercenaries.gd |
佣兵内存数据结构 |
API 参考
# ========== mercenary_manager.gd ==========
## 雇佣佣兵
## @param mercenary_id: 佣兵ID
## @param employer_code: 雇主代码,默认"TRADER_001"(玩家)
## @return: {"success": bool, "message": String}
func hire_mercenary(mercenary_id: int, employer_code: String = "TRADER_001") -> Dictionary
## 解雇佣兵
## @param mercenary_id: 佣兵ID
## @return: {"success": bool, "message": String}
func fire_mercenary(mercenary_id: int) -> Dictionary
## 获取可招募佣兵列表(无雇主)
func get_available_mercenaries() -> Array
## 获取可挖墙脚佣兵列表(被AI雇佣)
func get_poachable_mercenaries() -> Array
## 获取玩家已雇佣佣兵列表
func get_player_hired_mercenaries() -> Array
数据流
用户点击[雇佣]
↓
MercenaryPanel._on_hire_button_pressed(mercenary_id)
↓
MercenaryManager.hire_mercenary(mercenary_id, "TRADER_001")
↓
TradeManager.transfer_gold(player_id, market_id, hire_cost)
↓
├── 更新 player.gold_balance (MemoryTraderData)
├── DirtyTracker.mark_dirty("traders", "TRADER_001")
↓
更新 mercenary.employer_code = "TRADER_001"
↓
DirtyTracker.mark_dirty("mercenaries", mercenary_id)
↓
面板刷新显示
使用方法
- 游戏中按 数字键5 或点击底部 ⚔️佣兵 按钮
- 在 "推荐招募" 或 "可招募" 区选择想要的佣兵,点击 [雇佣]
- 如需从其他雇主处招募,在 "可挖墙脚" 区选择(费用翻倍)
- 雇佣成功后,佣兵出现在 "已雇佣" 区
- 鼠标悬停查看详细属性
版本历史
| 版本 | 日期 | 变更 |
|---|---|---|
| v0.6.4 | 2026-02-03 | 新增挖墙脚功能;修复雇佣金币扣除不走经济系统的问题 |
| v0.6.3 | 2026-02-02 | 初始版本:基础雇佣/解雇功能 |