Hades游戏修改教程 物品武器装备技能修改方法
一次冒险中出现更多武器强化房间:
LootData.lua文件下搜索Name = "WeaponUpgrade",
照整个格式复制一边添加进去:
{ Name = "WeaponUpgrade", GameStateRequirements = { RequiredMaxWeaponUpgrades = 2, RequiredNotInStore = "WeaponUpgradeDrop", RequiredMinCompletedRuns = 3, RequiredMinDepth = 3, } },
这样冒险中就会出现3个武器强化房间了。
同理,如果想要出现4个武器强化房间,就在复制一个,然后把RequiredMaxWeaponUpgrades的值改成3即可(可能不改也行,没确认过)。
另外,第二个武器强化房间至少在26个房间才会出现,可以把整个数值往小一点改,这样武器强化房间会更快出现。
上次游戏更新后出现了大量卡顿的情况,一种是游戏时长久了出现的丢帧,估计是哪里内存溢出了;第二种是过图时存档造成卡顿,这个可以在RoomManager里的UnlockRoomExits函数下面删掉保存的代码来解决,这样捡完房间掉落后就不会自动存档了,进房间的自动存档还在所以放心删。具体代码如下:
搜SaveCheckpoint({ SaveName = "_Temp", DevSaveName = CreateDevSaveName( run, { PostReward = true } ) })就行。
武器锤子强化祝福修改:
LootData.lua下搜索WeaponUpgrade =
找到Traits属性,可以看到所有强化的名字,对照英文找到想要修改的祝福的名字,这里普攻吸血2明显就是对应SwordCursedLifeStealTrait
那么再去TraitData.lua 下搜索SwordCursedLifeStealTrait =
找到该祝福修改的属性,发现这两个属性值正好是2,英文描述也很吻合,应该直接修改这两个值就行了(下面PropertyChanges里面变化的最大生命值为40%应该就是副作用了,也可以修改)
魔镜强化:
MetaUpgrades.lua下,搜索function SwapMetaupgrade( screen, button )
这个函数是在0.26版本之后新增的,目的是为了替换每行的表里两种强化。
见MetaUpgradesData.lua下强化:这个MetaUpgradeOrder就是魔镜包含的所有强化,可以看到使用的是一个pair的数据结构(其实我是瞎说的,没学过lua,看的懂就行,了解的大佬欢迎补充),同时MetaUpgradesData下的每一项也是一个pair,要实现同行强化的切换,函数中会通过遍历改行找到第一个与当前使用的强化不同名称的强化,然后用新的强化替换原来的强化。
那么问题来了, 现在我们想要新增一个强化,比如说我们新增一个增加移速的强化,你会发现是新增强化虽然缺失增加了,但是第一行的背刺强化却消失了。
问题就在于MetaUpgrades.lua下的函数SwapMetaupgrade中,预设了每行只会出现两种强化,因此每次找到第一个不同类型的强化,就会直接替换原来的强化,因此,每行只能有两种不同类型的强化。
而我们现在希望每行有多个不同的强化,这就需要我们对SwapMetaupgrade函数下的代码进行修改。
这里提供我的一种比较蠢的做法:
遍历一边,标记与当前使用强化相同名称的强化的位置下标,让下标+1(超出上限重置为1)设为nowNum,然后再遍历一边直到下标位置为nowNum,这时替换当前强化。
具体代码:
ocal metaupgradeData = nil local nowNum = 1 local maxNum = 0
for i, entryName in pairs(MetaUpgradeOrder[index]) do
if entryName == upgradeName then
nowNum = i end
maxNum = i end
if maxNum == nowNum then
nowNum = 1
else
nowNum = nowNum + 1 end
for i, entryName in pairs(MetaUpgradeOrder[index]) do
if nowNum == i then
metaupgradeData = MetaUpgradeData[entryName]
GameState.MetaUpgradesSelected[index] = entryName end end
需要注意的是第一张图中注释 清理强化等级的那部分也需要删除(大概),因为我这边的代码没有包含还原等级的部分代码。
在此之后就可以在MetaUpgradesData.lua下添加自己想要的强化了。
制作一个祝福后,可以直接在PropertyChanges里修改需要增加的属性,也可以不填PropertyChanges,而是在其他文件中用GetNumMetaUpgrades("你的强化名字")函数来获取强化等级,据此来实现不同效果。
之后只要把祝福的名字填入到MetaUpgradesData.lua下的MetaUpgradeOrder里就行了。
补充说明:
考虑到源码里很多函数作用域都是全局,其实很多操作都可以放在更新不会影响的独立文件里,把需要替换的函数写成装饰器形式,每次更新只要在RoomManager.lua里加一句Import "xxx.lua"就能用了(
比如(感谢提供IsSuperAvailable这个函数)
地狱模式专属热度:
MetaUpgradeData里的NoInvulnerabilityShrineUpgrade,没有无敌时间
把GameStateRequirements这段删掉就可以在普通模式里用了。
AddTraitToHero({ TraitName = 祝福, Rarity = 稀有度 })
祝福可以在LootData里根据掉落进行查找,具体效果在TraitData
稀有度注意t1t2是没有传奇Legendary的,最高到英雄Heroic,而t3只有传奇
例:AddTraitToHero({ TraitName = "RetaliateWeaponTrait", Rarity = "Heroic" })
把这东西放在RunManager里的StartNewRun函数底部可以实现开局进塔尔塔罗斯后获取任意祝福。
三弓合一:
AddTraitToHero({ TraitName = "BowBaseUpgradeTrait", Rarity = "Heroic" })
AddTraitToHero({ TraitName = "BowMarkHomingTrait", Rarity = "Heroic" })
AddTraitToHero({ TraitName = "BowLoadAmmoTrait", Rarity = "Heroic" })
无限钱和刷新:
CurrentRun.NumRerolls = CurrentRun.NumRerolls + 1000
CurrentRun.Money = CurrentRun.Money + 99999
自测传奇特效:
yX_supper_trait =
{
"ZeusChargedBoltTrait", --闪电裂变
-- "ShieldHitTrait", --圣盾
"DoubleCollisionTrait", --两次撞击
-- "FishingTrait",
"MoreAmmoTrait", --全副武装
"UnstoredAmmoDamageTrait", --当头一棒
"CharmTrait", --魅惑
-- "AresCursedRiftTrait", --战轮伤害加深
"DionysusComboVulnerability", --醉酒伤害加深
"InstantChillKill",
-- "MagnetismTrait", --自动回收
"HermesRushAreaSlow", --冲刺减速
"DionysusAphroditeStackIncreaseTrait", --纵情酒色
-- "AutoRetaliateTrait" --复仇
-- "SlowProjectileTrait" --衰老
}