[RELEASE] Technical Forms - Complete Edition

Webteases are great, but what if you're in the mood for a slightly more immersive experience? Chat about Tease AI and other offline tease software.

Moderator: 1885

User avatar
avatarbr
Experimentor
Experimentor
Posts: 1187
Joined: Fri Aug 18, 2006 3:33 am
Gender: Male
Sexual Orientation: Straight

Re: [RELEASE] Technical Forms - Complete Edition

Post by avatarbr »

richman2 wrote: Mon Apr 10, 2023 7:57 pm
Oh yeah I know you're the Lord of HoT :) Remember it ever since .... like 2008? That's why I'm so happy you joined me with TF development :-)
Also gave the TAI version of HoT a shot some time ago. Think I struggled as always to get TAI running perfectly (all the image categories, tagging, etc) but definitely enjoyed!
Thanks...btw, I just found an old MP you sent me to edit something in 2013!!! :lol:

richman2 wrote: Mon Apr 10, 2023 7:57 pm Think with pic filesize (per pic) on hitherto levels more pics shouldnt be a major issue. Also, despite for my setup and preferences filesize is at a limit, when I look to other projects it still seems pretty small :lol: Like TAI + Succubi Script + Media.... 15 GB here you go. Always brings my sandbox encrypted diskspace to a limit.
Yes, but I was thinking about the download part. Since everyone uses MEGA, I think 1 Giga is the limit (a little more maybe), then you need to wait to continue the download.
richman2 wrote: Mon Apr 10, 2023 7:57 pm I suggest to once find a room where the (a first) training happens, then after having one or two trainings done when entering DH there could be a Maid appearing asking you "should I escort you to your today's training venue?" Then she blindfolds you to make it a surprise...black screen, break, walking sound, tadaaa whatever setting you like is justified. Pool/ living room, etc. If you get talkative about it a bit like "today it's a poolside training for you!" it is even better but not a must have.
Oh, that is a great idea. Is simple and still immersive. And Yes, I was thinking about that automatic walk you created. I think I did that in the last normal day in DH, but there was just 5 or 6 teases, so no big deal. Now would be around 100, and the black screen will works great. Thanks for the idea.

richman2 wrote: Mon Apr 10, 2023 7:57 pm P.s.: I love "bounce the edge"! But it is hard to code (cause manually timed stuff... you think you could write a generic code for that to be called? Like calling other stroke instructions?
I can see that. I think was just a simple loop, right? The "hard" part would be make the delay to change pics, and maybe put some taunts there (can re-use the ones we already have, I think). I will look at that.
User avatar
avatarbr
Experimentor
Experimentor
Posts: 1187
Joined: Fri Aug 18, 2006 3:33 am
Gender: Male
Sexual Orientation: Straight

Re: [RELEASE] Technical Forms - Complete Edition

Post by avatarbr »

Hey, since I liked your idea for bounce the edge, and want to use that on the edginf training too, I already did something.

Code: Select all

label av_bouncedog:
    call newpic(pic_static, 0, av_pic_limit)
    $av_cnt_rounds = renpy.random.randint(9,10) #change for slow/med/long 9/10=around 2min
    voice "audio/voices/raveenabegin.mp3"
    $renpy.pause(0.8, hard=True)
    voice "audio/voices/raveenadog.mp3"
    $renpy.pause(0.8, hard=True)
    play sound "audio/beats/dog100.wav" loop
    $renpy.pause(10.0, hard=True)

label av_bounceslowdog:
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bouncedog_end
    $av_speedup_chance = renpy.random.randint(1,100)
    if av_cnt_rounds<=6: #change that for slow/med/long. This will force a speed up if a few rounds passed, so would not be all slow.
        jump av_bouncemediumdog
    if av_speedup_chance<=25: #random chance to speed up. Small chance, since at some point will force speed up.
        jump av_bouncemediumdog
    else:
        if av_speedup_chance>=70: #chance to taunt. Using the same variable because works. Maybe need a new text specific for bounce the edge.
            $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
            trainer "[rd_quotes]{w=2}{nw}"
        $renpy.pause(10.0, hard=True)
        jump av_bounceslowdog

label av_bouncemediumdog:
    stop sound
    voice "audio/voices/raveenamedium.mp3"
    $renpy.pause(0.8, hard=True)
    play sound "audio/beats/dog120.wav" loop
    $renpy.pause(10.0, hard=True)    
label av_bouncemediumdog2:
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bouncedog_end
    $av_speedup_chance = renpy.random.randint(1,100)
    if av_cnt_rounds<=4: #change for slow/med/long
        jump av_bouncefastdog
    if av_speedup_chance<=25:
        jump av_bouncefastdog
    else:
        if av_speedup_chance>=70:
            $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
            trainer "[rd_quotes]{w=2}{nw}"
        $renpy.pause(10.0, hard=True)
        jump av_bouncemediumdog2

label av_bouncefastdog:
    stop sound
    voice "audio/voices/raveenafast.mp3"
    $renpy.pause(0.8, hard=True)
    play sound "audio/beats/dog120.wav" loop
    $renpy.pause(10.0, hard=True)
label av_bouncefastdog2:   
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bouncedog_end
    if av_speedup_chance>=70:
        $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
        trainer "[rd_quotes]{w=2}{nw}"
    $renpy.pause(10.0, hard=True)
    jump av_bouncefastdog2

label av_bouncedog_end:
    stop sound
    return
Some notes:
- Need to use that modification I did for your pic code, before calling the code: ex: $av_pic_limit=40
- The "trainer" name I usedis from the edging training code.
Here is the code for that:

Code: Select all

default av_trainerName="Trainer"
define trainer = Character("[av_trainerName]", who_color="#22d8d2")

$av_trainerName="Destiny" #one example of use.
- I think I can make variables to change the short/medium/long instead to create one for each. Same with the forms (dog,cat, snake, etc.)

I just don't know what is better. We can have a unique call, but would need to input the duration and form. Or we can have various calls, making easy to call.

I really don't remember, but is possible to make something like?:

call av_bounce(short, cat)
Carnal1
Explorer At Heart
Explorer At Heart
Posts: 145
Joined: Wed Jan 30, 2019 4:56 am
Gender: Male
Sexual Orientation: Open to new ideas!

Re: [RELEASE] Technical Forms - Complete Edition

Post by Carnal1 »

Still playing. Still engrossed and awed by it all. (still occasionally mixing it up by playing some HoT too) Well into Destiny's house, village, continuing daily with the shrine, dojo training, library(extra lessons and skill points), Shunka, and... whew! Anri is back and I'm holding off starting the final competition as it seems there's still plenty elsewhere to experience.
And now - much more Edging training to come from avatarbr! Wow!

Richman2's suggestion on room walkthroughs sounds great to me by the way. And yes, would be nice if file sizes fit with MEGA limits so as to not be too much PIA to download.

And some mostly minor issues and questions saved from quite a while:
Spoiler: show
There's a typo in File "game/randomdojotraining.rpy", line 571, where "sou" should be "sound"

Another in Destinyhouse.rpy, line 2308 tiedballs!=1: should be tieballs!=1

When I did the 1st library advanced training & left to go inside , I got error:
File "game/outdoor_corridors.rpy", line 18, in script
menu:
File "game/outdoor_corridors.rpy", line 52, in <module>
"{color=#A9E2F3}Turn right to the library.{/color}" if av_trainingkaho==True and av_talktomasumi==False and daycount>av_last_training:
NameError: name 'av_last_training' is not defined

I added av_last_training variable in the game and set it equal to today's daycount which seemed to make all ok.

A couple times at the end of the day when I went to go to sleep, I was told I didn't do daily training triple with Shunka, dojo and library. But I did! As well as shrine etc. Instead of sleeping I went back to Shunka but no option there except leave the room. Did another library training anyway, yet again after trying to sleep says I didn't. Seems av_last_training isn't getting updated. I ended up manually updating it. It only happened I think twice early on, and hasn't again. ??
It also seems that when I randomly encounter Shunka while walking around and stroke for her, and before training with her in the little room it seems to mark as if I trained in the small room with her, Seems it shouldn't count the same.

Did the Destiny when Catie joins in. At end just as she invites me to visit her house, got error:
File "game/destiny_sidestory.rpy", line 1763, in script
menu destiniyhouseavailable:
File "renpy/ast.py", line 1692, in execute
next_node(self.itmes[choice][2][0])
IndexError: list index out of range

Clicked Ignore and seemed to continue ok but I didn't explore more to know what was wrong.

I went to do the library advanced training and chose "pussy." Seemed to go FOREVER, never ending. Looked at rpy and variables. strokebank = 11387.9000000000007 , strokebank_daily = 54614.2000000000026, strokebankmax=2600, strokebank_factor=2.7, av_rounds_done=0, av_rounds_goal=6
I set av_rounds_done to more than 6, returned to game and then it tried to end but got error:
File "game/kinkystraining.rpy", line 892, in script
jump pussyend
ScriptError: could not find label 'pussyend'.

I looked at that a bunch and somehow kept missing the typo! pussyend should be pussysend. I didn't look hard enough as to why av_rounds_done= doesn't get incremented but the other trainings all seem ok.

I offered the vase to Gods and asked to see lust of women. Completed and told "Head to the library and you will be able to see a new skill" but nothing new there. Nothing different when I get teased either - no seeing lust.

Speaking of that skill menu, I don't seem to be able to get to new abilities. I have used about 150 points but can only see Break, Ask for Monkey, Butterfly, Length, Pace, Monkey Probability, Edge Probability, PC Muscle Training and Daily Allowance. Others say I need to find someone to tell me about. I've explored the village, the woods, Moe & Erina, the pool, the onsen, sacrificed the vase twice to the gods (once for lust of women and once with no request but just to know the gods better (something like that) also did once at the one shrine in the woods I can access. Am I just missing something or is it a glitch?

Also, I'm still not getting the Options menu in the upper right corner ever - not when being teased at Dojo, or anywhere. I did see it once or twice ages back but never again.

And lastly, When in woods and trying to get to the upper right shrine(or any on that eastern most path) which I can see on the fully shown map , I keep getting "jumped" from where I should be able to turn south just northeast of the shrine to just south of the westernmost shrine. Seems impossible to get to upper-eastern shrine! Unless this is intentional and I need to accomplish something else first?? I have trained, edged and offered the vase to the one shrine I can reach in the woods. I think fully explored the village too.

So, nothing major or terribly game breaking. I just would hate to miss anything after sooo much has been put into this. Thanks again to you guys for producing such an extraordinary experience.
richman2
Explorer At Heart
Explorer At Heart
Posts: 119
Joined: Fri Mar 07, 2008 7:00 pm

Re: [RELEASE] Technical Forms - Complete Edition

Post by richman2 »

avatarbr wrote: Wed Apr 12, 2023 2:20 am Hey, since I liked your idea for bounce the edge, and want to use that on the edginf training too, I already did something.

Code: Select all

label av_bouncedog:
    call newpic(pic_static, 0, av_pic_limit)
    $av_cnt_rounds = renpy.random.randint(9,10) #change for slow/med/long 9/10=around 2min
    voice "audio/voices/raveenabegin.mp3"
    $renpy.pause(0.8, hard=True)
    voice "audio/voices/raveenadog.mp3"
    $renpy.pause(0.8, hard=True)
    play sound "audio/beats/dog100.wav" loop
    $renpy.pause(10.0, hard=True)

label av_bounceslowdog:
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bouncedog_end
    $av_speedup_chance = renpy.random.randint(1,100)
    if av_cnt_rounds<=6: #change that for slow/med/long. This will force a speed up if a few rounds passed, so would not be all slow.
        jump av_bouncemediumdog
    if av_speedup_chance<=25: #random chance to speed up. Small chance, since at some point will force speed up.
        jump av_bouncemediumdog
    else:
        if av_speedup_chance>=70: #chance to taunt. Using the same variable because works. Maybe need a new text specific for bounce the edge.
            $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
            trainer "[rd_quotes]{w=2}{nw}"
        $renpy.pause(10.0, hard=True)
        jump av_bounceslowdog

label av_bouncemediumdog:
    stop sound
    voice "audio/voices/raveenamedium.mp3"
    $renpy.pause(0.8, hard=True)
    play sound "audio/beats/dog120.wav" loop
    $renpy.pause(10.0, hard=True)    
label av_bouncemediumdog2:
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bouncedog_end
    $av_speedup_chance = renpy.random.randint(1,100)
    if av_cnt_rounds<=4: #change for slow/med/long
        jump av_bouncefastdog
    if av_speedup_chance<=25:
        jump av_bouncefastdog
    else:
        if av_speedup_chance>=70:
            $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
            trainer "[rd_quotes]{w=2}{nw}"
        $renpy.pause(10.0, hard=True)
        jump av_bouncemediumdog2

label av_bouncefastdog:
    stop sound
    voice "audio/voices/raveenafast.mp3"
    $renpy.pause(0.8, hard=True)
    play sound "audio/beats/dog120.wav" loop
    $renpy.pause(10.0, hard=True)
label av_bouncefastdog2:   
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bouncedog_end
    if av_speedup_chance>=70:
        $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
        trainer "[rd_quotes]{w=2}{nw}"
    $renpy.pause(10.0, hard=True)
    jump av_bouncefastdog2

label av_bouncedog_end:
    stop sound
    return
Some notes:
- Need to use that modification I did for your pic code, before calling the code: ex: $av_pic_limit=40
- The "trainer" name I usedis from the edging training code.
Here is the code for that:

Code: Select all

default av_trainerName="Trainer"
define trainer = Character("[av_trainerName]", who_color="#22d8d2")

$av_trainerName="Destiny" #one example of use.
- I think I can make variables to change the short/medium/long instead to create one for each. Same with the forms (dog,cat, snake, etc.)

I just don't know what is better. We can have a unique call, but would need to input the duration and form. Or we can have various calls, making easy to call.

I really don't remember, but is possible to make something like?:

call av_bounce(short, cat)
Didn't test yet but looks good!
I would prefer the call av_bounce(short, cat) version. And yes it is possible. Actually used quite often hitherto. The call of pics is nothing else. But for examples more closely to stroking look at the call_pickmasu_compact code:

Search in that file for
##### Masu Calls with specs

you will find something like:
label calljoannapickmasuspecs(s, m, f, maxim, mky, edg)
where:
s --> slow pace prob of Maid (0-100)
m --> #medium pace prob of Maid (0-100)
f --> fast pace prob of Maid(0-100)
maxim --> maximum seconds for one form commanded
mky=0 #monkey prob of Maid (0-100)
edg=0 #edge prob of Maid (0-100)

and in script it is then call calljoannapickmasuspecs(10,20,70, 60,10,5)

which calls a maid commanding masu with 10% probability of slow, 20% medium, 70% fast beats, 60sec max per form, 10% monkey prob and 5% edge probability as a baseline.
Within the call those baseline figures get modified by skills and stuff. But anyway: it is easy to pass variables to called scripts if you meant this.
richman2
Explorer At Heart
Explorer At Heart
Posts: 119
Joined: Fri Mar 07, 2008 7:00 pm

Re: [RELEASE] Technical Forms - Complete Edition

Post by richman2 »

Carnal1 wrote: Wed Apr 12, 2023 8:27 pm Still playing. Still engrossed and awed by it all. (still occasionally mixing it up by playing some HoT too) Well into Destiny's house, village, continuing daily with the shrine, dojo training, library(extra lessons and skill points), Shunka, and... whew! Anri is back and I'm holding off starting the final competition as it seems there's still plenty elsewhere to experience.
And now - much more Edging training to come from avatarbr! Wow!

Richman2's suggestion on room walkthroughs sounds great to me by the way. And yes, would be nice if file sizes fit with MEGA limits so as to not be too much PIA to download.

And some mostly minor issues and questions saved from quite a while:
Spoiler: show
There's a typo in File "game/randomdojotraining.rpy", line 571, where "sou" should be "sound"

Another in Destinyhouse.rpy, line 2308 tiedballs!=1: should be tieballs!=1

When I did the 1st library advanced training & left to go inside , I got error:
File "game/outdoor_corridors.rpy", line 18, in script
menu:
File "game/outdoor_corridors.rpy", line 52, in <module>
"{color=#A9E2F3}Turn right to the library.{/color}" if av_trainingkaho==True and av_talktomasumi==False and daycount>av_last_training:
NameError: name 'av_last_training' is not defined

I added av_last_training variable in the game and set it equal to today's daycount which seemed to make all ok.

A couple times at the end of the day when I went to go to sleep, I was told I didn't do daily training triple with Shunka, dojo and library. But I did! As well as shrine etc. Instead of sleeping I went back to Shunka but no option there except leave the room. Did another library training anyway, yet again after trying to sleep says I didn't. Seems av_last_training isn't getting updated. I ended up manually updating it. It only happened I think twice early on, and hasn't again. ??
It also seems that when I randomly encounter Shunka while walking around and stroke for her, and before training with her in the little room it seems to mark as if I trained in the small room with her, Seems it shouldn't count the same.

Did the Destiny when Catie joins in. At end just as she invites me to visit her house, got error:
File "game/destiny_sidestory.rpy", line 1763, in script
menu destiniyhouseavailable:
File "renpy/ast.py", line 1692, in execute
next_node(self.itmes[choice][2][0])
IndexError: list index out of range

Clicked Ignore and seemed to continue ok but I didn't explore more to know what was wrong.

I went to do the library advanced training and chose "pussy." Seemed to go FOREVER, never ending. Looked at rpy and variables. strokebank = 11387.9000000000007 , strokebank_daily = 54614.2000000000026, strokebankmax=2600, strokebank_factor=2.7, av_rounds_done=0, av_rounds_goal=6
I set av_rounds_done to more than 6, returned to game and then it tried to end but got error:
File "game/kinkystraining.rpy", line 892, in script
jump pussyend
ScriptError: could not find label 'pussyend'.

I looked at that a bunch and somehow kept missing the typo! pussyend should be pussysend. I didn't look hard enough as to why av_rounds_done= doesn't get incremented but the other trainings all seem ok.

I offered the vase to Gods and asked to see lust of women. Completed and told "Head to the library and you will be able to see a new skill" but nothing new there. Nothing different when I get teased either - no seeing lust.

Speaking of that skill menu, I don't seem to be able to get to new abilities. I have used about 150 points but can only see Break, Ask for Monkey, Butterfly, Length, Pace, Monkey Probability, Edge Probability, PC Muscle Training and Daily Allowance. Others say I need to find someone to tell me about. I've explored the village, the woods, Moe & Erina, the pool, the onsen, sacrificed the vase twice to the gods (once for lust of women and once with no request but just to know the gods better (something like that) also did once at the one shrine in the woods I can access. Am I just missing something or is it a glitch?

Also, I'm still not getting the Options menu in the upper right corner ever - not when being teased at Dojo, or anywhere. I did see it once or twice ages back but never again.

And lastly, When in woods and trying to get to the upper right shrine(or any on that eastern most path) which I can see on the fully shown map , I keep getting "jumped" from where I should be able to turn south just northeast of the shrine to just south of the westernmost shrine. Seems impossible to get to upper-eastern shrine! Unless this is intentional and I need to accomplish something else first?? I have trained, edged and offered the vase to the one shrine I can reach in the woods. I think fully explored the village too.

So, nothing major or terribly game breaking. I just would hate to miss anything after sooo much has been put into this. Thanks again to you guys for producing such an extraordinary experience.

Great to hear you're still playing and having fun with it! Seems like you are through basically. Beware though: The last competition is kinda unbalanced in your version. Way too long.
Thanks a lot for your bug reports! Some of them were hard to find. Finally I found the reason for the bug in the woodmaze which prevents you from getting to the eastern shrines:

Code: Select all

label woodmaze20:
    $woodmaze_labelname="woodmaze20"
    $woodmaze_mapcurrentpos="map4v4paths20"
    show woodtovillage3 at truecenter with dissolve
    #"20{nw}"

    call callwoodmazeencounter from _call_callwoodmazeencounter_28
    $woodmaze_mapreturn=False
   [b] menu maze20:
        "Where to head next?"
        "Go East.":
            hide woodtovillage3
            jump woodmaze21

        "Go West.":
            hide woodtovillage3
            jump woodmaze19

        "Go North.":
            hide woodtovillage3
            jump woodmaze14[/b]


label woodmaze21:
    if woodmaze_labelname!="woodmaze21":
        $woodmaze_labelname="woodmaze21"
        $woodmaze_mapcurrentpos="map4v4paths21"
        show woodtovillage4 at truecenter with dissolve
        $renpy.pause(1.0, hard=True)

        call callwoodmazeencounter from _call_callwoodmazeencounter_11

        $woodmaze_mapreturn=False
    else:
        show woodtovillage4 at truecenter with dissolve

        call callwoodmazeencounter from _call_callwoodmazeencounter_29
        $woodmaze_mapreturn=False
   [b] menu maze21:
        "Where to head next?"

        "Go West.":
            hide woodtovillage4
            jump woodmaze20

        "Go South.":
            hide woodtovillage4
            jump woodmaze28[/b]
            
            
Pay attention to the menu section. One of them had a wrong indent. The menu must be indented in woodmaze21 on par with "else" and in woodmaze20 on first indent level. I always searchrd for wrong jumps in numbers but actually it was just a wrong indent which made the code run through to next part skipping the menu...

Speaking of which: You need to go to one of the shrine to find a person to talk to for skills. You will learn how to skip the edge. Not a skill I'm most proud of but anyway.
To activate manually:
q_like_edgeswap=True

In the recent version all that is made easier. After completing enough in the village you get provided a shortcut to the shrines etc.

The "LustView" skill is actually something I personally like a lot! Sadly I don't remember why it doesnt work for you to be activated but I do remember that there was alot to fix after the version you have. I'd suggest to activate it manually.
No guarantee if this works for you cause I changed a lot there but:

Look into skillscreen.rpy in the ################## LUST VIEW section there is everything you need to know (but admittedly those menustuff-dependencies are hard to read. So to make it available set the following (no guarantee if this is true for your version, that's why I advise you to double check in your version:

strokebar_active=True

Then you need 10 skillpoints available and stuff but that is straight forward and explained. Also, check screensall.rpy and search for lustview. Also for you there should be a dependency on lustview_available... so set

lustview_available=True and everything should work.


The way lustview works is as follows: If you are in a teasing session (though not in all, but most of them) you get the option to use 3 points of your daily allowance to activate "lust view". Then you will see how much the Maid already teased you and get a rough idea how long the tease is set to go on. But: After a rather short period of time this info will vanish again. The more you skill it, the longer the "teasing bar" will stay. For me, getting this omplemented was a huge step towards a RPG-like stuff with a hero having a hp bar and enemy having hp in battles and stuff. But also, I find it interesting to get a short glimpse on whether it is a looong way to go in the current tease or if it is a short one.


On your question about the sidemenu/ option screen. It is intended that it is not on always. Would disturb scenery. It should be available in most (not all) teases. Except for teases (like competitions or trianings) where you should not have the possibility to ask for a break or swap the edge or stuff. So it is intended to not show up always and never outside teasing situations.

As you say you see it nearly never - that is strange.
Make sure though to have q_like_stopscreen=True
The latter somewhere earlier in the game gave players the chance to opt out of seeing such a screen cause they dont like the gameplay idea to ask for breaks etc. Maybe something went wrong there for you.


Ah! Another note on the skillmenu: There should also be asking for LONG break available. I think somewhere in Kaho-Regime you got this. If not set kaho_longbreak_enable=True

Should look like that:
exampleskill.jpg
exampleskill.jpg (422.21 KiB) Viewed 1915 times

I'd give you updated files but I guess even those polished files have so many new changes and variables it would mess your setup

Have fun though your near the end!
User avatar
holy_magnas
Explorer
Explorer
Posts: 33
Joined: Thu Jan 21, 2021 12:54 am
Gender: Male
Sexual Orientation: Straight
I am a: Submissive
Dom/me(s): Goddess Tantra
Contact:

Re: [RELEASE] Technical Forms - Complete Edition

Post by holy_magnas »

Just playing this game on these past four days. This is my first time and I quite enjoy the game so much! really love the concept! But I got a bug on the day 5 (I use the technical forms 4 by richman2 )
any help maybe? this is the code I found...
Spoiler: show

Code: Select all

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/D5.rpy", line 271, in script
    window hide
  File "renpy/common/000window.rpy", line 169, in execute_window_hide
    _window_hide(trans)
  File "renpy/common/000window.rpy", line 101, in _window_hide
    renpy.with_statement(trans)
Exception: Too many arguments in call (expected 0, got 2).

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/D5.rpy", line 271, in script
    window hide
  File "renpy/ast.py", line 2015, in execute
    self.call("execute")
  File "renpy/ast.py", line 2003, in call
    return renpy.statements.call(method, parsed, *args, **kwargs)
  File "renpy/statements.py", line 278, in call
    return method(parsed, *args, **kwargs)
  File "renpy/common/000window.rpy", line 169, in execute_window_hide
    _window_hide(trans)
  File "renpy/common/000window.rpy", line 101, in _window_hide
    renpy.with_statement(trans)
  File "renpy/exports.py", line 1682, in with_statement
    return renpy.game.interface.do_with(trans, paired, clear=clear)
  File "renpy/display/core.py", line 2752, in do_with
    clear=clear)
  File "renpy/display/core.py", line 3315, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs)
  File "renpy/display/core.py", line 3735, in interact_core
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/screen.py", line 436, in visit_all
    callback(self)
  File "renpy/display/core.py", line 3735, in <lambda>
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/screen.py", line 447, in per_interact
    self.update()
  File "renpy/display/screen.py", line 637, in update
    self.screen.function(**self.scope)
  File "renpy/ast.py", line 159, in apply_arguments
    return parameters.apply(args, kwargs, ignore_errors)
  File "renpy/ast.py", line 137, in apply
    raise Exception("Too many arguments in call (expected %d, got %d)." % (len(self.positional), len(args)))
Exception: Too many arguments in call (expected 0, got 2).

Windows-8.1-6.3.9600
Ren'Py 7.4.10.2178
Technical Forms 4.0
Fri Apr 14 00:13:27 2023
Previously I won all of the Masu match and got total 14 point, and on the day 5, before the final competition I choose to reject and destroy the FBI device from eva.
User avatar
avatarbr
Experimentor
Experimentor
Posts: 1187
Joined: Fri Aug 18, 2006 3:33 am
Gender: Male
Sexual Orientation: Straight

Re: [RELEASE] Technical Forms - Complete Edition

Post by avatarbr »

richman2 wrote: Thu Apr 13, 2023 12:27 pm

Didn't test yet but looks good!
I would prefer the call av_bounce(short, cat) version. And yes it is possible. Actually used quite often hitherto. The call of pics is nothing else. But for examples more closely to stroking look at the call_pickmasu_compact code:

Search in that file for
##### Masu Calls with specs

you will find something like:
label calljoannapickmasuspecs(s, m, f, maxim, mky, edg)


and in script it is then call calljoannapickmasuspecs(10,20,70, 60,10,5)
Right. I remember seen this, but forgot about that one.

So I just need to make a label like that? label calljoannapickmasuspecs(s, m, f, maxim, mky, edg)

I will proably test before you can answer that, but just to make sure :lol:




EDIT:

Yeah!!

Code: Select all

label av_bounceedgeloop:
    call newpic(pic_static, 1, av_pic_limit)
    if av_bouncelength == 1:
        $av_cnt_rounds = renpy.random.randint(9,10) #short duration. around 2min
    if av_bouncelength == 2:
        $av_cnt_rounds = renpy.random.randint(12,14) #medium duration. 
    if av_bouncelength == 3:
        $av_cnt_rounds = renpy.random.randint(16,18) #long duration. 
    voice "audio/voices/raveenabegin.mp3"
    $renpy.pause(0.8, hard=True)
    if av_bounceform == 1:
        voice "audio/voices/raveenadog.mp3"
    if av_bounceform == 2:
        voice "audio/voices/raveenacat.mp3"
    if av_bounceform == 3:
        voice "audio/voices/raveenasnake.mp3"
    if av_bounceform == 4:
        voice "audio/voices/raveenaeagle.mp3"
    if av_bounceform == 5:
        voice "audio/voices/raveenadragon.mp3"
    $renpy.pause(0.8, hard=True)
    if av_bounceform == 1:
        play sound "audio/beats/dog100.wav" loop
    if av_bounceform == 2:
        play sound "audio/beats/cat100.wav" loop
    if av_bounceform == 3:
        play sound "audio/beats/snake100.wav" loop
    if av_bounceform == 4:
        play sound "audio/beats/eagle100.wav" loop
    if av_bounceform == 5:
        play sound "audio/beats/dragon100.wav" loop
    $renpy.pause(10.0, hard=True)

label av_bounceslowloop:
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bouncedog_end
    $av_speedup_chance = renpy.random.randint(1,100)
   # if av_bouncelength == 1: #maybe include later.
    #    if av_cnt_rounds<=6: #change that for slow/med/long. This will force a speed up if a few rounds passed, so would not be all slow.
  #          jump av_bouncemediumloop
    if av_speedup_chance<=35: #random chance to speed up. 
        jump av_bouncemediumloop
    else:
        if av_speedup_chance>=70: #chance to taunt. Using the same variable because works. Maybe need a new text specific for bounce the edge.
            $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
            trainer "[rd_quotes]{w=2}{nw}"
        $renpy.pause(10.0, hard=True)
        jump av_bounceslowloop

label av_bouncemediumloop:
    stop sound
    voice "audio/voices/raveenamedium.mp3"
    $renpy.pause(0.8, hard=True)
    if av_bounceform == 1:
        play sound "audio/beats/dog120.wav" loop
    if av_bounceform == 2:
        play sound "audio/beats/cat120.wav" loop
    if av_bounceform == 3:
        play sound "audio/beats/snake120.wav" loop
    if av_bounceform == 4:
        play sound "audio/beats/eagle120.wav" loop
    if av_bounceform == 5:
        play sound "audio/beats/dragon120.wav" loop
    $renpy.pause(10.0, hard=True)    
label av_bouncemediumloop2:
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bounce_end
    $av_speedup_chance = renpy.random.randint(1,100)
    if av_cnt_rounds<=4: #change for slow/med/long
        jump av_bouncefastloop
    if av_speedup_chance<=25:
        jump av_bouncefastloop
    else:
        if av_speedup_chance>=70:
            $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
            trainer "[rd_quotes]{w=2}{nw}"
        $renpy.pause(10.0, hard=True)
        jump av_bouncemediumloop2

label av_bouncefastloop:
    stop sound
    voice "audio/voices/raveenafast.mp3"
    $renpy.pause(0.8, hard=True)
    if av_bounceform == 1:
        play sound "audio/beats/dog140.wav" loop
    if av_bounceform == 2:
        play sound "audio/beats/cat140.wav" loop
    if av_bounceform == 3:
        play sound "audio/beats/snake140.wav" loop
    if av_bounceform == 4:
        play sound "audio/beats/eagle140.wav" loop
    if av_bounceform == 5:
        play sound "audio/beats/dragon140.wav" loop
    $renpy.pause(10.0, hard=True)
label av_bouncefastdog2:   
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bounce_end
    if av_speedup_chance>=70:
        $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
        trainer "[rd_quotes]{w=2}{nw}"
    $renpy.pause(10.0, hard=True)
    jump av_bouncefastdog2

label av_bounce_end:
    stop sound
    voice "audio/voices/raveenastop.mp3"
    $renpy.pause(0.8, hard=True)
    return
    
 Examples:
     trainer "dragon.{w=1}{nw}"
    call av_bounceedge(5, 1)
    trainer "dog.{w=3}{nw}"
    call av_bounceedge(1, 2)   
    
I can't make with text, I think need to be numbers, right?

Would be 1 for dog, 2 for cat, 3 snake, 4 eagle and 5 dragon.
User avatar
kong
Explorer At Heart
Explorer At Heart
Posts: 229
Joined: Sun Mar 04, 2012 6:24 pm

Re: [RELEASE] Technical Forms - Complete Edition

Post by kong »

Have I missed or is there a bugfix 4?
After unpack and put to game folder Bugfixes1-3 as of March23 please after that also download and unpack files in bugfix5 (attachment)
richman2
Explorer At Heart
Explorer At Heart
Posts: 119
Joined: Fri Mar 07, 2008 7:00 pm

Re: [RELEASE] Technical Forms - Complete Edition

Post by richman2 »

Mhhh never thought about text... should work with text too - but maybe only if passed in a variable?
I recently made something like this (and look at the suc_weakform variable which passes text)

Code: Select all

 $suc_id=1
            $suc_lvl=1
            $suc_hpbase=500
            $suc_attack=2
            $suc_defense=2
            $suc_weakform="dragon"
            $suc_weakmky=2 #0-10
            $suc_weaktied=0 #0-10
            $suc_mky=1
            $suc_tied=0
            $suc_speed=3
            $suc_slap=1

call callsuccubisetup(suc_id, suc_lvl, suc_hpbase, suc_attack, suc_defense, suc_weakform, suc_weakmky, suc_weaktied,suc_mky, suc_tied, suc_speed, suc_slap)
 
#
#
 
label callsuccubisetup(suc_id, suc_lvl, suc_hpbase, suc_attack, suc_defense, suc_weakform, suc_weakmky, suc_weaktied,suc_mky, suc_tied, suc_speed, suc_slap):
 
 #profile generation
  

 
Yes, doing the call with numbers (values) directly like call av_bounceedges(5,1) makes a lot more sense. But if many stuff is passed, I tend to forget which is what. So I like to copy paste a standing set of variables with their "readable name", give them the values I want and then make the call using the variables (not their values).
Thinking about it, it is completely nonsense. Cause as we talk about global variables, I could also just call a label without passing anything and the variables would be accessible. Buuuut.... idk I can read code better that way I guess :lol:

The thing is:

Code: Select all

$bounceform="dragon"

call av_bounceedges(bounceform,1)
should work. At least I do not have problems passing variables with text as value. Actually, as explained, it's not necessary though. You could just write

Code: Select all

$bounceform="dragon"

call av_bounceedges(1)

and in label av_bounceedges use the variable bounceform which you gave a value before calling. tbh I never really understood the call thing :) just handled it the way it worked for me. Do as you wish, but remember: The more "codes" you need to know the less likely it is the call will be used frequently or later on. With "codes" I mean codebooks like: In this call 1 = dog, 2 equals cat ... Therefore, I'd say.


One thing though: I actually can't make sense of your code at one point: In the example you call

call av_bounceedges(5,1)

but I do not find a label

label av_bounceedges(x,y):
richman2
Explorer At Heart
Explorer At Heart
Posts: 119
Joined: Fri Mar 07, 2008 7:00 pm

Re: [RELEASE] Technical Forms - Complete Edition

Post by richman2 »

holy_magnas wrote: Thu Apr 13, 2023 5:29 pm Just playing this game on these past four days. This is my first time and I quite enjoy the game so much! really love the concept! But I got a bug on the day 5 (I use the technical forms 4 by richman2 )
any help maybe? this is the code I found...
Spoiler: show

Code: Select all

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/D5.rpy", line 271, in script
    window hide
  File "renpy/common/000window.rpy", line 169, in execute_window_hide
    _window_hide(trans)
  File "renpy/common/000window.rpy", line 101, in _window_hide
    renpy.with_statement(trans)
Exception: Too many arguments in call (expected 0, got 2).

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/D5.rpy", line 271, in script
    window hide
  File "renpy/ast.py", line 2015, in execute
    self.call("execute")
  File "renpy/ast.py", line 2003, in call
    return renpy.statements.call(method, parsed, *args, **kwargs)
  File "renpy/statements.py", line 278, in call
    return method(parsed, *args, **kwargs)
  File "renpy/common/000window.rpy", line 169, in execute_window_hide
    _window_hide(trans)
  File "renpy/common/000window.rpy", line 101, in _window_hide
    renpy.with_statement(trans)
  File "renpy/exports.py", line 1682, in with_statement
    return renpy.game.interface.do_with(trans, paired, clear=clear)
  File "renpy/display/core.py", line 2752, in do_with
    clear=clear)
  File "renpy/display/core.py", line 3315, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs)
  File "renpy/display/core.py", line 3735, in interact_core
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/screen.py", line 436, in visit_all
    callback(self)
  File "renpy/display/core.py", line 3735, in <lambda>
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/screen.py", line 447, in per_interact
    self.update()
  File "renpy/display/screen.py", line 637, in update
    self.screen.function(**self.scope)
  File "renpy/ast.py", line 159, in apply_arguments
    return parameters.apply(args, kwargs, ignore_errors)
  File "renpy/ast.py", line 137, in apply
    raise Exception("Too many arguments in call (expected %d, got %d)." % (len(self.positional), len(args)))
Exception: Too many arguments in call (expected 0, got 2).

Windows-8.1-6.3.9600
Ren'Py 7.4.10.2178
Technical Forms 4.0
Fri Apr 14 00:13:27 2023
Previously I won all of the Masu match and got total 14 point, and on the day 5, before the final competition I choose to reject and destroy the FBI device from eva.
Uh this is from the very old part. I do not see the issue just from the error message. Looking in my code in line 271 I see something like this:

Code: Select all

#show screen skillscreen(avskills, skillcost)
That's something I implemented and then scrapped again. If you have that line without a leading # hash: That's your error I guess. Delete the whole line or set a hash in front.
richman2
Explorer At Heart
Explorer At Heart
Posts: 119
Joined: Fri Mar 07, 2008 7:00 pm

Re: [RELEASE] Technical Forms - Complete Edition

Post by richman2 »

kong wrote: Sat Apr 15, 2023 3:55 pm Have I missed or is there a bugfix 4?
After unpack and put to game folder Bugfixes1-3 as of March23 please after that also download and unpack files in bugfix5 (attachment)
I guess I just skipped no4 or no5 comprises no4.
richman2
Explorer At Heart
Explorer At Heart
Posts: 119
Joined: Fri Mar 07, 2008 7:00 pm

Re: [RELEASE] Technical Forms - Complete Edition

Post by richman2 »

Decided to put on Version 4.5

HERE
https://mega.nz/file/pthiyRgK#koLNke-lz ... A_-F8sz0wY (Main File)
AND HERE
https://mega.nz/file/J1RVwRBZ#53teB4vS5 ... vlMfOWbrRk
(Some additional Videos)


As there are at least one or two newbees out there, maybe it is better to provide them with a fresh start. Cause from now on, if the y find bugs it starts to get hard fixing them cause too many things changed.
holy_magnas wrote: Thu Apr 13, 2023 5:29 pm Just playing this game on these past four days. This is my first time and I quite enjoy the game so much! really love the concept! But I got a bug on the day 5 (I use the technical forms 4 by richman2 )
any help maybe? this is the code I found...
@holy_magnas As you are that early in the game, I'd advise you to download the new version. You could easily use one of the jump points to jump after the first competition. Against what is in front of you the decisions you take on day 1-6 are neglectable.
Still I warn everyone again who doesnt know: IT IS NOT POSSIBLE TO TAKE SAVE-FILES WITH YOU!


@avatarbr: I separated your videofiles form the main download. 250MB of 1500MB seemed to be a quick win to shrink file size without running into trouble too fast for ppl who do not download the additional files.
User avatar
avatarbr
Experimentor
Experimentor
Posts: 1187
Joined: Fri Aug 18, 2006 3:33 am
Gender: Male
Sexual Orientation: Straight

Re: [RELEASE] Technical Forms - Complete Edition

Post by avatarbr »

richman2 wrote: Sat Apr 15, 2023 11:52 pm
and in label av_bounceedges use the variable bounceform which you gave a value before calling. tbh I never really understood the call thing :) just handled it the way it worked for me. Do as you wish, but remember: The more "codes" you need to know the less likely it is the call will be used frequently or later on. With "codes" I mean codebooks like: In this call 1 = dog, 2 equals cat ... Therefore, I'd say.


One thing though: I actually can't make sense of your code at one point: In the example you call

call av_bounceedges(5,1)

but I do not find a label

label av_bounceedges(x,y):
Yeah, I got some burning out trying to figure that, so I used numbers :lol:

I agree with than text would be easier to use later, I will see if I can make it work. And I want to try to make a variable for the voices too.

Oh, I think I forgot to paste that part. Anyway, here is the more recent changes.
Spoiler: show

Code: Select all

label av_bounceedge(av_bounceform, av_bouncelength):


label av_bounceedgeloop:
    call newpic(pic_static, 1, av_pic_limit)
    if av_bouncelength == 1:
        $av_cnt_rounds = renpy.random.randint(9,10) #short duration. around 2min
    if av_bouncelength == 2:
        $av_cnt_rounds = renpy.random.randint(12,14) #medium duration. 
    if av_bouncelength == 3:
        $av_cnt_rounds = renpy.random.randint(16,18) #long duration. 
    voice "audio/voices/raveenabegin.mp3"
    $renpy.pause(0.8, hard=True)
    if av_bounceform == 1:
        voice "audio/voices/raveenadog.mp3"
    if av_bounceform == 2:
        voice "audio/voices/raveenacat.mp3"
    if av_bounceform == 3:
        voice "audio/voices/raveenasnake.mp3"
    if av_bounceform == 4:
        voice "audio/voices/raveenaeagle.mp3"
    if av_bounceform == 5:
        voice "audio/voices/raveenadragon.mp3"
    $renpy.pause(0.8, hard=True)
    if av_bounceform == 1:
        play sound "audio/beats/dog100.wav" loop
    if av_bounceform == 2:
        play sound "audio/beats/cat100.wav" loop
    if av_bounceform == 3:
        play sound "audio/beats/snake100.wav" loop
    if av_bounceform == 4:
        play sound "audio/beats/eagle100.wav" loop
    if av_bounceform == 5:
        play sound "audio/beats/dragon100.wav" loop
    $renpy.pause(10.0, hard=True)

label av_bounceslowloop:
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bouncedog_end
    $av_speedup_chance = renpy.random.randint(1,100)
   # if av_bouncelength == 1: #maybe include later.
    #    if av_cnt_rounds<=6: #change that for slow/med/long. This will force a speed up if a few rounds passed, so would not be all slow.
  #          jump av_bouncemediumloop
    if av_speedup_chance<=35: #random chance to speed up. 
        jump av_bouncemediumloop
    else:
        if av_speedup_chance>=70: #chance to taunt. Using the same variable because works. Maybe need a new text specific for bounce the edge.
            $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
            trainer "[rd_quotes]{w=2}{nw}"
        $renpy.pause(10.0, hard=True)
        jump av_bounceslowloop

label av_bouncemediumloop:
    stop sound
    voice "audio/voices/raveenamedium.mp3"
    $renpy.pause(0.8, hard=True)
    if av_bounceform == 1:
        play sound "audio/beats/dog120.wav" loop
    if av_bounceform == 2:
        play sound "audio/beats/cat120.wav" loop
    if av_bounceform == 3:
        play sound "audio/beats/snake120.wav" loop
    if av_bounceform == 4:
        play sound "audio/beats/eagle120.wav" loop
    if av_bounceform == 5:
        play sound "audio/beats/dragon120.wav" loop
    $renpy.pause(10.0, hard=True)    
label av_bouncemediumloop2:
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bounce_end
    $av_speedup_chance = renpy.random.randint(1,100)
    if av_cnt_rounds<=4: #change for slow/med/long
        jump av_bouncefastloop
    if av_speedup_chance<=25:
        jump av_bouncefastloop
    else:
        if av_speedup_chance>=70:
            $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
            trainer "[rd_quotes]{w=2}{nw}"
        $renpy.pause(10.0, hard=True)
        jump av_bouncemediumloop2

label av_bouncefastloop:
    stop sound
    voice "audio/voices/raveenafast.mp3"
    $renpy.pause(0.8, hard=True)
    if av_bounceform == 1:
        play sound "audio/beats/dog140.wav" loop
    if av_bounceform == 2:
        play sound "audio/beats/cat140.wav" loop
    if av_bounceform == 3:
        play sound "audio/beats/snake140.wav" loop
    if av_bounceform == 4:
        play sound "audio/beats/eagle140.wav" loop
    if av_bounceform == 5:
        play sound "audio/beats/dragon140.wav" loop
    $renpy.pause(10.0, hard=True)
label av_bouncefastdog2:   
    $av_cnt_rounds-=1
    call newpic(pic_static, 1, av_pic_limit)
    if av_cnt_rounds<=0:
        jump av_bounce_end
    if av_speedup_chance>=70:
        $ rd_quotes=renpy.random.choice(avrndteasequotehouse)
        trainer "[rd_quotes]{w=2}{nw}"
    $renpy.pause(10.0, hard=True)
    jump av_bouncefastdog2

label av_bounce_end:
    stop sound
    voice "audio/voices/raveenastop.mp3"
    $renpy.pause(0.8, hard=True)
    return
I already tested in some of the Edging Training files. BTW, I think I should put a small chance to return to medium after you get to the fast beats.


richman2 wrote: Sat Apr 15, 2023 11:52 pm @avatarbr: I separated your videofiles form the main download. 250MB of 1500MB seemed to be a quick win to shrink file size without running into trouble too fast for ppl who do not download the additional files.
No Problem. I think I had a warning in DH about pleaying that partr only if you downloaded the videos.

Now, a question for everyone: Is 40 min to long for a edge teasing? I am focusing in 10-20min /day in the normal days, but I created a special day and is about 40min. I think I need to put a "sleep" option in the middle, in case is to long. Will have a warning one day before, so you go ready for that.
User avatar
holy_magnas
Explorer
Explorer
Posts: 33
Joined: Thu Jan 21, 2021 12:54 am
Gender: Male
Sexual Orientation: Straight
I am a: Submissive
Dom/me(s): Goddess Tantra
Contact:

Re: [RELEASE] Technical Forms - Complete Edition

Post by holy_magnas »

richman2 wrote: Sun Apr 16, 2023 12:55 am
@holy_magnas As you are that early in the game, I'd advise you to download the new version. You could easily use one of the jump points to jump after the first competition. Against what is in front of you the decisions you take on day 1-6 are neglectable.
Still I warn everyone again who doesnt know: IT IS NOT POSSIBLE TO TAKE SAVE-FILES WITH YOU!
Thanks for the response, I will try the new version 4.5 ^^ really appreciate it!
mandarynkorian
Explorer
Explorer
Posts: 19
Joined: Tue Jan 07, 2020 5:57 pm
Gender: Male
Sexual Orientation: Straight

Re: [RELEASE] Technical Forms - Complete Edition

Post by mandarynkorian »

For a person that finished 3.0, where should I start to see new content?
Post Reply

Who is online

Users browsing this forum: TanyaHumble and 66 guests