角色属性管理系统
1. 核心需求
设计一个角色属性管理系统,用于动态管理角色的 生命值(HP) 和 魔法值(MP),包括:
- 基础最大值(不受临时加成影响)
- 当前值(受战斗、技能、装备等影响)
- 有效最大值(基础值 + 临时加成)
- 百分比计算(当前值 / 有效最大值)
- 临时加成管理(如装备、Buff/Debuff 等)
2. 详细需求
(1) 基础属性记录
base_max_hp
:角色的基础最大生命值(不受临时加成影响)
base_max_mp
:角色的基础最大魔法值(不受临时加成影响)
effective_max_hp
:当前有效最大生命值(base_max_hp + 临时加成
)
effective_max_mp
:当前有效最大魔法值(base_max_mp + 临时加成
)
current_hp
:当前生命值(0 ≤ current_hp
≤ effective_max_hp
)
current_mp
:当前魔法值(0 ≤ current_mp
≤ effective_max_mp
)
(2) 百分比计算
getHpPercent()
:计算当前生命值百分比(current_hp / effective_max_hp * 100
)
getMpPercent()
:计算当前魔法值百分比(current_mp / effective_max_mp * 100
)
(3) 临时加成管理
temp_max_hp_bonus
:记录所有临时生命值加成(如装备、Buff)
temp_max_mp_bonus
:记录所有临时魔法值加成(如装备、Buff)
applyMaxStatChange(hp_change, mp_change)
:
- 调整
effective_max_hp
和 effective_max_mp
- 自动保持当前值的百分比(如
HP 50% → 调整后仍为 50%
)
- 确保
effective_max_hp
和 effective_max_mp
至少为 1
restoreBaseStats()
:
- 移除所有临时加成(
temp_max_hp_bonus = 0
,temp_max_mp_bonus = 0
)
- 恢复
effective_max_hp
和 effective_max_mp
至基础值
- 保持当前值的百分比不变
(4) 状态显示
__tostring()
:格式化输出当前状态(如 HP: 75/150 (50%) | MP: 50/100 (50%)
)
3. 使用场景
(1) 角色初始化
local character = CharacterStats:new(100, 50) -- 基础 HP=100, MP=50
print(tostring(character)) -- 输出: HP: 100/100 (100%) | MP: 50/50 (100%)
(2) 装备/Buff 加成
character:applyMaxStatChange(50, 25) -- HP+50, MP+25
print(tostring(character)) -- 输出: HP: 150/150 (100%) | MP: 75/75 (100%)
(3) 战斗后状态变化
character.current_hp = 45 -- 当前 HP=45 (30%)
character.current_mp = 45 -- 当前 MP=45 (60%)
print(tostring(character)) -- 输出: HP: 45/150 (30%) | MP: 45/75 (60%)
(4) 移除临时加成
character:restoreBaseStats() -- 还原基础属性
print(tostring(character)) -- 输出: HP: 30/100 (30%) | MP: 30/50 (60%)
4. 边界情况处理
情况 |
处理方式 |
effective_max_hp 或 effective_max_mp 降至 ≤ 0 |
强制设为 1 |
current_hp 或 current_mp 超出有效最大值 |
强制设为 effective_max_hp 或 effective_max_mp |
current_hp 或 current_mp 低于 0 |
强制设为 0 |
多次叠加 applyMaxStatChange |
累加 temp_max_hp_bonus 和 temp_max_mp_bonus |
5. 扩展需求(可选)
setCurrentHp(value)
:安全设置当前 HP(自动限制范围)
setCurrentMp(value)
:安全设置当前 MP(自动限制范围)
heal(amount)
:恢复生命值(不超过 effective_max_hp
)
useMp(amount)
:消耗魔法值(不低于 0
)
6. 总结
该需求描述了一个完整的 角色属性管理系统,支持:
✅ 基础属性管理(HP/MP 最大值、当前值)
✅ 百分比计算(用于 UI 显示、技能触发条件等)
✅ 临时加成管理(装备、Buff/Debuff 等)
✅ 状态还原(移除所有临时加成)
✅ 边界情况处理(防止数值溢出或非法值)
适用于 RPG、MMO、卡牌等需要动态管理角色属性的游戏。