Exemplo n.º 1
0
        public static bool FindAllHerPairs(UiCellphoneAppPairs __instance)
        {
            if (currentGirl != null)
            {
                int num = 0;

                List <GirlPairDefinition> stockPairs = Game.Data.GirlPairs.GetAllBySpecial(false);
                for (int i = 0; i < stockPairs.Count; i++)
                {
                    if (stockPairs[i].HasGirlDef(currentGirl))
                    {
                        __instance.pairSlots[num].rectTransform.anchoredPosition = new Vector2((float)(num % 4) * 256f, (float)Mathf.FloorToInt((float)num / 4f) * -90f);
                        __instance.pairSlots[num].Populate(stockPairs[i], null);
                        __instance.pairSlots[num].profileLinked         = true;
                        __instance.pairSlots[num].PairSlotPressedEvent += BasePatches.OnPairSlotPressed;
                        __instance.pairSlots[num].button.Enable();
                        num++;
                    }
                }
                for (int i = num; i < __instance.pairSlots.Length; i++)
                {
                    __instance.pairSlots[i].Populate(null, null);
                }
                __instance.pairSlotsContainer.anchoredPosition += new Vector2((float)Mathf.Min(num - 1, 3) * -128f, (float)Mathf.Max(Mathf.CeilToInt((float)num / 4f) - 1, 0) * 45f);

                currentGirl = null;
                return(false);
            }
            return(true);
        }
Exemplo n.º 2
0
        public static string GetQuestionQuizlet(GirlDefinition g)
        {
            string questions = "";

            List <DialogTriggerDefinition> lines        = Game.Data.DialogTriggers.GetAll();
            List <DialogLine> herQuestions              = lines[51].dialogLineSets[g.id].dialogLines;
            List <GirlQuestionSubDefinition> herAnswers = g.herQuestions;

            List <string> QandAs = new List <string>();

            for (int a = 0; a < herQuestions.Count; a++)
            {
                string tempq = PurifyDialogText(herQuestions[a].dialogText) + "\n    ";
                foreach (GirlQuestionAnswerSubDefinition gqa in g.herQuestions[a].answers)
                {
                    if (gqa.responseIndex == -1)
                    {
                        tempq += gqa.answerText;
                    }
                }
                QandAs.Add(tempq);
            }

            QandAs.Sort((x, y) => x.CompareTo(y));
            foreach (string s in QandAs)
            {
                questions += s + "\n";
            }

            return(questions);
        }
Exemplo n.º 3
0
 public static void SpecialCharactersSmallHead(UiAppHeadSlot __instance, GirlDefinition ____girlDefinition)
 {
     //what a stupid way to resize Moxie and Jewn
     if (____girlDefinition.id >= 14)
     {
         __instance.itemIcon.sprite = Game.Data.Girls.Get(1).GetHead(false);
         __instance.itemIcon.SetNativeSize();
         __instance.itemIcon.sprite = ____girlDefinition.GetHead(false);
     }
 }
Exemplo n.º 4
0
        public static void OnGirlHeadPressed(ButtonBehavior b)
        {
            tooltip.Hide();
            Game.Manager.Audio.Play(AudioCategory.SOUND, click, Game.Session.gameCanvas.cellphone.pauseBehavior.pauseDefinition);

            currentGirl = Game.Data.Girls.Get(Game.Session.gameCanvas.cellphone.GetCellFlag("profile_girl_id"));
            UiCellphoneAppPairs p = (Game.Session.gameCanvas.cellphone.appPrefabs.FirstOrDefault((UiCellphoneApp a) => a is UiCellphoneAppPairs) as UiCellphoneAppPairs);

            Game.Session.gameCanvas.cellphone.LoadApp(Game.Session.gameCanvas.cellphone.appPrefabs.IndexOf(p));
        }
Exemplo n.º 5
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();
        }
Exemplo n.º 6
0
 public static void ShuffleSpecialBaggage(ref bool arriveWithGirls)
 {
     if (Game.Session.Location.currentLocation.id <= 8)
     {
         GirlDefinition[] gs = new GirlDefinition[] { Game.Session.Location.currentGirlLeft, Game.Session.Location.currentGirlRight };
         foreach (GirlDefinition g in gs)
         {
             if (g.id >= 13)
             {
                 g.baggageItemDefs.Clear();
                 g.baggageItemDefs.Add(Game.Data.Ailments.Get(UnityEngine.Random.Range(1, 37)).itemDefinition);
                 g.baggageItemDefs.Add(Game.Data.Ailments.Get(UnityEngine.Random.Range(1, 37)).itemDefinition);
                 g.baggageItemDefs.Add(Game.Data.Ailments.Get(UnityEngine.Random.Range(1, 37)).itemDefinition);
             }
         }
     }
 }
Exemplo n.º 7
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);
        }
Exemplo n.º 8
0
        public static void CensorLewdOutfits(UiDoll __instance, ref int outfitIndex, ref int ____currentOutfitIndex, ref GirlDefinition ____girlDefinition, ref int __state)
        {
            if (____girlDefinition == null)
            {
                return;
            }

            //set state to the intended outfit index, and change outfitIndex if lewd
            __state = outfitIndex;
            if (outfitIndex == -1)
            {
                __state = Game.Persistence.playerFile.GetPlayerFileGirl(____girlDefinition).outfitIndex;
            }
            if (____girlDefinition.girlName == "Kyu" && outfitIndex == -1)
            {
                __state     = HP2SR.KyuOutfit;
                outfitIndex = HP2SR.KyuOutfit;
            }
            if (!Game.Persistence.playerData.uncensored && HP2SR.CensorshipEnabled.Value)
            {
                foreach (int i in lewdOutfits[____girlDefinition.id - 1])
                {
                    if (i == __state)
                    {
                        outfitIndex = ____girlDefinition.defaultOutfitIndex;
                        break;
                    }
                }
            }
            //the ChangeOutfit function should now change the outfit to the girl's default outfit, and then the postfix allows lewd outfits to still be unlocked
        }
Exemplo n.º 9
0
 public static void ForGarrett(UiDoll __instance, ref int hairstyleIndex, ref int ____currentHairstyleIndex, ref GirlDefinition ____girlDefinition, ref int __state)
 {
     if (____girlDefinition == null)
     {
         return;
     }
     if (____girlDefinition.girlName == "Kyu" && hairstyleIndex == -1)
     {
         hairstyleIndex = HP2SR.KyuHairstyle;
     }
 }
Exemplo n.º 10
0
 public static void Nippy(UiDoll __instance, ref int outfitIndex, ref int ____currentOutfitIndex, ref GirlDefinition ____girlDefinition, ref int __state)
 {
     if (____girlDefinition == null)
     {
         return;
     }
     //Datamining.Logger.LogDebug("outfit change to " + outfitIndex + "; changed to " + __instance.currentOutfitIndex);
     //FileLog.Log("outfit changed to " + outfitIndex);
     if (HP2SR.nudePatch)
     {
         __instance.partNipples.Show();
         __instance.partOutfit.Hide();
     }
     else
     {
         __instance.partOutfit.Show();
     }
     //set outfit index to whatever it was supposed to be, for outfit unlocking purposes
     if (__state != -1)
     {
         __state = Mathf.Clamp(__state, 0, ____girlDefinition.outfits.Count - 1);
         ____currentOutfitIndex = __state;
     }
 }