Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

grywec

357
Posts
4
Topics
2
Followers
A member registered May 18, 2020

Recent community posts

(1 edit)
The second section is supposed to update the maximum amount of scenes each girl has so that the map screen knows when to grey out the icons.

this is not really needed, it would be imo better to set those centrally as constants (the value is unchangeable in a game play and only updated with new releases).


set them all in wca_fix.rpy and remove from update0 and update

    #maxquest
    define aoibheann_maxquest = 0
    define amano_maxquest = 0
    define ambriel_maxquest = 0
    define ashira_maxquest = 0
    define ashley_maxquest = 0
    define mouse_maxquest = 4
    define blossom_maxquest = 2
    define cecilia_maxquest = 0
    define lydia_maxquest = 0
    define druthari_maxquest = 2
    define dwel_maxquest = 0
    define ember_maxquest = 0
    define eshtel_maxquest = 0
    define eyleth_maxquest = 0
    define galka_maxquest = 1
    define gillie_maxquest = 0
    define harai_maxquest = 0
    define harpy_maxquest = 0
    define jade_maxquest = 2
    define kageshini_maxquest = 0
    define kanako_maxquest = 1
    define krin_maxquest = 0
    define lirum_maxquest = 0
    define maika_maxquest = 0
    define mayyah_maxquest = 2
    define clements_maxquest = 0
    define nemlyn_maxquest = 0
    define nichiri_maxquest = 0
    define nook_maxquest = 1
    define phoebe_maxquest = 0
    define river_maxquest = 0
    define rukah_maxquest = 2
    define saarya_maxquest = 0
    define saffryn_maxquest = 0
    define serafina_maxquest = 2
    define senia_maxquest = 0
    define tilai_maxquest = 3
    define venrae_maxquest = 0
    define wither_maxquest = 1
    define yuka_maxquest = 0
    define zira_maxquest = 0
    define fia_maxquest = 0
    define inphyy_maxquest = 0
    define homura_maxquest = 0
    define hilda_maxquest = 0
    define padget_maxquest = 0
    define cerros_maxquest = 0
    define ibti_maxquest = 0
    define petra_maxquest = 1
    define shoo_maxquest = 0
    define mimic_maxquest = 0

I DID just realize that the _met variables aren't in update1 and I wonder if I shouldn't just package it all into the same update label and just call it again on after_load. but the suggestion was, let's say I added a new character, Lydia, who would then wait to be unlocked. That comes with all new variables. So in the example I was given, using the exact syntax the user gave me, this is what I would have

it will not really be possible to introduce DLC chars w/o *any* changes in the base game, for the free time map you *will* need to use at least the _met and _maxquest variables in character_book.rpy


therefore it makes sense to set them always to default values (i.e. "not met") in a global file, for the _met variables again wca_fix.rpy and remove them from update0 and update1 - the only missing ones are

    default lydia_met = 0
    default hilda_met = 0
    default mimic_met = 0

update0 is unused now, all the variable setter are superfluous (already done with sensible "default" and "define" values) and can be deleted

you only have to set the initial _met values in wca_fix to the actually needed one (e.g. barirmouserd_met was set in update0+1 to "1" instead of "0" - so it needs to be changed to "default barirmouserd_met = 1" in the wca_fix file

By deleting the S, "global" turns purple. I have no idea what that means lol, or even if either of these will work.

cannot really give you much insight into this one, globals() is part of python (https://www.programiz.com/python-programming/methods/built-in/globals) and global also a python keyword (the reason why your editor highlights it)

I know though that hasattr() [also pure python] works

replacing

if "lydia_met" not in globals():

with

if not hasattr(renpy.store, 'lydia_met'):

does what you want (or at least how I understood your question)

save game compatibility

you're very very close, only 2 variables are still not handled.

add to wca_fix.rpy, will be correctly set in update1 (loaded game) or start (new game)

    default season1 = False

and as part of label update1

<pre>
    if not hasattr(renpy.store, 'time'): # this can only happen in save games created before the new map was introduced
        $ time = "weekend"
Care to hop in my Discord and chat with me there?

depends, hwo much policing is going on in your community at the moment? some time in season 1 you had a variable issue and wrote about it on itch. I posted a possible approach in your discord and got a few moments later a DM by a, afaik, normal member with the content "delete this NOW, Victor does not want the char name disclosed" (or at least very similar)

(2 edits)

something like this?

# store this file as e.g. loadcorrections.rpy in the game/ directory
# I only user the special label after_load (https://www.renpy.org/doc/html/label.html#special-labels) for the examples
# as this one in nicely encapsulated with a specific trigger condition: it is run once when a saved game is loaded
# add it to the existing after_load in script.rpy:161 with e.g. "call variable_check_examples"
# some of the examples will introduce variables prefixed with gry__, they will pollute the saves you are using to play
# around but should not break anything, even after removing the script from your dev build
# this PoC is based on itch's public version 0.2.3.14
label variable_check_examples:
    # simple example, as minimalistic as possible, to show the usage
    # it uses one of the early variables in the game, try it with loading a game safed before and after 'label s2e1satevtexts' happened
    if hasattr(renpy.store, 'sfpts'):
        "You texted with Saffryn and she gave you [sfpts] stars."
    else:
        "Not even played until the first evening? Or ignored all texts?"
    # more conplex, using again the variable above
    # assumption: later on you need to know which texts from Saffryn the player read 
    # but you cannot decide this directly as the text trigger variable (sftxt) is reused (set to true again in 'label s2e2eve')
    # here you can combine the state of more than one variable to pinpoint the save game progress
    # you added the missing variables to the normal game flow scripts ("default gry__sf_1st_text_read = False", in the fitting label "$ gry__sf_1st_text_read = True")
    # but you need to fix it in existing saves, too
    if not hasattr(renpy.store, 'sftxt'):
        "S2E1/S2E1.rpy:570, do nothing"
    else:
        "at least reached the texting label of the first evening"
        if hasattr(renpy.store, 'sfpts'):
            "the first text from Saffryn was not ignored"
            "setting the correct value for the tracking variable gry__sf_1st_text_read"
            $ gry__sf_1st_text_read = True
    # assumption: you need to know if the player tried to enter the book nine times and the actual script reads now (S2E1/S2E1.rpy starting at 484):
    ##
    #    "Text Gillie":
    #        default gry__little_shit_barely_missed = False
    #        if s2retries == 9:
    #            $ gry__little_shit_barely_missed = True
    #        #Aurum ponders for a minute while sitting on the chair he was just thrown into..again.
    #        scene s2e1read19
    #        stop music fadeout 3.0
    #        "This isn't working... but I have a feeling that I'm not really in any mortal danger with her."
    ##
    if not hasattr(renpy.store, 'gry__little_shit_barely_missed'): # just to be sure that the variable _is_ set
        default gry__little_shit_barely_missed = False
    if s2retries == 9: # this variable is always set, already initialised with 'default s2retries = 2'
        $ gry__little_shit_barely_missed = True
    # and one more, here you had for whatever reason to retcon even more and the player has to decide if something happened
    # again fixed in the fixed release within the game flow but you need to set the correct values in existing saves
    # to nag the player only once and only in unpatched save games you need to add another tracking variable.
    # I used 'label s2e2firstpatrol' as example, in the corrected release you have something like
    ##
    #    s "We trust you can remain professional."
    #    s "You can, can't you?"
    #    # retcon starts
    #    default gry__mc_professional = False
    #    menu:
    #        "Yes":
    #            $ gry__mc_professional = True
    #            $ gry__mc_professional_loadcorrection_tracker = True # note: no default!
    #        "I'll try my best":
    #            $ gry__mc_professional = False # redundant actually, but whatever
    #            $ gry__mc_professional_loadcorrection_tracker = True # note: no default!
    #    # retcon ends, remainder of the original scene
    #    # [..]
    #    $ mainquest = 4
    #    # [..]
    ##
    # now you'll only have to ask the player once in after_load
    if mainquest >= 4 and not hasattr(renpy.store, 'gry__mc_professional_loadcorrection_tracker'):
        "Serafina asked you if you can remain professional around half-naked security members."
        menu:
            "You replied"
            "Yes":
                $ gry__mc_professional = True
                $ gry__mc_professional_loadcorrection_tracker = True
            "I'll try my best":
                $ gry__mc_professional = False
                $ gry__mc_professional_loadcorrection_tracker = True
    return

ah, sounds plausible, certainly worth a try then with global()

when everything fails, this should work, using the underlaying python interpreter to access renpy's variable store


if hasattr(renpy.store, variable):
    # 'variable' is defined
else:
    # 'variable' was never set/used before

keep up the great work, 'twas a fun ride so far

could work but I thought global variables have to be declared separately and it does not return local variables?

but don't trust me on that, it's half-forgotten half-knowledge :D

and the 'little shit' characterisation makes me even _more_ curious, looking forward to see her arc unfold

> one-time popup

"label after_load" with conditions (e.g. a block where you set a tracking var [loadcorrectionseen = True or whatever] and the block is only run when loadcorrectionseen != True)

the gargoyle lady is the most intriguing addition. kind if stiff, though, and not a talker it seems :)

> so until I figure out how to add previously undefined variables

you have a few approaches for this

* add missing variables with "default bla = value" to initialise them with a base value, when they already had a different value in the save game they are not touched

* use "label after_load" with constructs (in pseudo-code) like "if <var> is unset / <var> = <bla>" (or open a menu to ask the user, or check the value of old vars to set the new value, ...)

* catch missing vars in the game flow to open a menu and ask the user (or silently set the vars) [after_load is probably easier and better to manage]

this one I know: TM means 'this millenium' :D

and yay for the release, luckily I have other platforms available

(1 edit)

at least "bg masturbate pillow (22)" is used and can be reached in a legal play-through w/o shenanigans , the reason I noticed it (and started the linter to take a more systematic look): Riding pillow -> Nude -> Scarlet joins -> 'Do you want to join me'. renpy tries (and fails) to load it in masturbation_new.rpy:311.

and seriously: lint is your friend :D

scenes/sexy party/sexy_party_pt1.rpy:385 reads currently '"Question 4" "Who painted the Mona Lisa?"' but that was the question of the first exam

the image "bg masturbate pillow (22)" (used 3 times in masturbation_new.rpy) is missing. 

you're aware of the linter[0]? only a static code analysis but this is one of the error classes found by it (quite a few missing images, btw, run against the version I downloaded on itch)

[0] https://www.renpy.org/doc/html/developer_tools.html#lint

thanks for the ping, it was needed :)

thank you!

I feel slightly stupid but still have to ask: how does one start the dungeon?

you need to extract the scripts archive in the game folder with rpatool or similar. I forgot if the release includes only compiled scripts or the sources, too. if the first you need something like unrpyc to decompile the code.

that was fun. wouldn't mind to see more of the offchapter episodes, once in a while

my 2 cents:

when you are not already established a long rework break will cost you supporters and it is possible that you lose interest in the game - the announcement of a rework is too often the last time one sees something about a game. would be a shame for this one, I quite like it :)

when you want to retouch the game: sure, fire away and have fun. but try to combine new content with updated older scenes in one release.

my main issues with the current game is:

* navigation in the convent. so painful, it is unclear if one of the blobs makes you rotate, moves back or leads to a different area. everything w/o a quick link can only be reached by randomly clicking around, I am simply too stupid to understand your approach :D

this could be mitigated by implementing a map-based navigation only for this area (probably quite a lot of work) or when you give the "navigation blobs" unique names as mouse-over text or similar. give me a chance to see where I end

* overarching story. both the MC and Momo are kind of colourless and don't show real interest, the strongest character is imo Melinda, showing initiative and driving the interactions between the persons. I don't mind a bumbling MC much (player agency is reduced with such a PC but I'm fine with simply along the ride) but what about Momo? that she's lazy and does not like to help fits her char well. but she should be *highly* interested to get mor followers and should be much more pushy, forcing the MC to find more potential nuns. and she ought to be socializing a lot with everyone, to spread the word. as goddess she's gone when she is forgotten.

* mini games. I hate them. sorry, completely my fault. it would be great when you'd provide an option to disable them - I am sure I am not alone disliking such game features and not everyone is able to patch the scripts to make them go away

yay, new release!

I stumbled over two issues

missing image

OSError: Couldn't find file 'scene/heramael/heramael_room_sex.webp'.

the new life scene cannot be triggered when not catching the exact right moment.

the conditions in interaction.rpy:313 are too strict, the variables champion_story and izanamiEvent can get higher in 0.86 and it is not possible to trigger the scene anymore. I patched it with

if heraEvent >= 23 and syxia_new_life == False and champion_story >= 55 and izanamiEvent >= 19:

another small inconsistency happens in hana_trust_event_09.rpy in the menu option "What do you use to clean yourself?"

here you use "if hana_affection_event_04_buy_brush == True:" as trigger (line 123) for a "thanks for the brush" line but actually you should use "hana_affection_event_04 == True" (buy_brush only tracks that MC bought the brush, giving it to her changes the variable I proposed)

just noted a third one in it: when MC buys the clothes the variable "hana_casual_clothes_flag" is set (line 526) but not "hana_casual_clothes_give_flag".

it was quite confusing when I played the "Give her the casual clothes" scene and she was totally surprised about the outfit she already owned :D

in hana_trust_event_07.rpy are a couple of minor mishaps

* starting at line 977 ("Rina likes computers"). when MC bought the clothes for Hana she is so emberassed that she cannot say anything in this section :)

* line 1117: "$ hana_trust_event_07_shop_choice1 == True" should be " = True", otherwise the dialogue cannot be exhausted

and thanks for the game!

(2 edits)

hope you plan a sequel. I propose "Guardians of Freedom Academy of Exercise" as working title (until one with a good abbreviation is found)

----

edit: Free University of Csomething and Knowledge?

yay!


most important question: will you keep up the hexadecimal versioning scheme for future releases? :)

"fixing" :P

looking forward to see the plot unfold, I had fun so far!

(to nag some more: it would be nice to have Moglin's summon scene in the replays, like you did it with Krryie)

the clothing store in a new game is b0rken (starts with a screen not found exception when selecting it from the map and even fixing this to an existing, plausible-sounding screen does not work, Clother_store.rpy looks barely half-finished with close to no content).

is this to be expected?

ha :)

my lips are sealed

chapter_15.rpy:838 reads '$ marrying = "alex"', in a conversation with Cassandra on her non-harem path. This will be a fun surprise for anyone trying to get her ending :D

regarding 0.19, the one public on patreon, with two small logic issues:

story_other.rpy:6627: this should be "if marisa_end_bad_seen == "no":", otherwise the text makes no sense

story_combo.rpy:18: the two conditions blocks separated by 'or' are identical. in my game the scene triggered but you should take a look at the long list of and-chained variables

very nice release, thank you!

yay, new release!


and, fwiw, a handful of typos

script.rpy:31954: emited->emitted

script.rpy:30465: fullfilled->fulfilled

script.rpy:35189: happend->happened

script.rpy:27779: heared->heard

script.rpy:26620: nothern->northern

script.rpy:31839: roomate->roommate

script.rpy:31349: didnt->didn't

script.rpy:18014: isnt->isn't

script.rpy:34499: lets->let's

script.rpy:28501: wont->won't

script.rpy:31428: wont->won't

script.rpy:28755: throwen->thrown it / less then->less than

script.rpy:30948: more then->more than

script.rpy:33576: more then->more than

and when you're touching the lore screens: using the mouse wheel to scroll in the text boxes would be appreciated.

excellent update with a lot of plot development. thanks!

I stumbled of "right of passage" (story_combo.rpy:2052) - it's "rite of passage" :D

(twice more on the scripts, story_sammy.rpy:2669 and story_sammy.rpy:2869)

thanks for the great story!

and something's wrong with Kate's replay gallery: "ivent_syss_sex_action_kiss" is jump target for 3 scenes (one one page 2, two on page 3)

great, you're back!

in the translation is an incorrect variable, crashing the game:

Telephone.rpy in line 679 uses "lyt" insteald of the correct "lit"

'gg "Maybe [lyt] can figure out how to make money..."'

just a heads up: when loading a game from the previous version and opening the third icon on the phone the game crashes with

"AttributeError: 'Characters' object has no attribute 'Collared'"

the added variables are created in "label v0_22", triggered by "label script4", this one part of a scene in day 10 - but I am still in day 9.

this should solve automagically when I progress the game but you may take look at the renpy label "after_load" (https://www.renpy.org/doc/html/label.html#special-labels), specifically meant for stuff like setting variable default values 

for the Collared one you could use something like:

- check if the variable exists in the character object

- if not: set to False


with that out of the way: back to playing. I'm very curious how the plot develops :)

"

Lomeg explodes. All your comrades flee and you are overwhelmed by the opposite forces.

THE END

"

As weird as expected. Thanks!


Tiny inconsistency (I guess): Character card of Nara defines her as "Vana, Lutum" and says "and part... err, what was Iggdra again" - but Iggdra's card has unknown for race. Shouldn't this be Lutum? (She even says it: 'We, the Lutum, ...")


And after I noticed this I made the grave mistake to pay more attention. Have fun:

amulett->amulet

gramps1.rpy:839

d8.rpy:1389

d8.rpy:1415

d8.rpy:1417

d8.rpy:1425

d8.rpy:1452

d8.rpy:1466

d8.rpy:1470

vars.rpy:256


commited->committed

gramps1.rpy:672


existance->existence

gramps1.rpy:122


loosing->losing

d8.rpy:1421


payed->paid

options.rpy:46


realy->really

d7.rpy:599


seing->seeing

d8.rpy:1153


cant->can't

d4.rpy:408

d6.rpy:65

d3.rpy:2266

d2.rpy:1035


lets->let's

d6.rpy:2197


wether->whether

d8.rpy:69

d8.rpy:1504


d8.rpy:1748:    mc "Two and two, it's safer that way."

Speaker should be "p" instead of "mc"


d8.rpy:1772:l abel d8searchni_proom

In this label the secondfloor screen is called but it seems some tracking variables a FUBARed - the first time entering Lilibet's and Laurie's room plays the search scene, repeating this show only the generic 'room at night' label.


yor->your

d8.rpy:2544

ep2v2.rpy line 2237ff (ask for a favor but Ivanka is not willing to): 

here the variable ep2v2_asked_ivanka_favor is set to True, this could mess up later scenes - the favor was, per the story, not given and the player has to pick another menu option

ep2v2::2178 "An antibiotic agent needs to be created to kill the virus.":

antibiotics don't work against viruses, did you not pay attention in the covid era? :D

when giving thongs to Myra the gift logic for Alina is used.

in chicas.rpy::6614 and follwoing line - all checks (level caps etc) and jumps (e.g. back to Alina's gift menu instead of back to Myra)

ah wait, found it - it does nothing when it would be over the max die value, in this case the 4 I already placed in the slot.

this was unexpected, from the combat tutorial I expected a flat bonus, not only the manipulation of the die roll