This update adds the "Meet" option for your Forsaken, a sort of minigame where you can have a detailed, step-by-step sex scene with them. Each individual action is tracked, so if you start groping your partner, she might respond by pushing you down onto your back, and then it would be your turn to decide how to respond. This is significantly different from the previous versions' sex scenes which proceed without much (if any) direct input from the player.
The relative position of the participants is tracked, and most body parts can only be used for one thing at once (so that, for example, if you're receiving a handjob, you need to have your partner stop before you can move on to outright sex). The emotions and physical state of the participants are also tracked, and they're influenced strongly by your partner's personality and what you're doing to her. In general, disobedient Forsaken will resist whatever you do while obedient ones will cooperate. However, Forsaken who are turned on will be more inclined to do sexual things, and Forsaken who are angry or tired will want to stop. This extends to the actions they choose for themselves: for the first time, Forsaken can offer their virginities to the player directly.
This system deliberately doesn't have too much interaction with the main gameplay loop. It can be used to (for example) take a Forsaken's virginity in a gentle way that doesn't increase her Hostility score, but this is trivial to do and isn't meant to present a gameplay challenge. Instead, it's meant as a way to get to know your Forsaken better and see what their various stats actually mean in terms of what they're willing to do for you. The only main gameplay loop-related restriction is that you can't visit them more than once in a day, but this is just for flavor reasons. You can relax and have a comfy time playing with your Forsaken as often or as little as you want.
The current list of available actions is quite short, but now that the framework has been programmed, adding more is very easy. I'll be doing so immediately, as the next update will add the third Distortion path, which involves having custom sex scenes with the Chosen as well.
Click here to download. Mirror.
- Content: Added the "Meet" option for the player's Forsaken.
- Content: Forsaken can now recognize female Demon Lords.
- Content: Added one new face to the default portrait pack.
- Balance: When a basic Commander capture and a surround are both possible, the player may now choose to use either.
- Bugfix: Aversion-type Forsaken will no longer be incorrectly described as penetrating virgin Chosen when adding them to an orgy.
- Bugfix: Resolved a crash when listing relationships.
- Bugfix: Forsaken training actions which provide 0 Expertise will no longer crash the game.
- Bugfix: Chosen can no longer be set on the Aversion path by adding them to an orgy that's just about to end.
- Bugfix: Chosen will now correctly escape from Orgy and Defiler+ actions which are begun with only one turn remaining.
- Bugfix: T1 Innocence Break now properly locks the Chosen out of the Aversion path in all situations.
- Bugfix: Using Networked Consciousness to immediately start a Defiler+ or Orgy will no longer sometimes allow the participants to escape on the same round.
- Bugfix: Capturing with a basic Commander while Surround is possible will no longer result in an incorrect Surround duration.
- Bugfix: The button to have Forsaken refer to you by a title instead of a name will now function properly.
- Bugfix: Ambushing with a basic Commander will no longer result in an incorrect Surround duration.
- Bugfix: Ambushes will no longer sometimes cause a bugged capture state.
Well, this looks like it will be an interesting update with the meet system and all. I'll have to play it to see how the actions flow for sure.
ReplyDeleteHad an interesting idea for a forsaken attitude/defiler action subset: A forsaken obsessed with toys and rope. With defiler actions that focus more on using sexy toys and bondage to inflict pleasure exposure ect.
Hope we get the ability to train forsaken to focus on specific fetishes, but I'm assuming that might be part of being able to change their bodies in future.
That's right, Forsaken fetishes should fit in along with the update that generally focuses on Forsaken personalization.
DeleteHope we get to give Forsaken ass fetishes heh!
DeleteAlso, does custom sex scenes with Chosen mean the forsaken get to do that, or do we, the Demon Lord/Queen do so?
ReplyDeleteFor next update, it'll just be the Demon Lord with the Chosen. Custom scenes between Chosen and Forsaken are planned as well, however.
DeleteLooking forward to seeing what the next distortion path will be, thought i'd mention some bugs I ran into while trying out the new version
ReplyDeleteWhen choosing a custom title for a forsaken to call the Demon Lord, choosing "the [whatever was entered]" option doesnt appear to do anything
A bit more serious of a bug was sometimes when attempting a defiler+ action or orgy the chosen would immediately break free that turn even with an opening that should have lasted multiple turns, and with no warning that including another chosen would shorten it to a 1-turn length or something similar
This!
DeleteIt has made my double Aversion attempt impossible. I am a little salty, mainly because I have wasted multiple days with the chosen immediately breaking out of 10+ turn orgies instantly and preventing me from furthering their aversion paths.
Thanks for the bug report. I'm trying to reproduce it on my end now, but I haven't been able to do so yet. If you can upload a save where it happens (and the sequence of actions that leads to the bug), it'd be very helpful.
DeleteScratch that, I found the bug. Fix coming as soon as I get home.
DeleteThere, the bugfix is up.
DeleteAlso, I realize that I forgot to reply to the issue with "[name]" versus "the [name]." Sometimes, by default, Forsaken will refer to you as "Demon Lord," and other times as "the Demon Lord." What you choose to have them call you will replace "Demon Lord," but in cases where they wouldn't use "the" in the first place, the option doesn't change anything. So, it's only a bug if the game is still using just "[whatever was entered]" in a case where it sounds really awkward without the "the."
thanks for the prompt bugfix on the surround/orgy bug, was making the aversion run I was trying a bit frustrating and thats going much better with it now
Deletefor the [name] issue I ran into I meant that when given the prompt "When she's talking with others, should she refer to you as '[name]' or 'The [name]', clicking the 'The [name]' option does not seem to register and I stay on the same screen, and I have to choose the '[Name]' option to in order to leave the prompt, which has caused a few awkward sounding lines with some of the titles ive tried out where a 'the' sounds more appropriate
Oops, looks like I actually forgot to hook the button up to anything. It's fixed in 28c!
DeleteYo, the new version fixed the problem for me.
ReplyDeleteGlad to hear it!
DeleteYo big thanks for letting us use a female demon lord. I know there's not much interaction now but I look forward to future releases.
ReplyDeleteThe try_update branch of my csbreedmod fork on github has the R28 merged in. It builds, reasonably ok after reverse compiling and some corrections.
ReplyDeleteHappy to see that things are going smoothly. Just let me know if there's anything else I can upload to make things simpler on your end.
DeleteThanks, maybe we can discuss development in this github issue?
ReplyDeletehttps://github.com/himmlisches/csbreedmod/issues/3
Seeing how you've refactored my code has been very educational. I'm interested in discussing development, particularly regarding separating the text from the code, but I think that github probably isn't the best place to discuss it, since it wouldn't be surprising for the site administration to decide that Corrupted Saviors violates the site policy on sexually obscene content.
DeleteI can at least answer your question about all the empty branches in the endturn code for the final battle. That block of code is used to determine whether the Chosen will be willing to sacrifice each other's lives, and it also used to print text to tell the player what they decided and why. However, putting it all in one block meant that it could only be printed at the start of the turn, and couldn't be reprinted after returning to the target select screen on the same turn. I ended up copying the whole block of code, deleting each line of printed text from the endturn copy, and deleting each line that affected game variables from the picktarget copy. In retrospect, definitely not good coding practice, but I wanted to be able to refer to the original if/else structure in case I messed something up.
Github probably won't make a fuss unless the repo attracts too much attention, if you're afraid still, you could also make it private or limit to some users. Also, you should always keep a local clone, I like to work local and push to upstream when things work, but I work from the command line. Do you use an IDE?
DeleteAnyway, if github decides to take an active stance, from your local checkout you can push to another git repository; source hut, gitlab or somwhere else. You could even host your own. Besides, I've come across much more controversial repositories that are still there.
Also do keep your development plans you have. Refactoring the code is going to help you in the long run but don't spend too mush time, at most 5%, because the content is what people appreciate.
For separating text from code, my first idea was a simple format, like toml or json, maybe a binary or zipped variant, such file formats can be loaded fairly easily in code structures arrays or (hash)maps. This should be loaded at start and then functions can access via key and array lookup. For array lookup, you can encode a corruption state in a bitmask a bit like I did some switch statements in Chosen.java, use those as index for array lookup. At least that was my first idea. In reality it's going to be a bit more complex, to keep how sentences are composed.
To separate text from code:
Deletehttps://github.com/picobyte/cs_build/tree/master/cs-app/src/main/resources
Text is loaded from toml, requiring toml4j dependency. should probably be built in jar. I do that with
JAVA_HOME=/opt/java/jdk-17.0.2 mvn clean compile assembly:single -U
See json_test branch of my csbreedmod fork how to load in java. e.g. WorldState commit 3969eab7.
Actually branch was renamed to using_cs_build_toml. It's meant as a proof of concept since the introOne header at least works - others are not entirely tested - missing lookups will be null and a runtime error - there could be run tests to address that.
Deletesome changes + apptests => now it eem to work.
DeleteIt is possible to load a defaults toml file for the chosen sex (male/femle/futanari), secondly override keys in the toml for tickle, and maybe later more timed for a persistent change. That would eliminate a lot of branching in your code.
DeleteThanks for the advice regarding when to refactor. The main reason I bring up moving the text to external files now is that it's beginning to interfere with implementing new content. Several methods have needed to be broken up into multiple methods just because the Strings hit the limit on local variables in one method, and other methods have needed to be moved from the Chosen class because it keeps hitting the limit on how big a class can be. It isn't an emergency yet, but I expect that it'll only lead to bigger coding headaches down the line if it isn't taken care of now.
DeleteI have a bit of experience in Inform7 from some unreleased projects I worked on before Corrupted Saviors, so I think I understand most of what you're trying to do with tags. I'm still going to hold off on making any major changes until I'm certain I understand it completely, though. My first priority is to make sure I can keep maintaining my own code.
I've encountered the function code size issue as well. If text is read from toml, that reduces code size. The other advantage is that the separation could make text more organized and code readable.
DeleteDisadvantages are the toml4j dependency and toml files, which should be included in the release. It took me some time to figure out. I'm fairly new in java. Coded more in other languages. However, I got toml4j and files to work; the pom.xml is in my cs_build repository. I build cs with the toml jar contained as mentioned on April 14.
A second issue is that tests may be required, at least until you know how to access toml files, because incorrect keys may cause runtime errors. In cs_build I added tests for `mvn test'.
Did you see how the respective java accesses the toml and retrieves this data? The toml files live in my cs_build repository, the java files in the csbreedmod repository. The Intro I read from toml, so it works. This is easiest to get working so a good start.
Moing all text to toml is going to be a lot of work, so dont just yet. Think about whether and how you want to organize. My one toml per java probably is not the best way. For a while just keep both current code and read from toml files. Then try to place new additions in there, because it makes sense ot because you have to resolve code size issues. At least that's what I recommend.
Doing the transition slowly makes sense. I haven't had the time to play around with it on my end yet, but that'll be one of the first things I do after this release. I still don't follow some of the things you're doing there, but I expect that it'll be a lot more clear once I can make changes to it and see how it affects the compiled project. I'm glad to finally have a long-term solution to the function code side issue in sight.
DeleteOi, chief! these save file transferable? eh?
ReplyDeleteIf they're supposed to be, then i got a bug for ya.
I am on day 51, exported then imported my save from v27 to 28e. My first opponent was Stigma. my second opponent was ALSO stigma. Wouldn't you believe it my THIRD opponent was Stigma too.
if they';e not supposed to be, then f*ck my a** i had just FINALLY gotten my first win. #SALT#
That's definitely a bug. Apparently the import/export function is still having trouble with campaign mode. However, you can still probably recover your save! The import/export function is meant for moving a single save from one .sav file to another. But you should be able to just move your old .sav file from the R27 folder to the R28e one and play it there.
Deletei'm not too worried about it. game's still fun, but something goes seriously wrong with moving campaign saves between versions. might be just better to not worry about it, since it just seems like it would take ages to fix.
Deleteespecially not worth it when saving on day 52 in v27 transfers just fine to v28. just something about the transition day breaks.
Thanks for being understanding. I'm still going to try to fix it, though, if only so that players who save less frequently won't risk losing their progress.
Delete