// Token: 0x0600005D RID: 93 RVA: 0x00005B98 File Offset: 0x00003D98
        public static void DoMSTranscendence(Pawn p, ThingDef t)
        {
            List <SkillDef> skills     = MSSkillChanger.GetSkillList(MSSkillChanger.GetTranscendenceQuality(t));
            List <SkillDef> candidates = new List <SkillDef>();

            if (skills.Count > 0)
            {
                for (int i = 0; i < skills.Count; i++)
                {
                    if (p != null)
                    {
                        Pawn_SkillTracker skills2 = p.skills;
                        int?num;
                        if (skills2 == null)
                        {
                            num = null;
                        }
                        else
                        {
                            SkillRecord skill2 = skills2.GetSkill(skills[i]);
                            num = ((skill2 != null) ? new int?(skill2.Level) : null);
                        }
                        int?num2 = num;
                        int num3 = 20;
                        if ((num2.GetValueOrDefault() < num3 & num2 != null) && p != null)
                        {
                            Pawn_SkillTracker skills3 = p.skills;
                            num2 = ((skills3 != null) ? new int?(skills3.GetSkill(skills[i]).Level) : null);
                            num3 = 0;
                            if (num2.GetValueOrDefault() > num3 & num2 != null)
                            {
                                candidates.Add(skills[i]);
                            }
                        }
                    }
                }
            }
            if (candidates.Count > 0)
            {
                SkillDef skill  = candidates.RandomElement();
                int      before = p.skills.GetSkill(skill).Level;
                float    Rnd    = Rand.Range(1f, 3f);
                p.skills.Learn(skill, 32000f * Rnd, true);
                int after = p.skills.GetSkill(skill).Level;
                Messages.Message("MSExotic.TSkillBoost".Translate(p.LabelShort, skill.label.CapitalizeFirst(), before.ToString(), after.ToString()), p, MessageTypeDefOf.PositiveEvent, true);
            }
        }
示例#2
0
        // Token: 0x06000072 RID: 114 RVA: 0x00006354 File Offset: 0x00004554
        public static void CheckSkills(Pawn p, ThingDef t, out string reason, out bool passed)
        {
            reason = "";
            passed = true;
            List <SkillDef> chkskills = MSSkillChanger.GetSkillList(MSSkillChanger.GetTranscendenceQuality(t));

            if (chkskills.Count > 0)
            {
                int numCants = 0;
                for (int i = 0; i < chkskills.Count; i++)
                {
                    if (p != null)
                    {
                        Pawn_SkillTracker skills = p.skills;
                        int?num;
                        if (skills == null)
                        {
                            num = null;
                        }
                        else
                        {
                            SkillRecord skill = skills.GetSkill(chkskills[i]);
                            num = ((skill != null) ? new int?(skill.Level) : null);
                        }
                        int?num2 = num;
                        int num3 = 20;
                        if (num2.GetValueOrDefault() >= num3 & num2 != null)
                        {
                            numCants++;
                        }
                    }
                }
                if (numCants == chkskills.Count)
                {
                    reason = "MSExotic.WontLearnUsing".Translate(p.LabelShort, t.label.CapitalizeFirst());
                    passed = false;
                    return;
                }
            }
            else
            {
                reason = "MSExotic.NoTSkillList".Translate(p.LabelShort, t.defName);
                passed = false;
            }
        }
 // Token: 0x0600005E RID: 94 RVA: 0x00005D44 File Offset: 0x00003F44
 public static void ChkMSTranscendence(Pawn p, ThingDef t, out string Reason, out bool Passed)
 {
     Reason = null;
     if (!p.RaceProps.Humanlike)
     {
         Passed = false;
         Reason = "MSExotic.NotHumanLike".Translate(p?.LabelShort.CapitalizeFirst());
         return;
     }
     MSSkillChanger.CheckSkills(p, t, out string skillsReason, out bool skillsPassed);
     if (!skillsPassed)
     {
         Passed = false;
         Reason = skillsReason;
         return;
     }
     Passed = true;
 }
        // Token: 0x0600005D RID: 93 RVA: 0x00005B98 File Offset: 0x00003D98
        public static void DoMSTranscendence(Pawn p, ThingDef t)
        {
            var skills     = MSSkillChanger.GetSkillList(MSSkillChanger.GetTranscendenceQuality(t));
            var candidates = new List <SkillDef>();

            if (skills.Count > 0)
            {
                foreach (var skillDef in skills)
                {
                    if (p == null)
                    {
                        continue;
                    }

                    var skills2 = p.skills;
                    int?num;
                    if (skills2 == null)
                    {
                        num = null;
                    }
                    else
                    {
                        var skill2 = skills2.GetSkill(skillDef);
                        num = skill2 != null ? new int?(skill2.Level) : null;
                    }

                    var num2 = num;
                    var num3 = 20;
                    if (!((num2.GetValueOrDefault() < num3) & (num2 != null)))
                    {
                        continue;
                    }

                    var skills3 = p.skills;
                    num2 = skills3 != null ? new int?(skills3.GetSkill(skillDef).Level) : null;
                    num3 = 0;
                    if ((num2.GetValueOrDefault() > num3) & (num2 != null))
                    {
                        candidates.Add(skillDef);
                    }
                }
            }

            if (candidates.Count <= 0)
            {
                return;
            }

            var skill = candidates.RandomElement();

            if (p == null)
            {
                return;
            }

            var before = p.skills.GetSkill(skill).Level;
            var Rnd    = Rand.Range(1f, 3f);

            p.skills.Learn(skill, 32000f * Rnd, true);
            var after = p.skills.GetSkill(skill).Level;

            Messages.Message(
                "MSExotic.TSkillBoost".Translate(p.LabelShort, skill.label.CapitalizeFirst(), before.ToString(),
                                                 after.ToString()), p, MessageTypeDefOf.PositiveEvent);
        }