最近想制作这游戏的等级上限mod,特开此贴与水友们讨论相关问题(2023年3月2日更新)
本帖最后由 liyun_1981 于 2023-3-2 16:44 编辑如题,这游戏是《咒语力量》系列的新作肯定要支持一下,我今天刚在论坛里下了最新学习版,体验了下感觉很不错,故打算制作下此游戏的等级上限mod。
开此贴的主要目的是想跟水友们讨论下等级上限相关问题,以及向已通关的水友收集下等级上限相关信息。
目前我有两个相关问题:
1、这游戏的角色最高等级是多少?
2、升级时技能点水友们觉得改为多少合适?
MOD制作进度通报:
至今已经把这游戏的资源获得数、行动点数、移动点数、战利品获得率、角色升级时能重置可选技能、角色升级时能显示更多的可选技能,以及三系同修都搞好了,唯独修改等级上限有点难搞,有懂修改的水友可以回帖一起分享讨论下。
关于等级上限修改我目前已摸索出来的信息及思路:
1、修改等级验证范围,OwnedByGravity.Game.Logic.LootTables.ALevelUpEntry类的ValidForLevelRange字段,将public Vector2 ValidForLevelRange = new Vector2(1f, 15f);改为public Vector2 ValidForLevelRange = new Vector2(0f, 30f);
2、修改等级对象列表,OwnedByGravity.Game.Logic.Units.UnitLevel类的构造方法
public UnitLevel(
ContentReference<UnitProgressionDefinition> reference,
IContentManager contentManager),已知游戏中是通过读取Asset资源文件数据后将反序列化的对象集合List<UnitProgressionDefinition.UnitLevel>赋值给UnitLevel类的Levels字段;我的思路是等程序赋值完Levels后,直接通过Levels.add方法添加15个等级对象进去,我在构造方法最后添加的代码如下:
List<UnitProgressionDefinition.UnitLevel> levels = this.Levels;
int index = levels.Count - 1;
UnitProgressionDefinition.UnitLevel unitLevel1 = levels;
int from = unitLevel1.From;
XPLevelDefinition xpLevelDefinition = unitLevel1.XPLevelDefinition;
for (; index < 29; ++index)
{
UnitProgressionDefinition.UnitLevel unitLevel2 = new UnitProgressionDefinition.UnitLevel();
unitLevel2.XPLevelDefinition = xpLevelDefinition;
from += 1000;
unitLevel2.From = from;
this.Levels.Add(unitLevel2);
}
这段代码的意思是:等程序自动把预定义好的15个等级对象添加到Levels集合后,这段代码负责把16~30级的等级对象再添加到Levels集合中去;这段代码编译能正确通过,可进游戏并读取游戏存档时,总是卡在加载界面不能加载完成,程序也没有崩溃报错,我估计很可能是上面那段代码中标红的那一句代码的问题,那行代码是new出来的UnitProgressionDefinition.UnitLevel类对象,而程序原始业务逻辑中是读取资源文件后反序列化得到的对象,其中的字段数据是不同的,可能导致别的方法中读取该对象数据时出逻辑问题,这个比较蛋痛。
2023年3月1日更新:
今天重写了等级上限修改的代码,已经能正确读档进游戏了,但升级还是有点问题,貌似只能升到16级,我稍后会把mod发出来,欢迎水友们一起测试和讨论。
目前等级上限修改的代码逻辑主要是修改UnitLevel类的构造方法,如下:
public UnitLevel(
ContentReference<UnitProgressionDefinition> reference,
IContentManager contentManager)
{
if (!reference.IsSet<UnitProgressionDefinition>())
return;
this.Progression = contentManager.LoadAssetAsContent<UnitProgressionDefinition>(reference, "T:\\JenkinsAgent\\workspace\\SF_SF_Steam_trunk\\Unity\\SF\\Assets\\OwnedByGravity\\Game\\Logic\\Units\\UnitLevel.cs", 27);
if (!this.Progression.IsSet<UnitProgressionDefinition>())
return;
List<UnitProgressionDefinition.UnitLevel> source = new List<UnitProgressionDefinition.UnitLevel>();
foreach (UnitProgressionDefinition.UnitLevel level in this.Progression.Asset.Levels)
source.Add(level);
this.Levels = source.OrderBy<UnitProgressionDefinition.UnitLevel, int>((Func<UnitProgressionDefinition.UnitLevel, int>) (l => l.From)).ToList<UnitProgressionDefinition.UnitLevel>();
if (this.Levels.Count == 0)
return;
List<UnitProgressionDefinition.UnitLevel> levels = this.Levels;
int from = levels.From;
this.Progression = contentManager.LoadAssetAsContent<UnitProgressionDefinition>(reference, "T:\\JenkinsAgent\\workspace\\SF_SF_Steam_trunk\\Unity\\SF\\Assets\\OwnedByGravity\\Game\\Logic\\Units\\UnitLevel.cs", 27);
if (!this.Progression.IsSet<UnitProgressionDefinition>())
return;
source.Clear();
foreach (UnitProgressionDefinition.UnitLevel level in this.Progression.Asset.Levels)
source.Add(level);
foreach (UnitProgressionDefinition.UnitLevel unitLevel in source.OrderBy<UnitProgressionDefinition.UnitLevel, int>((Func<UnitProgressionDefinition.UnitLevel, int>) (l => l.From)).ToList<UnitProgressionDefinition.UnitLevel>())
{
from += 1000;
unitLevel.From = from;
this.Levels.Add(unitLevel);
}
}
此方法的蓝色部分是游戏原始业务逻辑,红色部分是我添加的逻辑,意思是等游戏读去资源文件并反序列化得到1~15级的等级对象后,我再读取一遍得到新的15个等级对象,再把这15个对象的经验值分别设置为16~30级,即16级比15级所需经验值多1000,此后每一级所需经验值比前一级多1000,最后再把这15个对象添加到Levels集合中。
2023年3月2日更新:
今天重写了等级上限修改的代码,等级上限30级已经没问题了,只是目前强化技能在16级出不来,还要研究下,尽请期待!
其实我第一次实现的逻辑是对的,只是XPLevelDefinition xpLevelDefinition = unitLevel1.XPLevelDefinition这行代码写错了,
把它改为XPLevelDefinition xpLevelDefinition = unitLevel1.Level就正确了,手写真他丫容易出错,哈哈。。。
30级足够了,再高没技能了 守护召唤已经无敌 等级都是浮云 出升级能选择所有技能更好玩
本帖最后由 dlsunny 于 2023-2-24 06:36 编辑
首先支持并感谢大佬的制作MOD意向!
所有英雄以及单位的等级15级最高,召唤物无法升级.技能等级3级最高。
期待楼主大佬能做个:
1.人物等级30级左右。技能等级也相应提高
2.可重复选择升级项目(论坛里有个,希望能包含进去),多几个升级选择页面。
3.召唤物也可以升级
4.所有升级所选技能可以适用于任何单位(比如骑兵的冲锋,其他类单位也可以升级)
5.论坛有个三系同修也希望能包含进去
6.所有魔法可学...
7.房间的拓展槽位增加
:lol:lol:lol
l4062639 发表于 2023-2-23 23:38
守护召唤已经无敌 等级都是浮云 出升级能选择所有技能更好玩
我也是这样想的:lol
dlsunny 发表于 2023-2-24 06:32
首先支持并感谢大佬的制作MOD意向!
所有英雄以及单位的等级15级最高,召唤物无法升级.技能等级3级最高。
很好的建议!:lol
liyun_1981 发表于 2023-2-24 14:42
很好的建议!
感谢大佬能采纳上面的建议,之前用过您的永恒之柱和正义之怒的补丁,大大丰富了游戏玩法的diy与拓展性,每天都沉浸在您的mod里不能自拔~大佬的MOD很高产,希望您能注意休息,累了 就喝杯咖啡小歇一下。所以说,都过了一天了。。啥时候更?生产队的驴都不敢这么歇{:3_94:}{:3_94:}{:3_94:}
你可以加个QQ群130320937,我刚在群里把MOD更新到游戏新版本了。 战利品获得率是怎么修改的 你还是加个群吧,群号是130320937
虽然你现在遇到的问题我不懂,但是起码你说的三系同修啊升级可选技能啊什么的都是已经搞定的,你本可以不用花这心思……
至于等级上限我个人是采取循环升级的方式(15级以后会变成1级) wuxiangjinxing 发表于 2023-3-1 07:52
你还是加个群吧,群号是130320937
虽然你现在遇到的问题我不懂,但是起码你说的三系同修啊升级可选技能啊 ...
这位水友,加群答案是啥,俺加不上呀!:L
liyun_1981 发表于 2023-3-1 11:50
这位水友,加群答案是啥,俺加不上呀!
召唤小精灵需要的研究点数
16
级别不用搞太高没用,高了也没可学的技能了就纯加点属性意义不大,而且也不好平衡升级经验 本帖最后由 shiry345678 于 2023-3-9 08:04 编辑
同强迫症
希望可以增加领地/小屋/全火节点范围和房间扩展槽位
再来个所有地点都变成没有天数限制的永久资源点:lol
开了下控制台发现好多无法升级得到的单位技能
期待加入候选池:lol
先发制人+无限反击我记得在奇迹时代3是先攻--挨打--还击这样的?
这个游戏里好像是只有先攻、不会再多打一下
大佬是用什么方法反编译的啊 dnspy不修改就报错 请问能不能实现:
1.房间栏位增加(全+2栏位)
2.房间效果增强(有数值收益的部分*2,尤其是西卫给的水晶增幅,)
3.房间栏位效果增加(有数值收益的部分*2-*3,普通的金币、法力产出*2,像石像的捕捉概率、助手的时间减少,炼金釜的产出数量就可以增多点)
4.蒸馏艾桠效果加强(多翻几倍吧)
5.符文效果增加(有数值收益的部分*2)
页:
[1]