修改教程,员工招聘 只出 好的特质
本帖最后由 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
程序员大神啊!研究了很久都没明白,拯救了我:D 能否出个成品啊大佬 dalao出个整合mod 求大佬教一个修改流程,我东西都下好了就是不知道你说的goodtrait那段应该加在哪里 本帖最后由 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。
添加的那些特性是添加在哪个位置? jokeabc 发表于 2020-1-6 23:37
M估计是Male男性简写,F=Female是女性。
Dictionary dictionary = this._traits.List;
...
这个具体这么改啊? 真的没看懂第一段,是在那一段加入吗还是 感谢最新版本修改成功
这个文件在哪都没找到 试了两天 还是没有https://bbs.3dmgame.com/thread-5889267-1-1.html 这个好用,可是我想要的是每个刷出来的人都有治愈者属性,不知道刷新时间改哪里。 jokeabc 发表于 2020-1-6 23:37
M估计是Male男性简写,F=Female是女性。
Dictionary dictionary = this._traits.List;
...
做出来了吗?
页:
[1]