Exemple #1
0
        public static bool Prefix(SkillDef def, object __instance, ref Verse.Pawn ___pawn)
        {
            var  IsSkillDisabled = AccessTools.Method(PatchPrepareCarefullyBase.cp, "IsSkillDisabled");
            bool f = (bool)IsSkillDisabled.Invoke(__instance, new[] { def });

            if (f)
            {
                //if (__instance.IsSkillDisabled(def))
                return(false);
            }

            var cur = AccessTools.Field(PatchPrepareCarefullyBase.cp, "currentPassions");
            Dictionary <SkillDef, Passion> currentPassions = cur.GetValue(__instance) as Dictionary <SkillDef, Passion>;
            int passion = (int)currentPassions[def];

            //int passion = (int)__instance.currentPassions[def];
            passion = PatchPrepareCarefullyBase.IncreasePassion(passion, ___pawn, def);
            ___pawn.skills.GetSkill(def).passion = (Passion)passion;

            var CopySkillsAndPassionsToPawn = AccessTools.Method(PatchPrepareCarefullyBase.cp, "CopySkillsAndPassionsToPawn");

            CopySkillsAndPassionsToPawn.Invoke(__instance, null);
            // __instance.CopySkillsAndPassionsToPawn();
            return(false);
        }
 public static bool Prefix(SkillRecord record, UpdateSkillPassionHandler ___SkillPassionUpdated)
 {
     Pawn pawn = AccessTools.Field(typeof(SkillRecord), "pawn").GetValue(record) as Pawn;
     if (pawn == null)
     {
         Log.Error("Failed to retrieve pawn in Patch_DecreasePassion_Prefix1, using original function");
         return true;
     }
     int passion = (int)record.passion;
     passion = PatchPrepareCarefullyBase.IncreasePassion(passion, pawn, record.def);
     ___SkillPassionUpdated(record.def, (Passion)passion);
     return false;
 }