Text RPG - 文字角色扮演游戏 v2.0
重构自: https://github.com/sbordeyne/rpg-text
概述
这是一个基于面向对象设计的文字RPG引擎,融合了原始D&D规则。AI作为DM(地下城主),通过自然对话引导玩家进行回合制冒险。
核心架构
数据驱动系统
所有游戏数据通过 JSON 文件定义,便于扩展:
CODEBLOCK0
核心类结构
CODEBLOCK1
职业系统 (Jobs)
| 职业 | HP骰 | MP骰 | 主属性 | 特点 |
|---|
| 战士 (fighter) | d8 | d4 | STR | 高血量,擅长武器 |
| 法师 (wizard) |
d4 | d10 | INT | 奥术魔法 |
| 盗贼 (thief) | d4 | d4 | DEX | 潜行、偷袭 |
| 牧师 (cleric) | d6 | d6 | WIS | 神圣魔法 |
| 平民 (commoner) | d4 | d4 | STR | 基础职业 |
职业豁免检定 (Saving Throws)
| 职业 | 毒素 | 魔杖 | 麻痹 | 吐息 | 法术 |
|---|
| 战士 | 12 | 13 | 14 | 15 | 16 |
| 法师 |
13 | 14 | 13 | 16 | 15 |
| 盗贼 | 13 | 14 | 13 | 16 | 15 |
| 牧师 | 11 | 12 | 14 | 16 | 15 |
| 平民 | 15 | 14 | 16 | 17 | 16 |
属性系统 (Ability Scores)
六维属性:力量(STR)、敏捷(DEX)、体质(CON)、智力(INT)、感知(WIS)、魅力(CHA)
属性修正值: INLINECODE0
属性关联
AC、远程攻击、闪避 |
| 体质 | HP最大值 |
| 智力 | 法术豁免、法术位 |
| 感知 | 治疗、法术豁免 |
| 魅力 | 交易、社交 |
怪物数据 (Monsters)
蜘蛛类
| 怪物 | 等级 | AC | HP | 攻击 | 伤害 | XP |
|---|
| giantbee | 1 | 7 | 1d3 | sting | 1d3+poison | 6 |
| crabspider |
2 | 7 | 2d8 | bite | 1d8+poison | 25 |
| black_widow | 3 | 6 | 3d6 | bite | 2d6+poison | 50 |
| tarantula | 4 | 5 | 4d8 | bite | 1d8+poison | 125 |
人形生物
| 怪物 | 等级 | AC | HP | 攻击 | 伤害 | XP | 宝藏 |
|---|
| bat | 1 | 6 | 0d1+1 | scream | 0d1+confusion | 5 | - |
| giant_bat |
2 | 6 | 2d4 | bite | 1d4 | 20 | - |
| goblin | 1 | 6 | 1d8-1 | sword | 1d6 | 50 | R |
| goblin-warchief | 2 | 5 | 2d6 | sword | 1d6 | 75 | R |
| goblin-king | 3 | 4 | 0d8+15 | sword | 1d6 | 100 | R |
| bandit | 1 | 6 | 1d6 | sword | 1d6 | 10 | U |
| berserker | 1 | 7 | 1d8+1 | broadsword | 1d10 | 19 | P |
| wolf | 1 | 9 | 1d6 | maw/claw | 1d6/1d4+bleed | 30 | - |
| rock_baboon | 2 | 6 | 2d6 | club/bite | 1d6/1d3 | 20 | U |
宝藏类型
- - U (Unspecified): 无特定战利品
- P (Poor): 少量金币
- R (Rich): 中等战利品
- 普通怪物掉落: 按 xp_value/10 = 金币
战斗系统
攻击命中
CODEBLOCK2
伤害公式
CODEBLOCK3
战斗流程
- 1. 遭遇: 怪物出现,战斗开始
- 先攻: 1d20 + DEX修正,决定顺序
- 回合: 攻击/逃跑/使用物品/施法
- 结算: 经验值分配,战利品掉落
战斗命令
- -
attack <target> - 攻击敌人 - INLINECODE2 - 施放法术
- INLINECODE3 - 使用物品
- INLINECODE4 - 尝试逃跑
- INLINECODE5 - 查看状态
物品系统
物品类型
- - 武器: sword, bow, dagger, staff
- 护甲: leather, chain, plate, shield
- 消耗品: potion, scroll, food
- 贵重品: gold, gem, artifact
武器伤害
| 武器 | 伤害 | 价格 |
|---|
| 短剑 (dagger) | 1d4 | 10gp |
| 长剑 (longsword) |
1d8 | 15gp |
| 巨剑 (bastardsword) | 2d4 | 30gp |
| 长弓 (longbow) | 1d6 | 50gp |
| 战斧 (battleaxe) | 1d8 | 30gp |
游戏流程
1. 角色创建
步骤:
- 1. 输入角色名称
- 选择种族(人类/精灵/矮人/半身人/半兽人以上)
- 选择职业(战士/法师/盗贼/牧师/平民)
- 分配属性(4d6骰点,去掉最低)
- 选择背景(冒险者/士兵/学者/浪人/农夫)
2. 地图探索
- - location: 当前所在地点
- npc: 地点中的NPC
- opponents: 遭遇的敌人
- items: 可拾取物品
3. 互动命令
- -
look - 查看周围 - INLINECODE7 - 移动 (north/south/east/west)
- INLINECODE8 - 与NPC对话
- INLINECODE9 - 拾取物品
- INLINECODE10 - 查看背包
- INLINECODE11 - 装备物品
- INLINECODE12 - 休息恢复
AI DM 提示词
作为DM引导游戏时:
- 1. 开场描述: "你站在[地点],周围是[环境描述]。你可以看到[npc/敌人/物品]。"
- 2. 玩家行动结果: "你尝试[动作]... 投掷[检定]... 结果是[数值]。[成功/失败]!"
- 3. 战斗描述: "[玩家名]挥剑砍向[怪物]!命中!造成了[x]点伤害!" 或 "怪物躲开了!"
- 4. 提供选择: "你可以通过以下方式继续:1.[选项A] 2.[选项B] 3.[选项C]"
- 5. 进度保存: 定期总结角色状态
参考文档
详细数据文件:
启动示例
CODEBLOCK4
新增系统 (v2.1)
种族系统 (Races)
+2敏捷 +1智力 | 黑暗视觉、精怪血统 |
| 矮人 | +2体质 +2力量 | 黑暗视觉、石石亲和 |
| 半身人 | +2敏捷 +1魅力 | 幸运、勇敢 |
| 半兽人 | +2力量 +1体质 | 黑暗视觉、残暴 |
| 提夫林 | +2魅力 +1智力 | 黑暗视觉、炼狱血脉 |
| 侏儒 | +2智力 +1敏捷 | 黑暗视觉、侏儒机巧 |
| 龙裔 | +2力量 +1魅力 | 龙息、龙族血统 |
状态效果系统 (Status Effects)
负面状态: 中毒、流血、燃烧、眩晕、麻痹、恐惧、失明、束缚、混乱、睡眠、冰冻、触电
正面状态: 祝福、护盾、加速、隐形、飞行、再生
商店系统 (Shops)
护甲、盾牌 |
| 药水铺 | 治疗药水、解毒剂 |
| 魔法商店 | 法术书、圣徽 |
| 杂货铺 | 日用品 |
- - 买入价格: 标价 × buy_multiplier (约50-70%)
- 卖出价格: 标价 × 0.3
任务系统 (Quests)
- - 主线任务: 教程 → 村庄威胁 → 哥布林首领 → 远古遗迹 → 骷髅王者
- 支线任务: 森林狼患、遗失项链、蜘蛛巢穴
- 特殊任务: 拯救公主
货币系统
10 |
| 金币 (gc) | 100 |
| 铂金币 (pc) | 500 |
游戏时间
- - 回合: 10分钟
- 短休: 1小时(恢复生命骰)
- 长休: 8小时(全恢复)
- 夜晚: 怪物增强
存档系统
- - 自动存档: 每10回合
- 最大存档数: 10
- 保存内容: 角色、物品、任务、游戏时间
Text RPG - 文字角色扮演游戏 v2.0
重构自: https://github.com/sbordeyne/rpg-text
概述
这是一个基于面向对象设计的文字RPG引擎,融合了原始D&D规则。AI作为DM(地下城主),通过自然对话引导玩家进行回合制冒险。
核心架构
数据驱动系统
所有游戏数据通过 JSON 文件定义,便于扩展:
data/
├── characters.json # NPC数据
├── items.json # 物品目录
├── jobs.json # 职业定义
├── monsters.json # 怪物图鉴
├── spells.json # 法术列表
├── maps/ # 地图数据
├── loot_tables.json # 战利品表
└── treasures.json # 宝藏表
核心类结构
Entity (基类)
├── Player # 玩家角色
├── Monster # 怪物
└── NPC # 非玩家角色
Game Systems:
├── CharacterSystem # 角色系统
├── CombatSystem # 战斗系统
├── InventorySystem # 背包系统
├── QuestSystem # 任务系统
├── MapSystem # 地图系统
└── SaveLoadSystem # 存档系统
职业系统 (Jobs)
| 职业 | HP骰 | MP骰 | 主属性 | 特点 |
|---|
| 战士 (fighter) | d8 | d4 | STR | 高血量,擅长武器 |
| 法师 (wizard) |
d4 | d10 | INT | 奥术魔法 |
| 盗贼 (thief) | d4 | d4 | DEX | 潜行、偷袭 |
| 牧师 (cleric) | d6 | d6 | WIS | 神圣魔法 |
| 平民 (commoner) | d4 | d4 | STR | 基础职业 |
职业豁免检定 (Saving Throws)
| 职业 | 毒素 | 魔杖 | 麻痹 | 吐息 | 法术 |
|---|
| 战士 | 12 | 13 | 14 | 15 | 16 |
| 法师 |
13 | 14 | 13 | 16 | 15 |
| 盗贼 | 13 | 14 | 13 | 16 | 15 |
| 牧师 | 11 | 12 | 14 | 16 | 15 |
| 平民 | 15 | 14 | 16 | 17 | 16 |
属性系统 (Ability Scores)
六维属性:力量(STR)、敏捷(DEX)、体质(CON)、智力(INT)、感知(WIS)、魅力(CHA)
属性修正值: (属性值 - 10) // 2
属性关联
AC、远程攻击、闪避 |
| 体质 | HP最大值 |
| 智力 | 法术豁免、法术位 |
| 感知 | 治疗、法术豁免 |
| 魅力 | 交易、社交 |
怪物数据 (Monsters)
蜘蛛类
| 怪物 | 等级 | AC | HP | 攻击 | 伤害 | XP |
|---|
| giantbee | 1 | 7 | 1d3 | sting | 1d3+poison | 6 |
| crabspider |
2 | 7 | 2d8 | bite | 1d8+poison | 25 |
| black_widow | 3 | 6 | 3d6 | bite | 2d6+poison | 50 |
| tarantula | 4 | 5 | 4d8 | bite | 1d8+poison | 125 |
人形生物
| 怪物 | 等级 | AC | HP | 攻击 | 伤害 | XP | 宝藏 |
|---|
| bat | 1 | 6 | 0d1+1 | scream | 0d1+confusion | 5 | - |
| giant_bat |
2 | 6 | 2d4 | bite | 1d4 | 20 | - |
| goblin | 1 | 6 | 1d8-1 | sword | 1d6 | 50 | R |
| goblin-warchief | 2 | 5 | 2d6 | sword | 1d6 | 75 | R |
| goblin-king | 3 | 4 | 0d8+15 | sword | 1d6 | 100 | R |
| bandit | 1 | 6 | 1d6 | sword | 1d6 | 10 | U |
| berserker | 1 | 7 | 1d8+1 | broadsword | 1d10 | 19 | P |
| wolf | 1 | 9 | 1d6 | maw/claw | 1d6/1d4+bleed | 30 | - |
| rock_baboon | 2 | 6 | 2d6 | club/bite | 1d6/1d3 | 20 | U |
宝藏类型
- - U (Unspecified): 无特定战利品
- P (Poor): 少量金币
- R (Rich): 中等战利品
- 普通怪物掉落: 按 xp_value/10 = 金币
战斗系统
攻击命中
python
命中公式
target_ac = (20 - 基础AC) + 等级差 + AC修正
roll = 1d20 + 命中修正
命中 = roll >= target_ac
伤害公式
python
从 data/monsters.json 读取
damage = parse
diceformat(attack_dice) # 如 2d6 -> 7 (平均值)
战斗流程
- 1. 遭遇: 怪物出现,战斗开始
- 先攻: 1d20 + DEX修正,决定顺序
- 回合: 攻击/逃跑/使用物品/施法
- 结算: 经验值分配,战利品掉落
战斗命令
- - attack - 攻击敌人
- cast - 施放法术
- use
- - 使用物品
- flee - 尝试逃跑
- status - 查看状态
物品系统
物品类型
- - 武器: sword, bow, dagger, staff
- 护甲: leather, chain, plate, shield
- 消耗品: potion, scroll, food
- 贵重品: gold, gem, artifact
武器伤害
| 武器 | 伤害 | 价格 |
|---|
| 短剑 (dagger) | 1d4 | 10gp |
| 长剑 (longsword) |
1d8 | 15gp |
| 巨剑 (bastardsword) | 2d4 | 30gp |
| 长弓 (longbow) | 1d6 | 50gp |
| 战斧 (battleaxe) | 1d8 | 30gp |
游戏流程
1. 角色创建
步骤:
- 1. 输入角色名称
- 选择种族(人类/精灵/矮人/半身人/半兽人以上)
- 选择职业(战士/法师/盗贼/牧师/平民)
- 分配属性(4d6骰点,去掉最低)
- 选择背景(冒险者/士兵/学者/浪人/农夫)
2. 地图探索
- - location: 当前所在地点
- npc: 地点中的NPC
- opponents: 遭遇的敌人
- items: 可拾取物品
3. 互动命令
- - look - 查看周围
- go - 移动 (north/south/east/west)
- talk - 与NPC对话
- take
- - 拾取物品
- inventory - 查看背包
- equip
- - 装备物品
- rest - 休息恢复
AI DM 提示词
作为DM引导游戏时:
- 1. 开场描述: 你站在[地点],周围是[环境描述]。你可以看到[npc/敌人/物品]。
- 2. 玩家行动结果: 你尝试[动作]... 投掷[检定]... 结果是[数值]。[成功/失败]!
- 3. 战斗描述: [玩家名]挥剑砍向[怪物]!命中!造成了[x]点伤害!