skylifeye1988 发表于 2018-9-11 17:20

【技能倍率,技能槽位,拥有5个以上技能,以及初始员工0技能和0特性或多特性的修改方法】

本帖最后由 skylifeye1988 于 2018-9-11 17:20 编辑

1.【技能倍率】

namespace TH20
{
    // Token: 0x02000309 RID: 777
    [UsedImplicitly(ImplicitUseKindFlags.Assign | ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature, ImplicitUseTargetFlags.Members
    public abstract class QualificationBaseModifier : CharacterModifier
    {
      // Token: 0x06000F5B RID: 3931 RVA: 0x00073EFC File Offset: 0x000720FC
      public float Calculate(Room room)
      {
            if (room == null || this._validRooms == null || this._validRooms.Length == 0)
            {
                return this._modifier;
            }
            foreach (SharedInstance<RoomDefinition> sharedInstance in this._validRooms)
            {
                if (sharedInstance.NotNull<RoomDefinition>() && sharedInstance.Instance == room.Definition)
                {
                  return this._modifier;
                }
            }
            return 0f;

这里改技能属性的倍率。

把其中的_modifier;改为_modifier * 10;,即技能附加属性翻十倍。或者把里面其他内容全部暴力删除,改成


    public abstract class QualificationBaseModifier : CharacterModifier
    {
      // Token: 0x06000F5B RID: 3931
      public float Calculate(Room room)
      {
            return this._modifier * 5f;
      }


这样大概就是去除了特定房间才生效的限制。好比一个五级的全科医生,不管是在全科诊室,还是其他诊室,员工属性里面显示的诊断和治疗数值都保持不变,至于属性是不是能够全科通用,没验证过,所以不确定。



2.【技能槽位和拥有5个以上技能】


TH20


Staff 类里

      // Token: 0x17000178 RID: 376
      // (get) Token: 0x06000F76 RID: 3958 RVA: 0x0000D856 File Offset: 0x0000BA56
      public int MaxQualifications
      {
            get
            {
                return this.Rank + 1;
            }
      }

这里就是技能槽位修改。

【Rank + 1;】改为【Rank + 5;】甚至【Rank * 5;】,就等于招聘的初始员工直接就拥有五个(翻五倍)可培训技能空槽。

楼主对编程语言一窍不通,所以也不确定是这里的修改会直接关系到员工最终的可拥有技能数量,还是其他方面。

我自己改的时候,还改了另外的地方:

TH20

StaffRank 类

其中public const int MaxLevels = 5;,这句不知道是指的技能的最大等级,还是人物的最大等级,总之我改成了10以上。

另外,在JobApplicant 类里面,也有跟Staff类里相同的那段内容。

      // Token: 0x17000163 RID: 355
      // (get) Token: 0x06000DE4 RID: 3556 RVA: 0x0000C444 File Offset: 0x0000A644
      public int MaxQualifications
      {
            get
            {
                return this.Rank + 1;
            }
      }

3.【初始员工和招聘员工0技能】


TH20


JobApplicant 类

      // Token: 0x06000DE7 RID: 3559
      private void AssignRandomQualifications(WeightedList<QualificationDefinition> qualifications, Metagame metagame, Level level, int chanceOfEmptyTrainingSlot)
      {
            int num = this.MaxQualifications - 1;
            if (RandomUtils.GlobalRandomInstance.Next(0, 100) > chanceOfEmptyTrainingSlot)
            {
                num++;
            }
            this.Qualifications = new List<QualificationSlot>(num);
            for (int i = 0; i < num; i++)
            {
                WeightedList<QualificationDefinition> weightedList = new WeightedList<QualificationDefinition>();
                foreach (KeyValuePair<QualificationDefinition, int> keyValuePair in qualifications.List)
                {
                  if (keyValuePair.Key.ValidFor(this.Definition._type, this.MaxQualifications, this.Qualifications, metagame, level))
                  {
                        weightedList.Add(keyValuePair.Key, keyValuePair.Value);
                  }
                }
                QualificationDefinition qualificationDefinition = weightedList.Choose(null, RandomUtils.GlobalRandomInstance);
                if (qualificationDefinition != null)
                {
                  this.Qualifications.Add(new QualificationSlot(qualificationDefinition, true));
                }
            }
      }

这是员工随机生成分配技能的地方。

把以上内容里的(0,100)改成(100,0)后,初始员工是白板了,但我玩的时候,游戏出错,坏过档,不确定是否跟改这里有关。

然后换了另外的改法,只把方法中的num++ 改成num = 0,以及i < num改为i > num 就是正常全部员工0技能。


4.【0特性及多特性】

TH20


CharacterTraitsManager


      public CharacterTraits GenerateRandomTraits(StaffDefinition.Type staffType, Character.Sex sex)
      {
            List<CharacterTraitDefinition> list = new List<CharacterTraitDefinition>();
            int num = RandomUtils.GlobalRandomInstance.Next(this._config.GameplayTraitsMin, this._config.GameplayTraitsMax + 1);
            int numTraits = RandomUtils.GlobalRandomInstance.Next(this._config.FlavourTraitsMin, this._config.FlavourTraitsMax + 1);
            for (int i = 0; i < num; i++)
            {
                CharacterTraitDefinition characterTraitDefinition = this._traits.Choose(null, RandomUtils.GlobalRandomInstance);
                if (characterTraitDefinition != null && characterTraitDefinition.CanAdd(list) && characterTraitDefinition.IsValidFor(staffType))
                {
                  list.Add(characterTraitDefinition);
                }
            }
            return new CharacterTraits(list, this._config.FlavourTraits.Instance.GenerateFlavour(numTraits, sex));
      }

这里控制员工随机特性的数量。

其中 GameplayTraitsMin 是特性最小数,GameplayTraitsMax + 1是最大特性数量.添加修改数值就好。

取消员工特性,我的笨办法就是把+的数值删除,甚至-1,然后其中的 i < num 也改为 i > num


由于不会修改控制特性出现的好坏,我个人玩的时候,直接暴力取消了全部特性。





lilisisi930 发表于 2018-9-11 17:24

用记事本打开修改么?

3O5 发表于 2018-9-11 17:27

支持支持!!

skylifeye1988 发表于 2018-9-11 17:27

lilisisi930 发表于 2018-9-11 17:24
用记事本打开修改么?

用dnSpy修改。

touch 发表于 2018-9-11 17:38

支持,支持,技能倍率和白板对我这养成控很有用。。

skylifeye1988 发表于 2018-9-11 17:44

touch 发表于 2018-9-11 17:38
支持,支持,技能倍率和白板对我这养成控很有用。。

养成控的话,可以改成连招聘的员工都只有一级的,没有一级以上的来应聘。

风卷残翼 发表于 2018-9-11 17:52

感谢大神无私分享!

强烈无语 发表于 2018-9-11 17:54

有技术,肯分享!
感谢大神无私分享!

touch 发表于 2018-9-11 17:56

skylifeye1988 发表于 2018-9-11 17:44
养成控的话,可以改成连招聘的员工都只有一级的,没有一级以上的来应聘。 ...

我试了下技能倍数修改,但没有生效啊。

public abstract class QualificationBaseModifier : CharacterModifier
    {
      // Token: 0x06000F5B RID: 3931
      public float Calculate(Room room)
      {
            if (room == null || this._validRooms == null || this._validRooms.Length == 0)
            {
                return this._modifier * 10f;
            }
            foreach (SharedInstance<RoomDefinition> sharedInstance in this._validRooms)
            {
                if (sharedInstance.NotNull<RoomDefinition>() && sharedInstance.Instance == room.Definition)
                {
                  return this._modifier;
                }
            }
            return 0f;

skylifeye1988 发表于 2018-9-11 17:57

touch 发表于 2018-9-11 17:56
我试了下技能倍数修改,但没有生效啊。

public abstract class QualificationBaseModifier : CharacterM ...

技能本身描述的数值不改变,你点开员工的数据面板看看加成有没有变化。

touch 发表于 2018-9-11 18:05

skylifeye1988 发表于 2018-9-11 17:57
技能本身描述的数值不改变,你点开员工的数据面板看看加成有没有变化。
...

刚才看的是全科医生进全科才会影响,在外面溜达的时候没有显示。。。

这种修改得找个平衡。我改成10倍,5级全科能达到970%。不过挺有意思的。。谢谢!!!

touch 发表于 2018-9-11 18:13

skylifeye1988 发表于 2018-9-11 17:44
养成控的话,可以改成连招聘的员工都只有一级的,没有一级以上的来应聘。 ...

能不能把一级员工的修改也放出一下??谢谢!!!

我准备用一级零技能员工,加上3倍技能,重开档玩。。。

skylifeye1988 发表于 2018-9-11 18:18

touch 发表于 2018-9-11 18:13
能不能把一级员工的修改也放出一下??谢谢!!!

我准备用一级零技能员工,加上3倍技能,重开档玩。。 ...

namespace TH20
{
    // Token: 0x020002E1 RID: 737
    public class JobApplicantPool
    {
      // Token: 0x06000DF8 RID: 3576 RVA: 0x0006DA00 File Offset: 0x0006BC00
      public JobApplicantPool(JobApplicantPool.Config config, JobApplicantManager jobApplicantManager, StaffDefinition staffDefinition, PrestigeTracker prestigeTracker, ReputationTracker reputationTracker, CharacterNameGenerator nameGenerator)
      {
            this._config = config;
            this._jobApplicantManager = jobApplicantManager;
            this._staffDefinition = staffDefinition;
            this._nameGenerator = nameGenerator;
            this._prestigeTracker = prestigeTracker;
            this._reputationTracker = reputationTracker;
            this.Applicants = new List<JobApplicant>();
            this.MarketingCampaigns = new List<MarketingCampaignComponent>();
            this._rankWeights = new WeightedList<int>();
            for (int i = 0; i < this._config.RankWeights.Length; i++)
            {
                this._rankWeights.Add(i, this._config.RankWeights[i]);
            }
      }



把i < this那里,改成 >
重开医院试试看行不行。

touch 发表于 2018-9-11 18:28

skylifeye1988 发表于 2018-9-11 18:18
namespace TH20
{
    // Token: 0x020002E1 RID: 737


谢谢!!!!!!!!马上试试,刚好今天复制ROOM也更新了,又有了中文语音,太完美了。。

yhypaolo 发表于 2018-9-11 18:49

怎么修改员工的特性呢

skylifeye1988 发表于 2018-9-11 18:56

yhypaolo 发表于 2018-9-11 18:49
怎么修改员工的特性呢

我不会改特性的属性和控制好坏出现的几率。

斷橋╬→葬愛 发表于 2018-9-11 19:13

这个 必须顶贴

飞翔的云 发表于 2018-9-11 22:41

本帖最后由 飞翔的云 于 2018-9-12 00:09 编辑

感谢楼主分享,希望多多分享修改技术贴

可能有些人不知道修改地方,特分享下


强烈无语 发表于 2018-9-11 22:42

还是不会改,在哪里改看不到

恩麒 发表于 2018-9-11 22:56

66666666666

erickham07 发表于 2018-9-11 22:58

好复杂啊..

飞翔的云 发表于 2018-9-12 00:13

强烈无语 发表于 2018-9-11 22:42
还是不会改,在哪里改看不到

特意为你截图了,看19楼

莫问夕殇 发表于 2018-9-12 13:45

飞翔的云 发表于 2018-9-11 22:41
感谢楼主分享,希望多多分享修改技术贴

可能有些人不知道修改地方,特分享下


修改技能倍率那个地方,有两个this._modifier,是只改第一个this._modifier还是两个一起改?

skylifeye1988 发表于 2018-9-12 13:52

莫问夕殇 发表于 2018-9-12 13:45
修改技能倍率那个地方,有两个this._modifier,是只改第一个this._modifier还是两个一起改?
...

我不懂编程语言,所以不知道两个都改有什么区别,但好像只改一个也有效果。

namespace TH20
{
    // Token: 0x02000309 RID: 777
    [UsedImplicitly(ImplicitUseKindFlags.Assign | ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature, ImplicitUseTargetFlags.Members
    public abstract class QualificationBaseModifier : CharacterModifier
    {
      // Token: 0x06000F5B RID: 3931
      public float Calculate(Room room)
      {
            return this._modifier * 5f;
      }


我自己玩的时候,是取消了房间限制,改成上面那样,直接翻升了五倍。这样员工的治疗和诊断能力好像全部科室通用了。

紫岚轩 发表于 2018-9-12 13:54

飞翔的云 发表于 2018-9-12 00:13
特意为你截图了,看19楼

技能翻倍那里标记的位置不对吧

莫问夕殇 发表于 2018-9-12 14:02

skylifeye1988 发表于 2018-9-12 13:52
我不懂编程语言,所以不知道两个都改有什么区别,但好像只改一个也有效果。

namespace TH20


我也不懂,所以2个都改了,进游戏也没出错,正在测试效果

飞翔的云 发表于 2018-9-12 14:59

本帖最后由 飞翔的云 于 2018-9-12 15:02 编辑

skylifeye1988 发表于 2018-9-12 13:52
我不懂编程语言,所以不知道两个都改有什么区别,但好像只改一个也有效果。

namespace TH20

好像修改后回到房间,人物数据会变少?在外面看的诊断率是200多,回到房间就变成90了,

飞翔的云 发表于 2018-9-12 15:00

紫岚轩 发表于 2018-9-12 13:54
技能翻倍那里标记的位置不对吧

我也不太清楚,只是看楼主的代码是这个地方,

touch 发表于 2018-9-12 15:17

莫问夕殇 发表于 2018-9-12 13:45
修改技能倍率那个地方,有两个this._modifier,是只改第一个this._modifier还是两个一起改?
...

这两个,一个是控制医生与护士技能的,一个是控制助理和清理工还有研究这些技能的。

具体哪个是,我也忘了,可以自己测试一下。。

touch 发表于 2018-9-12 15:19

飞翔的云 发表于 2018-9-12 14:59
好像修改后回到房间,人物数据会变少?在外面看的诊断率是200多,回到房间就变成90了, ...

如果不改修理工和助理技能加成,就不会出现这样的状况。。

我猜想,它应该也控制了活力和幸福对诊断、治疗技能的加成。。
页: [1] 2
查看完整版本: 【技能倍率,技能槽位,拥有5个以上技能,以及初始员工0技能和0特性或多特性的修改方法】