borey
Administrators
Version: 0.3.3
Release Date: 2020-01-20
Last Updated: 2020-01-25
Censored: No
OS: Windows, Linux, Mac
Language: English
Genre:
2DCG, Female protagonist, Male protagonist, School setting, Management, Corruption, Ahegao, Anal sex, Bdsm, Bukkake, Group sex, Lesbian, Masturbation, Multiple protagonist, Oral sex, Sexual harassment, Vaginal sex, Virgin
Overview:
Changelog:
Version 0.3.3 should fix the artistery problem (and has new_game_plus defined).
- updated documentation for adding mods to the game
- moved folder mods (empty except for readme.txt) from game/images/mods to game/mods
- moved file backwards_compatible.rpy from core to base mod
- added list of functions to call after value changes so that mods can hook into it: callback_recalculate_stats
- backwards compatibility: added new_game_plus=False
Bugfixes:
- fixed display of banned images/events/characters in the debug screen (noticed by Evergrey)
- fixed backward_compatible initialization: Now properly happens right at game start
- fixed crash in event sensuality1 (if inhibition<=40)
- fixed crash on income (negative upkeep cost) of game objects other than buildings (there where no such game objects in the base game)
v0.3.2
- 2 new images added to existing events
- 2 new events added
- improved the text of some sensuality events
- since reputation consists of a calculated and a static part, its description now discloses the static reputation value.
- centralised code to show period splash screens. Text (Morning/Afternoon/Evening) now shown in bigger font and cursive
- added option for different choice pools in random_select (backwards compatible)
- overhauled and simplified Susans and Marinas dresscode logic:
while Marina continues to dress as she pleases, Susan will more strongly follow what she thinks you want (with same school policies and stats will wear the same clothing)
Balancing:
- effects of nude school uniform made more positive: now increases behavior
- capped lust at 100 for purposes the negative behavior effect if pdas are allowed
- set the stress influence of security 1 (which you start with) to 0, reduced the stress increase per level
- halved the stress increase per level of surveillance
- lowered bdsm upkeep cost (money) to 60% of the old value
- doubled permanent weekly reputation gain/loss due to student stats. Still not much though, with all maxed stats you'll now gain 0.25 reputation per week from it
- added an end of school year reputation boost (at max stats: 5 points), enough to overcome the stat drain from the worsening student stats. Thanks @rhev for the suggestion!
Bugfixes:
- apply_entrance_dilution got applied twice for students getting added midterm, which means they pulled down stats too much
- keep effects of entrance_req_focus from applying weekly, since they apply each day
- improved logic of how an event is picked when dresscode is none - no more nude students other than at dormitory/pool/bath ;-)
- tuition income now bottoms out at 0, instead of turning negate when reputation is below 0
v0.3.1
- added 2 new events to location sensuality
- pair dance event in location sensuality expanded
- adjusted event conditions of sensuality events
- reduced frequency of event office26 once it has reached its end state
- bugfix: fixed crash on weekly effects if bdsm punishments are active
v0.3.0 - Sensuality
Big Picture:
- updated from renpy 7.1.0 to 7.3.5
- new pictures added to existing events
- new events added in existing locations
- a lot of the simply events have been merged, pictures and texts now combining in more variations than the old standalone events
- new location "Sensuality" - unlocks once lust_enhancement isn't "none" anymore
- value dependent tooltips for all student stats - helps players (and mod writers) to know what a stat value actually means
- rollback enabled during the day (but you can't go back to the planning phase, or from the planning phase)
- folded derived stats class into stats: every stat can now have a static and a temporary, and a function and be influenced by game objects
- new event variables (set with arg var=... in the event definition) do not break old saves anymore (they get initialized on load)
- new game objects do not break old saves anymore, which allows mods defining game objects (e.g. clubs) to be added into an ongoing save game
- improved documentation (including the example mod)
Balancing:
- added major new income source in form of the building "Surveillance"
- players starting with outlook "careful" will still get the Susan and Marina blowjob scene later on, so no path will permanently miss it anymore
- reputation overhauled: weekly changes reduced to 1/4, but gets immediate benefits from raising student stats (up to 45 if deviance is 0) and upgrading buildings (up to 40),
starts at 12 instead of 10, max raised from 100 to 150. With this, getting your reputation up should be quicker, but it should slow down instead of speeding up later on.
- added option to raise staff_support to weekly planning
- set image distance from conservative image to normal dresscode to 0.5, and changed default max_img_dist from 0 to 0.5
That means that when the current dresscode is normal, events with only conservative images may still be chosen, widening the event pool
- max_img_dist for all canon dormitory events set to 1 (thanks to img_prefix), meaning the dresscode is less strict in the dormitory, widening the event pool
- for dresscode none, at inhibition<15, students will now often choose to go nude at the bath, the pool, and in the dormitory
- can_be_evil becomes False if your outlook becomes saint/good/nice/charming
- inhibition lowering unlocks are now recognized by the game as a sexual policy (values 0.3, 0.4 and 0.5 for the 3 levels)
- halved positive influence of teaching materials on athletics. It was rising a bit too quickly.
- slightly rebalanced bdsm (tilted more towards improving behavior)
API Additions:
- new tag "flavor" for images, letting you easily change small details of an event depending on the image chosen (for events with randomized images)
- new class Person, which allows writing text for both genders at once easily, or for one or multiple persons
- new class base in mod base, to provide function results as properties for renpy text interpolation
- img_e event definitions can now take tags "c:","ch:","e:" and "u:" tags, which work exactly like in the image definitions. Documentation updated for it.
- You can now specify tags or keyword arguments in the img_prefix function, and they will be picked up by image definitions and img_e event definitions
- all game objects now have 'age' and 'days_since_change' properties, so events can check for older buildings, established policies, ...
- added variable 'initializing' which code can use to check whether we are loading up the game (when data structures might still be missing)
- new method img_copy, which allows using one image in multiple image groups
- new stat "staff" (was just a function before), making it visible in the gui, and allowing it to be influenced by game objects (policy "lust_enhancement" raises it by one if not "None")
- tag alias "u:dressed" added as short hand for all dresscode neither "nude" nor "none" (i.e. "u:sexy","u:normal" and "u:cons")
- event variables added: current_img_o, current_img_sweep, main_img_o, main_img_sweep
- set_img(): new parameter tf (replaces tf tags of image instead of adding to them like at_list does)
- added convenience function event_happened()
- random_say: <say> argument can now alternatively be given an array of strings instead of a string. Will be said one after another.
<speaker> may be an array in that case as well (at least as long). "if" and "else" may now be combined
- new function image_for("class") - may be expanded for more situations later
- new function set_img_letter, to make working with images named like bath2-1a.jpg,bath2-1b.jpg,... easier
- new convenience function img_lettered, returns whether set_img_letter would change the image
API Changes:
- logic change: the current event is only marked as executed once it has concluded, instead of before
- current_event is now set during evaluation of which event to execute. That means that you can use it in any functions called in the condition string
- sexy_slaves is now a variable instead of a function, toggled on by the Susan/Marina blowjob scene (contains day when it got toggled)
- event variables renamed: current_scene_img -> current_img; main_scene_img -> main_img
- set_img(): now defaults to transition None if the name of the displayed image does not change
- set_img(): trans_scene_continues now defaults to fade instead of None
- Unlock class changes:
--def_active=True instead of False (now equals the default of GameObjects, so more consistent)
--now uses "unlock_effect" for things to happen on unlock, instead of "effect" (so effect is for weekly effects for all GameObjects, so more consistent)
--unlock objects are now enabled once they are unlocked, allowing for weekly effects and stat influences
--removed property "unlocked", since it can now be more generally be provided by "enabled"
- Rule class: upchange_stress=0 instead of 1 (now equals the default of GameObjects, so more consistent)
- GameObject class: does not have a keyword argument def_unlockable anymore, instead unlockable says whether the unlock object will be generated active. Stored variable for it eliminated.
- functions support_difficulty and support_difficulty_inv removed, replaced with max(...,0) calls
- redefined 'force_prio', it is now a shortcut for executing an event once only
Small Changes:
- display year in main menu
- location tooltips in main menu
- game object age is displayed in menus (above return button) if "More Numbers" Option is enabled
- event_happened() and event.happened().eval() now return the day the given event last happened instead of True (fully backwards compatible).
- unlocks of hidden policies are now hidden, and unhide once the policy becomes visible
- made stat recalculations more efficient (game object influence, temp stress)
- tag strings "<key>:<value>" as used in the image definitions, are now checked for valid keys, and in the case of "c:<content>" for valid content types
- the tag parser now checks dresscode tags against the registered dresscodes
- added a (commented out) example_fightclub to the example mod (with one event with one picture, with placeholder text). Just as a starting point...
- wished_dress is now only set once per events selection instead of once per picture choice
- simplified code to remove population_new - it was left over from before population became a stat
- increased text size of date displayed before main screen. Makes it readable in autosave screenshots.
Debugging:
- the debug screen now tries to guess the act and period from the label name when you call an event
- the debug screen will allow rollback, until you hit the return button (to the main screen), at which point the events are committed
- the debug screen now shows a list of banned characters,images and events (not modifyable)
- the debug screen now displays the state of the event variable of the event last run from the debug screen, if it has any
- the debug screen now displays the total game days and allows setting it. This makes time jumps possible when debugging events
- switched event evaluation of strings from eval to myeval. This gives error messages containing the string which was evaluated, making for easier debugging.
- now running the evalutation of all events on game load - allows early catching of syntax errors in event conditions
Bugfixes:
- added missing return in event gym14
- debug screen now allows setting lower inhibition after the unlock (min_hint and max_hint now update dynamically)
- the game now remembers changes you made in the current planning phase if you save and reload (might have worked in some older version?)
- keep game from crashing when trying to unban an event/image/character which is not banned (simply don't do anything)
- trying to ban an event during event setup just crashed the game. Dead code which never worked. Now it does, and is used.
- the first transition of the day also counts as first transition of the event
- being charming had goodness 0 instead of 1
- there where some stat changes of pattern stat+=<n> instead of stat_o.value+=<n> This led both to misattributions in the "Stat changes" screen, and in plain wrong stat changes
- updated documentation for adding mods to the game
- moved folder mods (empty except for readme.txt) from game/images/mods to game/mods
- moved file backwards_compatible.rpy from core to base mod
- added list of functions to call after value changes so that mods can hook into it: callback_recalculate_stats
- backwards compatibility: added new_game_plus=False
Bugfixes:
- fixed display of banned images/events/characters in the debug screen (noticed by Evergrey)
- fixed backward_compatible initialization: Now properly happens right at game start
- fixed crash in event sensuality1 (if inhibition<=40)
- fixed crash on income (negative upkeep cost) of game objects other than buildings (there where no such game objects in the base game)
v0.3.2
- 2 new images added to existing events
- 2 new events added
- improved the text of some sensuality events
- since reputation consists of a calculated and a static part, its description now discloses the static reputation value.
- centralised code to show period splash screens. Text (Morning/Afternoon/Evening) now shown in bigger font and cursive
- added option for different choice pools in random_select (backwards compatible)
- overhauled and simplified Susans and Marinas dresscode logic:
while Marina continues to dress as she pleases, Susan will more strongly follow what she thinks you want (with same school policies and stats will wear the same clothing)
Balancing:
- effects of nude school uniform made more positive: now increases behavior
- capped lust at 100 for purposes the negative behavior effect if pdas are allowed
- set the stress influence of security 1 (which you start with) to 0, reduced the stress increase per level
- halved the stress increase per level of surveillance
- lowered bdsm upkeep cost (money) to 60% of the old value
- doubled permanent weekly reputation gain/loss due to student stats. Still not much though, with all maxed stats you'll now gain 0.25 reputation per week from it
- added an end of school year reputation boost (at max stats: 5 points), enough to overcome the stat drain from the worsening student stats. Thanks @rhev for the suggestion!
Bugfixes:
- apply_entrance_dilution got applied twice for students getting added midterm, which means they pulled down stats too much
- keep effects of entrance_req_focus from applying weekly, since they apply each day
- improved logic of how an event is picked when dresscode is none - no more nude students other than at dormitory/pool/bath ;-)
- tuition income now bottoms out at 0, instead of turning negate when reputation is below 0
v0.3.1
- added 2 new events to location sensuality
- pair dance event in location sensuality expanded
- adjusted event conditions of sensuality events
- reduced frequency of event office26 once it has reached its end state
- bugfix: fixed crash on weekly effects if bdsm punishments are active
v0.3.0 - Sensuality
Big Picture:
- updated from renpy 7.1.0 to 7.3.5
- new pictures added to existing events
- new events added in existing locations
- a lot of the simply events have been merged, pictures and texts now combining in more variations than the old standalone events
- new location "Sensuality" - unlocks once lust_enhancement isn't "none" anymore
- value dependent tooltips for all student stats - helps players (and mod writers) to know what a stat value actually means
- rollback enabled during the day (but you can't go back to the planning phase, or from the planning phase)
- folded derived stats class into stats: every stat can now have a static and a temporary, and a function and be influenced by game objects
- new event variables (set with arg var=... in the event definition) do not break old saves anymore (they get initialized on load)
- new game objects do not break old saves anymore, which allows mods defining game objects (e.g. clubs) to be added into an ongoing save game
- improved documentation (including the example mod)
Balancing:
- added major new income source in form of the building "Surveillance"
- players starting with outlook "careful" will still get the Susan and Marina blowjob scene later on, so no path will permanently miss it anymore
- reputation overhauled: weekly changes reduced to 1/4, but gets immediate benefits from raising student stats (up to 45 if deviance is 0) and upgrading buildings (up to 40),
starts at 12 instead of 10, max raised from 100 to 150. With this, getting your reputation up should be quicker, but it should slow down instead of speeding up later on.
- added option to raise staff_support to weekly planning
- set image distance from conservative image to normal dresscode to 0.5, and changed default max_img_dist from 0 to 0.5
That means that when the current dresscode is normal, events with only conservative images may still be chosen, widening the event pool
- max_img_dist for all canon dormitory events set to 1 (thanks to img_prefix), meaning the dresscode is less strict in the dormitory, widening the event pool
- for dresscode none, at inhibition<15, students will now often choose to go nude at the bath, the pool, and in the dormitory
- can_be_evil becomes False if your outlook becomes saint/good/nice/charming
- inhibition lowering unlocks are now recognized by the game as a sexual policy (values 0.3, 0.4 and 0.5 for the 3 levels)
- halved positive influence of teaching materials on athletics. It was rising a bit too quickly.
- slightly rebalanced bdsm (tilted more towards improving behavior)
API Additions:
- new tag "flavor" for images, letting you easily change small details of an event depending on the image chosen (for events with randomized images)
- new class Person, which allows writing text for both genders at once easily, or for one or multiple persons
- new class base in mod base, to provide function results as properties for renpy text interpolation
- img_e event definitions can now take tags "c:","ch:","e:" and "u:" tags, which work exactly like in the image definitions. Documentation updated for it.
- You can now specify tags or keyword arguments in the img_prefix function, and they will be picked up by image definitions and img_e event definitions
- all game objects now have 'age' and 'days_since_change' properties, so events can check for older buildings, established policies, ...
- added variable 'initializing' which code can use to check whether we are loading up the game (when data structures might still be missing)
- new method img_copy, which allows using one image in multiple image groups
- new stat "staff" (was just a function before), making it visible in the gui, and allowing it to be influenced by game objects (policy "lust_enhancement" raises it by one if not "None")
- tag alias "u:dressed" added as short hand for all dresscode neither "nude" nor "none" (i.e. "u:sexy","u:normal" and "u:cons")
- event variables added: current_img_o, current_img_sweep, main_img_o, main_img_sweep
- set_img(): new parameter tf (replaces tf tags of image instead of adding to them like at_list does)
- added convenience function event_happened()
- random_say: <say> argument can now alternatively be given an array of strings instead of a string. Will be said one after another.
<speaker> may be an array in that case as well (at least as long). "if" and "else" may now be combined
- new function image_for("class") - may be expanded for more situations later
- new function set_img_letter, to make working with images named like bath2-1a.jpg,bath2-1b.jpg,... easier
- new convenience function img_lettered, returns whether set_img_letter would change the image
API Changes:
- logic change: the current event is only marked as executed once it has concluded, instead of before
- current_event is now set during evaluation of which event to execute. That means that you can use it in any functions called in the condition string
- sexy_slaves is now a variable instead of a function, toggled on by the Susan/Marina blowjob scene (contains day when it got toggled)
- event variables renamed: current_scene_img -> current_img; main_scene_img -> main_img
- set_img(): now defaults to transition None if the name of the displayed image does not change
- set_img(): trans_scene_continues now defaults to fade instead of None
- Unlock class changes:
--def_active=True instead of False (now equals the default of GameObjects, so more consistent)
--now uses "unlock_effect" for things to happen on unlock, instead of "effect" (so effect is for weekly effects for all GameObjects, so more consistent)
--unlock objects are now enabled once they are unlocked, allowing for weekly effects and stat influences
--removed property "unlocked", since it can now be more generally be provided by "enabled"
- Rule class: upchange_stress=0 instead of 1 (now equals the default of GameObjects, so more consistent)
- GameObject class: does not have a keyword argument def_unlockable anymore, instead unlockable says whether the unlock object will be generated active. Stored variable for it eliminated.
- functions support_difficulty and support_difficulty_inv removed, replaced with max(...,0) calls
- redefined 'force_prio', it is now a shortcut for executing an event once only
Small Changes:
- display year in main menu
- location tooltips in main menu
- game object age is displayed in menus (above return button) if "More Numbers" Option is enabled
- event_happened() and event.happened().eval() now return the day the given event last happened instead of True (fully backwards compatible).
- unlocks of hidden policies are now hidden, and unhide once the policy becomes visible
- made stat recalculations more efficient (game object influence, temp stress)
- tag strings "<key>:<value>" as used in the image definitions, are now checked for valid keys, and in the case of "c:<content>" for valid content types
- the tag parser now checks dresscode tags against the registered dresscodes
- added a (commented out) example_fightclub to the example mod (with one event with one picture, with placeholder text). Just as a starting point...
- wished_dress is now only set once per events selection instead of once per picture choice
- simplified code to remove population_new - it was left over from before population became a stat
- increased text size of date displayed before main screen. Makes it readable in autosave screenshots.
Debugging:
- the debug screen now tries to guess the act and period from the label name when you call an event
- the debug screen will allow rollback, until you hit the return button (to the main screen), at which point the events are committed
- the debug screen now shows a list of banned characters,images and events (not modifyable)
- the debug screen now displays the state of the event variable of the event last run from the debug screen, if it has any
- the debug screen now displays the total game days and allows setting it. This makes time jumps possible when debugging events
- switched event evaluation of strings from eval to myeval. This gives error messages containing the string which was evaluated, making for easier debugging.
- now running the evalutation of all events on game load - allows early catching of syntax errors in event conditions
Bugfixes:
- added missing return in event gym14
- debug screen now allows setting lower inhibition after the unlock (min_hint and max_hint now update dynamically)
- the game now remembers changes you made in the current planning phase if you save and reload (might have worked in some older version?)
- keep game from crashing when trying to unban an event/image/character which is not banned (simply don't do anything)
- trying to ban an event during event setup just crashed the game. Dead code which never worked. Now it does, and is used.
- the first transition of the day also counts as first transition of the event
- being charming had goodness 0 instead of 1
- there where some stat changes of pattern stat+=<n> instead of stat_o.value+=<n> This led both to misattributions in the "Stat changes" screen, and in plain wrong stat changes
Developer Notes:
This is a completely rewritten version of Ashford Academy!
The canon events of Ashford Academy work as is (and so should events from mods), but I am only including the events I have converted in this upload.
Conversion means that the events use the new systems I have build, and the stat values are adjusted to better fit this version.
I want to give a huge huge thank you to Ashford at this point! If he had not put his project under the GPL, I never would have even considered modifying the code base. :-D
My initial itch was having the pictures match the currently active dresscode (school uniform), but it just grew and grew from there.
During the coming weeks I intend to port over all of the (non-story) events from canon. I have done enough of them by now to know this is just a matter of steady work.
After that is done, I intend to add more rules, policies, clubs, ...
And I would very much enjoy help of any kind. I have kept the spirit of the original game and made this extremely mod friendly. So if somebody wants to e.g. port over the story events and expand on them, please go ahead!
If anybody wants to help, then the first thing that would really help would be to fill in the picture placeholders ("800x600"). Or just try to make a mod with events as explained in the readme. ;-)
Otherwise, just try it out, tell me what is broken, and give me constructive feedback.
I'll reserve the following posts for a changelog of future versions and the readme describing the project - both on its own, and in terms of changes in comparison to vanilla Ashford Academy.
Please let me know if there is a problem with the mediafire links or if the game does not start. I have unpacked and started the distributed game version under Linux and Windows, I don't have a Mac to test.
The canon events of Ashford Academy work as is (and so should events from mods), but I am only including the events I have converted in this upload.
Conversion means that the events use the new systems I have build, and the stat values are adjusted to better fit this version.
I want to give a huge huge thank you to Ashford at this point! If he had not put his project under the GPL, I never would have even considered modifying the code base. :-D
My initial itch was having the pictures match the currently active dresscode (school uniform), but it just grew and grew from there.
During the coming weeks I intend to port over all of the (non-story) events from canon. I have done enough of them by now to know this is just a matter of steady work.
After that is done, I intend to add more rules, policies, clubs, ...
And I would very much enjoy help of any kind. I have kept the spirit of the original game and made this extremely mod friendly. So if somebody wants to e.g. port over the story events and expand on them, please go ahead!
If anybody wants to help, then the first thing that would really help would be to fill in the picture placeholders ("800x600"). Or just try to make a mod with events as explained in the readme. ;-)
Otherwise, just try it out, tell me what is broken, and give me constructive feedback.
I'll reserve the following posts for a changelog of future versions and the readme describing the project - both on its own, and in terms of changes in comparison to vanilla Ashford Academy.
Please let me know if there is a problem with the mediafire links or if the game does not start. I have unpacked and started the distributed game version under Linux and Windows, I don't have a Mac to test.