News:

Please request registration email again and then check your "Spam" folder

Former www.henthighschool.com

[Mod][1.10.3.5] Bathroom Expansion 1.1

Started by neme, Sep 03, 2022, 06:44 AM

Previous topic - Next topic

nemeTopic starter

New Major update version 1.0 works for the latest game version 1.10.3.4 as of 20/10/22.

The Ultimate Depravity

Bathroom Expansion 1.1

      Features:
  • The scat fetish representation.
  • Expanded watersports and pee play
  • Plenty of normal sexual encounters between students inside the M and F bathrooms
  • Gloryhole content in the male bathroom students will begin using these once school lust gets high enough, the more prolific the higher the stat
  • New female bathroom design and Scat club
  • Pee events for Annette

Scat and Corruption

1.0 changes the way the scat club and scat events are triggered before it worked the same as the SPE club required a student with a lust stat of 50 or higher.

In normal games, this would cause SPE and Scat clubs to trigger simultaneously and usually using the same student.

Now though the trigger for the scat club has been switched to a corruption stat of 15, which may seem low, corruption is one of the hardest stats to increase in HHS that number can be changed if it feels too easy or too hard.

However now not only does the scat club require corruption it produces it in its members, after every event the student(s) involved gets a decent amount of corruption, and the rest of the club gets a small amount for being part of the club.

The idea is that the scat club is too corruption like SPE is too lust.

Fetishes in the bathroom expansion

The main two fetishes in play in the mod are the already mentioned scat fetish (poop) and Watersports (pee)

The scat fetish can be chosen as a fetish on the character creation screen which actually shows hidden options in some scat-involving events as well as changing the text.

The hidden options tend to lead to more extreme outcomes which is why I locked them behind the fetish so that those who don't actually mind scat but aren't into it don't accidentally see something they don't want to see.

Scat events and the club can be disabled at the start and throughout the game by blacklisting the scat fetish, if you decide to blacklist scat mid-game make sure to close the scat club if you have it open already.

Pee is a bit more simple there are already other watersport events in the game generally watersports events in this mod follow the same premise as the already in-game watersport events.

Watersport unlike scat does not require or increase corruption unless the act is particularly depraved.


Events

The mod contains events all around Smallville in the streets, the park and the beaches!

Of course, the main focus is the school mainly the woman's bathroom which is where the scat club takes place.

So far this mod contains 88 events spread out around different areas of the game.


Installing

Returning users!!
If you have used this mod before make sure you delete the mod folder before installing this one! some events have been removed, remodeled, or renamed so installing 1.0 over the previous versions would create duplicate events and likely cause issues.

I recommend a new save you can continue a previous save if you want to but even if you deleted the old folder the save will still contain deleted events and have duplicate events trigger sometimes plus the usual exception errors likely will occur.


New users
You don't have to worry just download like normal and follow Barteke's installing mods guide.

Bugs and errors
With how many changes I made in this version of the mod I likely have missed some errors in my tests.

If you notice any spelling mistakes, logical errors or get any exceptions post here or on the discord so I can get about fixing them.


Download
https://mega.nz/folder/HlhRjZwT#rrIEl7lfegGRZDJH9m9EfQ

Shilo

#1
I assume these have been written across a longer period of time, at different levels of skill when using the editor? I just glanced over the events without actually playing, but here's some of the stuff I noticed (without specifying the exact locations where I found it, since that would take too long).

- Some events use very old ways of filtering for event candidates, checking conditions, etc. while others use the normalized functions from GenSexHandling. The effects of events are all over the place this way and don't record the interaction between the player and the student (and while GenSexHandling probably has no specific handling for these kinds of fetishes, you could still have it count as "voyeurism" interaction).
- You sometimes pull the event candidates from the list of all students (not even just your own students) instead of just the students in the location.
- One of the peeing events also requires the event candidate to have high lust and low/medium intelligence. Not sure how easy it is to actually achieve that combination, since I'd assume that both stats slowly rise from low to high throughout the playthrough. So there may only be a narrow window of opportunity for the event to trigger.
- (Honestly though, I am not even sure what kind of stats would be proper to check for with these kind of events. Do Lust and Arousal really play a role, or should it also be about Inhibition and Corruption?)
- Some events also use the "Event Is Scheduled" condition while others use the Fast Schedule Check flag. Some actual use both, which seems like an oversight.
- Not all events that assign detention actually use "Set Detention" on the person.
- Quite a few events only use "Voyeurism" in Add Arousal by Fetish, even though there is a new fetish in the mod that obviously fits the bill much better.
- It stands to reason that the club members slowly get more and more into the respective fetishes of the club as they perform these actions, so it might be a good idea to add to the values with the "Person Fetish" operation in the respective club events.
- Perhaps a check whether the person has that fetish could be used as additional criteria when selecting event candidates, at least for the events where they deliberately perform the action for the joy of it, rather than just not being able to keep things in.
- One of the events had a Random Chance in the Try-phase with a chance value of 100%, so only one of those branches can trigger in the first place.
- "Is School Time" already takes weekday and holiday into account, so it's not necessary to check those with extra operations.
- For the club events, you can actually define a dedicated folder in "Events\ClubEvents\" for your club chain and enter it in the club level definition of your club. The events from that folder will then only be checked for execution when you are at the club room during the defined club hours - which means you wouldn't need to check for the club time in the actual events and there is less overhead for checking events in the Bathroom location when its not club time.
- One of the events had a "Show Random Image" op with 6 images and individual outputs, but only the first output was linked up to the rest of the event. This means that in 5 out of 6 times, the event will trigger but not actually show anything happening.
- In the Annette event where she can have someone over, you assign the object variable "Annette" from a List Filter Person operation, but there doesn't seem to be anything that actually ensures that the person in that variable will be Annette.
- At least one event did not have the image content properly tagged. (Probably doesn't matter in the long run, since most of the events have a content filter in the event itself)
- There are still some orphaned .meta files for images of Anette that are not actually in your mod.
- You included an additional image folder with unused images in the download. If you want to provide more resources for other creators, it might be better to split that out into a separate download, so people who just want the mod contents can have a smaller download.
- There are quite a few grammar issues here and there, where a word seems left out or a sentence just continues on into the next one.
- There are also quite a few places where the start of the sentence is lower-cased. But you already said that you've been typing it quickly.

nemeTopic starter

Yeah, you would be right about some of the earlier stuff I just kind of winged it lol kind of learned as I went for most of it the earlier events I made I would like to go through and clean up a bit.

That is a testing phase thing that I hadn't switched back will look and switch them back to location!

Oh, the low intelligence one is defo an error I'll have a look.

Yeah I was unsure what stats would go into it also so I just settled for usually lust arousal and inhibition as a base.

Ah, the fast check flag is the same as the event scheduled condition. That's good to know thank you.

Set detentions I will need to look in I no doubt said I add it later than forgot lol.

The 100% chance one I knew I missed! I put 100% just to get it to trigger for me without messing around too much I was meant to change it back but forgot (probably a side effect of doing this at like 3 AM lol)

I would also like to add fetish checks too for the more deliberate acts this will be something I add in as well as increasing fetishes for those who participate in the acts.

The voyeurism fetish was a placeholder that I will change thanks for mentioning it otherwise I would have completely forgotten.

Nice thanks for letting me know I used holiday, weekday and school time as I was unsure if school time took it all into account that's good to know for when I go through and clean up.

Thanks for letting me know about the club events dedicated folder that help streamline the try phase for club events.

Will look for that 6-image event the 6th one is not meant to be blank.

Yeah that Annette one was likely because I used a different event as a preset for the Annette one I will have to change that to insure Annette is the one chosen.

The unused images are something I could have removed from the download that was just a collection of images I may have used in the future I probably will remove them from future versions.

The orphaned meta's need to be cleaned up I will do it along with some other fixes.

Yes the downside to being fast is my fingers just skip words now and then will do my best to retroactively fix these.


nemeTopic starter

0.2:
Added gloryhole content to the men's bathroom mostly straight content but did also add a crossdresser/Futa event and a single gay event the gay event is content filtered.

nuetron

#4
Getting these errors ever since I added your mod.  Seems to be referencing paths from your dev that I do not have?

-----------------------------
[General Info]

Application: HHS+
Version:     v1.10.2.2, Release
Region:      English (United Kingdom)
Date: 11/09/2022
Time: 12:27

User Explanation:

User said ""
-----------------------------

[Exception Info 1]

Top-level Exception
Type:        System.ApplicationException
Message:     Location\School\Principal Office\ParkerLateToClass [EXEC] caused an exception at operation SeqAct_PassTime (ID: 60).
Source:      hhs+.exe

Inner Exception 1
Type:        System.ArgumentNullException
Message:     Value cannot be null.
Parameter name: key
Source:      mscorlib
Stack Trace: at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at hhs_.Person.GetStat(String statName, Boolean baseValueOnly) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Person\Person.cs:line 1924
   at hhs_.StatChange.AdjustStat(Person Per) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Person\StatChange.cs:line 37
   at hhs_.ClubLevel.ApplyClubMeetingAdjustments(Person Per) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\School\Club.cs:line 823
   at hhs_.Clubs.ClubMeeting() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\School\Club.cs:line 428
   at hhs_.Time.CheckClubMeeting() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 693
   at hhs_.Time.<TimerefreshFromEvent>d__67.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 660
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at hhs_.Time.<PassTime>d__90.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 1139
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at hhs_.SeqAct_PassTime.<ActivatedAsync>d__18.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Editor\_EventModules\_EventActions\_EventActions_Time\SeqAct_PassTime.cs:line 99
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at hhs_.EventRunner.<ExecuteAsync>d__108.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Editor\_EventModules\EventRunner.cs:line 1220

-----------------------------
[General Info]

Application: HHS+
Version:     v1.10.2.2, Release
Region:      English (United Kingdom)
Date: 11/09/2022
Time: 12:53

User Explanation:

User said ""
-----------------------------

[Exception Info 1]

Top-level Exception
Type:        System.ApplicationException
Message:     Error while moving to location 'Your Home'
Source:      hhs+.exe

Inner Exception 1
Type:        System.ArgumentNullException
Message:     Value cannot be null.
Parameter name: key
Source:      mscorlib
Stack Trace: at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at hhs_.Person.GetStat(String statName, Boolean baseValueOnly) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Person\Person.cs:line 1924
   at hhs_.StatChange.AdjustStat(Person Per) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Person\StatChange.cs:line 37
   at hhs_.ClubLevel.ApplyClubMeetingAdjustments(Person Per) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\School\Club.cs:line 823
   at hhs_.Clubs.ClubMeeting() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\School\Club.cs:line 428
   at hhs_.Time.CheckClubMeeting() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 693
   at hhs_.Time.<Timerefresh>d__66.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 593
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at hhs_._GameWindow.<MoveToLocation>d__14.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_View\GameWindow\_GameWindow.xaml.cs:line 117
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at hhs_._GameWindow.<LocationChange_Click>d__65.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_View\GameWindow\_GameWindow.xaml.cs:line 1605

ixtheinterloper

i know that this isn't going to go anywhere productive, but do you think you can find a replacement picture for gloryholeschool2/.2? the character depicted is from a yuri light novel series and is, consequentially, a lesbian (and canonically a minor)

nemeTopic starter

Quote from: nuetron on Sep 11, 2022, 12:35 PMGetting these errors ever since I added your mod.  Seems to be referencing paths from your dev that I do not have?

-----------------------------
[General Info]

Application: HHS+
Version:    v1.10.2.2, Release
Region:      English (United Kingdom)
Date: 11/09/2022
Time: 12:27

User Explanation:

User said ""
-----------------------------

[Exception Info 1]

Top-level Exception
Type:        System.ApplicationException
Message:    Location\School\Principal Office\ParkerLateToClass [EXEC] caused an exception at operation SeqAct_PassTime (ID: 60).
Source:      hhs+.exe

Inner Exception 1
Type:        System.ArgumentNullException
Message:    Value cannot be null.
Parameter name: key
Source:      mscorlib
Stack Trace: at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
  at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
  at hhs_.Person.GetStat(String statName, Boolean baseValueOnly) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Person\Person.cs:line 1924
  at hhs_.StatChange.AdjustStat(Person Per) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Person\StatChange.cs:line 37
  at hhs_.ClubLevel.ApplyClubMeetingAdjustments(Person Per) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\School\Club.cs:line 823
  at hhs_.Clubs.ClubMeeting() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\School\Club.cs:line 428
  at hhs_.Time.CheckClubMeeting() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 693
  at hhs_.Time.<TimerefreshFromEvent>d__67.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 660
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at hhs_.Time.<PassTime>d__90.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 1139
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at hhs_.SeqAct_PassTime.<ActivatedAsync>d__18.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Editor\_EventModules\_EventActions\_EventActions_Time\SeqAct_PassTime.cs:line 99
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
  at hhs_.EventRunner.<ExecuteAsync>d__108.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Editor\_EventModules\EventRunner.cs:line 1220

-----------------------------
[General Info]

Application: HHS+
Version:    v1.10.2.2, Release
Region:      English (United Kingdom)
Date: 11/09/2022
Time: 12:53

User Explanation:

User said ""
-----------------------------

[Exception Info 1]

Top-level Exception
Type:        System.ApplicationException
Message:    Error while moving to location 'Your Home'
Source:      hhs+.exe

Inner Exception 1
Type:        System.ArgumentNullException
Message:    Value cannot be null.
Parameter name: key
Source:      mscorlib
Stack Trace: at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
  at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
  at hhs_.Person.GetStat(String statName, Boolean baseValueOnly) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Person\Person.cs:line 1924
  at hhs_.StatChange.AdjustStat(Person Per) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Person\StatChange.cs:line 37
  at hhs_.ClubLevel.ApplyClubMeetingAdjustments(Person Per) in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\School\Club.cs:line 823
  at hhs_.Clubs.ClubMeeting() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\School\Club.cs:line 428
  at hhs_.Time.CheckClubMeeting() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 693
  at hhs_.Time.<Timerefresh>d__66.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_Modules\Gameplay\Time.cs:line 593
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at hhs_._GameWindow.<MoveToLocation>d__14.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_View\GameWindow\_GameWindow.xaml.cs:line 117
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at hhs_._GameWindow.<LocationChange_Click>d__65.MoveNext() in D:\Torrents\DONE\dun\hhs-source\hhs+\_View\GameWindow\_GameWindow.xaml.cs:line 1605

Hmm that is odd as the mod doesn't change parker late to class events i did also have a look in the event to see if anything links to the woman's bathroom which may have been effected by the mod which it didn't seem too.

Also do you have any other mods active which maybe be conflicting, also is the save a new one or a preexisting save.

with that it would be helpful if you could upload your save so i can take a deeper look into what maybe causing it.

nemeTopic starter

Quote from: ixtheinterloper on Sep 12, 2022, 04:19 AMi know that this isn't going to go anywhere productive, but do you think you can find a replacement picture for gloryholeschool2/.2? the character depicted is from a yuri light novel series and is, consequentially, a lesbian (and canonically a minor)

Sure i can have a look at replacing them probably be awhile but i can add it to a todo list

nuetron

Here is my save.  https://file.io/U3rl8s6ksDbZ

Click on the principle's office to trigger Nina's event which will error before completion.  The only mods I have installed other than the bathroom mod is the following.

Bathroom Expansion
Home Relax
Wait1Minute

Thanks

nemeTopic starter

Quote from: nuetron on Sep 12, 2022, 11:10 AMHere is my save.  https://file.io/U3rl8s6ksDbZ

Click on the principle's office to trigger Nina's event which will error before completion.  The only mods I have installed other than the bathroom mod is the following.

Bathroom Expansion
Home Relax
Wait1Minute

Thanks

It says the file was deleted is the link correct?

nuetron


nemeTopic starter

Quote from: nuetron on Sep 13, 2022, 03:52 AMNot sure what happened, try this one.  https://anonfiles.com/gf30P572y4/save_sav

https://mega.nz/file/vkQUCYRb#DNnwiuuTI0CF2knvkVyqdpykjntDFAjeSQFT_L9oIHE

Okay so i looked into the parker event itself basically the error says that the thing which causes time to pass had no value attached to it but after looking it did have a value so i disabled the pass time entirely which allowed the event to finish properly

i made a new save after the event was completed so you can get past that part of the quest you can check the journal to see that the late to class event is finished and you have to wait and see for the next stage of the quest

i am presuming that the next stage of the event will work fine as im guessing that was the first time you got that error im unsure if it has something to do with the mod all i could guess is it may be to do with the 1 minute wait mod but im not to sure about that let me know how the rest of the parker event goes if it happens again i will ask Barteke in the discord as he may know better


nuetron

It not only errors at parker's event.  It also errors exactly at 18:00 when a PTA event is scheduled, also when the swim club weekly tournament happens as well.

IEI Esports X

Am I doing something wrong?You cannot view this attachment.
An exception occurred during startup.
There is an error in XML document (179, 32).
Instance validation error: 'Scat' is not a valid value for Fetish.

Shilo

Quote from: IEI Esports X on Sep 14, 2022, 11:55 AMAm I doing something wrong?You cannot view this attachment.
An exception occurred during startup.
There is an error in XML document (179, 32).
Instance validation error: 'Scat' is not a valid value for Fetish.

Sounds like your game version is too old. You are likely using one where fetishes were still hardcoded and not dynamic, as required by this mod.