Пример #1
0
        public static void SetSkills(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn, bool debug = false)
        {
            if (!comp.ChosenItem.copyParent.skills)
            {
                return;
            }

            string myDebugSr = newPawn.LabelShort + " - SetSkills - ";

            for (int i = 0; i < newPawn.skills.skills.Count; i++)
            {
                float decayRatio  = comp.ChosenItem.copyParent.skillDecay.RandomInRange;
                int   wantedLevel = (int)(comp.Pawn.skills.skills[i].levelInt * decayRatio);

                if (debug)
                {
                    Log.Warning(
                        myDebugSr + " browsing " + comp.Pawn.skills.skills[i].def.defName +
                        " ori: " + comp.Pawn.skills.skills[i].levelInt +
                        " new: " + newPawn.skills.skills[i].levelInt +
                        " decayRatio: " + decayRatio +
                        " wantedSkill: " + wantedLevel
                        //" rememberSkillTracker: " + comp.rememberSkillTracker.skills[i].levelInt
                        );
                }

                if (wantedLevel > newPawn.skills.skills[i].levelInt)
                {
                    if (debug)
                    {
                        Log.Warning(myDebugSr + "Calling gainskill");
                    }
                    comp.GainSkill(newPawn, wantedLevel, i, debug);
                }
                else if (wantedLevel < newPawn.skills.skills[i].levelInt)
                {
                    if (debug)
                    {
                        Log.Warning(myDebugSr + "Calling loseskill");
                    }
                    comp.LoseSkill(newPawn, wantedLevel, i, debug);
                }


                if (debug)
                {
                    Log.Warning(
                        myDebugSr + " copied skill [" + i + "]:" + comp.Pawn.skills.skills[i].def.defName +

                        " new: " + newPawn.skills.skills[i].levelInt
                        );
                }



                //newSkill.xpSinceLastLevel = originalSkill.xpSinceLastLevel;
            }
        }