# 抽卡与保底:原作设计与规则 版本:HEROLL 2.0.1 原作还原文档 v1.0。 ## 1. 功能定位 抽卡由三个部分组成:玩家点击的抽卡按钮、按钮指向的奖励池、该池的保底规则。它们必须按池类型关联,不能按按钮名称或显示文字推断价格和保底。 ## 2. 主要状态 下面是开发阅读所需的概念状态,属于开发映射,不要求与原作内部字段同名。 | 状态 | 用途 | | --- | --- | | 抽卡池类型 | 决定奖励候选 | | 按钮档 | 决定抽数和消费 | | 池保底计数 | 按池区分 | | 广告周期使用状态 | 独立于付费次数 | | 替代道具余额 | 用于展示抵扣 | ## 3. 功能规则 ### 3.1 按钮与消费 shopGacha单抽配置钻石30、十连300。替代道具为204,抵扣字段30表示单道具可替代的资源量,不能显示成每抽消耗30张券。另有消耗资源110×35的按钮及每日广告按钮。 ### 3.2 奖励池 奖励行同时记录类型、品质、ID、数量和权重。相同池类型才属于同一候选组;奖励ID为-1时表示指定类型全池,仍须保留奖励类型。 ### 3.3 保底 高级装备池20次保底、提前命中重置标记False;增强装备池50次、重置标记False;坐骑池400次、重置标记True。坐骑记录名字虽带50,真实次数以400为准。 ### 3.4 概率表达 配置权重先按池分组再讨论归一化,不能将某行权重100直接写成100%掉落。十连如何逐次推进保底及命中保底的优先级仍需要原作执行证据。 ## 4. 操作流程 以下顺序用于拆解功能;涉及未确认的结算时机,以本章末尾具体缺口为准。 1. 由按钮找到池类型、抽数、成本和免费广告标记。 2. 读取同池候选与保底规则,展示价格及保底目标。 3. 抽取结果保留奖励类型、ID、数量,交给对应内容模块展示。 4. 更新计数的精确时点及十连分支待确认,不把整次十连当作一次保底进度。 ## 5. 关键数值与计算 | 项目 | 数值 | 状态 | | --- | --- | --- | | shopGacha单抽:道具101消耗30,存在替代道具204 | gachaCount=1;needItemID=101;needCount=30;isAlterBtn=True;alterItemID=204;alterCount=30 | 原作配置确认 | | shopGacha十连:道具101消耗300;抵扣值并非已确认券消耗数 | gachaCount=10;needItemID=101;needCount=300;alterItemID=204;alterCount=30 | 原作配置确认 | | 高级装备保底次数及提前命中重置标记 | type=advancedEquipmentGacha;ceilCount=20;isResetBeforeCeil=False;ceilRewardString=advancedEquipmentGacha_EQUIPMENT_3_-1_FALSE_1 | 原作配置确认 | | 增强装备保底次数及提前命中重置标记 | type=enhancedEquipmentGacha;ceilCount=50;isResetBeforeCeil=False;ceilRewardString=enhancedEquipmentGacha_EQUIPMENT_3_-1_TRUE_1 | 原作配置确认 | | 坐骑保底必须读取ceilCount=400;StringId尾部50不是实际次数 | type=mount_Gacha;ceilCount=400;isResetBeforeCeil=True;ceilRewardString=mount_Gacha_ITEM_0_169_FALSE_1 | 原作配置确认 | ### 5.A 权重检查公式 对指定池、并假定该池所有记录均按权重参与时,`P(i)=weight(i)/Σweight(pool)`。保底和动态筛选不在此式内,见[条件概率检查](./抽卡条件概率.csv)。 ### 抽卡操作与成本(全表) | ID | 名称/键 | 类型/分组 | 抽取次数 | 免费标记 | 广告按钮标记 | 消耗道具ID | 消耗数量 | | --- | --- | --- | --- | --- | --- | --- | --- | | 1 | shopGacha_0_1 | shopGacha | 1 | False | False | 110 | 35 | | 2 | shopGacha_1_1 | shopGacha | 1 | False | False | 101 | 30 | | 3 | shopGacha_2_10 | shopGacha | 10 | False | False | 101 | 300 | | 4 | shopGacha_3_1 | shopGacha | 1 | False | True | | | | 5 | relicGacha_0_1 | relicGacha | 1 | False | True | | | | 6 | relicGacha_1_1 | relicGacha | 1 | False | False | 125 | 100 | | 7 | relicGacha_2_5 | relicGacha | 5 | False | False | 125 | 500 | | 8 | advancedRelicGacha_0_1 | advancedRelicGacha | 1 | False | True | | | | 9 | advancedRelicGacha_1_1 | advancedRelicGacha | 1 | False | False | 125 | 500 | | 10 | advancedRelicGacha_2_5 | advancedRelicGacha | 5 | False | False | 125 | 2500 | | 11 | equipmentGacha_0_1 | equipmentGacha | 1 | False | True | | | | 12 | equipmentGacha_1_1 | equipmentGacha | 1 | False | False | 101 | 20 | | 13 | equipmentGacha_2_5 | equipmentGacha | 5 | False | False | 101 | 100 | | 14 | advancedEquipmentGacha_0_1 | advancedEquipmentGacha | 1 | False | True | | | | 15 | advancedEquipmentGacha_1_1 | advancedEquipmentGacha | 1 | False | False | 101 | 50 | | 16 | advancedEquipmentGacha_2_10 | advancedEquipmentGacha | 10 | False | False | 101 | 500 | | 17 | enhancedEquipmentGacha_0_1 | enhancedEquipmentGacha | 1 | False | False | 101 | 100 | | 18 | enhancedEquipmentGacha_1_10 | enhancedEquipmentGacha | 10 | False | False | 101 | 1000 | | 19 | superballNormalGacha_0_1 | superballNormalGacha | 1 | False | True | | | | 20 | superballAdvancedGacha_0_1 | superballAdvancedGacha | 1 | True | False | | | | 21 | superballEnhancedGacha_0_1 | superballEnhancedGacha | 1 | False | True | | | | 22 | mount_Gacha_0_1 | mount_Gacha | 1 | False | False | 167 | 1 | | 23 | mount_Gacha_1_10 | mount_Gacha | 10 | False | False | 167 | 10 | ### 抽卡保底(全表) | ID | 名称/键 | 类型/分组 | 保底次数 | 保底前命中是否重置标记 | 保底奖励Gacha字符串键 | | --- | --- | --- | --- | --- | --- | | 1 | advancedEquipmentGacha20 | advancedEquipmentGacha | 20 | False | advancedEquipmentGacha_EQUIPMENT_3_-1_FALSE_1 | | 2 | enhancedEquipmentGacha50 | enhancedEquipmentGacha | 50 | False | enhancedEquipmentGacha_EQUIPMENT_3_-1_TRUE_1 | | 3 | mount_00_Gacha50 | mount_Gacha | 400 | True | mount_Gacha_ITEM_0_169_FALSE_1 | ## 6. 原作中文内容 中文名称和效果使用原作文本;{0}、{B}等占位符未确认绑定时保留,文字不能代替参数公式。 本模块主要由数值和键值组成,原作文本对照见同目录CSV。 ## 7. 开发权威表 | 配置用途 | 权威原字段表 | 记录数 | 开发阅读表 | | --- | --- | --- | --- | | 抽卡操作与成本 | [gachatype.csv](./gachatype.csv) | 23 | [中文目录](./gachatype-中文目录.csv) | | 抽卡候选奖励 | [gacha.csv](./gacha.csv) | 60 | [中文目录](./gacha-中文目录.csv) | | 抽卡保底 | [gachaceildata.csv](./gachaceildata.csv) | 3 | [中文目录](./gachaceildata-中文目录.csv) | [执行规则](./执行规则.csv) · [状态字段](./状态字段.csv) · [验收样例](./验收样例.csv) · [字段字典](./字段字典.csv) · [关联全局配置](./关联全局配置.csv) 全局键按模块名称关联收录;其具体含义优先以正文已确认的规则为准。 | 配置键 | 原值 | | --- | --- | | enhancedGachaUnlockStage | 2 | ## 8. 开发验收与禁止误写 | 输入 | 检查内容 | 预期 | | --- | --- | --- | | 读取gachatype中StringId=shopGacha_1_1 | 查询本条配置并核对界面/配置输出 | gachaCount=1;needItemID=101;needCount=30;isAlterBtn=True;alterItemID=204;alterCount=30 | | 读取gachatype中StringId=shopGacha_2_10 | 查询本条配置并核对界面/配置输出 | gachaCount=10;needItemID=101;needCount=300;alterItemID=204;alterCount=30 | | 读取gachaceildata中StringId=advancedEquipmentGacha20 | 查询本条配置并核对界面/配置输出 | type=advancedEquipmentGacha;ceilCount=20;isResetBeforeCeil=False;ceilRewardString=advancedEquipmentGacha_EQUIPMENT_3_-1_FALSE_1 | | 读取gachaceildata中StringId=enhancedEquipmentGacha50 | 查询本条配置并核对界面/配置输出 | type=enhancedEquipmentGacha;ceilCount=50;isResetBeforeCeil=False;ceilRewardString=enhancedEquipmentGacha_EQUIPMENT_3_-1_TRUE_1 | | 读取gachaceildata中StringId=mount_00_Gacha50 | 查询本条配置并核对界面/配置输出 | type=mount_Gacha;ceilCount=400;isResetBeforeCeil=True;ceilRewardString=mount_Gacha_ITEM_0_169_FALSE_1 | 验收样例覆盖已经确认的值;流程中的未知分支不能以本表通过代替规则确认。数值表内的空值、0和-1分别保留;升级数组不默认使用玩家等级作为索引。 ## 9. 当前待补充边界 十连逐抽结算、券抵扣不足时的组合支付、跨池计数以及保底命中顺序尚待确认。 [返回总纲](../局外玩法设计文档_HEROLL_原作_v1.0.md) · [阅读规范](../文档规范与阅读说明.md)