diff --git a/README.md b/README.md index 3356910..d1fb2fc 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ ### 🗺️ 地块系统 - ✅ 基础tile地块系统 -- ✅ 基础区域、修行区域、城市区域 +- ✅ 基础区域、修行区域、城市区域、宗门区域 - ✅ 同地块NPC交互 - [ ] 灵气分布与产出设计 - [ ] 城市/宗派据点的机制 diff --git a/src/classes/map.py b/src/classes/map.py index 1755750..1612a13 100644 --- a/src/classes/map.py +++ b/src/classes/map.py @@ -35,8 +35,11 @@ class Map(): self.cultivate_region_names = cultivate_regions_by_name self.city_regions = city_regions_by_id self.city_region_names = city_regions_by_name - # 宗门总部区域集合(由地图生成阶段注入) - # 若外部未注入 SectRegion,这里仍可通过 regions 过滤得到 + # 宗门总部区域集合(由地图生成阶段注入),保持与其他区域一致的“提前维护”策略 + self.update_sect_regions() + + def update_sect_regions(self) -> None: + """根据当前 self.regions 动态刷新宗门总部区域字典。""" self.sect_regions = {rid: r for rid, r in self.regions.items() if isinstance(r, SectRegion)} def is_in_bounds(self, x: int, y: int) -> bool: @@ -101,10 +104,9 @@ class Map(): parts.extend([f"- {str(region)}" for region in self.city_regions.values()]) parts.append("") - # 宗门总部区域 - if getattr(self, "sect_regions", None): - parts.append("宗门总部:") - parts.extend([f"- {region.name} - {region.desc}" for region in self.sect_regions.values()]) + # 宗门总部区域(使用维护的缓存) + parts.append("宗门总部(宗门弟子可在此进行疗伤等操作):") + parts.extend([f"- {region.name} - {region.desc}" for region in self.sect_regions.values()]) return "\n".join(parts) diff --git a/src/run/create_map.py b/src/run/create_map.py index 2e265b2..28309b5 100644 --- a/src/run/create_map.py +++ b/src/run/create_map.py @@ -112,6 +112,8 @@ def add_sect_headquarters(game_map: Map, enabled_sects: list[Sect]): ) game_map.regions[region.id] = region game_map.region_names[region.name] = region + # 刷新 Map 内部的宗门区域缓存 + game_map.update_sect_regions() # 添加完成后,重新分配到 tiles _assign_regions_to_tiles(game_map) diff --git a/static/templates/ai.txt b/static/templates/ai.txt index 0b096eb..631030d 100644 --- a/static/templates/ai.txt +++ b/static/templates/ai.txt @@ -18,6 +18,6 @@ }} 要求与约束: -- thought可从侧面体现出角色个性 +- thought可从侧面体现出角色个性、宗门信息 - 只有当前动作空间中的动作是立刻可以做的,其他动作需满足对应条件 - 不应过分重复的做相同动作 \ No newline at end of file