修复 Disciple 模型:放宽 _init 字典形参、显式化小境界上限类型推断
- _init 形参由 Dictionary[String, Variant] 放宽为 Dictionary: duplicate() 产物为普通字典,运行时类型校验导致 create() 失败 - SUB_MAX_BY_REALM 索引两处改用显式 int 声明,消除 Cannot infer 错误 - doc/弟子管理.md 补充修炼经验说明
This commit is contained in:
@@ -116,3 +116,9 @@ func load_from_dict(d) -> void
|
||||
graph TD
|
||||
A[分配属性总量,按正正态分布] --> B[随机分配5种属性,属性之和为1] --> C[分配灵气利用率]
|
||||
```
|
||||
|
||||
## 修炼说明
|
||||
|
||||
每个小境界修炼需要的经验 = 基础经验值 * 属性总量
|
||||
|
||||
经验获取量 = 基础经验 * 灵气吸收效率
|
||||
|
||||
@@ -137,7 +137,7 @@ var total_amount: int:
|
||||
|
||||
## 构造:按 data 覆盖属性,数值属性经 RANGES 夹取;缺键保留字段默认值。
|
||||
## @param data: 键名与属性名一致,如 {"id": 1, "name": "玄真", "metal": 60}
|
||||
func _init(data: Dictionary[String, Variant] = {}) -> void:
|
||||
func _init(data: Dictionary = {}) -> void:
|
||||
if data.has("id"):
|
||||
id = int(data["id"])
|
||||
if data.has("name"):
|
||||
@@ -187,12 +187,12 @@ func set_attr(key: String, value: int) -> bool:
|
||||
if key == "realm_level":
|
||||
# 大境界变化后,小境界不得超过新境界的上限(如落入凡人则强制 1)
|
||||
set("realm_level", v)
|
||||
var max_sub := SUB_MAX_BY_REALM[v]
|
||||
var max_sub : int = SUB_MAX_BY_REALM[v]
|
||||
if int(get("sub_realm_level")) > max_sub:
|
||||
set("sub_realm_level", max_sub)
|
||||
elif key == "sub_realm_level":
|
||||
# 小境界写入时按当前大境界上限夹取(凡人上限 1 / 练气 13 / 其余 4)
|
||||
var max_sub := SUB_MAX_BY_REALM[int(get("realm_level"))]
|
||||
var max_sub : int = SUB_MAX_BY_REALM[int(get("realm_level"))]
|
||||
set("sub_realm_level", clampi(v, 1, max_sub))
|
||||
else:
|
||||
set(key, v)
|
||||
|
||||
Reference in New Issue
Block a user