为什么第一个怪是Kakka会导致问号出怪概率提升? 从源码的角度解析杀戮尖塔
引言 无论是在中文论坛还是英语论坛, 都会看到一个说法 即如果第一个怪物是Cultist(邪教徒Kakka), 则有80%的概率, 你的下一个事件(问号)会变成战斗, 导致你无法使用捏奥的悲恸白嫖到精英. 这个让我很是奇怪, 在我之前的认知中, 杀戮尖塔遇到什么怪物, 问号碰到什么事件, 都是已经注定好的行为, 为什么会有Bug会让第一支怪物, 影响到后续的问号事件呢? 所幸杀戮尖塔是用Java写的, 所以我们可以很直接的反编译他的Jar文件, 看到源代码 源代码获取方式 打开杀戮尖塔文件夹, 里面会有一个名为desktop-1.0.jar的文件, 使用任意反编译工具即可获取源代码. 这里我使用的是JD-GUI, 将其解析之后获得到源码 生成怪物和事件的关系 生成怪物 其中生成怪物的代码在desktop-1.0.jar.src\com\megacrit\cardcrawl\dungeons\Exordium.java protected void generateMonsters() { generateWeakEnemies(3); generateStrongEnemies(12); generateElites(10); } 这里是Exordium, 即第一章序幕也就是第一层, 会生成3个弱怪, 12个强怪, 10个精英. 这里可以证明, 3个弱怪之后就是强怪池. 其中生成弱怪的代码 protected void generateWeakEnemies(int count) { ArrayList<MonsterInfo> monsters = new ArrayList<>(); monsters.add(new MonsterInfo("Cultist", 2.0F)); monsters.add(new MonsterInfo("Jaw Worm", 2.0F)); monsters.add(new MonsterInfo("2 Louse", 2.0F)); monsters.add(new MonsterInfo("Small Slimes", 2.0F)); MonsterInfo.normalizeWeights(monsters); populateMonsterList(monsters, count, false); } 其中MonsterInfo中, 第一个参数为怪物名称, 第二个是生成权重, 这里面四个怪物的权重是一样的, 所以理论上生成的概率是相同的. ...