psyduck197 发表于 2019-8-5 20:01

Thea 2 The Shattering Build 0657(0555)升级 属性 更随机 修改 按取消(cancel) 后 再按升级重新随机属性

本帖最后由 psyduck197 于 2020-3-24 21:42 编辑


程式对 属性排序 由人物属性的数值由大到小
然后 程式取数个随机数 取最小值
再来 取属性排序第X个 属性

所以 人物属性的数 越大越容易抽中
我改了 取随机数程式 只且取一次



修改Thea 2 The Shattering Build 0332\Thea2_Data\Managed\Assembly-CSharp.dll
                Thea2.Client:                                  CharacterProgression:








private void ItemUpdate(GameObject item, object source, object data, int index)
                {
                        CharacterProgressionListItem cItem = item.GetComponent<CharacterProgressionListItem>();
                        ClientTurnSummaryData clientTurnSummaryData = source as ClientTurnSummaryData;
                        ClientGroupData @for = ClientGroupData.GetFor(clientTurnSummaryData.groupID);
                        ClientEntityCharacter character = null;
                        if (@for != null)
                        {
                              character = (@for.GetEntity(clientTurnSummaryData.relatedValue) as ClientEntityCharacter);
                        }
                        if (character == null)
                        {
                              foreach (KeyValuePair<int, ClientGroupData> keyValuePair in ClientGroupData.GetAll())
                              {
                                        if (keyValuePair.Value != null && keyValuePair.Value.GetOwnerID() == RootNetworkManager.GetMyPlayerID())
                                        {
                                                ClientEntity entity = keyValuePair.Value.GetEntity(clientTurnSummaryData.relatedValue);
                                                if (entity != null)
                                                {
                                                      character = (entity as ClientEntityCharacter);
                                                }
                                        }
                              }
                        }
                        if (character == null)
                        {
                              return;
                        }
                        int seed = World.gameSeed ^ character.Id ^ character.Level << 3;
                        MHRandom mhrandom = new MHRandom(seed);
                        string instanceName = character.SubraceName;
                        Subrace instanceFromDB = Globals.GetInstanceFromDB<Subrace>(instanceName);
                        DBDef.Tag t1 = null;
                        DBDef.Tag t2 = null;
                        DBDef.Tag t3 = null;
                        List<Multitype<Skill, FInt>> chosenSkills = null;
                        bool flag = character.Level % 2 == 1;
                        if (flag)
                        {
                              List<CountedTag> list = new List<CountedTag>(instanceFromDB.mainSubraceAttributes);
                              list.Sort((CountedTag a, CountedTag b) => -a.amount.CompareTo(b.amount));
                              int index2 = Mathf.Min(new int[]
                              {
                                        //mhrandom.GetInt(0, list.Count),
                                       // mhrandom.GetInt(0, list.Count),
                                        //mhrandom.GetInt(0, list.Count)                                          
                                       UnityEngine.Random.Range(0, list.Count)
                              });
                              t1 = list.tag;
                              list.RemoveAt(index2);
                               //index2 = Mathf.Min(mhrandom.GetInt(0, list.Count), mhrandom.GetInt(0, list.Count));
                               index2 = UnityEngine.Random.Range(0, list.Count);
                              t2 = list.tag;
                              list.RemoveAt(index2);
                              //index2 = Mathf.Min(mhrandom.GetInt(0, list.Count), mhrandom.GetInt(0, list.Count));
                               index2 = UnityEngine.Random.Range(0, list.Count);                              t3 = list.tag;
                              list.RemoveAt(index2);
                        }





                        if (!flag)
                        {
                              List<Multitype<Skill, FInt>> list2 = new List<Multitype<Skill, FInt>>();
                              if (!NetType.IsNullOrEmpty(character.LearnedSkills))
                              {
                                        foreach (NetType netType in character.LearnedSkills.value)
                                        {
                                                NetStringFInt2 netStringFInt = (NetStringFInt2)netType;
                                                Skill instanceFromDB2 = Globals.GetInstanceFromDB<Skill>(netStringFInt.name);
                                                FInt value = netStringFInt.value;
                                                if (value < 5 && netStringFInt.value2 == FInt.ZERO)
                                                {
                                                      list2.Add(new Multitype<Skill, FInt>(instanceFromDB2, value));
                                                }
                                        }
                              }
                              if (instanceFromDB.advancementSkills != null && SkillInstance.skillPacks.ContainsKey(instanceFromDB.advancementSkills))
                              {
                                        List<Skill> list3 = SkillInstance.skillPacks;
                                        using (List<Skill>.Enumerator enumerator3 = list3.GetEnumerator())
                                        {
                                                while (enumerator3.MoveNext())
                                                {
                                                      Skill v = enumerator3.Current;
                                                      if (list2.Find((Multitype<Skill, FInt> o) => o.t0 == v) == null)
                                                      {
                                                                list2.Add(new Multitype<Skill, FInt>(v, FInt.ZERO));
                                                      }
                                                }
                                        }
                              }
                              list2 = list2.FindAll((Multitype<Skill, FInt> o) => o.t1 * o.t1 < character.Level);
                              if (list2.Count > 2)
                              {
                                        chosenSkills = new List<Multitype<Skill, FInt>>();
                                        int @int = mhrandom.GetInt(0, list2.Count);
                                        Multitype<Skill, FInt> multitype = list2[@int];
                                        if (multitype.t1 == FInt.ZERO)
                                        {
                                                @int = mhrandom.GetInt(0, list2.Count);
                                        }
                                        chosenSkills.Add(list2[@int]);
                                        list2.RemoveAt(@int);
                                        int int2 = mhrandom.GetInt(0, list2.Count);
                                        multitype = list2;
                                        if (multitype.t1 == FInt.ZERO)
                                        {
                                                int2 = mhrandom.GetInt(0, list2.Count);
                                        }
                                        chosenSkills.Add(list2);
                              }
                              else
                              {
                                        chosenSkills = list2;
                              }
                        }
                        cItem.characterName.text = character.GetName();
                        cItem.previousLevel.text = character.Level.ToString();
                        cItem.newLevel.text = (character.Level + 1).ToString();
                        cItem.characterIcon.texture = character.GetIcon();
                        cItem.levelUpIndicator.SetActive(!this.IsSet(character));
                        RolloverCharacterTooltip.SetCharacter(cItem.characterInputCatch, character);
                        if (flag)
                        {
                              cItem.tagGroup.SetActive(true);
                              cItem.skillGroup.SetActive(false);
                              cItem.attribute1Icon.texture = AssetManager.GetTexture(t1);
                              cItem.attribute2Icon.texture = AssetManager.GetTexture(t2);
                              cItem.attribute3Icon.texture = AssetManager.GetTexture(t3);
                              cItem.attribute1Value.text = "+2";
                              cItem.attribute2Value.text = "+1";
                              cItem.attribute3Value.text = "+1";
                              cItem.attribute1.onValueChanged.RemoveAllListeners();
                              cItem.attribute2.onValueChanged.RemoveAllListeners();
                              cItem.attribute3.onValueChanged.RemoveAllListeners();
                              cItem.attribute1.isOn = this.IsTag(character, t1);
                              cItem.attribute2.isOn = this.IsTag(character, t2);
                              cItem.attribute3.isOn = this.IsTag(character, t3);
                              cItem.attribute1.onValueChanged.AddListener(delegate(bool b)
                              {
                                        this.SetTag(character, t1, 2);      
                                        cItem.levelUpIndicator.SetActive(false);
                              });
                              RolloverTooltip.SetTag(cItem.attribute1.gameObject, t1);
                              cItem.attribute2.onValueChanged.AddListener(delegate(bool b)
                              {
                                        this.SetTag(character, t2, 1);      
                                        cItem.levelUpIndicator.SetActive(false);
                              });
                              RolloverTooltip.SetTag(cItem.attribute2.gameObject, t2);
                              cItem.attribute3.onValueChanged.AddListener(delegate(bool b)
                              {
                                        this.SetTag(character, t3, 1);      
                                        cItem.levelUpIndicator.SetActive(false);
                              });
                              RolloverTooltip.SetTag(cItem.attribute3.gameObject, t3);
                        }
                        else
                        {
                              cItem.tagGroup.SetActive(false);
                              cItem.skillGroup.SetActive(true);
                              cItem.skill1.onValueChanged.RemoveAllListeners();
                              cItem.skill2.onValueChanged.RemoveAllListeners();
                              if (chosenSkills.Count > 0)
                              {
                                        cItem.skill1Group.SetActive(true);
                                        cItem.skill1Icon.texture = AssetManager.GetTexture(chosenSkills.t0);
                                        cItem.skill1New.SetActive(chosenSkills.t1 == FInt.ZERO);
                                        cItem.skill1.isOn = this.IsSkill(character, chosenSkills.t0.dbName);
                                        cItem.skill1.onValueChanged.AddListener(delegate(bool b)
                                        {
                                                if (b)
                                                {
                                                      this.SetSkill(character, chosenSkills.t0.dbName);
                                                      cItem.levelUpIndicator.SetActive(false);
                                                }
                                        });
                                        string dbName = chosenSkills.t0.dbName;
                                        FInt t = chosenSkills.t1;
                                        if (t == FInt.ZERO)
                                        {
                                                RolloverSkillTooltip component = cItem.skill1Icon.gameObject.GetComponent<RolloverSkillTooltip>();
                                                if (component != null)
                                                {
                                                      UnityEngine.Object.Destroy(component);
                                                }
                                        }
                                        else
                                        {
                                                RolloverSkillTooltip.SetSkill(cItem.skill1Icon.gameObject, new NetStringFInt2(dbName, t, FInt.ZERO), character);
                                        }
                                        RolloverSkillTooltip.SetSkill(cItem.skill1.gameObject, new NetStringFInt2(dbName, t + 1, FInt.ZERO), character);
                              }
                              else
                              {
                                        cItem.skill1Group.SetActive(false);
                              }
                              if (chosenSkills.Count > 1)
                              {
                                        cItem.skill2Group.SetActive(true);
                                        cItem.skill2Icon.texture = AssetManager.GetTexture(chosenSkills.t0);
                                        cItem.skill2New.SetActive(chosenSkills.t1 == FInt.ZERO);
                                        cItem.skill2.isOn = this.IsSkill(character, chosenSkills.t0.dbName);
                                        cItem.skill2.onValueChanged.AddListener(delegate(bool b)
                                        {
                                                if (b)
                                                {
                                                      this.SetSkill(character, chosenSkills.t0.dbName);
                                                      cItem.levelUpIndicator.SetActive(false);
                                                }
                                        });
                                        string dbName2 = chosenSkills.t0.dbName;
                                        FInt t4 = chosenSkills.t1;
                                        if (t4 == FInt.ZERO)
                                        {
                                                RolloverSkillTooltip component2 = cItem.skill2Icon.gameObject.GetComponent<RolloverSkillTooltip>();
                                                if (component2 != null)
                                                {
                                                      UnityEngine.Object.Destroy(component2);
                                                }
                                        }
                                        else
                                        {
                                                RolloverSkillTooltip.SetSkill(cItem.skill2Icon.gameObject, new NetStringFInt2(dbName2, t4, FInt.ZERO), character);
                                        }
                                        RolloverSkillTooltip.SetSkill(cItem.skill2.gameObject, new NetStringFInt2(dbName2, t4 + 1, FInt.ZERO), character);
                              }
                              else
                              {
                                        cItem.skill2Group.SetActive(false);
                              }
                        }
                }



2233970992 发表于 2019-8-6 19:52

感谢分享

jim.zhou 发表于 2019-8-7 04:54


感谢分享

-Yurak丶meine_L 发表于 2019-8-7 10:59

11111111111111

499743745 发表于 2019-8-7 23:35

111111111111

wangzhu99 发表于 2019-8-10 12:06

感谢分享

rjp1234562008 发表于 2019-8-15 08:10

...33333333333333

T_L_Y 发表于 2019-8-16 11:33

感谢分享

jlp119 发表于 2019-8-19 12:45

感谢分享

mephistoalone 发表于 2019-8-23 23:43

呀呀呀呀呀呀晕晕晕晕晕

heero99 发表于 2019-8-25 20:16

太棒了,,就是想要修改文件

heero99 发表于 2019-8-25 20:53

这个到底修改的什么、

psyduck197 发表于 2019-8-25 21:07

heero99 发表于 2019-8-25 20:53
这个到底修改的什么、

把升级时属性伪随机改掉

升级时要选的3个属性都不满意
按取消在按升级再随机一次

heero99 发表于 2019-8-25 22:28

psyduck197 发表于 2019-8-25 21:07
把升级时属性伪随机改掉

升级时要选的3个属性都不满意


嗯,删了后就明白这个补丁的作用了,可以反复选属性,真棒!!

demolishman 发表于 2019-9-1 10:39

{:3_106:}{:3_106:}{:3_106:}

mfd008 发表于 2019-9-20 21:38

好东西先下好

ycyscs 发表于 2019-10-25 10:39

:victory::victory:

flyaway46 发表于 2019-11-8 00:05

感谢楼主的分享

q269875981 发表于 2019-11-9 16:06

十分感谢

lmllmllmllml 发表于 2019-11-15 21:44

666666666666

qwertyuiop1s 发表于 2019-11-25 19:58

66666666666666

魔邓肯 发表于 2019-12-6 23:06

正需要这个东西

bowen1984 发表于 2019-12-16 17:35

发嘎嘎地方送给

psplayer 发表于 2019-12-29 21:01

多謝分享

MOOREDAM 发表于 2020-1-1 03:40

本帖最后由 MOOREDAM 于 2020-1-1 04:05 编辑

0622能用吗?下载的Assembly-CSharp.dll跟0622版的文件大小不一样

RealXXX 发表于 2020-1-1 16:20

zzzzzzzzzzzzzzzzzzzzzzz

李孝洋 发表于 2020-1-2 10:31

水水水水水水水水水水水水

soloist123 发表于 2020-1-13 12:23

感谢分享

金大傻 发表于 2020-1-25 13:02

哇塞,大大有点厉害

zy365212593 发表于 2020-1-26 17:52

看起来不错啊
页: [1] 2
查看完整版本: Thea 2 The Shattering Build 0657(0555)升级 属性 更随机 修改 按取消(cancel) 后 再按升级重新随机属性