xcvbnjhgv

New Member
Jul 12, 2017
7
0
At this stage, just post your girl mod/config with the content, we will fix it.
The mod I am using is " GDIGGERS888 ," and most of the functions in this mode are not working properly.

working
## The file should be named 'girlConfig.ini' and dropped inside the relevant girl folder.

[identity]

first_name = Alex
last_name = Tanner
## hair : brown_hair, black_hair, blonde_hair, colored_hair, white_hair, auburn_hair
## eyes : brown_eyes, blue_eyes, hazel_eyes, green_eyes, gray_eyes
## boobs : small_boobs, average_boobs, big_boobs
## physical : hairy
## others : see game/DB.rpy => DB_traits for pre-set trait
## custom : you can specify any other traits, won't have 'active' effects but can work as a tag for photoshoots/events/etc...
traits = brown_hair,brown_eyes,average_boobs,famous

[info]

source = PornStar
modder = Gdiggers888

[vars]

## sensitiveArea can be : Boobs Ass Pussy or Legs
sensitiveArea = Boobs


not working
## The file should be named 'girlConfig.ini' and dropped inside the relevant girl folder.

[identity]

first_name = Amia
last_name = Moretti
## hair : brown_hair, black_hair, blonde_hair, colored_hair, white_hair, auburn_hair
## eyes : brown_eyes, blue_eyes, hazel_eyes, green_eyes, gray_eyes
## boobs : small_boobs, average_boobs, big_boobs
## physical : hairy
## others : see game/DB.rpy => DB_traits for pre-set trait
## custom : you can specify any other traits, won't have 'active' effects but can work as a tag for photoshoots/events/etc...
traits = brown_hair,brown_eyes,average_boobs,famous


[info]

source = PornStar
modder = Gdiggers888

[vars]

## sensitiveArea can be : Boobs Ass Pussy or Legs
sensitiveArea = Boobs
 

sls8181

Newbie
Sep 21, 2020
59
29
The mod I am using is " GDIGGERS888 ," and most of the functions in this mode are not working properly.

working
## The file should be named 'girlConfig.ini' and dropped inside the relevant girl folder.

[identity]

first_name = Alex
last_name = Tanner
## hair : brown_hair, black_hair, blonde_hair, colored_hair, white_hair, auburn_hair
## eyes : brown_eyes, blue_eyes, hazel_eyes, green_eyes, gray_eyes
## boobs : small_boobs, average_boobs, big_boobs
## physical : hairy
## others : see game/DB.rpy => DB_traits for pre-set trait
## custom : you can specify any other traits, won't have 'active' effects but can work as a tag for photoshoots/events/etc...
traits = brown_hair,brown_eyes,average_boobs,famous

[info]

source = PornStar
modder = Gdiggers888

[vars]

## sensitiveArea can be : Boobs Ass Pussy or Legs
sensitiveArea = Boobs


not working
## The file should be named 'girlConfig.ini' and dropped inside the relevant girl folder.

[identity]

first_name = Amia
last_name = Moretti
## hair : brown_hair, black_hair, blonde_hair, colored_hair, white_hair, auburn_hair
## eyes : brown_eyes, blue_eyes, hazel_eyes, green_eyes, gray_eyes
## boobs : small_boobs, average_boobs, big_boobs
## physical : hairy
## others : see game/DB.rpy => DB_traits for pre-set trait
## custom : you can specify any other traits, won't have 'active' effects but can work as a tag for photoshoots/events/etc...
traits = brown_hair,brown_eyes,average_boobs,famous


[info]

source = PornStar
modder = Gdiggers888

[vars]

## sensitiveArea can be : Boobs Ass Pussy or Legs
sensitiveArea = Boobs
Unsure of what you are doing, you are just copy/pasting the content of a file, not the file itself and the rest of the content.
Was expecting something like the stuff attached.
 
  • Like
Reactions: example890

BolHeX

Member
Nov 30, 2019
383
609
Thanks, would you mind sharing the code/modifications ?
It still needs some work; also because of other changes I've made its unlikely to work with the vanilla game. Once i have it working as intended Ill share it.

I already have a few changes planned on the Event object structure to allow for more features i.e calculating chance of event happening based on girl stats. Rather than the static "percentage_chance_to_happen" value as seen below.

Very basic example of an event during the exam; doesn't make use of any of the more advanced features like multiple stages or branching dialog with seperate impacts for each.
You don't have permission to view the spoiler content. Log in or register now.
 

sls8181

Newbie
Sep 21, 2020
59
29
It still needs some work; also because of other changes I've made its unlikely to work with the vanilla game. Once i have it working as intended Ill share it.

I already have a few changes planned on the Event object structure to allow for more features i.e calculating chance of event happening based on girl stats. Rather than the static "percentage_chance_to_happen" value as seen below.

Very basic example of an event during the exam; doesn't make use of any of the more advanced features like multiple stages or branching dialog with seperate impacts for each.
You don't have permission to view the spoiler content. Log in or register now.
Ok. Take your time, I was just curious on how you did it since it would avoid re-coding it myself. Still thinking about the gameplay... it will probably take a long time (~1 month or 2 months) until I get something that I will find satisfactory.
 

xcvbnjhgv

New Member
Jul 12, 2017
7
0
Unsure of what you are doing, you are just copy/pasting the content of a file, not the file itself and the rest of the content.
Was expecting something like the stuff attached.
Ok because of size i can't attach all file so just config only.
 

BolHeX

Member
Nov 30, 2019
383
609
Ok. Take your time, I was just curious on how you did it since it would avoid re-coding it myself. Still thinking about the gameplay... it will probably take a long time (~1 month or 2 months) until I get something that I will find satisfactory.
I know the pain i am trying to come up with a good way to scale "impacts" and apply them to attributes. Math is definitely not my strong suite so its basically been a fruitless couple hours.
 

sls8181

Newbie
Sep 21, 2020
59
29
Ok because of size i can't attach all file so just config only.
The main issue is probably because you don’t respect the naming convention and the directory layout.
As files are too big, the easiest way would be to just give the filenames surrounding the configuration files and trying to copy/paste the actual error messages or the describe as closely as possible what is not working.

For example, it will be something like:
Code:
girls/GDIGGERS888_Alex_Tanner
girls/GDIGGERS888_Alex_Tanner/bodyparts
girls/GDIGGERS888_Alex_Tanner/bodyparts/ass.webp
girls/GDIGGERS888_Alex_Tanner/bodyparts/ass1.webp
girls/GDIGGERS888_Alex_Tanner/bodyparts/boobs.webp
girls/GDIGGERS888_Alex_Tanner/bodyparts/boobs1.webp
girls/GDIGGERS888_Alex_Tanner/bodyparts/pussy.webp
girls/GDIGGERS888_Alex_Tanner/bodyparts/pussy1.webp
girls/GDIGGERS888_Alex_Tanner/face.webp
girls/GDIGGERS888_Alex_Tanner/face1.webp
girls/GDIGGERS888_Alex_Tanner/girlConfig.ini
girls/GDIGGERS888_Alex_Tanner/portrait.webp
girls/GDIGGERS888_Alex_Tanner/tportrait.webp
girls/GDIGGERS888_Alex_Tanner/vids
girls/GDIGGERS888_Alex_Tanner/vids/blowjob_notop.webm
girls/GDIGGERS888_Alex_Tanner/vids/facial_notop.webm
girls/GDIGGERS888_Alex_Tanner/vids/facial_notop1.webm
girls/GDIGGERS888_Alex_Tanner/vids/facial_notop2.webm
girls/GDIGGERS888_Alex_Tanner/vids/fuckass.webm
girls/GDIGGERS888_Alex_Tanner/vids/fuckass1.webm
girls/GDIGGERS888_Alex_Tanner/vids/fuckpussy.webm
girls/GDIGGERS888_Alex_Tanner/vids/fuckpussy1.webm
girls/GDIGGERS888_Alex_Tanner/vids/fuckpussy2.webm
girls/GDIGGERS888_Alex_Tanner/vids/fuckpussy3.webm
girls/GDIGGERS888_Alex_Tanner/vids/gropeass_nobot_nopanty.webm
girls/GDIGGERS888_Alex_Tanner/vids/remove_skirt_nopanty.webm
girls/GDIGGERS888_Alex_Tanner/vids/teaseclit_nobot_nopanty.webm
As a minor bug, the game never shows the following vids: girls/GDIGGERS888_Alex_Tanner/vids/blowjob_notop.webm

The fix is to rename it to girls/GDIGGERS888_Alex_Tanner/vids/useface_notop.webm to properly work. FYI, the relevant associated source code is scripts/lb_examevents.rpy around line 29
 

Ninoss

Active Member
Donor
Game Developer
Nov 20, 2017
630
1,141
In next ver I've improoved the WebmFinder again, it shows a detailed log in log.txt of how it choose a webm and should be more accurate on what to show. I drop the file there as it can help you before as the update comes ^^
It replaces : game\scripts\main_classes\webmFinder.rpy
 
  • Like
Reactions: sls8181 and Kodex

sls8181

Newbie
Sep 21, 2020
59
29
I know the pain i am trying to come up with a good way to scale "impacts" and apply them to attributes. Math is definitely not my strong suite so its basically been a fruitless couple hours.
Here is an update of the alternative ui mod. Publishing it before proceeding to major text simplications (very likely). Would probably use color shades for infos or hide them it tooltips. For the coeffs, I would have started between 14% and 20% increase or decrease. Planning to look into Fuzzy Cognitive Maps as they seemed to be the golden standard for complex system.
You don't have permission to view the spoiler content. Log in or register now.

You don't have permission to view the spoiler content. Log in or register now.
 
  • Like
Reactions: GamerDaddy

BolHeX

Member
Nov 30, 2019
383
609
Here is an update of the alternative ui mod. Publishing it before proceeding to major text simplications (very likely). Would probably use color shades for infos or hide them it tooltips. For the coeffs, I would have started between 14% and 20% increase or decrease. Planning to look into Fuzzy Cognitive Maps as they seemed to be the golden standard for complex system.
You don't have permission to view the spoiler content. Log in or register now.

You don't have permission to view the spoiler content. Log in or register now.
That exam UI looks really good. My ADHD has me jumping all over. I added dynamic event chances and rewrote a bunch of stuff i needed to so i can continue with the "apply_impacts" implementation. Really too much to list. I could have done more but Baldur's Gate 3 has taken up a lot of my free time.

I haven't done thorough testing on how well the calculate_chance_to_happen() really works, ill need to have a look at it again at some point if it seems to be "off".

Python:
def get_chance_to_happen(self):
    # Suports integer allowing fixed chance_to_happen.
    # Supports tuple/list of 2 integers, allowing random range.
    # Supports dict i.e {"input_weights": {"arousal": 0.25, "corruption": 0.75}, "min_chance": 0.5, "max_chance": 6.5}
    def calculate_chance_to_happen():
        if self.girl is None:  # Currently doesn't support dynamic chance for non-girl events.
            renpy.log(f"[EVENT]: ERROR: {self.name} Dynamic chance to happen doesn't support non-girl events")
            return 0
      
        input_weights = self.chance_to_happen.get("input_weights", {})
        min_chance = self.chance_to_happen.get("min_chance", 0)
        max_chance = self.chance_to_happen.get("max_chance", 0)
        total_weight = sum(input_weights.values())
      
        renpy.log(f"[EVENT]: Calculate Chance to Happen: total_weight: {total_weight}")
      
        if total_weight == 0:
            renpy.log(f"[EVENT]: total_weight is zero. Returning min_chance")
            return min_chance
      
        weighted_sum = 0
        for input_name, weight in input_weights.items():
            input_value = getattr(self.girl, input_name) * weight
            weighted_sum += input_value
            renpy.log(f"[EVENT]: Calculating weighted_sum: input_name: {input_name}({weight}) = {input_value}")

        renpy.log(f"[EVENT]: weighted_sum: {weighted_sum}")

        normalized_weighted_sum = weighted_sum / (total_weight * 100.0)
        renpy.log(f"[EVENT]: normalized_weighted_sum: {normalized_weighted_sum}")

        chance_to_happen = min_chance + (max_chance - min_chance) * normalized_weighted_sum
        renpy.log(f"[EVENT]: chance_to_happen before clamping: {chance_to_happen}")

        # Clamp the result between min_chance and max_chance
        chance_to_happen = max(min_chance, min(chance_to_happen, max_chance))
        renpy.log(f"[EVENT]: chance_to_happen after clamping: {chance_to_happen}")

        return chance_to_happen

    renpy.log(f"[EVENT]: Get Chance to Happen: {self.name}\n chance_to_happen: {self.chance_to_happen}")

    chance_to_happen = self.chance_to_happen
    if isinstance(self.chance_to_happen, dict):
        chance_to_happen = calculate_chance_to_happen()
    elif isinstance(self.chance_to_happen, tuple) or isinstance(self.chance_to_happen, list):
        min_range, max_range = self.chance_to_happen
        chance_to_happen = renpy.random.randint(min_range, max_range)

    renpy.log(f"[EVENT]: Get Chance to Happen: Final Return: {chance_to_happen}")

    return chance_to_happen
 

sls8181

Newbie
Sep 21, 2020
59
29
That exam UI looks really good. My ADHD has me jumping all over. I added dynamic event chances and rewrote a bunch of stuff i needed to so i can continue with the "apply_impacts" implementation. Really too much to list. I could have done more but Baldur's Gate 3 has taken up a lot of my free time.

I haven't done thorough testing on how well the calculate_chance_to_happen() really works, ill need to have a look at it again at some point if it seems to be "off".

Python:
def get_chance_to_happen(self):
    # Suports integer allowing fixed chance_to_happen.
    # Supports tuple/list of 2 integers, allowing random range.
    # Supports dict i.e {"input_weights": {"arousal": 0.25, "corruption": 0.75}, "min_chance": 0.5, "max_chance": 6.5}
    def calculate_chance_to_happen():
        if self.girl is None:  # Currently doesn't support dynamic chance for non-girl events.
            renpy.log(f"[EVENT]: ERROR: {self.name} Dynamic chance to happen doesn't support non-girl events")
            return 0
     
        input_weights = self.chance_to_happen.get("input_weights", {})
        min_chance = self.chance_to_happen.get("min_chance", 0)
        max_chance = self.chance_to_happen.get("max_chance", 0)
        total_weight = sum(input_weights.values())
     
        renpy.log(f"[EVENT]: Calculate Chance to Happen: total_weight: {total_weight}")
     
        if total_weight == 0:
            renpy.log(f"[EVENT]: total_weight is zero. Returning min_chance")
            return min_chance
     
        weighted_sum = 0
        for input_name, weight in input_weights.items():
            input_value = getattr(self.girl, input_name) * weight
            weighted_sum += input_value
            renpy.log(f"[EVENT]: Calculating weighted_sum: input_name: {input_name}({weight}) = {input_value}")

        renpy.log(f"[EVENT]: weighted_sum: {weighted_sum}")

        normalized_weighted_sum = weighted_sum / (total_weight * 100.0)
        renpy.log(f"[EVENT]: normalized_weighted_sum: {normalized_weighted_sum}")

        chance_to_happen = min_chance + (max_chance - min_chance) * normalized_weighted_sum
        renpy.log(f"[EVENT]: chance_to_happen before clamping: {chance_to_happen}")

        # Clamp the result between min_chance and max_chance
        chance_to_happen = max(min_chance, min(chance_to_happen, max_chance))
        renpy.log(f"[EVENT]: chance_to_happen after clamping: {chance_to_happen}")

        return chance_to_happen

    renpy.log(f"[EVENT]: Get Chance to Happen: {self.name}\n chance_to_happen: {self.chance_to_happen}")

    chance_to_happen = self.chance_to_happen
    if isinstance(self.chance_to_happen, dict):
        chance_to_happen = calculate_chance_to_happen()
    elif isinstance(self.chance_to_happen, tuple) or isinstance(self.chance_to_happen, list):
        min_range, max_range = self.chance_to_happen
        chance_to_happen = renpy.random.randint(min_range, max_range)

    renpy.log(f"[EVENT]: Get Chance to Happen: Final Return: {chance_to_happen}")

    return chance_to_happen
The main issue is that it seems easy but in reality it is quite hard to find a fake but enjoyable balance necessary for a porn game. It does involve quite a bit of math that I am unfamiliar with and is learning by reading some phd. I am currently reading

The table 3.3 at page 59 looks very promissing for transfering transient states (aka the current emotional states such as pressure and arousal) to permanent ones (ex: exhibitionism, discipline, etc.).

The reality is that there is already 2 kind of FCMs in the game, the initial one and the WTM one. They both represents 2 main systems that are difficult to be fused. Unsure if they are fully compatible. At the moment, since WTM is based on FreeUse and it is not my fetish, I am having a hard time to identify the potential special causes/reasons/relationships that would differ from the classical corruption to kinky/hardcore sex.

In an IA world, I would tend to think, that we are just trying to have an overfitted model towards the porn content related to a girl/pornstar. For example, if the girl has many vids about boobs, she would/should has boobs as sensitive area. If her photoshoots has many hardcore content (t6 if I remember correctly), she would be kinky and have a high corruption. The most difficult thing is the evolutionnary perspective, meaning how do you create a level up system. This is kinda difficult because each modder also have their own scale.

All in all, the more I learn, the more it appears difficult to find a unique global/coherent system. We should probably have distinct FCMs (aka causal relationship between temporary stats attribute, permanent stats attributes, permanent traits). Adjusting with trial and errors is unlikely to reach something desirable/consistent because of the number of weights is important and correlated, maths are needed.
 

FloppySausage

Member
Jan 10, 2021
118
223
CONSOLE COMMANDS LIST (CHEATSHEET):
I'll update this over time as I discover more.
I won't answer any questions about how it works if you ignore the instructions given.
You can request me to find one if you want, but I can't guarantee I'll find it (depending on what's requested).
(Note: Access command console by holding Shift and Pressing O midgame. These commands are meant to be used during an exam unless stated otherwise.)
Type the command you want into the console and replace X with a number and VARIABLE with any of the below.


Student Variables:
pressure
discipline
fear
affection
corruption
naturism
intellect
arousal

Parent Vairables:
fear
corruption
affection

examRound = x
Sets the current exam round.

maxRounds = X
Sets the maximum amount of exam rounds.
Better if you want longer exams.

requiredAnswers = X
Change the required answers needed.
Be warned that this can bug the game.

academy.prestige = X
Set the reputation of the academy 0-100.
You can go above 100 but it may get buggy.

academy.modifyCash (X)
Set the amount of cash the academy holds (not the player).

maxGirls = X
Set the maximum amount of girls for your class.

examGirls[X].VARIABLE = X
Sets the numbered girl's (0 to 2) variable 0-100.
0 = Left
1 = Middle
2 = Right

selectedGirl.mother.modify("VARIABLE",+X)
For use when visiting home. Replace X with 0-100.
You can also swap the + for - or even delete it altogether if you want an exact number.

playerObject.arousal = X
Set the cum meter 0-100

PTAactions = X
To be used at PTA meeting.
The amount of actions left for that meeting.


$ _nbBustedBrokenRules = X
$ _credits += X

Use during interaction with parents for punishing students.
First one doesn't have much use other than displaying the amount of broken rules, however I haven't really figured it out as it easily gets overridden.
Credits are used during punishment phase.
 
Last edited:

Nignoggerssea

New Member
Dec 11, 2017
6
43
CONSOLE COMMANDS LIST (CHEATSHEET):
I'll update this over time as I discover more.
I won't answer any questions about how it works, especially if you ignore the instructions given.
(Note: Access command console by holding Shift and Pressing O midgame. These commands are meant to be used during an exam unless stated otherwise.)
Type the command you want into the console and replace X with a number.


Student Variables:
pressure
discipline
fear
affection
corruption
naturism
intellect
arousal

Parent Vairables:
fear
corruption
affection

examRound = x
Sets the current exam round.

maxRounds = X
Sets the maximum amount of exam rounds.
Better if you want longer exams.

requiredAnswers = X
Change the required answers needed.
Be warned that this can bug the game.

academy.prestige = X
Set the reputation of the academy 0-100.
You can go above 100 but it may get buggy.

academy.modifyCash (X)
Set the amount of cash the academy holds (not the player).

maxGirls = X
Set the maximum amount of girls for your class.

examGirl[X].VARIABLE = X
Sets the numbered girl's (0 to 2) variable 0-100.
0 = Left
1 = Middle
2 = Right

selectedGirl.mother.modify("VARIABLE",+X)
For use when visiting home. Replace X with 0-100.
You can also swap the + for - or even delete it altogether if you want an exact number.

playerObject.arousal = X
Set the cum meter 0-100

PTAactions = X
To be used at PTA meeting.
The amount of actions left for that meeting.
Thanks for tihis Floppy!
 
  • Like
Reactions: FloppySausage

TheItch

Newbie
Jul 24, 2021
36
141
CONSOLE COMMANDS LIST (CHEATSHEET):
I'll update this over time as I discover more.
I won't answer any questions about how it works if you ignore the instructions given.
You can request me to find one if you want, but I can't guarantee I'll find it (depending on what's requested).
(Note: Access command console by holding Shift and Pressing O midgame. These commands are meant to be used during an exam unless stated otherwise.)
Type the command you want into the console and replace X with a number and VARIABLE with any of the below.


Student Variables:
pressure
discipline
fear
affection
corruption
naturism
intellect
arousal

Parent Vairables:
fear
corruption
affection

examRound = x
Sets the current exam round.

maxRounds = X
Sets the maximum amount of exam rounds.
Better if you want longer exams.

requiredAnswers = X
Change the required answers needed.
Be warned that this can bug the game.

academy.prestige = X
Set the reputation of the academy 0-100.
You can go above 100 but it may get buggy.

academy.modifyCash (X)
Set the amount of cash the academy holds (not the player).

maxGirls = X
Set the maximum amount of girls for your class.

examGirl[X].VARIABLE = X
Sets the numbered girl's (0 to 2) variable 0-100.
0 = Left
1 = Middle
2 = Right

selectedGirl.mother.modify("VARIABLE",+X)
For use when visiting home. Replace X with 0-100.
You can also swap the + for - or even delete it altogether if you want an exact number.

playerObject.arousal = X
Set the cum meter 0-100

PTAactions = X
To be used at PTA meeting.
The amount of actions left for that meeting.
Thank you Floppy!
 
  • Like
Reactions: FloppySausage

mightythor45

Newbie
Mar 14, 2019
23
27
CONSOLE COMMANDS LIST (CHEATSHEET):
I'll update this over time as I discover more.
I won't answer any questions about how it works if you ignore the instructions given.
You can request me to find one if you want, but I can't guarantee I'll find it (depending on what's requested).
(Note: Access command console by holding Shift and Pressing O midgame. These commands are meant to be used during an exam unless stated otherwise.)
Type the command you want into the console and replace X with a number and VARIABLE with any of the below.


Student Variables:
pressure
discipline
fear
affection
corruption
naturism
intellect
arousal

Parent Vairables:
fear
corruption
affection

examRound = x
Sets the current exam round.

maxRounds = X
Sets the maximum amount of exam rounds.
Better if you want longer exams.

requiredAnswers = X
Change the required answers needed.
Be warned that this can bug the game.

academy.prestige = X
Set the reputation of the academy 0-100.
You can go above 100 but it may get buggy.

academy.modifyCash (X)
Set the amount of cash the academy holds (not the player).

maxGirls = X
Set the maximum amount of girls for your class.

examGirl[X].VARIABLE = X
Sets the numbered girl's (0 to 2) variable 0-100.
0 = Left
1 = Middle
2 = Right

selectedGirl.mother.modify("VARIABLE",+X)
For use when visiting home. Replace X with 0-100.
You can also swap the + for - or even delete it altogether if you want an exact number.

playerObject.arousal = X
Set the cum meter 0-100

PTAactions = X
To be used at PTA meeting.
The amount of actions left for that meeting.
I keep getting an error whenever I use the "examGirl[X].VARIABLE = X" command... If I, for example, use "examGirl[0].fear = 50", I get a "nameError: name 'examGirl' is not defined" error.
 
Last edited:

AMD77121!

New Member
Jul 17, 2021
12
3
I think there's a problem with the downloads, when I go to open the game my Mac simply says "The application “WTM_Academy” can’t be opened." I'm pretty sure it's not my Mac because I downloaded and opened a different Renpy game and I haven't touched the game's contents. Can anyone help?
 
  • Like
Reactions: ilikeporn89
3.80 star(s) 20 Votes