由于该游戏是由Lua语言基于love框架编写的,且直接通过exe运行,没有额外的文件夹,游戏代码结构清晰。
因此我们可以根据自己的想法随意修改卡牌数据和功能(由于是由玩家自己编写,很容易出bug,所以请务必备份文件!)
修改后的文件不得未经游戏作者同意随意传播!
本攻略能够修改的部分包括但不限于:
游戏描述:任何你不满意的描述都可以根据你的想法修改。
卡牌解锁:包括所有的小丑、牌组、难度、优惠券等所有内容。
游戏数值:如某张卡片加的数值、乘的倍率、触发概率等。
卡牌功能:如触发条件、触发对象,选择个数等。
修改流程:
我们可以直接修改可运行文件的后缀.exe为.7z(或者右键exe直接用7-zip打开修改也行)
然后通过7-zip打开,一切修改都在该目录下进行。(注意:不能使用其他解压缩软件如WinRAR、Bandizip等软件解压后修改再重新压缩回去!)
修改完成后退出并保存。此时文件大小不应该出现明显变化!
最后修改后缀.7z为.exe,运行游戏。
修改描述:
简体中文翻译包在localization/zh_CN.lua文件中,卡牌描述不清晰的可以直接搜索卡牌名修改描述。
例如“延迟满足”这张牌的描述代码为:
["j_delayed_grat"]={
["name"]="延迟满足",
["text"]={
[1]="如果在回合结束时",
[2]="没有使用弃牌,则每把{C:attention}弃牌{}",
[3]="获得{C:money}$#1#{}",
},
}
其中["text"]代表游戏中的描述,[2]代表第二行,
{C:attention} ... {} 代表将...着重标出,其他类似的{}符号也是相同功能,只不过是不同视觉效果而已。
#1#、#2#等是Lua语言中的占位符,用来将游戏数据替换进来,起到格式化的作用,不建议修改。
(修改描述对游戏实际内容没有任何影响,只对卡牌描述起到替换作用)
修改数值:
看到主目录下有个game.lua文件,其中function Game:init_item_prototypes()函数定义了各种卡片和卡组与Boss的基础属性
我们可以通过文本编辑器修改其中的数据然后保存。
例如红色卡组的源代码描述如下:
b_red = {name = "Red Deck", stake = 1, unlocked = true,order = 1, pos = {x=0,y=0}, set = "Back", config = {discards = 1}, discovered = true}
我们只要修改config中的内容就能同时获得多种能力:例如config = {hands = 1, discards = 1, dollars = 1, hand_size = 1, joker_slot = 1},就是每回合出牌次数+1,弃牌次数+1,收入+1,手牌+1,小丑牌上限+1。
部分字典类型变量,例如voucher = 'v_crystal_ball', consumables = {'c_fool', 'c_fool'}不建议添加,因为容易出bug,当然如果是有能力的大佬当我没说。
对于其他未解锁的卡牌或是卡组,将unlocked和discovered设置为true就能够直接从收藏中看到描述了,无需从游戏中解锁。
修改小丑牌与其他类型的卡牌都是类似的。
例如:第一张小丑牌,源代码描述为:
j_joker = {order = 1, unlocked = true, start_aler ted = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 2, name = "Joker", pos = {x=0,y=0}, set = "Joker", effect = "Mult", cost_mult = 1.0, config = {mult = 4}},
我们直接修改config = {mult = 4}为config = {mult = 5}就能将增加的倍率从4改为5,一般的数值修改更改config即可(不容易出bug),建议照着游戏描述修改。
其他变量也是类似的,可以根据你的想法自由修改,就不一一介绍了。
注意name不得修改,因为代码中是根据name来判断卡牌的。pos也不建议修改因为涉及到了游戏贴图。
修改功能(进阶难度):
所有卡牌功能的计算在card.lua文件的多个函数中。
举个例子,如果我们想修改“延迟满足”这张卡牌的触发条件为:未使用的弃牌次数都能加钱。过程如下:
先在localization/zh_CN.lua文件中搜索卡牌名称“延迟满足”,找到变量名j_delayed_grat,再到game.lua中搜索该变量,找到name = "Delayed Gratification",然后在card.lua中搜索所有的Delayed Gratification。
找到代码位置后,我们发现共计出现两次,第一次出现在elseif self.ability.name == 'Delayed Gratification' then loc_vars = {self.ability.extra},阅读代码发现只是将变量传入loc_vars,因此我们无需修改。
第二次出现为if self.ability.name == 'Delayed Gratification' and G.GAME.current_round.discards_used == 0 and G.GAME.current_round.discards_left > 0 then
我们可以很自信的重新修改为if self.ability.name == 'Delayed Gratification' and G.GAME.current_round.discards_left > 0 then
修改数据时记得将描述一起修改(占位符可以不用修改)
由于函数逻辑复杂,没有绝对的把握请勿随意修改函数内容!(想想玩到一半突然报错存档还没了的痛苦)
特殊数据:(别问我是怎么知道的)
蜡封多选时只有第一张选中的会生效,不能仅更改选择数量实现多张卡牌同时蜡封的效果。具体原理涉及到幻灵牌触发流程。
负卡特性不能单单修改数值,因为游戏底层原理是将这张卡放到数组的最后,因此即便修改为+2小丑牌上限也是不起作用的。
还有更多的细节(bug)还请有兴趣的玩家自己摸索。
再次提醒:强烈建议修改任何文件前先备份!
希望大家合理修改游戏难度,快乐游戏!
另附代码解释
discards = XX 【额外的弃牌数 = XX】
hands = XX 【额外的出牌数 = XX】
dollars = XX 【每回合额外的金钱 = XX】
extra_hand_bonus = XX 【每个没有用完的出牌数奖励 $XX】
extra_discard_bonus = XX 【每个没有用完的弃牌数奖励 $XX】
joker_slot = XX 【额外的小丑槽位 = XX】
voucher = XX 【起始带有名为 XX 的优惠券,优惠券的名字可以在该部分上方一点的 --vouchers 找到对应的英文写法】
voucher = {XX, XX} 【如果要带有多张优惠券,就需要添加花括号】
spectral_rate = XX 【幻灵牌在商店中的出现倍率为 XX】
remove_faces = true 【开局移除掉所有人头牌】