hades吧 关注:41,410贴子:95,191

回复:【游戏修改】Hades游戏修改交流帖

取消只看楼主收藏回复

随缘更新,随缘更新,溜了溜了


IP属地:浙江20楼2020-03-18 21:37
收起回复
    Roll房间修改:
    Interactables文件下搜索 AttemptRerollDoor 函数
    在room.ChosenRewardType = ChooseRoomReward这句下面增加一句
    room.ChosenRewardType = "Boon"就表示刷新会出祝福了。
    同理,--Devotion 双祝福房 --Boon 祝福房 --Shop 商店 --WeaponUpgrade 武器升级 --StackUpgrade 祝福升级 --RoomRewardMaxHealthDrop 提升最大HP --HermesUpgrade 赫尔墨斯祝福
    但是这样修改后刷出来的房间只有一种了,如果想在多种房间中随机刷新,可以改成这两句
    local roomType = {"Boon","Devotion", "WeaponUpgrade", "StackUpgrade", "RoomRewardMaxHealthDrop", "HermesUpgrade"}
    room.ChosenRewardType = roomType[math.random(1,#roomType)]
    就会在这些房间中随机了,截图里面是70%概率祝福房,30%概率其他高级房间(GetNumMetaUpgrades那句和对应的end要一起去掉)


    IP属地:浙江24楼2020-03-20 14:21
    收起回复
      当然了,这样出现的祝福房间是随机的,如果想要让出现的祝福房间是特定的几个祝福,可以在
      SetupRoomReward( run, room, rewardsChosen )
      这条语句后面加上几行:
      local debugBoons = { "ZeusUpgrade", "DemeterUpgrade"}
      if room.ChosenRewardType == "Boon" then
      room.ForceLootName = debugBoons[math.random(1,#debugBoons)]
      end
      这样祝福房就只出宙斯和冰神了,
      DionysusUpgrade酒神,ZeusUpgrade宙斯,AresUpgrade战神, ArtemisUpgrade弓神, AphroditeUpgrade爱神, AthenaUpgrade雅典娜, PoseidonUpgrade波塞冬, HermesUpgrade赫尔墨斯, TrialUpgrade混沌(呃,没试过房间出混沌是怎么个情况,慎用), DemeterUpgrade农神


      IP属地:浙江25楼2020-03-20 14:31
      回复
        修改祝福参数
        和之前说的修改武器参数一样,都在TraitData.lua文件里面,这个文件里面存放所有祝福修改的属性
        首先选择想要修改的神明,名字和楼上一样去掉Upgrade就行,比如想要修改宙斯的祝福,那么先搜索
        -- Zeus

        那么从这个注释到下个注释之间都是这个神明的祝福了,最简单的修改还是和之前修改武器一样,找到你想要的该的祝福(看名字那个比较像...)
        直接修改Common、Rare、Epic、Heroic几个参数的值就行了,这些就是不同等级祝福效果整体的提升倍率,一般来说,修改数字都是比较安全的,不太容易崩。
        进一步修改可以到下面的PropertyChanges看具体修改了哪些,不过这个就比较复杂一点了


        IP属地:浙江26楼2020-03-20 14:43
        收起回复
          武器攻速修改:
          首先还是和之前武器修改一样,在WeaponUpgradeData.lua文件下找到想要修改的武器的名字:
          以亚瑟王剑为例:很显然是剑4,名字是SwordConsecrationTrait


          IP属地:浙江29楼2020-03-22 07:21
          收起回复
            然后在Trait.lua下搜索 SwordConsecrationTrait =
            这样就可搜索到亚瑟王剑相比普通剑添加的祝福的数据了。
            可以看到在PropertyChanges下有一些修改的属性。其中WeaponProperty = "ChargeTime",就表明这一栏修改的属性是攻速,把数值调低就可以提高攻速了,可以降到0,但是武器还是会有动画消耗的攻速,怎么跳过动画暂时没研究过。
            但是亚瑟王剑实际上有5种不同的武器形态的攻速,都需要分别调整,在这里搜索WeaponProperty = "ChargeTime",都可以一一找到修改。


            IP属地:浙江30楼2020-03-22 07:27
            收起回复
              那么有一些本身武器没有修改攻速的情况呢,这种情况可以直接复制这一段到对应武器的PropertyChanges下:
              { WeaponNames = { "SwordWeaponDash" }, WeaponProperty = "ChargeTime", ChangeValue = 0.20, ChangeType = "Absolute", ExcludeLinked = true, },
              只要你知道武器对应的名称就行。
              剑武器:SwordWeaponDash(冲刺攻击)、SwordWeapon(第一段攻击)、SwordWeapon2(第二段攻击)、SwordWeapon3(第三段攻击)、Sword Parry(特殊攻击)
              其他武器自己搜索WeaponProperty = "ChargeTime",可以找到不少武器的名字


              IP属地:浙江31楼2020-03-22 07:32
              收起回复
                一次冒险中出现更多武器强化房间:
                LootData.lua文件下搜索Name = "WeaponUpgrade",
                照整个格式复制一边添加进去:
                { Name = "WeaponUpgrade", GameStateRequirements = { RequiredMaxWeaponUpgrades = 2, RequiredNotInStore = "WeaponUpgradeDrop", RequiredMinCompletedRuns = 3, RequiredMinDepth = 3, } },

                这样冒险中就会出现3个武器强化房间了。
                同理,如果想要出现4个武器强化房间,就在复制一个,然后把RequiredMaxWeaponUpgrades的值改成3即可(可能不改也行,没确认过)。
                另外,第二个武器强化房间至少在26个房间才会出现,可以把整个数值往小一点改,这样武器强化房间会更快出现


                IP属地:浙江38楼2020-03-24 17:03
                收起回复

                  帮楼上大佬补个图,搜SaveCheckpoint({ SaveName = "_Temp", DevSaveName = CreateDevSaveName( run, { PostReward = true } ) })
                  就行。


                  IP属地:浙江40楼2020-03-24 19:32
                  收起回复
                    武器锤子强化祝福修改:
                    LootData.lua下搜索WeaponUpgrade =
                    找到Traits属性,可以看到所有强化的名字,对照英文找到想要修改的祝福的名字,这里普攻吸血2明显就是对应SwordCursedLifeStealTrait,

                    那么再去TraitData.lua 下搜索SwordCursedLifeStealTrait =
                    找到该祝福修改的属性,发现这两个属性值正好是2,英文描述也很吻合,应该直接修改这两个值就行了(下面PropertyChanges里面变化的最大生命值为40%应该就是副作用了,也可以修改)


                    IP属地:浙江43楼2020-03-28 14:28
                    收起回复
                      魔镜强化
                      MetaUpgrades.lua下,搜索function SwapMetaupgrade( screen, button )

                      这个函数是在0.26版本之后新增的,目的是为了替换每行的表里两种强化。
                      见MetaUpgradesData.lua下强化:这个MetaUpgradeOrder就是魔镜包含的所有强化,可以看到使用的是一个pair的数据结构(其实我是瞎说的,没学过lua,看的懂就行,了解的大佬欢迎补充),同时MetaUpgradesData下的每一项也是一个pair,要实现同行强化的切换,函数中会通过遍历改行找到第一个与当前使用的强化不同名称的强化,然后用新的强化替换原来的强化。

                      那么问题来了, 现在我们想要新增一个强化,比如说我们新增一个增加移速的强化,你会发现是新增强化虽然缺失增加了,但是第一行的背刺强化却消失了


                      IP属地:浙江46楼2020-03-30 11:09
                      回复
                        问题就在于MetaUpgrades.lua下的函数SwapMetaupgrade中,预设了每行只会出现两种强化,因此每次找到第一个不同类型的强化,就会直接替换原来的强化,因此,每行只能有两种不同类型的强化。
                        而我们现在希望每行有多个不同的强化,这就需要我们对SwapMetaupgrade函数下的代码进行修改。
                        这里提供我的一种比较蠢的做法:
                        遍历一边,标记与当前使用强化相同名称的强化的位置下标,让下标+1(超出上限重置为1)设为nowNum,然后再遍历一边直到下标位置为nowNum,这时替换当前强化。
                        具体代码:


                        IP属地:浙江47楼2020-03-30 11:16
                        回复
                          local 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


                          IP属地:浙江48楼2020-03-30 11:17
                          回复
                            需要注意的是第一张图中注释 清理强化等级的那部分也需要删除(大概),因为我这边的代码没有包含还原等级的部分代码。


                            IP属地:浙江49楼2020-03-30 11:19
                            回复
                              在此之后就可以在MetaUpgradesData.lua下添加自己想要的强化了。
                              制作一个祝福后,可以直接在PropertyChanges里修改需要增加的属性,也可以不填PropertyChanges,而是在其他文件中用GetNumMetaUpgrades("你的强化名字")函数来获取强化等级,据此来实现不同效果。
                              之后只要把祝福的名字填入到MetaUpgradesData.lua下的MetaUpgradeOrder里就行了


                              IP属地:浙江50楼2020-03-30 11:23
                              回复