Nemo de Nemo

Member
Jul 30, 2020
105
58
So with the hypothetical race change, how extensive is it? To give a baseline to the complexity of the answer I'm seeking: How will it affect base stats, will it change elemental affinities to match the species (Becoming a fellow plant will make you weak to fire, similar to Mir), will the pc gain access to additional abilities specific to that race (Being able to transform like Val), will it come with additional character arts to match the species, will there be mention of species changes in the general story, and will other candidates engage in it themselves or only when forced by a challenge or not at all? No need to give definitive answers at this point in time as it is probably a long way off, I just find the concept interesting in how it will affect the Temple.

Also on the orgy Leading problem, my suggestion would be to implement a hierarchy system with a Lead and sub leads, the number being X participants/2-1 rounded down. So 4 would be (4)/2-1 or 1 sub lead. The sub-lead would be unable to disrupt the main lead's position, but would be able to position a participant lower in the hierarchy. An example with 2 sub-leads would be that "sub-lead 1" would be able to push down both "sub-lead 2" and the participant/s without any lead modifiers. To go from sub-lead to lead, the sub-lead could attempt to take control to usurp the top of the hierarchy similar to how I am assuming the system currently works. For non leads taking control, I'm unsure whether to make them go to Leading proper or just to sub-lead. Most dynamic system would probably be to run checks on everyone above them, so sometimes taking the Lead role other times sub-lead role. This is a bit mechanically complex (I assume), so would be good to ponder on what would be best before implementing it.
 

DeepInteractivity

Member
Game Developer
Mar 16, 2020
387
696
Also on the orgy Leading problem, my suggestion would be to implement a hierarchy system with a Lead and sub leads, the number being X participants/2-1 rounded down. So 4 would be (4)/2-1 or 1 sub lead. The sub-lead would be unable to disrupt the main lead's position, but would be able to position a participant lower in the hierarchy. An example with 2 sub-leads would be that "sub-lead 1" would be able to push down both "sub-lead 2" and the participant/s without any lead modifiers. To go from sub-lead to lead, the sub-lead could attempt to take control to usurp the top of the hierarchy similar to how I am assuming the system currently works. For non leads taking control, I'm unsure whether to make them go to Leading proper or just to sub-lead. Most dynamic system would probably be to run checks on everyone above them, so sometimes taking the Lead role other times sub-lead role. This is a bit mechanically complex (I assume), so would be good to ponder on what would be best before implementing it.
I'm still suspicious on how it would affect the overall gameplay of sex scenes, but I could try making an alternate release with these mechanics and check what's the player feedback.

So with the hypothetical race change, how extensive is it? To give a baseline to the complexity of the answer I'm seeking: How will it affect base stats, will it change elemental affinities to match the species (Becoming a fellow plant will make you weak to fire, similar to Mir), will the pc gain access to additional abilities specific to that race (Being able to transform like Val), will it come with additional character arts to match the species, will there be mention of species changes in the general story, and will other candidates engage in it themselves or only when forced by a challenge or not at all? No need to give definitive answers at this point in time as it is probably a long way off, I just find the concept interesting in how it will affect the Temple.
Just like gender transformations, racial transformations will be temporary and only have minor relevance in the story (this is, it wouldn't be recognized most of the time, racial transformations would end before going on adventures, and so on), and wouldn't affect stats. They would, however, have effects on combat affinities and allow the use of some scenes actions that the player character has already learned but cannot use (for instance, the scroll "Payback for the Thief" teaches "Vines Hold Arms", but only Padmiri can use it because it requires being Leirien). Only the player character will be capable of racial transformations (you have a little peek of the lore explanation in the game already; the practical reason is the severely increased need for sprites in animations, same reason why only the player character can transform into a different gender), and will require a member of the race she wants to transform into to be present. Transforming out of your own free will will increase relationship stats such as romance, while being transformed as a request of your dom to Mesquelles will increase your dom's dominance.
 

DeepInteractivity

Member
Game Developer
Mar 16, 2020
387
696
Some users have reported a transformation scene during the Gleaming Caverns that is very likely to provoke a crash. Hotfixed versions of the game have been uploaded to itch.io and Patreon.
 

nepSmug

Newbie
Mar 24, 2019
45
30
Sorry if this has been asked before, but there are almost 1,000 different posts to read through and I don't have the patience to look through them all, nor the intelligence to know exactly how to narrow my search.

Does anyone have some sort of spreadsheet or list or chart showing all of the different relationships and how to get them? Like for example, how to achieve the "x lusts after y's body" or "x is falling for y" and which ones are more "powerful" than the others? (As in, what levels do each relationship stat need to be to achieve that status?)
 
Last edited:

nanana nanana

New Member
Mar 5, 2023
1
0
I like the game a lot, here are some ways in which I think it could be improved:

-The battle and relationship systems could be more transparent. For instance when you ask a character to initiate a relationship, the game tells you for instance that you have -9.60 because of your stats, but then you don't really know which stats are concerned, or what the ratio is. Same with mood, relationship, and whatever competition is. In battle, there is more transparency, but certain things are still not clear. For instance, a spell will say " Energy damage: Actor's intelligence x2, actor's will x1" which is helpful except that it doesn't actually deal that much damage (otherwise I would run my opponent out of energy on turn 3). There's a calculation that we just don't have access to.

Something that I've seen another game do is that when you hover over a number that is the result of a calculation, it gives you the calculation in question. For instance if you hover over 1.9 in "Nash received 1.9 control damage", it would show "(31 [player's intelligence] x 7 + 14 [player's will] x 3 - 21 [NPC's agility] ) / 15" or something like that.

-The sex scenes, although enjoyable at first, ended up getting too repetitive for me. The first problem is that I don't think there is enough writing done for those parts, given how often they come up. One thing that I am certain of is that there aren't enough variations of the lines of dialogue spoken during sex. The second problem is that the player isn't really incentivized to mix up their approach because some approaches give way more results. It matters because sex in this game is a tool that you use to get other things, not just something that you do when you feel like it. The third problem is that they go on for a bit too long. Yes, I can change the duration, but then I don't have enough turns to do what I want (like, draining a character's willpower or energy), especially if there are more than 2 characters. I think I would prefer if the scenes were shorter, but actions were more impactful, and if the duration varied depending on how many participants there are.

It's not that big of a deal that the sex scenes feel repetitive, except when they're part of an event or something story related. Maybe it would be better if those were scripted instead (although I realise that it's more work).

-The conversations that you can start with other characters lack something. I think they're just too simple and one-dimensional for how often they come up. I feel like there should be some kind of depth there, more than just clicking on the one of a few options that makes the moods that you want to go up go up. A big theme of this game as I see it is social manipulation, so I feel like the conversations should be a more challenging and engaging part of the game.

Thank you for reading through my feedback, good luck.
 

DeepInteractivity

Member
Game Developer
Mar 16, 2020
387
696
Sorry if this has been asked before, but there are almost 1,000 different posts to read through and I don't have the patience to look through them all, nor the intelligence to know exactly how to narrow my search.

Does anyone have some sort of spreadsheet or list or chart showing all of the different relationships and how to get them? Like for example, how to achieve the "x lusts after y's body" or "x is falling for y" and which ones are more "powerful" than the others? (As in, what levels do each relationship stat need to be to achieve that status?)
Here's the function that decides the description:

Code:
window.getRelationshipDescription = function(charA,charB) {
    var results = [(gC(charA).getFormattedName() + " is indifferent towards " + gC(charB).getFormattedName() + "."),"0",0]; // 0: Description, 1: Type, 2: Level
    
    var fr = rLvlAbt(charA,charB,"friendship");
    var ro = rLvlAbt(charA,charB,"romance");
    var se = rLvlAbt(charA,charB,"sexualTension");
    var dom = rLvlAbt(charA,charB,"domination");
    var sub = rLvlAbt(charA,charB,"submission");
    var ri = rLvlAbt(charA,charB,"rivalry");
    var en = rLvlAbt(charA,charB,"enmity");
    var intensity = 0;
    var inValue = 0;
    
    if ( fr == 0 && ro == 0 && se == 0 && dom == 0 && sub == 0 && ri == 0 && en == 0 ) {
        results = [(gC(charA).getFormattedName() + " is indifferent towards " + gC(charB).getFormattedName() + "."),"0",0];
    } else if ( (fr+ro) > (ri+en) ) { // Positive relationship
        if ( (fr+ro) > (se*1.5) ) { // Not sexually focused
            var dsBalance = (dom-sub) / (fr+ro);
            inValue = fr+ro;
            if ( inValue > 15 ) { intensity = 2; }
            else if ( inValue > 7 ) { intensity = 1; }
            if ( dsBalance >= 0.25 ) { // Domination is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " thinks " + gC(charB).getFormattedName() + " is cute."),"1ab",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " enjoys " + gC(charB).getFormattedName() + "'s company and attention."),"1ab",1]; }
                else { results = [(gC(charA).getFormattedName() + " considers " + gC(charB).getFormattedName() + " " + gC(charA).posPr + " protegee."),"1ab",2]; }
            } else if ( dsBalance <= -0.25 ) { // Submission is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " looks at " + gC(charB).getFormattedName() + " with interest and respect."),"1aa",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " has considerable trust and respect for " + gC(charB).getFormattedName() + "."),"1aa",1]; }
                else { results = [(gC(charA).getFormattedName() + " holds great trust and devotion for " + gC(charB).getFormattedName() + "."),"1aa",2]; }
            } else { // No domination
                if ( (ri*2.3) >= (fr+ro) ) { // Rivalry leaning
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is interested in " + gC(charB).getFormattedName() + "."),"1aca",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " sees a friend and a rival in " + gC(charB).getFormattedName() + "."),"1aca",1]; }
                    else { results = [(gC(charA).getFormattedName() + " is bound to " + gC(charB).getFormattedName() + " by love and rivalry."),"1aca",2]; }
                } else if ( fr > ro ) { // Friendship is dominant
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " likes " + gC(charB).getFormattedName() + "."),"1acb",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " considers " + gC(charB).getFormattedName() + " a companion."),"1acb",1]; }
                    else { results = [(gC(charA).getFormattedName() + " would trust " + gC(charB).getFormattedName() + " with " + gC(charA).posPr + " life."),"1acb",2]; }
                } else { // Romance is dominant
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " likes " + gC(charB).getFormattedName() + "."),"1acc",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " is falling for " + gC(charB).getFormattedName() + "."),"1acc",1]; }
                    else { results = [(gC(charA).getFormattedName() + " is deeply in love with " + gC(charB).getFormattedName() + "."),"1acc",2]; }
                }
            }
        } else { // Sexually focused
            var dsBalance = (dom-sub) / (se*1.5);
            inValue = se*1.5;
            if ( inValue > 15 ) { intensity = 2; }
            else if ( inValue > 7 ) { intensity = 1; }
            if ( dsBalance >= 0.25 ) { // Domination is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " lusts after " + gC(charB).getFormattedName() + "."),"1bb",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " wishes to ravage " + gC(charB).getFormattedName() + "."),"1bb",1]; }
                else { results = [(gC(charA).getFormattedName() + " feels complete by having " + gC(charB).getFormattedName() + " below " + gC(charA).refPr + "."),"1bb",2]; }
            } else if ( dsBalance <= -0.25 ) { // Submission is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is aroused by " + gC(charB).getFormattedName() + "."),"1ba",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " looks up to " + gC(charB).getFormattedName() + " with respect and lust."),"1ba",1]; }
                else { results = [(gC(charA).getFormattedName() + " melts in desire and devotion for " + gC(charB).getFormattedName() + "."),"1ba",2]; }
            } else { // No domination
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " lusts after " + gC(charB).getFormattedName() + "."),"1bc",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " gets excited with " + gC(charB).getFormattedName() + "'s company."),"1bc",1]; }
                else { results = [(gC(charA).getFormattedName() + " holds great desire to have " + gC(charB).getFormattedName() + " in " + gC(charA).posPr + " arms."),"1bc",2]; }               
            }
        }
    } else { // Negative relationship
        if ( (ri+en) > (se*1.5) ) { // Not sexually focused
            var dsBalance = (dom-sub) / (ri+en);
            inValue = ri+en;
            if ( inValue > 15 ) { intensity = 2; }
            else if ( inValue > 7 ) { intensity = 1; }
            if ( dsBalance >= 0.25 ) { // Domination is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " finds " + gC(charB).getFormattedName() + " annoying."),"2cb",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " is often demeaning towards " + gC(charB).getFormattedName() + "."),"2cb",1]; }
                else { results = [(gC(charA).getFormattedName() + " is glad to have " + gC(charB).getFormattedName() + " under " + gC(charA).posPr + " foot."),"2cb",2]; }
            } else if ( dsBalance <= -0.25 ) { // Submission is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is scared of " + gC(charB).getFormattedName() + "."),"2ca",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " is obedient towards " + gC(charB).getFormattedName() + "."),"2ca",1]; }
                else { results = [(gC(charA).getFormattedName() + " can't even think about going against " + gC(charB).getFormattedName() + "'s word."),"2ca",2]; }
            } else { // DS is not dominant
                if ( ri > en ) { // Rivalry is dominant
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is cautious about " + gC(charB).getFormattedName() + "."),"2cca",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " is tense around " + gC(charB).getFormattedName() + "."),"2cca",1]; }
                    else { results = [(gC(charA).getFormattedName() + " sees " + gC(charB).getFormattedName() + " as " + gC(charA).posPr + " nemesis."),"2cca",2]; }
                } else { // Enmity is dominant
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is annoyed about " + gC(charB).getFormattedName() + "."),"2ccb",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " thinks " + gC(charB).getFormattedName() + " is dangerous."),"2ccb",1]; }
                    else { results = [(gC(charA).getFormattedName() + " can't see " + gC(charB).getFormattedName() + " as anything other than scum."),"2ccb",2]; }                   
                }
            }
        } else { // Sexually focused
            var dsBalance = (dom-sub) / (ri+en);
            inValue = ri+en;
            if ( inValue > 15 ) { intensity = 2; }
            else if ( inValue > 7 ) { intensity = 1; }
            if ( dsBalance >= 0.25 ) { // Domination is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " lusts after " + gC(charB).getFormattedName() + "'s body."),"2db",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " desires to have " + gC(charB).getFormattedName() + " under " + gC(charA).posPr + " grasp."),"2db",1]; }
                else { results = [(gC(charA).getFormattedName() + " sees an alluring toy in " + gC(charB).getFormattedName() + "."),"2db",2]; }
            } else if ( dsBalance <= 0.25 ) { // Submission is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is scared of " + gC(charB).getFormattedName() + "."),"2da",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " thinks " + gC(charB).getFormattedName() + " is dangerous... But also thrilling."),"2da",1]; }
                else { results = [(gC(charA).getFormattedName() + " finds guilty pleasure in obeying " + gC(charB).getFormattedName() + "."),"2da",2]; }
            } else { // DS is not dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " dislikes lusting after " + gC(charB).getFormattedName() + "."),"2dc",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " desires " + gC(charB).getFormattedName() + "'s body."),"2dc",1]; }
                else { results = [(gC(charA).getFormattedName() + " feels great lust for " + gC(charB).getFormattedName() + ", despite everything else."),"2dc",2]; }
            }
        }
    }
    
    return results;
}
It's basically a tree that decides whether the perceived relationship of one character towards another leans towards the friendly, romantic, sexual or hostile, then chooses between a few subcategories, then chooses a specific description depending on the sum of the relevant values.

Something that I've seen another game do is that when you hover over a number that is the result of a calculation, it gives you the calculation in question. For instance if you hover over 1.9 in "Nash received 1.9 control damage", it would show "(31 [player's intelligence] x 7 + 14 [player's will] x 3 - 21 [NPC's agility] ) / 15" or something like that.
Unholy Arts would benefit a lot from it, but this kind of system should have been made at the start of development. Right now, it would require a considerably long time rewriting code.

For instance when you ask a character to initiate a relationship, the game tells you for instance that you have -9.60 because of your stats, but then you don't really know which stats are concerned, or what the ratio is. Same with mood, relationship, and whatever competition is.
In a few cases, this data cannot be expressed in a general function because it changes from topic to topic and sometimes even from character to character. For example, "competition" refers to how the character sees herself in the position for High Priestess or other general ambitions, and whether or not the proposal makes strategic sense. This way, "competition" in tutorship offers makes Candidates specifically want to reject becoming a pupil if they're stronger than average or stronger than the potential tutor, while in "alliance" types of special relationships, it makes the character (whether they're a Candidate or not) want to reject offers from characters who aren't generally strong, as that investment could otherwise become a liability. Stats factor is usually a simple check of the actor's charisma against the target's will (particularly for sex offers), but sometimes is a more general stats check of "how strong is this person". Ate has a temporary trigger that makes her far more likely to want to become the pupil of someone with far more charisma than her after a story event, and Mesquelles has other calculations of her own.

In battle, there is more transparency, but certain things are still not clear. For instance, a spell will say " Energy damage: Actor's intelligence x2, actor's will x1" which is helpful except that it doesn't actually deal that much damage (otherwise I would run my opponent out of energy on turn 3). There's a calculation that we just don't have access to.
Damage factors in descriptions refer to the portion in which a particular action draws more damage from a particular stat. It isn't meant to let you know the exact damage you're going to deal, but what kind of builds want to use that action and against whom.
 
  • Like
Reactions: Seamonkey

nepSmug

Newbie
Mar 24, 2019
45
30
Here's the function that decides the description:

Code:
window.getRelationshipDescription = function(charA,charB) {
    var results = [(gC(charA).getFormattedName() + " is indifferent towards " + gC(charB).getFormattedName() + "."),"0",0]; // 0: Description, 1: Type, 2: Level
   
    var fr = rLvlAbt(charA,charB,"friendship");
    var ro = rLvlAbt(charA,charB,"romance");
    var se = rLvlAbt(charA,charB,"sexualTension");
    var dom = rLvlAbt(charA,charB,"domination");
    var sub = rLvlAbt(charA,charB,"submission");
    var ri = rLvlAbt(charA,charB,"rivalry");
    var en = rLvlAbt(charA,charB,"enmity");
    var intensity = 0;
    var inValue = 0;
   
    if ( fr == 0 && ro == 0 && se == 0 && dom == 0 && sub == 0 && ri == 0 && en == 0 ) {
        results = [(gC(charA).getFormattedName() + " is indifferent towards " + gC(charB).getFormattedName() + "."),"0",0];
    } else if ( (fr+ro) > (ri+en) ) { // Positive relationship
        if ( (fr+ro) > (se*1.5) ) { // Not sexually focused
            var dsBalance = (dom-sub) / (fr+ro);
            inValue = fr+ro;
            if ( inValue > 15 ) { intensity = 2; }
            else if ( inValue > 7 ) { intensity = 1; }
            if ( dsBalance >= 0.25 ) { // Domination is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " thinks " + gC(charB).getFormattedName() + " is cute."),"1ab",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " enjoys " + gC(charB).getFormattedName() + "'s company and attention."),"1ab",1]; }
                else { results = [(gC(charA).getFormattedName() + " considers " + gC(charB).getFormattedName() + " " + gC(charA).posPr + " protegee."),"1ab",2]; }
            } else if ( dsBalance <= -0.25 ) { // Submission is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " looks at " + gC(charB).getFormattedName() + " with interest and respect."),"1aa",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " has considerable trust and respect for " + gC(charB).getFormattedName() + "."),"1aa",1]; }
                else { results = [(gC(charA).getFormattedName() + " holds great trust and devotion for " + gC(charB).getFormattedName() + "."),"1aa",2]; }
            } else { // No domination
                if ( (ri*2.3) >= (fr+ro) ) { // Rivalry leaning
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is interested in " + gC(charB).getFormattedName() + "."),"1aca",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " sees a friend and a rival in " + gC(charB).getFormattedName() + "."),"1aca",1]; }
                    else { results = [(gC(charA).getFormattedName() + " is bound to " + gC(charB).getFormattedName() + " by love and rivalry."),"1aca",2]; }
                } else if ( fr > ro ) { // Friendship is dominant
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " likes " + gC(charB).getFormattedName() + "."),"1acb",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " considers " + gC(charB).getFormattedName() + " a companion."),"1acb",1]; }
                    else { results = [(gC(charA).getFormattedName() + " would trust " + gC(charB).getFormattedName() + " with " + gC(charA).posPr + " life."),"1acb",2]; }
                } else { // Romance is dominant
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " likes " + gC(charB).getFormattedName() + "."),"1acc",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " is falling for " + gC(charB).getFormattedName() + "."),"1acc",1]; }
                    else { results = [(gC(charA).getFormattedName() + " is deeply in love with " + gC(charB).getFormattedName() + "."),"1acc",2]; }
                }
            }
        } else { // Sexually focused
            var dsBalance = (dom-sub) / (se*1.5);
            inValue = se*1.5;
            if ( inValue > 15 ) { intensity = 2; }
            else if ( inValue > 7 ) { intensity = 1; }
            if ( dsBalance >= 0.25 ) { // Domination is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " lusts after " + gC(charB).getFormattedName() + "."),"1bb",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " wishes to ravage " + gC(charB).getFormattedName() + "."),"1bb",1]; }
                else { results = [(gC(charA).getFormattedName() + " feels complete by having " + gC(charB).getFormattedName() + " below " + gC(charA).refPr + "."),"1bb",2]; }
            } else if ( dsBalance <= -0.25 ) { // Submission is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is aroused by " + gC(charB).getFormattedName() + "."),"1ba",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " looks up to " + gC(charB).getFormattedName() + " with respect and lust."),"1ba",1]; }
                else { results = [(gC(charA).getFormattedName() + " melts in desire and devotion for " + gC(charB).getFormattedName() + "."),"1ba",2]; }
            } else { // No domination
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " lusts after " + gC(charB).getFormattedName() + "."),"1bc",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " gets excited with " + gC(charB).getFormattedName() + "'s company."),"1bc",1]; }
                else { results = [(gC(charA).getFormattedName() + " holds great desire to have " + gC(charB).getFormattedName() + " in " + gC(charA).posPr + " arms."),"1bc",2]; }              
            }
        }
    } else { // Negative relationship
        if ( (ri+en) > (se*1.5) ) { // Not sexually focused
            var dsBalance = (dom-sub) / (ri+en);
            inValue = ri+en;
            if ( inValue > 15 ) { intensity = 2; }
            else if ( inValue > 7 ) { intensity = 1; }
            if ( dsBalance >= 0.25 ) { // Domination is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " finds " + gC(charB).getFormattedName() + " annoying."),"2cb",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " is often demeaning towards " + gC(charB).getFormattedName() + "."),"2cb",1]; }
                else { results = [(gC(charA).getFormattedName() + " is glad to have " + gC(charB).getFormattedName() + " under " + gC(charA).posPr + " foot."),"2cb",2]; }
            } else if ( dsBalance <= -0.25 ) { // Submission is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is scared of " + gC(charB).getFormattedName() + "."),"2ca",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " is obedient towards " + gC(charB).getFormattedName() + "."),"2ca",1]; }
                else { results = [(gC(charA).getFormattedName() + " can't even think about going against " + gC(charB).getFormattedName() + "'s word."),"2ca",2]; }
            } else { // DS is not dominant
                if ( ri > en ) { // Rivalry is dominant
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is cautious about " + gC(charB).getFormattedName() + "."),"2cca",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " is tense around " + gC(charB).getFormattedName() + "."),"2cca",1]; }
                    else { results = [(gC(charA).getFormattedName() + " sees " + gC(charB).getFormattedName() + " as " + gC(charA).posPr + " nemesis."),"2cca",2]; }
                } else { // Enmity is dominant
                    if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is annoyed about " + gC(charB).getFormattedName() + "."),"2ccb",0]; }
                    else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " thinks " + gC(charB).getFormattedName() + " is dangerous."),"2ccb",1]; }
                    else { results = [(gC(charA).getFormattedName() + " can't see " + gC(charB).getFormattedName() + " as anything other than scum."),"2ccb",2]; }                  
                }
            }
        } else { // Sexually focused
            var dsBalance = (dom-sub) / (ri+en);
            inValue = ri+en;
            if ( inValue > 15 ) { intensity = 2; }
            else if ( inValue > 7 ) { intensity = 1; }
            if ( dsBalance >= 0.25 ) { // Domination is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " lusts after " + gC(charB).getFormattedName() + "'s body."),"2db",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " desires to have " + gC(charB).getFormattedName() + " under " + gC(charA).posPr + " grasp."),"2db",1]; }
                else { results = [(gC(charA).getFormattedName() + " sees an alluring toy in " + gC(charB).getFormattedName() + "."),"2db",2]; }
            } else if ( dsBalance <= 0.25 ) { // Submission is dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " is scared of " + gC(charB).getFormattedName() + "."),"2da",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " thinks " + gC(charB).getFormattedName() + " is dangerous... But also thrilling."),"2da",1]; }
                else { results = [(gC(charA).getFormattedName() + " finds guilty pleasure in obeying " + gC(charB).getFormattedName() + "."),"2da",2]; }
            } else { // DS is not dominant
                if ( intensity == 0 ) { results = [(gC(charA).getFormattedName() + " dislikes lusting after " + gC(charB).getFormattedName() + "."),"2dc",0]; }
                else if ( intensity == 1 ) { results = [(gC(charA).getFormattedName() + " desires " + gC(charB).getFormattedName() + "'s body."),"2dc",1]; }
                else { results = [(gC(charA).getFormattedName() + " feels great lust for " + gC(charB).getFormattedName() + ", despite everything else."),"2dc",2]; }
            }
        }
    }
   
    return results;
}
It's basically a tree that decides whether the perceived relationship of one character towards another leans towards the friendly, romantic, sexual or hostile, then chooses between a few subcategories, then chooses a specific description depending on the sum of the relevant values.
Oooooooohh, I could just kiss you! Thank you!
 
  • Like
Reactions: DeepInteractivity

DeepInteractivity

Member
Game Developer
Mar 16, 2020
387
696
LolOkBruh Load from disk and select the savefile from the folder you saved it in. If you don't know where's that folder, try saving to disk and take note of the folder it prompts you to save in by default.
 

sbarabaus

Member
Dec 29, 2017
269
237
Not a bug, you aren't meant to be able to cancel positions you aren't a part of. This is meant to make positions to last for some extra time in scenes with 3+ characters, since they used to last for very short periods in a past version, but this might be reconsidered depending on player feedback.
this should be removed from threesomes, as you get stuck watching the other 2 fuck and can't even join them
 

Nocturnes

New Member
Feb 12, 2018
5
3
Playing version 4.0, and I don't seem to have Cold Guts as an option ever.

Did I forget that we learn this somewhere? Or is my file bugged (I'm assuming there's no chance of it being flat out removed since the NPCs use it).

I've also noticed that I can't just mount things anymore (no sexual actions).
 
Last edited:

DeepInteractivity

Member
Game Developer
Mar 16, 2020
387
696
Playing version 4.0, and I don't seem to have Cold Guts as an option ever.

Did I forget that we learn this somewhere? Or is my file bugged (I'm assuming there's no chance of it being flat out removed since the NPCs use it).

I've also noticed that I can't just mount things anymore (no sexual actions).
Send me your savefile.
 

DeepInteractivity

Member
Game Developer
Mar 16, 2020
387
696
Playing version 4.0, and I don't seem to have Cold Guts as an option ever.
You haven't read the appropriate scroll. Read "The basics of combat" once you're at the Passion Temple. Even if you don't actually want to *read* the scrolls themselves, you should have your character do it to get new actions and small stat boosts.

I've also noticed that I can't just mount things anymore (no sexual actions).
You seem to have access to all the actions you should provided you have the lead or control, depending on the type of scene. Not sure what's the issue you're having.
 

Nocturnes

New Member
Feb 12, 2018
5
3
You haven't read the appropriate scroll. Read "The basics of combat" once you're at the Passion Temple. Even if you don't actually want to *read* the scrolls themselves, you should have your character do it to get new actions and small stat boosts.



You seem to have access to all the actions you should provided you have the lead or control, depending on the type of scene. Not sure what's the issue you're having.
The correct answer for both was indeed " Did I forget that we learn this somewhere? " - I went back and read the basic combat tutorial scroll at some point and both became available, Cold Guts and Frontal Pounce (no sex act). It's been a VERY long time since my first run through the game.
 
  • Like
Reactions: DeepInteractivity

manscout

Well-Known Member
Jun 13, 2018
1,190
1,870
Aight, the virginities collector event was some of the funniest stuff and also pretty sexy.

However I regret nothing and will continue to take the virginities of all the candidates to win the social game regardless of if I can escape the gangbang or not.

Would be funny if further down the road there was a sequel to that event if the MC takes a virginity from each of the guest/optional characters, HOW MANY TIMES DO WE HAVE TO TEACH YOU THIS LESSON OLD MAN YOUNG LADY?
 

DeepInteractivity

Member
Game Developer
Mar 16, 2020
387
696
DeepInteractivity There are case mismatches between some filenames in the HTML (img/sprites/mfb-t-rArm-gf.gif), and the actual image files (img/sprites/mfb-t-rarm-gf.gif).
On case-sensitive filesystems, that leads to broken images.
An example from the tutorial fight:
View attachment 3235070
Thanks for the report. I've set up a folder to be case-sensitive, so that we'll hopefully be able to spot this issue again in the future. I've also uploaded hotfixed versions to itch.io and Patreon, hopefully didn't miss any.
 
  • Like
Reactions: Bob b Bobbertson

Tavarokk

Member
Feb 18, 2018
148
186
DeepInteractivity, the virginity collector event is kind of disappointing. It really, really needs an option to grin like a loon and start stripping along with that 'Run' option after Claw makes her suggestion. And maybe even a flag for later events. A pervert who put bedding everyone ahead of every other concern would definitely be willing to tank a day of progress in exchange for such a delightful treat ^_^
 
4.30 star(s) 23 Votes