예제 #1
0
        private static void AddNumber(UiGirlSlot __instance)
        {
            GirlDefinition girlDefinition = __instance.girlDefinition;
            PlayerFileGirl girlFile       = Game.Persistence.playerFile.GetPlayerFileGirl(girlDefinition);

            __instance.nameLabel.richText = true;
            //__instance.nameLabel.text = "<size=75%><color=#FFFFFF>" + uniques[(int)girlFile.girlDefinition.shoesType] + "<line-height=75%>\n</line-height>" + shoes[(int)girlFile.girlDefinition.shoesType] + "</color></size>\n\n<voffset=3.25em>    " + girlDefinition.GetNickName().ToUpper() + "</voffset>";
            __instance.nameLabel.text = "<size=230%>" + girlFile.relationshipPoints + "</size>\n<voffset=3em>" + girlDefinition.GetNickName().ToUpper() + "</voffset>";
            //__instance.nameLabel.text = "    " + girlDefinition.GetNickName().ToUpper();
        }
예제 #2
0
        /// <summary>
        /// Patch to have changeOutfit accept -69 to select a nude outfit
        /// </summary>
        /// <param name="__instance">UiDoll instance</param>
        /// <param name="outfitIndex">index of selected outfit</param>
        /// <returns></returns>
        public static bool N69AddNude(UiDoll __instance, int outfitIndex)
        {
            var privateFeilds = typeof(UiDoll).GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            var girlDefinition = (privateFeilds[2].GetValue(__instance) as GirlDefinition);

            if (girlDefinition == null)
            {
                return(false);
            }

            var loadPartFunc = typeof(UiDoll).GetMethod("LoadPart", BindingFlags.NonPublic | BindingFlags.Instance);

            if (outfitIndex == -69)
            {
                GirlOutfitSubDefinition girlOutfitSubDefinition = new GirlOutfitSubDefinition();
                girlOutfitSubDefinition.hideNipples     = false;
                girlOutfitSubDefinition.partIndexOutfit = -1;
                girlOutfitSubDefinition.outfitName      = "Nude";

                loadPartFunc.Invoke(__instance, new object[] { __instance.partOutfit, girlOutfitSubDefinition.partIndexOutfit, -1f });
                __instance.partNipples.Show();
                return(false);
            }
            PlayerFileGirl playerFileGirl = Game.Persistence.playerFile.GetPlayerFileGirl(girlDefinition);

            outfitIndex = ((outfitIndex == -1) ? playerFileGirl.outfitIndex : outfitIndex);

            outfitIndex = Mathf.Clamp(outfitIndex, 0, girlDefinition.outfits.Count - 1);

            privateFeilds[6].SetValue(__instance, outfitIndex);

            if (outfitIndex >= 0 && outfitIndex < girlDefinition.outfits.Count)
            {
                GirlOutfitSubDefinition girlOutfitSubDefinition = girlDefinition.outfits[outfitIndex];
                loadPartFunc.Invoke(__instance, new object[] { __instance.partOutfit, girlOutfitSubDefinition.partIndexOutfit, -1f });
                if (girlOutfitSubDefinition.hideNipples)
                {
                    __instance.partNipples.Hide();
                    return(false);
                }
                __instance.partNipples.Show();
            }
            return(false);
        }
예제 #3
0
        public static void CheckPercentage()
        {
            PlayerFile _this = Game.Persistence.playerFile;
            float      num   = (float)Mathf.Clamp(_this.storyProgress - 2, 0, 12) * 0.5f;

            Logger.LogDebug(Mathf.FloorToInt(num));
            for (int i = 0; i < 4; i++)
            {
                num += (float)_this.GetAffectionLevel((PuzzleAffectionType)i, true) * 0.625f;
            }
            Logger.LogDebug(Mathf.FloorToInt(num));
            for (int j = 0; j < _this.girls.Count; j++)
            {
                PlayerFileGirl playerFileGirl = _this.girls[j];
                if (!playerFileGirl.girlDefinition.specialCharacter && playerFileGirl.playerMet)
                {
                    num += (float)playerFileGirl.learnedBaggage.Count * 0.25f;
                    num += (float)playerFileGirl.receivedUniques.Count * 0.125f;
                    num += (float)playerFileGirl.receivedShoes.Count * 0.125f;
                    for (int k = 0; k < playerFileGirl.unlockedHairstyles.Count; k++)
                    {
                        if (k != playerFileGirl.girlDefinition.defaultHairstyleIndex && k != 6)
                        {
                            num += 0.046875f;
                        }
                    }
                    for (int l = 0; l < playerFileGirl.unlockedOutfits.Count; l++)
                    {
                        if (l != playerFileGirl.girlDefinition.defaultOutfitIndex && l != 6)
                        {
                            num += 0.046875f;
                        }
                    }
                }
                Logger.LogDebug(playerFileGirl.girlDefinition.girlName + ": " + playerFileGirl.learnedBaggage.Count + "," +
                                playerFileGirl.receivedUniques.Count + "," + playerFileGirl.receivedShoes.Count + "," +
                                playerFileGirl.unlockedHairstyles.Count + "," + playerFileGirl.unlockedOutfits.Count);
                Logger.LogDebug(Mathf.FloorToInt(num));
            }
            //Logger.LogDebug(Mathf.FloorToInt(num));
            for (int m = 0; m < _this.girlPairs.Count; m++)
            {
                PlayerFileGirlPair playerFileGirlPair = _this.girlPairs[m];
                if (!playerFileGirlPair.girlPairDefinition.specialPair)
                {
                    GirlPairRelationshipType relationshipType = playerFileGirlPair.relationshipType;
                    if (relationshipType >= GirlPairRelationshipType.COMPATIBLE)
                    {
                        num += 0.25f;
                    }
                    if (relationshipType >= GirlPairRelationshipType.ATTRACTED)
                    {
                        num += 1f;
                    }
                    if (relationshipType >= GirlPairRelationshipType.LOVERS)
                    {
                        num += 1f;
                    }
                }
            }
            Logger.LogDebug(Mathf.FloorToInt(num));
        }
예제 #4
0
        public static void GetGirlData()
        {
            //couldn't find a quick way to get these strings so i got them manually
            Dictionary <string, string> convertPairQuestions = new Dictionary <string, string>();

            convertPairQuestions.Add("Movie Genre", "movie genre");
            convertPairQuestions.Add("Phone App", "app on your phone");
            convertPairQuestions.Add("Theme Park Ride", "theme park ride");
            convertPairQuestions.Add("Holiday", "holiday");
            convertPairQuestions.Add("Outdoor Activity", "outdoor activity");
            convertPairQuestions.Add("Sunday Morning", "Sunday morning");
            convertPairQuestions.Add("Place to Shop", "place to go shopping");
            convertPairQuestions.Add("Trait in Partner", "trait to have in a partner");
            convertPairQuestions.Add("Own Body Part", "part about your own body");
            convertPairQuestions.Add("P**n Category", "category of p**n");
            convertPairQuestions.Add("Ice Cream Flavor", "flavor of ice cream");
            convertPairQuestions.Add("Friday Night", "Friday night");
            convertPairQuestions.Add("Weather", "kind of weather");
            convertPairQuestions.Add("Pet", "type of pet");
            convertPairQuestions.Add("School Subject", "subject in high school");
            convertPairQuestions.Add("Drink", "thing to drink");
            convertPairQuestions.Add("Music Genre", "music genre");
            convertPairQuestions.Add("Online Activity", "thing to do online");
            convertPairQuestions.Add("Type of Exercise", "way to exercise");
            convertPairQuestions.Add("Sex Position", "sex position");

            Dictionary <int, string> girlIDToHotkey = new Dictionary <int, string>();

            for (int i = 1; i <= 9; i++)
            {
                girlIDToHotkey.Add(i, i.ToString());
            }
            girlIDToHotkey.Add(10, "0");
            girlIDToHotkey.Add(11, "-");
            girlIDToHotkey.Add(12, "=");

            Logger.LogDebug(Game.Persistence.playerFile.girls.Count + " girls");

            List <GirlDefinition> allBySpecial = Game.Data.Girls.GetAllBySpecial(false);

            List <GirlPairDefinition> allBySpecial2 = Game.Data.GirlPairs.GetAllBySpecial(false);

            foreach (GirlDefinition g in allBySpecial)
            {
                Logger.LogDebug(g.girlName + " " + g.id);
            }
            List <GirlDefinition> allSpecialGirls = Game.Data.Girls.GetAllBySpecial(true);

            foreach (GirlDefinition g in allSpecialGirls)
            {
                Logger.LogDebug(g.girlName + " " + g.id);
            }

            foreach (PlayerFileGirl pfg in Game.Persistence.playerFile.girls)
            {
                Logger.LogDebug(pfg.girlDefinition.girlName);
            }

            string data = "";

            //output unordered girl info list
            foreach (GirlDefinition g in allBySpecial)
            {
                data += g.girlName + " (" + girlIDToHotkey[g.id] + "): Loves " + g.favoriteAffectionType + ", Hates " + g.leastFavoriteAffectionType + "\n";
                data += g.uniqueType + " (" + g.uniqueAdj + "), " + g.shoesType + " (" + g.shoesAdj + ")\n";
                data += GetQuestionQuizlet(g) + "\n";
            }
            data += "\n";

            allBySpecial.Sort((x, y) => x.girlName.CompareTo(y.girlName));

            //output alphabetical girl info list
            foreach (GirlDefinition g in allBySpecial)
            {
                data += g.girlName + " (" + girlIDToHotkey[g.id] + "): Loves " + g.favoriteAffectionType + ", Hates " + g.leastFavoriteAffectionType + "\n";
                data += g.uniqueType + " (" + g.uniqueAdj + "), " + g.shoesType + " (" + g.shoesAdj + ")\n";
                data += GetQuestionQuizlet(g) + "\n";
            }

            //output unordered pair info list
            foreach (GirlPairDefinition g in allBySpecial2)
            {
                GirlDefinition g1 = g.girlDefinitionOne; GirlDefinition g2 = g.girlDefinitionTwo;
                data += g1.girlName + " + " + g2.girlName + "; " + g2.girlName + " + " + g1.girlName +
                        " (" + g1.favoriteAffectionType + ", " + g2.favoriteAffectionType + ")\n";
                if (g.introductionPair)
                {
                    data += "Introduction Pair: YES, ";
                }
                data += "Meeting Location: " + g.meetingLocationDefinition.locationName + ", Sex Day Phase: " + g.sexDaytime + "\n";
                data += "Favorite Questions: ";
                List <GirlPairFavQuestionSubDefinition> qs = g.favQuestions;

                foreach (GirlPairFavQuestionSubDefinition q in qs)
                {
                    if (convertPairQuestions.ContainsKey(q.questionDefinition.questionName))
                    {
                        q.questionDefinition.questionName = convertPairQuestions[q.questionDefinition.questionName];
                    }
                }
                qs.Sort((x, y) => x.questionDefinition.questionName.CompareTo(y.questionDefinition.questionName));
                foreach (GirlPairFavQuestionSubDefinition q in qs)
                {
                    data += q.questionDefinition.questionName + ", ";
                }
                data  = data.Substring(0, data.Length - 2);
                data += "\n\n";
            }
            data += "\n";
            foreach (GirlPairDefinition g in allBySpecial2)
            {
                //swap pairs so earlier name is always girldefinitionone
                if (g.girlDefinitionOne.girlName.CompareTo(g.girlDefinitionTwo.girlName) > 0)
                {
                    GirlDefinition temp = g.girlDefinitionOne;
                    g.girlDefinitionOne = g.girlDefinitionTwo;
                    g.girlDefinitionTwo = temp;
                }
            }

            allBySpecial2.Sort((x, y) => {
                int result = x.girlDefinitionOne.girlName.CompareTo(y.girlDefinitionOne.girlName);
                if (result == 0)
                {
                    result = x.girlDefinitionTwo.girlName.CompareTo(y.girlDefinitionTwo.girlName);
                }
                return(result);
            }
                               );
            //allBySpecial2.Sort((x, y) => { if (x.girlDefinitionOne.girlName == y.girlDefinitionOne.girlName) return x.girlDefinitionTwo.girlName.CompareTo(y.girlDefinitionTwo.girlName); else return 0; });

            foreach (GirlPairDefinition g in allBySpecial2)
            {
                GirlDefinition g1 = g.girlDefinitionOne; GirlDefinition g2 = g.girlDefinitionTwo;
                data += g1.girlName + " + " + g2.girlName + "; " + g2.girlName + " + " + g1.girlName +
                        " (" + g1.favoriteAffectionType + ", " + g2.favoriteAffectionType + ")\n";
                if (g.introductionPair)
                {
                    data += "Introduction Pair: YES, ";
                }
                data += "Meeting Location: " + g.meetingLocationDefinition.locationName + ", Sex Day Phase: " + g.sexDaytime + "\n";
                data += "Favorite Questions: ";
                List <GirlPairFavQuestionSubDefinition> qs = g.favQuestions;

                foreach (GirlPairFavQuestionSubDefinition q in qs)
                {
                    if (convertPairQuestions.ContainsKey(q.questionDefinition.questionName))
                    {
                        q.questionDefinition.questionName = convertPairQuestions[q.questionDefinition.questionName];
                    }
                }
                qs.Sort((x, y) => x.questionDefinition.questionName.CompareTo(y.questionDefinition.questionName));
                foreach (GirlPairFavQuestionSubDefinition q in qs)
                {
                    data += q.questionDefinition.questionName + ", ";
                }
                data  = data.Substring(0, data.Length - 2);
                data += "\n\n";
            }
            Logger.LogDebug(data);

            string huge = "";

            for (int a = 0; a < allBySpecial.Count; a++)
            {
                for (int b = 0; b < allBySpecial[a].herQuestions.Count; b++)
                {
                    for (int c = 0; c < allBySpecial[a].herQuestions[b].answers.Count; c++)
                    {
                        huge += a + "," + b + "," + c + ": " + PurifyDialogText(allBySpecial[a].herQuestions[b].answers[c].answerText) + " (" + allBySpecial[a].herQuestions[b].answers[c].responseIndex + ")\n";
                        if (allBySpecial[a].herQuestions[b].answers[c].hasAlt)
                        {
                            huge += a + "," + b + "," + c + " ALT: " + PurifyDialogText(allBySpecial[a].herQuestions[b].answers[c].answerTextAlt) + " (" + allBySpecial[a].herQuestions[b].answers[c].responseIndex + ")\n";
                        }
                    }
                }
            }


            //Logger.LogDebug(huge);

            float num = (float)Mathf.Clamp(Game.Persistence.playerFile.storyProgress - 2, 0, 12) * 0.5f;

            Logger.LogDebug(num);
            for (int i = 0; i < 4; i++)
            {
                num += (float)Game.Persistence.playerFile.GetAffectionLevel((PuzzleAffectionType)i, true) * 0.625f;
                Logger.LogDebug(num);
            }
            Logger.LogDebug(num);

            for (int j = 0; j < Game.Persistence.playerFile.girls.Count; j++)
            {
                PlayerFileGirl playerFileGirl = Game.Persistence.playerFile.girls[j];
                if (!playerFileGirl.girlDefinition.specialCharacter && playerFileGirl.playerMet)
                {
                    num += (float)playerFileGirl.learnedBaggage.Count * 0.25f;
                    num += (float)playerFileGirl.receivedUniques.Count * 0.125f;
                    num += (float)playerFileGirl.receivedShoes.Count * 0.125f;
                    for (int k = 0; k < playerFileGirl.unlockedHairstyles.Count; k++)
                    {
                        if (k != playerFileGirl.girlDefinition.defaultHairstyleIndex && k != 6)
                        {
                            num += 0.046875f;
                        }
                    }
                    for (int l = 0; l < playerFileGirl.unlockedOutfits.Count; l++)
                    {
                        if (l != playerFileGirl.girlDefinition.defaultOutfitIndex && l != 6)
                        {
                            num += 0.046875f;
                        }
                    }
                }
                Logger.LogDebug(num);
            }
            for (int m = 0; m < Game.Persistence.playerFile.girlPairs.Count; m++)
            {
                PlayerFileGirlPair playerFileGirlPair = Game.Persistence.playerFile.girlPairs[m];
                if (!playerFileGirlPair.girlPairDefinition.specialPair)
                {
                    GirlPairRelationshipType relationshipType = playerFileGirlPair.relationshipType;
                    if (relationshipType >= GirlPairRelationshipType.COMPATIBLE)
                    {
                        num += 0.25f;
                    }
                    if (relationshipType >= GirlPairRelationshipType.ATTRACTED)
                    {
                        num += 1f;
                    }
                    if (relationshipType >= GirlPairRelationshipType.LOVERS)
                    {
                        num += 1f;
                    }
                }
            }
            Logger.LogDebug(num);
        }
예제 #5
0
 public static bool ChangeTooltipText(UiCellphoneAppProfile __instance, UiTooltipSimple ____tooltip, PlayerFileGirl ____playerFileGirl)
 {
     //enable the Girl Profile head to choose pairs, but only when cheating / using all pairs mod
     if (HP2SR.cheatsEnabled || HP2SR.AllPairsEnabled.Value)
     {
         string text = ____playerFileGirl.girlDefinition.girlName + "'s Profile";
         text = text + "\nAge: " + ____playerFileGirl.girlDefinition.girlAge.ToString();
         text = text + "\nClick to visit any\nof this girl's pairs!";
         ____tooltip.Populate(text, 0, 1f, 1920f);
         ____tooltip.Show(Vector2.up * 50f, false);
         return(false);
     }
     return(true);
 }