smallest10 发表于 2019-8-3 11:48

修改教程,员工招聘 只出 好的特质

本帖最后由 smallest10 于 2019-8-3 11:57 编辑

之前看过 https://bbs.3dmgame.com/thread-5791169-1-1.html 帖子,该帖子是根据 Modifier 来判定是否为好特质的。但是某些 特质 可能会包含多个 Modifier,而且有些特质的数值及类型属性还是private的,因此单纯根据 Modifier 来判定还是比较麻烦甚至不太可行的。个人觉得比较靠谱的判定方法是根据其特质名称来进行过滤,代码如下(不会受游戏语言变化的影响):

修改    public class CharacterTraitsManager   添加以下方法:

      private bool IsGoodTrait(CharacterTraitDefinition ctd)
      {
            HashSet<string> hashSet = new HashSet<string>(new string[]
            {
                "Traits/Trait_Tireless_ShortName_M",
                "Traits/Trait_Healer_ShortName_M",
                "Traits/Trait_Happiness_Higher_ShortName_M",
                "Traits/Trait_Entertainer_ShortName_M",
                "Traits/Trait_Hygenic_ShortName_M",
                "Traits/Trait_Learn_Fast_ShortName_M",
                "Traits/Trait_Inspiring_ShortName_M",
                "Traits/Trait_Charming_ShortName_M",
                "Traits/Trait_PayLow_ShortName_M",
                "Traits/Trait_Motivated_ShortName_M",
                "Traits/Trait_Teach_Fast_ShortName_M"
            });
            string traitName = ctd.ShortNameLocalisedMale.Term;
            return hashSet.Contains(traitName);
      }

同时修改

      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) && this.IsGoodTrait(characterTraitDefinition))// <--- 添加了 isGoodTrait 过滤条件,保证被添加的特性为优秀特性
                {
                  list.Add(characterTraitDefinition);
                }
                else   // <--- 添加该段,保证员工一定会有优秀特性
                {
                  num++;
                }
            }
            return new CharacterTraits(list, this._config.FlavourTraits.Instance.GenerateFlavour(numTraits, sex));
      }



附上各特质的名称,以及其所包含的 Modifier 如下:

====================================
不知疲惫
Traits/Trait_Tireless_ShortName_M

---Modifiers---
TH20.CharacterModifierAtrributeAdditive

====================================
治愈者
Traits/Trait_Healer_ShortName_M

---Modifiers---
TH20.CharacterModifierInteractWithOther

====================================
乐观主义者
Traits/Trait_Happiness_Higher_ShortName_M
---Modifiers---
TH20.CharacterModifierHappiness
TH20.CharacterModifierMicroBehaviour

====================================
艺人
Traits/Trait_Entertainer_ShortName_M

---Modifiers---
TH20.CharacterModifierMicroBehaviour
TH20.CharacterModifierMicroBehaviour
TH20.CharacterModifierInteractWithOther

====================================
小洁癖
Traits/Trait_Hygenic_ShortName_M

---Modifiers---
TH20.CharacterModifierMicroBehaviour
TH20.CharacterModifierAtrributeAdditive
TH20.CharacterModifierInteractWithOther

====================================
一学就会
Traits/Trait_Learn_Fast_ShortName_M

---Modifiers---
TH20.CharacterModifierTrainingLearningMultiplier
TH20.CharacterModifierAtrributeMultiplier

====================================
激励者
Traits/Trait_Inspiring_ShortName_M

---Modifiers---
TH20.CharacterModifierMicroBehaviour
TH20.CharacterModifierInteractWithOther

====================================
魅力十足
Traits/Trait_Charming_ShortName_M
---Modifiers---
TH20.CharacterModifierInteractWithOther

====================================
我很便宜
Traits/Trait_PayLow_ShortName_M
---Modifiers---
TH20.CharacterModifierSalary

====================================
精神抖擞
Traits/Trait_Motivated_ShortName_M

---Modifiers---
TH20.CharacterModifierMovementSpeed

====================================
老师
Traits/Trait_Teach_Fast_ShortName_M

---Modifiers---
TH20.CharacterModifierTrainingTeachingMultiplier

====================================
有趣的人
Traits/Trait_Funny_ShortName_M

---Modifiers---
TH20.CharacterModifierMicroBehaviour
TH20.CharacterModifierMicroBehaviour

====================================
美颜心悸
Traits/Trait_IllnessHeartThrob_ShortName_M

---Modifiers---
TH20.CharacterModifierMicroBehaviour

====================================
园艺高手
Traits/Trait_GreenFingers_ShortName_M

---Modifiers---
TH20.CharacterModifierMicroBehaviour

296374082 发表于 2019-9-2 16:39

程序员大神啊!研究了很久都没明白,拯救了我:D

xcyttj 发表于 2019-9-2 19:24

能否出个成品啊大佬

相約在雨季 发表于 2019-9-16 23:19

dalao出个整合mod

c200410 发表于 2019-11-30 17:46

求大佬教一个修改流程,我东西都下好了就是不知道你说的goodtrait那段应该加在哪里

jokeabc 发表于 2020-1-6 23:37

本帖最后由 jokeabc 于 2020-1-7 23:31 编辑

M估计是Male男性简写,F=Female是女性。
          Dictionary<CharacterTraitDefinition, int> dictionary = this._traits.List;
            List<string> traitlist = new List<string> {"PayLow", "Happiness_Higher", "Motivated", "Charming", "Learn_Fast"
            ,"Teach_Fast", "Hygenic", "Entertainer", "GreenFingers","Tireless","Funny","Healer","Inspiring" ,"IllnessHeartThrob"};//好特性放这里,自己补充
            foreach (KeyValuePair<CharacterTraitDefinition,int> kvp in dictionary)
            {
         bool flag = !traitlist.Contains(kvp.Key.ShortNameLocalisedMale.ToString().Split(new string[] { "Trait_", "_ShortName" }, StringSplitOptions.RemoveEmptyEntries)) || !traitlist.Contains(kvp.Key.ShortNameLocalisedFemale.ToString().Split(new string[] { "Trait_", "_ShortName" }, StringSplitOptions.RemoveEmptyEntries));
                if (flag)
                  {
                        this._traits.Remove(kvp.Key);
                  }
            }
放在GenerateRandomTraits方法最前面,后面的原始方法不用再改。一步到位。
我准备把这个做出单独的UnityModManager的mod。

Asrylon 发表于 2020-5-17 08:27

添加的那些特性是添加在哪个位置?

xhtpg 发表于 2021-3-14 20:34

jokeabc 发表于 2020-1-6 23:37
M估计是Male男性简写,F=Female是女性。
            Dictionary dictionary = this._traits.List;
      ...

这个具体这么改啊?

俗人俗事 发表于 2021-8-28 21:20

真的没看懂第一段,是在那一段加入吗还是

moodfeel 发表于 2022-1-4 00:02

感谢最新版本修改成功

nanxiaojing 发表于 2022-1-4 20:37

这个文件在哪都没找到

wshjue 发表于 2022-3-14 20:02

试了两天 还是没有https://bbs.3dmgame.com/thread-5889267-1-1.html 这个好用,可是我想要的是每个刷出来的人都有治愈者属性,不知道刷新时间改哪里。

rochermit 发表于 2022-12-14 09:51

jokeabc 发表于 2020-1-6 23:37
M估计是Male男性简写,F=Female是女性。
            Dictionary dictionary = this._traits.List;
      ...

做出来了吗?
页: [1]
查看完整版本: 修改教程,员工招聘 只出 好的特质