A40-凯茜模组通用信息站汉化-游戏机制
Updated 6 days ago游戏机制
需要了解并善加利用的有用机制。
昏招数量
我们仍不确定昏招是什么(已检查了大量与白鼬相关的内容)。老实说可能只是随机间隔
昏招就是随机的哈哈
“以及:我永远不会修改昏招统计项哈哈,也永远不会解释其运作原理,你们得反编译游戏才能搞清楚哈哈。”
真是绝妙的恶搞行为。 感谢丹尼尔。
- 摘自V0.20更新日志
WhisMoney解释的真实昏招函数
这段代码片段在每场战斗结束时运行,无论玩家胜利或失败都会在战斗结束后更新昏招数。
TurnNumber初始为0,循环会根据战斗中的回合数运行三次,例如一回合击杀运行三次循环,两回合击杀运行六次循环。
每次循环有5%几率将num2变量加一,循环结束时num2的值会被加到该次冒险的昏招统计项中。
要实现最低昏招数,最优策略是尽可能减少回合数。一回合结束战斗有85.7375%几率该场战斗昏招数为0。每张地图三场战斗(各一回合)、三个标准头目(各两回合)和莱西(三回合),最少需要18回合。在所有战斗完美操作下,实现0昏招的几率为6.2672%。若莱西回合不计入【注1】,则最少15回合,完美操作下几率为9.9440%。
注1 似乎确实如此,因为在月亮死亡后无限拖回合不会导致昏招数暴增。
若败给标准敌人(非头目)也会获得1昏招。
顶牌算法/公平手牌/手牌操控
原版游戏既有机制。
初始手牌算法会尝试给你一张非毛皮、非免费且“能在第二回合前打出”的卡牌,通过一系列检查实现。
这意味着通过精心管理牌组,你可以迫使游戏总是给你特定起始手牌,比如黑山羊或强化过的螳螂神。
主要操控方法是牌组中只保留一张1血祭卡,其他卡牌全为2/3/4血祭或骨头费用。这能确保你起始手牌必有那张1血祭卡。但无法强制获得免费卡。
也可利用多张1血祭卡实现算法操控。不是强制单张1血祭卡,而是确保所有可能强制抽到的卡都能衔接你的核心策略。
强制获得2或3血祭卡虽可行但困难,因为需要其他卡全是免费卡。因此该策略较难实现,也不常见。
通常“GetFairHand”或“顶牌算法”指机制本身,而“手牌操控”指利用该算法强制特定卡进入起始手牌。
运作原理
游戏抽起始手牌时流程如下:
- 抽一张松鼠和两张卡牌
- 检查是否有卡牌符合:
- 非免费
- 非毛皮
- 能通过以下检查在下一回合打出:
由于算法适用于所有章节,对每种费用类型都有检查:
- 血祭: 检查手中免费可献祭卡的数量。 血祭费用小于等于该数量的卡视为可打出。
- 骨头: 检查手中带脆骨印记的免费卡数量。 骨头费用小于等于该数量的卡视为可打出。
- 能量: 能量费用≤2的卡视为可打出。
- 玛珂: 对每颗所需玛珂,检查手牌是否有卡能提供。 若有,则该卡视为可打出。
-
若没有卡符合条件: 列出牌组中所有符合条件的卡(非免费、非毛皮且可打出),从中抽取第三张卡。
若有卡符合,或牌组中没有符合条件的卡: 从牌组随机抽一张。
在凯茜模组中,多数情况下起始手牌会获得1血祭卡,因为你手中总会有一张免费可献祭卡(第一张松鼠)。但若自然抽到另一张免费可献祭卡,由于现在手中有两张免费可献祭卡,2血祭卡也会被视为可打出,就不再保证抽到1血祭卡。
伊耶拉克会干扰算法表现。当然会。参见示例
由于伊耶拉克真身是免费卡,即使伪装成高费卡也会被视为另一张免费可献祭卡。若你抽到全2费以上手牌且含有伊耶拉克,可确定伊耶拉克是前两张之一。详见示例说明。
烛烟不影响起始手牌。虽然烛烟看似在检查前加入手牌,但起始手牌函数独立运行,抽到的卡会在烛烟之后加入手牌。
当前理论认为Static!Glitch!Card卡会被视为其变形后的卡而非本身。这意味着当Static!Glitch!Card卡变成1血祭/免费卡时,游戏不会强制第三抽为1血祭卡。
Static!Glitch!Card卡影响起始手牌的其他示例。
待补充:更多牌组示例图
Igniter#6890使用手牌操控的牌组。
玩家起始手牌必含黑山羊。
完整顶牌算法流程图
参见KCM版更易读——这些检查基于代码编写。
我跳过了DrawOpeningHand中的fixedHand部分——在固定手牌组加入起始手牌的遭遇中,fixedHand卡牌会在从副牌组抽牌后、抽两张牌前加入手牌,这意味着fixedHand中的卡会影响强制抽牌。
疑问
这有原因吗?比如如果只有1张免费卡,其他全是2血祭或3血祭,这样不行吗?
不行。免费卡不被视为“有效”卡——标准是:
- 非毛皮
- 非免费
- “能在第二回合前打出”
所以当游戏要强制第三张卡时——假设你抽到2血祭和3血祭卡。免费卡不被视为有效卡,游戏会判定“🤷 没有有效卡,算了”然后随机抽一张。
相反,当你有1血祭卡时——游戏检查“有效”卡时会判定“哦,你有1血祭卡!这有效!”并强制该卡。
只在前两张抽牌时计算吗?第三张不会视为有效?
类似。这是因为“能在第二回合前打出”机制——基本上,一张卡被视为“能在第二回合前打出”的条件是其血费用≤手中免费可献祭卡的数量。
假设你抽到松鼠、壁虎和狼。狼现在被视为“能在第二回合前打出”,因为你有两张免费可献祭卡——松鼠和壁虎。既然狼现在有效,就不会强制第三张卡。
本质上区别在于免费卡永远不会有效——而是免费卡会让高费卡变有效。
漏洞
V0.31: 已修复
骨头漏洞终于修复了。
更新日志: 修复:臭名昭著的“GetFairHand”漏洞。玩家能精准指出导致这个存在多年的漏洞的代码在哪一行,真是超现实……
不幸的是,修复这个漏洞又暴露了另一个小漏洞。(见下文。)
之前:
这更像疏忽而非漏洞,起始手牌算法似乎将所有骨头费用卡视为第二回合可打出,即使实际不行。
函数DiskCardGame.Deck.CardCanBePlayedByTurn2WithHand
用于验证卡牌是否能根据当前手牌在下一回合打出。
但第202行是:
flag2 = (hand.FindAll((CardInfo x) => x.CostTier == 0 && x.HasAbility(Ability.Brittle)).Count <= card.BonesCost);
这会找出所有1)免费且2)有脆骨印记的卡,然后比较其数量与当前卡的骨头费用。但判断条件是免费脆骨卡数量≤骨头费用。
例如,若你有0张脆骨卡(第一章任何手牌都应如此),则需8骨头的红头美洲鹫被视为有效卡,因为0 ≤ 8。
因此在第一章/凯茜模组中,任何骨头费用卡都被视为“第二回合可打出”,因为你总有0脆骨卡,而0永远小于任何骨头需求。
也适用于原版游戏。这是第二章中全骨头卡牌组的起始手牌。所有卡至少需1骨头。若玩家下回合未抽到免费卡,所有卡都无法打出。
注1 Primadonna#0325制作了模组(在此)“修复”该检查并考虑骨头领主恩赐对骨头卡可打出性的影响。
V0.32: 已修复
1骨头卡不再视为免费。
之前:
(漏洞报告内容)
GetFairHand漏洞修复了!!!
但还有个问题——奇怪的蛋(或其他1骨头卡)被视为CostTier 0,所以仍会干扰。
在DiskCardGame.CardInfo.CostTier
中:
return this.BloodCost + Mathf.RoundToInt((float)this.BonesCost / 3f) + Mathf.RoundToInt((float)this.energyCost / 2f) + this.gemsCost.Count;
蛋只需1骨头,所以向下取整为0,游戏认为它是免费卡。
这意味着这里的林鼠被视为可打出(感谢@Bert Sampson提供图片)
这里的东方泥龟也被视为可打出(感谢@CrushforceX提供图片)
毛皮价格
毛皮价格随地图编号变化。
毛皮价格 | 昂贵毛皮挑战下 | |||||||
---|---|---|---|---|---|---|---|---|
兔皮 | 狼皮 | 金羊皮 | 兔皮 | 狼皮 | 金羊皮 | |||
地图1 | 2 | 4 | 7 | 地图1 | 4 | 8 | 14 | |
地图2 | 2 | 5 | 9 | 地图2 | 4 | 10 | 18 | |
地图3 | 2 | 6 | 10 | 地图3 | 4 | 12 | 20 |
毛皮融合
原版游戏既有机制。
融合毛皮允许你在毛皮商节点购买融合卡牌。
只要你有至少1张融合毛皮,该类型毛皮的所有交易选项都会显示为融合状态。
例如,若有1张融合金羊皮和3张普通金羊皮,可交易4张融合稀有卡。
若对融合毛皮使用“三重菌术”(将融合过的毛皮与第三张毛皮融合),毛皮商不会给你三重菌术卡。你会得到与普通融合毛皮相同的卡牌选择。
毛皮上的印记对交易无影响。但有建议让印记影响毛皮商选项。见此。
印记上限
原版游戏既有机制。
正常上限为7个印记:2个先天,4个附加,1个图腾。
启用惹人生厌的开局挑战后,可有8个印记,其中3个为先天。
(原版游戏中死亡卡也可达8印记。)
每张卡只能转移一次印记,因此无菌学家时只能附加1或2个印记。
通过菌学家最多可加4印记,但后续印记会消失。
隐藏印记
原版游戏既有机制。
特定情况下,一张卡可能有多个相同印记,但由于多数印记不可叠加,第二个印记不会显示。但它仍占位并计入印记上限。
沽伯特可能改变隐藏印记,表现为新增印记。
例如在智慧试炼中,莱西会说某卡有4印记但只显示3个。
待办:补充演示图。期间可查看沽伯特地图节点章节示例。
变更
菌学家修复后,若印记为先天仍可出现重复。
例如,飞蚂蚁可附加空袭印记。
但任何附加的重复印记会被移除/合并为1。
例如,当带有空袭和滋生寄生虫的翠鸟与带有空袭和囤积狂的翠鸟融合时,结果翠鸟不会像之前那样有4附加印记(空袭、滋生寄生虫、空袭、囤积狂),而是3附加印记(空袭、滋生寄生虫、囤积狂)。
之前:
在菌学家处融合时,卡牌可能因隐藏印记达到上限而“丢失”印记。
继承印记的卡牌
总结而言,大多数卡牌继承附加印记但不继承属性增益,以下例外:
- 筑坝师是继承先天印记的特例。
- 断尾求生是继承火焰增益的特例。
- 蚁后什么都不继承。
印记 | 卡牌 | 先天印记 | 附加印记 | 图腾印记 | 属性增益 | 族群 |
---|---|---|---|---|---|---|
内心之蜂 | 蜜蜂 | ✓ | ✓ | N/A | ||
兔子洞 | 兔子 | ✓ | ✓ | N/A | ||
蚁后 | 蚂蚁 | N/A | ||||
筑坝师 | 堤坝 | ✓ | ✓ | ✓ | N/A | |
鸣钟人 | 铃铛 | ✓ | ✓ | ✓ | N/A | |
断尾求生 | 任意尾巴 | ✓ | ✓ | ✓ | ✓ | |
幼雏 | 特殊进化 | ✓ | ✓ | ✓ | N/A | |
挑剔之兽 | 九头蛇 | ✓ | ✓ | ✓ | N/A | |
克拉肯水袭 | 触手 | ✓ | ? | N/A |
可叠加印记
原版游戏既有机制。
漏洞已修复。自V0.27起印记不再叠加。
但图腾丰产之巢仍会叠加——打出卡牌时获得两份复制,一份来自附加印记,一份来自图腾印记。未知是疏忽还是故意。
之前:
这些可叠加是因为第二章菌学家的可合并卡牌。
哨兵(KCM不可用)
头脑风宝(KCM不可用)
其他印记不可叠加。
投降机制
原版游戏既有机制。
投降判断逻辑见DiskCardGame.Opponent.CanOfferSurrender。
基本规则是:若对手无牌可出,你的总攻击力*≥对手攻击力**,且你的总攻击力不足一回合取胜,对手可投降。
* 总攻击力不计算牌桌带有“厌恶情绪”印记的对位卡。
* 对手牌桌最大攻击力不计入总和,除非启用松鼠鱼挑战。因为你可以无限用松鼠(或第三章的空容器)阻挡牌桌最大攻击力(直到用完)。
攻击力受领袖等效果调整,但计算总和时不考虑卡牌印记(双重攻击)或是否被阻挡。
感谢RageLeague!!!
示例:
玩家总攻击力为1(工蚁)。 莱西总攻击力为0。 = 玩家攻击力>莱西攻击力。
玩家攻击力<6(取胜所需点数)。
玩家总攻击力为4(白鼬、蚁后)。 莱西总攻击力为1(小麋鹿)。麋鹿不计因松鼠鱼未启用且玩家可无限松鼠阻挡。 = 玩家攻击力>莱西攻击力。
玩家攻击力<6(取胜所需点数)。
月亮
月之怜悯
当你无牌可抽时,月亮会获得“月之怜悯”而非饥饿,每回合增加攻击力。这是原版游戏既有机制。
击败月亮后也不会出现常规饥饿。
变更
根据以下代码,潮汐锁定现在也影响兔子和水生松鼠:
bool flag = playerCard != null && (playerCard.Info.name == “Squirrel” || playerCard.Info.name == “AquaSquirrel” || playerCard.Info.name == “Rabbit”);
绕月飞行的兔子。来自Primsine。
绕月飞行的两只水生松鼠。同样来自Primsine。
过量伤害
原版游戏既有机制。
过量伤害被视为第二次攻击。
若卡牌在攻击前排后立即死亡(例如因尖刺铠甲),过量攻击不会触发。因为过量伤害是单独计算的攻击,而卡牌在攻击前就已死亡。
通过过量伤害击杀后排卡牌不会触发某些印记/先天特性效果。
因为这些效果只在卡牌在场时触发,而后排卡尚未打出——它展示的是下回合将打出的卡。
例如,击杀陷阱者后排的奇怪青蛙不会在死亡时生成跳跃陷阱。 在莱西第二阶段击杀仍在后排的死亡卡不会生成负鼠。
例外:
击杀后排石龙子会生成扭动尾巴。需验证仅攻击是否会生成? 尖刺铠甲在后排生效。
待办:验证其他例外。
移动印记组合
冲刺能手和蛮力冲撞为原版游戏既有机制。
移动印记按添加顺序生效。 顺序为:
- 先天
- 附加
- 图腾
Αphie! 💫: 我要考虑重复读档了因为刚才发生了个啥
野牛横冲直撞了两次???然后雄驼鹿又把野牛推走
横冲直撞触发两次——可能与卡牌顺序有关
https://discord.com/channels/529604048773578763/920010818114961408/946336789793234985
Roshibomb: 漏洞成功复现!!
与菌学家无关。单纯给野牛添加移动印记即可 :)
https://discord.com/channels/529604048773578763/920010818114961408/946383800496173197
TnT - Scrybe of Boom:
我认为可能是因为测试时给野牛同时加了蛮力冲撞和冲刺能手,所以它先横冲直撞两次再蛮力冲撞
https://discord.com/channels/529604048773578763/920010818114961408/946479140578668595
视频
https://discord.com/channels/529604048773578763/920010818114961408/946480039283810335
重置机制
在第一张地图终止冒险会替换一张或两张起始兔皮。
终止一次会替换一张为负鼠。
连续终止两次会替换第二张为环形虫。
可通过以下方式恢复毛皮:
- 击败第一个头目并进入地图2的第一个节点。此后任何时候终止冒险都不会有惩罚。
若在地图2的起始节点结束冒险,不会视为地图2,仍按地图1终止计算。
- 在任何战斗中死亡。
负鼠/兔皮
终止1次冒险
对话:
你的前一任轻易就认输了。
你赚的毛皮没那么多了。
负鼠/环形虫
连续终止2次冒险
对话:
2张毛皮就行了吗?
别这么轻易向我投降。
负鼠/环形虫
连续终止2次冒险
对话:
你很意外?难道想要更多毛皮?
别做个懦夫。
变更
更新日志: 仅当在第一张地图使用终止冒险卡时才惩罚。正常死亡会以完整2张兔皮开始新冒险。并添加对话说明情况。
之前:
基于过去两次冒险中击败第一张地图头目的次数。
在首个头目前死亡或终止冒险会替换一张起始毛皮为负鼠。
若再次在首个头目前死亡或终止,第二张毛皮替换为环形虫。
击败首个头目一次恢复一张毛皮。连续击败超过一次恢复第二张毛皮。
简言之,基于过去两次冒险:
0次击败 = 负鼠/环形虫
1次击败 = 负鼠/兔皮
2次击败 = 兔皮/兔皮
若起始无毛皮,会获得选卡节点而非毛皮商。
注:之前似乎至少需要到达首个头目才能恢复起始的毛皮,可选择在战斗中死亡,或击败头目后终止冒险。在头目战中退出不会恢复。
但据radiish#9483,似乎需要实际击败头目才能获得毛皮。目前正在核实确认。
特殊机制
过分精简手牌
若牌组少于3张卡,首回合会抽空牌组。
伤害松鼠统计项的计算方式
缝合兽属于松鼠族群,但不计入伤害松鼠统计项
✅ 松鼠被献祭/战斗死亡
❌ 松鼠被钓鱼人钩走
✅ 松鼠被钓鱼人钩走后击杀
❌ 松鼠被钓鱼人钩走后通过诱饵钩更多东西推出棋盘
❌ 松鼠被钓鱼人钩走后进入阶段2时移出棋盘
✅ 松鼠被潮汐锁定拉入轨道
Pages
- 0 - 邪恶冥刻模组简体中文语言包Wiki
- 100 - API文档汉化 - 首页
- 110 - API文档汉化 - 入门指南
- 120 - API文档汉化 - 卡牌
- 121 - API文档汉化 - 自定义卡牌费用系统
- 122 - API文档汉化 - 会说话的卡牌
- 123 - API文档汉化 - 自定义毛皮
- 130 - API文档汉化 - 能力
- 131 - API文档汉化 - 自定义触发器
- 132 - API文档汉化 - 自定义狙击逻辑
- 133 - API文档汉化 - 伤害护盾行为
- 134 - API文档汉化 - 卡槽修改功能
- 135 - API文档汉化 - 触发器与执行顺序
- 140 - API文档汉化 - 自定义/扩展属性
- 150 - API文档汉化 - 扬升(凯茜模组)
- 160 - API文档汉化 - 地图与遭遇战
- 170 - API文档汉化 - 对手
- 180 - API文档汉化 - 图腾
- 190 - API文档汉化 - 道具
- 1A0 - API文档汉化 - 规则书
- 1A1 - API文档汉化 - 添加自定义页面
- 1A2 - API文档汉化 - 添加文本重定向功能
- 1B0 - API文档汉化 - 本地化
- 1B0 - API文档汉化 - 声音
- 1B0 - API文档汉化 - 资产包
- 1C0 - API文档汉化 - 其他特性
- 200 - JSONLoader文档汉化 - Wiki
- 201 - JSONLoader文档汉化 - 枚举值
- A00-凯茜模组通用信息站汉化-首页
- A10-凯茜模组通用信息站汉化-安装
- A11-凯茜模组通用信息站汉化-技术支持常见问题
- A12-凯茜模组通用信息站汉化-补丁
- A20-凯茜模组通用信息站汉化-入门指南
- A30-凯茜模组通用信息站汉化-一般常见问题
- A40-凯茜模组通用信息站汉化-游戏机制
- A50-凯茜模组通用信息站汉化-装饰选项
- A60-凯茜模组通用信息站汉化-与原版游戏的差异
- A70-凯茜模组通用信息站汉化-解锁
- A71-凯茜模组通用信息站汉化-初始牌组
- A72-凯茜模组通用信息站汉化-道具
- A73-凯茜模组通用信息站汉化-卡牌
- A74-凯茜模组通用信息站汉化-伊耶拉克的细节
- A75-凯茜模组通用信息站汉化-挑战
- A76-凯茜模组通用信息站汉化-最终头目
- A77-凯茜模组通用信息站汉化-成就
- A80-凯茜模组通用信息站汉化-提示:挑战提示
- A81-凯茜模组通用信息站汉化-提示:地图节点
- A82-凯茜模组通用信息站汉化-提示:印记
- A90-凯茜模组通用信息站汉化-背景故事
- AA0-凯茜模组通用信息站汉化-ARG解谜
- AA1-凯茜模组通用信息站汉化-ARG事件概览
- AA2-凯茜模组通用信息站汉化-磐石卡牌
- AA3-凯茜模组通用信息站汉化-命令:DAMPNSOGGY
- AA4-凯茜模组通用信息站汉化-命令:RAZORSHARP
- AA5-凯茜模组通用信息站汉化-命令:PALESICKLY
- AA6-凯茜模组通用信息站汉化-命令:LEMONLIMES
- AA7-凯茜模组通用信息站汉化-命令:THESHIPWILLRISEAGAIN
- AA8-凯茜模组通用信息站汉化-频道:#prospector
- AA9-凯茜模组通用信息站汉化-频道:#angler
- AAA-凯茜模组通用信息站汉化-频道:#trader
- AAB-凯茜模组通用信息站汉化-频道:#_-_-_-_-_
- AAC-凯茜模组通用信息站汉化-管理员笔记
- AAD-凯茜模组通用信息站汉化-木雕师的消息
- AAE-凯茜模组通用信息站汉化-提示和工具
- AAF-凯茜模组通用信息站汉化-ARG文档
- AAG-凯茜模组通用信息站汉化-前传ARG
- AB0-凯茜模组通用信息站汉化-趣事:名人堂
- AB1-凯茜模组通用信息站汉化-趣事:耻辱柱
- AB2-凯茜模组通用信息站汉化-趣事:以及其他有趣内容……
- AB3-凯茜模组通用信息站汉化-趣事:全挑战模式胜利记录
- ABC-凯茜模组通用信息站汉化-趣事:解谜和游戏
- AC0-凯茜模组通用信息站汉化-“作弊”:存档修改
- AC1-凯茜模组通用信息站汉化-“作弊”:重复读档
- AD0-凯茜模组通用信息站汉化-漏洞和代码注释