佣兵雇佣系统

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)
    ↓
面板刷新显示

使用方法

  1. 游戏中按 数字键5 或点击底部 ⚔️佣兵 按钮
  2. 在 "推荐招募" 或 "可招募" 区选择想要的佣兵,点击 [雇佣]
  3. 如需从其他雇主处招募,在 "可挖墙脚" 区选择(费用翻倍)
  4. 雇佣成功后,佣兵出现在 "已雇佣" 区
  5. 鼠标悬停查看详细属性

版本历史

版本 日期 变更
v0.6.4 2026-02-03 新增挖墙脚功能;修复雇佣金币扣除不走经济系统的问题
v0.6.3 2026-02-02 初始版本:基础雇佣/解雇功能