Nightgames Mod (v2.5.1.2) updated 2/11/17

DarkSinfulMage

Well-Known Member
Nov 18, 2016
253
44
42
@Ryplinn Currently looking at your branch to see what I can expect in terms of conversion work and redesign now that many things are not going to be half-broken. I have some questions/comments for you:

1. Can you explain how we're now keeping time between effects that last some amount of turns while the player is in and/or out of combat?
2. Game tracked a lot of things between both Traits, status effects, and flags for characters. We should clearly differentiate what is used for what. We might wanna discuss rearranging each character's stuff.
3. "When provided with a save file argument, nightgamesmod launches directly into that game" - List this as feature, especailly via Drag and drop save file into JAR.
4. "I want to work out why the main text window is so stuttery/flickery now. I'd like to figure out a way to only paint the text when the player is about to be presented with an interactable prompt."

componentFoo.updateUI(); should work after adding buttons or whatever to a panel or component. I'd end the relevant method with textPaneFoo.updateUI() and see if that gives the result.

5. Glad to see you fixed the two largest issues during the games. Lemme know if you have problems with winning and looking like you were defeated by someone and vice versa.

Okay, We might be nearing the time where we will want to open a discussion about how to standardize all characters now that we are organizing information/feautres about them - they are likely to be rewritten to work properly in the game.
 

DarkSinfulMage

Well-Known Member
Nov 18, 2016
253
44
42
Character Design Stuff

Character Name
Character Type (Fundamental style.)
Associated Stat
Tier 0-3 descriptions: Total of 4 required. Can happen at various levels, but these levels determine lots of things.
Any Alternate descriptions: For variations when transformed.
Standard Growth: For stat growth

Unique skills:
Each character can have unique skills, usually gained at each tier.

Unique traits:

Each character has Unique traits at start, at each Tier (each tier may be reached at different level but there are 4 or 5 total)
Each character has a choice between 1 or 2 OTHER unique traits at reaching tier - the player chooses, If they choose HARD, they get both. (and/or a third.)
Each character will earn other traits as per their growth plan.

Addiction:
Each character can inflict their unique addiction on other characters upon reaching Tier 2 (the third tier)

Each Addiction is a status effect that must decay or be purged to be removed.

Addictions are gained/advanced only through being successfully hit enough from specific opponent's abilities.

Every addiction can be avoided by avoiding those skills hitting the victim.

Addictions typically force the victim to lose control of themselves in and out of combat. This involves using a worship skill or something else.
Advanced addiction might benefit the Causer in combat, as well.
Addictions DO NOT trigger when the character that caused it is not in the games that night. (New feature.)
Being addicted will open up a unique scene series in each character during the daytime - it increases intensity and satisfies the victim. (Needs work, as do many scenes that are PH)
NPC victims can Satisfy themselves the same way, they can also cleanse themselves the same way. (new feature)
There needs to be equal value in the effects of each unique addiction. Either measured in actions lost, parts transformed, or stats gained.

Scenes:

Every character has standard scenes and quotes for various situations. Variations and addition scenes may be added, but Each character should have a standard set that must be written and implemented.

Taunt, tempt, ballbust, Drainstat, Drainlevel, various self orgasm and see orgasm quotes, etc.
Games, Spar, Sex, Addiction, PartModification screen and its scenes, first meeting, advanced meetings. After-Night encounter. Daytime random encounters.
Aesop description/getinfo text.
Aesop addiction description/advice text
Tier trait choice scenes.
and so on. Take a look at current files for examples.

It's a little soon to talk about individual characters now, but we'll be going one at a time after we settle on standardizing traits, addictions, and status effects.
 

Ryplinn

Well-Known Member
Jun 13, 2016
62
14
@Ryplinn Currently looking at your branch to see what I can expect in terms of conversion work and redesign now that many things are not going to be half-broken. I have some questions/comments for you:

1. Can you explain how we're now keeping time between effects that last some amount of turns while the player is in and/or out of combat?
2. Game tracked a lot of things between both Traits, status effects, and flags for characters. We should clearly differentiate what is used for what. We might wanna discuss rearranging each character's stuff.
3. "When provided with a save file argument, nightgamesmod launches directly into that game" - List this as feature, especailly via Drag and drop save file into JAR.
4. "I want to work out why the main text window is so stuttery/flickery now. I'd like to figure out a way to only paint the text when the player is about to be presented with an interactable prompt."

componentFoo.updateUI(); should work after adding buttons or whatever to a panel or component. I'd end the relevant method with textPaneFoo.updateUI() and see if that gives the result.

5. Glad to see you fixed the two largest issues during the games. Lemme know if you have problems with winning and looking like you were defeated by someone and vice versa.

Okay, We might be nearing the time where we will want to open a discussion about how to standardize all characters now that we are organizing information/feautres about them - they are likely to be rewritten to work properly in the game.

1. I haven't affected status effects or timers. The concept of combat rounds, match turns, and day/night cycles remains the same. IIRC, each relevant cycle type has an upkeep method when relevant timers count down.

I did introduce the concept of initiative for out-of-combat turn order. Before my changes, turn order within a match round was not explicitly defined.

2. Agreed. The concepts as implemented seem to break down like this:
  • Traits are more-or-less permanent features of characters. They have a variety of sources. Some traits are feats, which can be selected during level-up.
  • Status effects are temporary modifiers applied to characters, usually with a time limit.
  • Flags are how the game tracks things like whether a character has been introduced, how far along in the story the player is, and such. They also track game options (fast combat text, pronoun preference), but I think those should be separated. Low priority, though.
3. Maybe? I'm not clear on what you mean. I mostly use it with the run configurations in my IDE. Haven't actually properly built a JAR and tried out drag-and-drop, although there's no reason it shouldn't work.

4. I have resolved this to my satisfaction. The flickering was caused by the text in the main panel being cleared and repainted several times between one prompt and the next. I cut down on those update calls and also made updating a bit smarter about clearing.

5. Haven't seen this bug, but if I do, it should be easier to find now.
 

Lazyrick

Member
Nov 19, 2017
15
3
26
I know this is a pretty random question, but will there be any weight gain related content at any point?
I wouldn't get your hopes up for it. I can't imagine many people asking for it, and new content is currently on the backburner, it seems. The few people (person?) who can code seem to be trying to untangle the mess this has ended up, so that it is actually feasible to add anything without a million and a half errors and bugs.
 

DarkSinfulMage

Well-Known Member
Nov 18, 2016
253
44
42
Kinda wondering how we should change timekeeping in and out of combat:

For example. If we assume every map action takes one unit of time, then what happens when you:

A. Interfere.
B. Get Interfered.
C. Enter and exit combat?

Maybe we should have A and B be 1 unit while NPC encounters last for some amount of time before resolving?

While we're at it - Any comments on how long things take during the day?
 

Lazyrick

Member
Nov 19, 2017
15
3
26
Kinda wondering how we should change timekeeping in and out of combat:

For example. If we assume every map action takes one unit of time, then what happens when you:

A. Interfere.
B. Get Interfered.
C. Enter and exit combat?

Maybe we should have A and B be 1 unit while NPC encounters last for some amount of time before resolving?

While we're at it - Any comments on how long things take during the day?
Rounds last for 3 hours, which if we broke down into 5 minute units, would give us 36 units of time per round. I agree that A and B should be 1 unit, and C should be 2, at most 3. Moving would also cost a unit, but I feel fleeing from combat should cost 2, as you had to shake them off your trail.

As for day time events, I feel the current hour is good, but if possible throwing in some conditions would be interesting. for example, you can only use exercise once or twice a day, and if you go over, you get a debuff for the round that night. Also, the girls all being ready to hang out at all times is weird. They should have a life outside of you and nightly humpings. You wouldn't lose the hour, you just wouldn't be able to interact with said character at the time.

Of course, having no knowledge of code, I don't know if this is difficult, but that's my two cents.
 

randomanon

Active Member
Oct 17, 2015
41
2
Having encounters cost multiple units of time feels like it would just clog up the game, unless movement was reworked somehow including it becoming far cheaper than it is now. More than simply changing how time works, I think the focus should be on to dissuade players from camping the Holy Trinity of the Dorms-Quad-Student Union and the changes to time simply arising as a result of that.

There already are incentives to explore the far corners of the map, of course, but that often just means wasting time you could have used to fight and earn experience as well as money to buy the same things and more during the day. Traps tend to be similarly frustrating in that while they can be powerful, it can take forever to get someone to show up.

Another change that could be useful might be a more clearer initiative in terms of map-movement, instead of what feels like a pseudo-everyone-moves-at-the-same-time-maybe system we have now.
 

Lazyrick

Member
Nov 19, 2017
15
3
26
Having encounters cost multiple units of time feels like it would just clog up the game, unless movement was reworked somehow including it becoming far cheaper than it is now. More than simply changing how time works, I think the focus should be on to dissuade players from camping the Holy Trinity of the Dorms-Quad-Student Union and the changes to time simply arising as a result of that.

There already are incentives to explore the far corners of the map, of course, but that often just means wasting time you could have used to fight and earn experience as well as money to buy the same things and more during the day. Traps tend to be similarly frustrating in that while they can be powerful, it can take forever to get someone to show up.

Another change that could be useful might be a more clearer initiative in terms of map-movement, instead of what feels like a pseudo-everyone-moves-at-the-same-time-maybe system we have now.
Understandable. If we are talking about map exploring, unique or rare items are a given. Another idea could be the location of the encounter having some effect on the battle. For example, stripping an opponent when in the quad could cause shame at the potential exhibitionism. Or potions lasting longer/more effective when used in the Chem. lab. As for traps, I agree they are relatively useless, as they take too long to catch in the beginning, and end game, everyone can dodge them easily.

But, what do you mean by "initiative in terms of map-movement"? Like people with higher speed would move before others?
 

The Silver Bard

Well-Known Member
Sep 2, 2015
207
23
Another idea could be the location of the encounter having some effect on the battle. For example, stripping an opponent when in the quad could cause shame at the potential exhibitionism. Or potions lasting longer/more effective when used in the Chem. lab.

This was actually part of the original design doc, but I couldn't think of anything good for most of the locations, so I gave up on it. If people have enough good ideas for special room effects, it should be feasible.
 

Ryplinn

Well-Known Member
Jun 13, 2016
62
14
But, what do you mean by "initiative in terms of map-movement"? Like people with higher speed would move before others?

Essentially, yes. The current movement order is arbitrary. In my branch I roll a d20 + speed at the start of every movement period, so that fast characters will usually but not always go before slow characters, but I'm not attached to the system.
 

Lazyrick

Member
Nov 19, 2017
15
3
26
I got some ideas but can't think of anything for tunnel and the union though.

· Engineering Building
Effect from simple traps stronger i.e. tripwire, decoy (so simple, they would never see it coming)

· Workshop
Effect from complex traps stronger i.e. spring trap, spider trap (Jett and Mara need to stop leaving trap parts lying around)

· Chemistry Lab
Potions effect are stronger (love is in the air, and by love, I mean potentially dangerous chemicals)

· Bridge
Random spot an enemies location (I can see my house from here!)

· Library
Mojo debuff or cunning buff (books are kinda boring)

· Liberal Arts Building
Seduction buff (art is pretty and stuff)

· Pool
Speed debuff (no running by the pool)

· Student Union

· Quad
Stripping causes shame (unless exhibitionist perk? Then arousal)

· Dining Hall
Power buff (Protein powder diet FTW)

· Kitchen
Potion buffs/debuffs last x2 longer (nothing satisfies like momma’s cooking)

· Storage Room
Free item after encounter, better if winner. (would ya look at what ‘a found.)

· Tunnel

· Laundry Room
Clothes are easier to remove (sucks that most of the machines are broken though)

· Dorm
Stamina decreases more (only way to get big and strong is proper sleep…)

· Showers
Start lubricated (ahh, now my clothes are wet…)

Another idea I just had would be, during combat, luring your foe into a trap setup in the room. There would also be a chance for them to lure you, or counter the trap somehow so it worked on you instead. This way, you can actually use traps without having to worry about the majority going untriggered.
 

randomanon

Active Member
Oct 17, 2015
41
2
I was thinking more along the lines of having everyone's turns happen at the same time, putting the focus on how then the system resolves conflicts- Diplomacy is a fairly well known example of a game with such a mechanic. It would mean a significant overhaul though, so I'm not expecting too much out of this one.

But really, anything that serves as an actual mechanic rather than the sheer whim of the code would be nice to have, I would think, including Ryplinn's version mentioned above. Even apart from simply making sense, playing around with adding an initiative value to specific actions that would modify the roll could be fairly interesting.
 
Last edited:

DarkSinfulMage

Well-Known Member
Nov 18, 2016
253
44
42
Wow - great responses - multiquote would be too much so I'll respond to all of that in order:

@Lazyrick
I agree with that for the most part, but I'd add that the fact we use a real-clock time makes this very difficult to understand in game terms because of the presentation. If we wanna fix things up I'd want us to understand the times very well and standardize them. Not sure how I feel about implementing NPC schedules because it removes your options during the traditional day - and this is hell if we want addictions to remain very consequential.

I love the idea of making more daytime stuff - my own game features daytime-specific features. That's a huge undertaking with Nightgames, though.

@randomanon
I absolutely agree that the map has three really strong places that demand we change it. Movement options are improved through Cunning and Ninjutsu. I would love to see ways to deny certain areas on the map and be able ot play the map, but this also means making it bigger, which means you can get lost and alone much more easily. Obviously the map and playing the map should be a big topic for later.

As for effects - the games are supposed to be secret or have a very exclusive audience. I'm not sure how well that would jive.

@Lazyrick
Bespoke effects for maps and areas, while easier to implement - make all the work put into the map and game-type system a waste. I have ideas for this, but I think that should be shelved for ideas for later. Save that list for a future date.

@randomanon
I like Speed influencing turn order. It's a dimension of strategy. I've implemented that myself elsewhere and it works very well as long as you structure a turn loop in terms of "Before player, player, After player". When you encounter someone, you trigger an encounter. All that's left is tracking who encountered already so there's no confusion as people arrive to a location.
 

Yllarius

Member
Feb 26, 2018
6
0
32
So, I really wanted (For personal benefit, but maybe for others) is to look into the skills and traits for specific numerical values/algorithms and do a write up for them. Potentially even a wiki-type thing. (But no promises there)

Now I've found the skills, but i'm not 100% on how to read the variables. So any help would be appreciated.

I'll start with what I think I've gleaned from Anilingus:

public Anilingus(Character self) {
super("Lick Ass", self);
addTag(SkillTag.usesMouth);
addTag(SkillTag.pleasure);
addTag(SkillTag.oral);
}

@Override
public Set<SkillTag> getTags(Combat c, Character target) {
if (isWorship(c, target)) {
Set<SkillTag> tags = new HashSet<>(super.getTags(c, target));
tags.add(SkillTag.worship);
return tags;
}
Simple, Anilingus is an Oral Pleasure skill that uses the users mouth. It can also be worshipped.

public boolean requirements(Combat c, Character user, Character target) {
return getSelf().has(Trait.shameless) || getSelf().get(Attribute.Seduction) >= 30 || c.getStance().en == Stance.facesitting;
}

@Override
public boolean usable(Combat c, Character target) {
boolean canUse = c.getStance().isBeingFaceSatBy(c, getSelf(), target) && getSelf().canRespond()
|| getSelf().canAct();
boolean titsBlocking = c.getStance().enumerate() == Stance.paizuripin
|| c.getStance().enumerate() == Stance.titfucking;
return target.crotchAvailable() && target.body.has("ass") && c.getStance().oral(getSelf(), target) && canUse
&& !c.getStance().anallyPenetrated(c, target) && !titsBlocking;
}
If the user has Shamless, their seduction is greath than thirty, or they're currently in a facesitting stance they can use the skill.
The second one I'm not 100% on. It looks to me like constraints. If you're the victim of facesitting and can act/respond.
The tits one confuses me, but after that it's just checking if the target:
Has an ass
Isn't blocked by clothes/other things
Same for victim's mouth.

@Override
public float priorityMod(Combat c) {
return getSelf().has(Trait.silvertongue) ? 1 : 0;
}

@Override
public boolean resolve(Combat c, Character target) {
AssPart targetAss = (AssPart) target.body.getRandom("ass");
Result result = Result.normal;
int m = 10;
int n = 0;
int selfm = 0;
if (isWorship(c, target)) {
result = Result.sub;
m += 4 + Random.random(6);
n = 20;
selfm = 20;
} else if (c.getStance().isBeingFaceSatBy(c, getSelf(), target)) {
result = Result.reverse;
m += Random.random(6);
n = 10;
} else if (!c.getStance().mobile(target) || target.roll(getSelf(), c, accuracy(c, target))) {
m += Random.random(6);
if (getSelf().has(Trait.silvertongue)) {
m += 4;
result = Result.special;
}
} else {
m = 0;
n = 0;
result = Result.miss;
}
The meat and potatoes. I've assumed 'm' is the pleasure damage, and 'n' is the mojo build?
Initially the skill does 10 pleasure to the target, 0 to self, and 0 mojo build.
Increased by 5-10 for worship
As well as 20 damage to the self
and 20 mojo build.
Otherwise it does
1-6 +4 if you have silvertongue
and builds 10 mojo.

If for whatever reason it does 0 damage/mojo it misses.

I'm pretty sketchy on the details so this is where I need the most help.

Small odds and ends:
The speed of the skill is '2', which I assume is a simply priority system.
The accuracy is odd 75 : 200 Is this supposed to be if the target can move or not?
 

The Silver Bard

Well-Known Member
Sep 2, 2015
207
23
There's some bastardization of my original code going on, so I may not be able to help 100%, but I'll give it a shot.
Requirements is suppose to check whether the skill can be learned, and Usable checks whether the skill can be used in the particular situation. The stance should only be checked in usable.
The titsblocking check ensure that it can't be used in paizuripin or titsfucking stance, even if all other prerequisites are met.

You're mostly correct on resolution (I think. I can't see what m and n are actually used for in this snippet), but being in facesat stance and generates 10 mojo. The +1d6 damage is the same in every case, so you can just calculate it in the beginning. Thus the final pleasure damage is 11-16 (+ 4 if worship or silvertongue, but not facesat). Damage doesn't scale with any user Attributes, which is pretty usual.
The only time it'll ever fall through to the miss case is if stance is not faceSitting, isWorship is false (I assume that's user is worshiping target), target is mobile (not in a restrained stance), and the accuracy roll fails. Result will eventually be checked to determine what text to display.

Speed is a scale from 1-10. Turn order is decided by an opposed roll of 1d10 + user's speed + skill's speed.
Accuracy used to be a 1-10 scale, but I have no idea what the mod has done with it.
 

12centDime

Active Member
Mar 16, 2017
41
5
I agree that traps in general could use some way to reliably use them...but at the same time, I feel traps are already -really- strong when used by players. Snare/Enthrall makes any other character a cake-walk and you just win. Tripwire is absurdly good until about level 20 where it's merely good. Mara trap is hilarious. I really don't know how i feel about making them even better without also nerfing them somehow.

Daytime events: Going to several different stores and picking stuff up feels like it shouldn't take multiple hours if done sequentially, but it's also not the hugest deal that it does.
It feels terrible to use the exercise and porn actions really. I feel like we could slightly nerf the other really good actions in some way to make the former more appealing. Like, make advancing special skills for money cost 2 hours instead of 1, which also might cut down on the every character has 6 Ki and 5 Fetish thing.
I hate the RNG on Attribute advancement when spending time with the girls. I really feel like it should just be standardized somehow. Like, every 4th time increment spent on Games with a girl increases Cunning or something.

----------------------------------------

Accuracy is mostly handled in Character.java atm i think
public int getChanceToHit(Character attacker, Combat c, int accuracy) {

int hitDiff = attacker.getSpeedDifference(this) + (attacker.get(Attribute.Perception)
- get(Attribute.Perception));
int levelDiff = Math.min(attacker.level - level, 5);
levelDiff = Math.max(levelDiff, -5);

// with no level or hit differences and an default accuracy of 80, 80%
// hit rate
// each level the attacker is below the target will reduce this by 2%,
// to a maximum of 10%
// each point in accuracy of skill affects changes the hit chance by 1%
// each point in speed and perception will increase hit by 5%
int chanceToHit = 2 * levelDiff + accuracy + 5 * (hitDiff - evasionBonus());
if (has(Trait.hawkeye)) {
chanceToHit += 5;
}
return chanceToHit;
}
Though that doesn't take into account counters and stuff i think?

Anyway, it's base chance to hit. 75% or 200% given equal circumstances. 200% is just alot of extra accuracy so you -really- don't miss.
public int accuracy(Combat c, Character target) {
return !c.getStance().isBeingFaceSatBy(c, getSelf(), target) && c.getStance().reachTop(target)? 75 : 200;
}
If you are not being facesat on and the target can reach the top of you, the accuracy is 75%. Otherwise, the accuracy is 200%.
 
Last edited:

Yllarius

Member
Feb 26, 2018
6
0
32
Man, looking at Anilingus this seemed much simpler than it does now.
That said, if my questions ever get obnoxious feel free to tell me to chill, I really wanted to do this so I knew what could be done with my characters. I always had the issue of (Can I make an anal receiving power character?) ect

Anyways, let's look at Assfuck.

@Override
public boolean usable(Combat c, Character target) {
return fuckable(c, target) && c.getStance().mobile(getSelf())
&& (c.getStance().behind(getSelf())
|| (c.getStance().prone(target) && !c.getStance().mobile(target)))
&& getSelf().canAct()
&& c.getStance().reachBottom(getSelf())
&& (getTargetOrgan(target).isReady(target) || target.has(Trait.buttslut) || getSelf().has(Item.Lubricant)
|| getSelf().getArousal().percent() > 50 || getSelf().has(Trait.alwaysready)
|| getSelf().has(Trait.assmaster))
&& (!target.hasPussy() || !PullOut.blockedByAddiction(getSelf()));
That's a lot of usability requirements.
So first the user has to be mobile. (IE: Not pinned?) AND is behind OR the target is prone and mobile?
Obviously you have to be able to act, and can reach their bottom.
If the target's ass is lubricated, OR they have the Buttslut trait, OR you have a lubricant
OR you are aroused 50% or more, OR you have always ready, OR you have assmaster.
AND the target does NOT have a pussy (??) OR you're not blocked from pulling out by addiction?

This all confuses me a bit, which leads me to believe i'm reading it wrong.

From there I'm not even sure what entirely i'm looking at in the damage calculations.
int m = Random.random(10, 15);
if (getSelf().has(Trait.strapped) && getSelf().has(Item.Strapon2)) {
m += 3;
}
if (getSelf().human()) {
c.write(getSelf(), deal(c, premessage.length(), Result.normal, target));
} else if (target.human()) {
if (!c.getStance().behind(getSelf()) && getSelf().has(Trait.strapped)) {
c.write(getSelf(), receive(c, premessage.length(), Result.upgrade, target));
} else if (getSelf().getType().equals("Eve") && c.getStance().behind(getSelf())) {
m += 5;
c.write(getSelf(), receive(c, premessage.length(), Result.special, target));
} else {
c.write(getSelf(), receive(c, premessage.length(), Result.normal, target));
}
} else if (c.isBeingObserved()) {
if (!c.getStance().behind(getSelf()) && getSelf().has(Trait.strapped)) {
c.write(getSelf(), receive(c, premessage.length(), Result.upgrade, target));
} else {
c.write(getSelf(), receive(c, premessage.length(), Result.normal, target));
}
}

boolean voluntary = getSelf().canMakeOwnDecision();
if (c.getStance().behind(getSelf())) {
if (getSelf().getType().equals("Eve")) {
c.setStance(new AnalProne(getSelf(), target), getSelf(), voluntary);
} else {
if (c.getStance().enumerate() == Stance.behindfootjob) {c.setStance(new BehindFootjob(getSelf(),target));}
else {c.setStance(new Anal(getSelf(), target), getSelf(), voluntary);}
}
} else {
c.setStance(new AnalProne(getSelf(), target), getSelf(), voluntary);
}
int otherm = m;
if (getSelf().has(Trait.insertion)) {
otherm += Math.min(getSelf().get(Attribute.Seduction) / 4, 40);
}
target.body.pleasure(getSelf(), getSelfOrgan(), getTargetOrgan(target), otherm, c, this);
if (!getSelf().has(Trait.strapped)) {
getSelf().body.pleasure(target, getTargetOrgan(target), getSelfOrgan(), m / 2, c, this);
}
getSelf().emote(Emotion.dominant, 100);
if (!target.has(Trait.analTraining1) && !target.has(Trait.shameless)) {
target.emote(Emotion.desperate, 50);
} else {
target.emote(Emotion.horny, 25);
}
if (!target.has(Trait.Unflappable)) {
target.add(c, new Flatfooted(target, 1));
}
if (getSelf().has(Trait.analFanatic) && getSelf().hasDick()) {
c.write(getSelf(),
String.format("Now with %s %s deeply embedded within %s ass,"
+ " %s mind clears itself of everything but fucking %s as hard as possible.",
getSelf().possessiveAdjective(), getSelf().body.getRandomCock().describe(getSelf()),
target.nameOrPossessivePronoun(), getSelf().nameOrPossessivePronoun(),
target.directObject()));
getSelf().add(c, new Frenzied(getSelf(), 4));
getSelf().add(c, new IgnoreOrgasm(getSelf(), 4));
}
return true;
So 10-15 Damage base, 3 damage more if you're wearing a strap-on. and 5 more if against Eve??
otherm I assume is used as 'secondary' damage?
So AFAIK math.min returns smaller numbers right? So IF you have Insertion (Master?) Trait, it does 1/4th of your Seduction UP TO 40 damage.
If you have a strap-on (And wearing it) you gain a 50% base damage increase ( m / 2?)
IDK about the rest of the traits mentioned, or if they even have an effect on damage calculations.

Again, if you feel that it'd be too much work to answer my questions feel free to let me know and I'll drop it.

Sidenote: Does anyone else not like the Counter skill? (And Mara's Trip sometimes IMHO) Ideally it's a skill the could be played around, but A: You have no idea when the opponent is going to use it, and B: There's only a handful of skills available that won't get countered (Tempt,Taunt,Wait ect.) I wonder if it'd be possible to buff the skill but make it a 2-turn action.
 

12centDime

Active Member
Mar 16, 2017
41
5
long to write out and explain, but i'll try. I'll say that i typically find that it helps to look at multiple skills at a time and compare them to each other when trying to understand them, rather than taking one apart and trying to understand it.

evaluate from left to right, parenthesis first, then &&, then ||. so, this can be more clearly described as

*target is fuckable(see the Fuck skill for that. Ass Fuck extends Fuck)

*user is mobile(see position.java. every position will tell whether the top and bottom are mobile or not. typically, the bottom is not mobile while the top may or may not be depending on the position)

*user is behind OR (target is prone AND the target is not mobile)

*user canAct

*user can reachBottom

*target's Ass isReady OR target is a buttslut OR user has lubricant OR user's arousal is > 50% OR user has alwaysready OR user has assmaster

*target does not have a pussy OR user's pullout is not blocked by an addition (I don't actually know what this line is for exactly. it has to do with the Breeder addiction, how it can block certain actions, and how not all NPCs are guaranteed to actually have a pussy given all circumstances.)

if each of those points is true, you can use Ass Fuck
------------------------------------------------------------------------------------

on damage, you get 3 damage more if you're using Strapon2, which is an upgrade that can be bought from the guy you can learn Science from

the 5 extra damage comes from the user being Eve rather than the target being Eve. Eve is special like that

in this case, otherm is specifically the damage dealt as modified by the insertion trait. this is important because, on the next line:

the next line relating to strapons means that if you are -not- wearing a strapon, you take 50% of the damage you deal as pleasure damage to your cock. this damage is not modified by the increased damage you deal if you have Insertion

the traits after that point don't have an effect on damage, but instead to the duration of the flat-footedness characters can suffer after being hit with Ass Fuck, self induced Frenzing that can be achieved with traits, enthralling due to the as-yet not officially unimplemented ButtSlut quest, and characters emotions
 

Bronzechair

Well-Known Member
Aug 30, 2015
150
6
Sidenote: Does anyone else not like the Counter skill? (And Mara's Trip sometimes IMHO) Ideally it's a skill the could be played around, but A: You have no idea when the opponent is going to use it, and B: There's only a handful of skills available that won't get countered (Tempt,Taunt,Wait ect.) I wonder if it'd be possible to buff the skill but make it a 2-turn action.

You can reliably predict and play around counter by keeping track of its Mojo cost and cooldown: I noticed that at least Mara, Jewel, and Eve will use it on cooldown, and the other opponents (if they're even different) likely have a pattern of their own, in addition to the move being less punishing when used by them due to their lower Power/Cunning. If you made counter into a 2-turn action, it would be useless against the PC except in situations where the player spams actions carelessly and misses the prompt. Why? Because any player that's paying attention will simply not trigger it; there's literally no reason to trigger it without some kind of time-pressure, and even then it wouldn't be useful to attack her during her counter because there's no possibility for the attack to go through. In order to make a multi-turn counter work, you would need to give the player both incentive to hurry things along and a chance of attacking into the counter being successful.

What's wrong with Trip? I'm guessing Mara's massive amount of Cunning makes it super reliable for her? It might be scaling too well with Cunning.
 

Yllarius

Member
Feb 26, 2018
6
0
32
on damage, you get 3 damage more if you're using Strapon2, which is an upgrade that can be bought from the guy you can learn Science from

the 5 extra damage comes from the user being Eve rather than the target being Eve. Eve is special like that

in this case, otherm is specifically the damage dealt as modified by the insertion trait. this is important because, on the next line:

the next line relating to strapons means that if you are -not- wearing a strapon, you take 50% of the damage you deal as pleasure damage to your cock. this damage is not modified by the increased damage you deal if you have Insertion

the traits after that point don't have an effect on damage, but instead to the duration of the flat-footedness characters can suffer after being hit with Ass Fuck, self induced Frenzing that can be achieved with traits, enthralling due to the as-yet not officially unimplemented ButtSlut quest, and characters emotions
This all makes sense, but I'm sure i've had assfuck do more than 10-15 or damage (I've seen it do 60+) this also doesn't reference anything like Anal Training 1/2/3. Which makes me wonder if it's not being changed somewhere else?

EDIT: Do you ever immediately post something and have realize your mistake? This is probably all in 'thrust' ect. instead of initial insertion.

EDIT2: Nevermind, it's just calculated elsewhere. Looking at game logs, the base skill damage gets multiplied by other things. (Which when I'm done with skills, I'll look at more indepth)

You can reliably predict and play around counter by keeping track of its Mojo cost and cooldown: I noticed that at least Mara, Jewel, and Eve will use it on cooldown, and the other opponents (if they're even different) likely have a pattern of their own, in addition to the move being less punishing when used by them due to their lower Power/Cunning. If you made counter into a 2-turn action, it would be useless against the PC except in situations where the player spams actions carelessly and misses the prompt. Why? Because any player that's paying attention will simply not trigger it; there's literally no reason to trigger it without some kind of time-pressure, and even then it wouldn't be useful to attack her during her counter because there's no possibility for the attack to go through. In order to make a multi-turn counter work, you would need to give the player both incentive to hurry things along and a chance of attacking into the counter being successful.

What's wrong with Trip? I'm guessing Mara's massive amount of Cunning makes it super reliable for her? It might be scaling too well with Cunning.
You definitely could do that, and I've done so before, but it feels a bit frustrating (to me) to have to keep track of that all the time or risk losing very quickly because even with high power or cunning it can sometimes be difficult to escape.
Reversal is a bit frustrating in the same regard. But I think maybe this has more to do with the nature of the system itself instead. I cranked everyone's willpower up and things seem to go back and forth a little better.
(If one wanted to change willpower growth/lvl for npcs, perhaps in a start, how would one do that? I tried adding "growth" Willpower: and bonusWillpower: but neither seemed to work even at ridiculous levels.)

Trip was a huge issue on my power/fetish jewel clone, I swear she hit me with that every time. But less so on my others.


Nother EDIT: Found a minor bug with Barrier. It costs 10 mojo, but the description says '3 mojo' for whatever reason.
 
Last edited:

12centDime

Active Member
Mar 16, 2017
41
5
Oh yeah, the damage in the skill itself is only the tip of the iceberg.

On counter: You can further play around it too though. Charm status leaves them unable to use Counter. Diversion can't be countered. Non-contact skills work, so ranged Bind skills are good. If they have low stamina you might risk the Counter anyway, since you can probably struggle/escape out of the pin
.
Fun fact: Reversal's accuracy is based on a check between the user's Cunning and the opposer's Cunning. If the user's Cunning is even 10 higher than the opposer's Reversal's base accuracy is 100. Depending on your character and who you are facing, you may just be entirely unable to beat that check, and have to play around the fact that the opponent can use it if they feel like it. Keep them Charmed or Enthralled or bound and if they aren't, be in a position that isn't too incredibly bad if you get reversal'd.

Trip, among other things, is also an opposed Cunning check, so the lower the character's cunning the more susceptible they are to it. That could possibly be one of the reasons your power/fetish character had trouble with it, especially if they were low or medium Perception too.

On willpower growth, i don't know where, but there appears to be a sanity check. growth.willpower = 1.7f, or whichever notation the character uses, does produce Willpower higher than if there were no mod to growth at all, but growth.willpower = 5.2f doesn't produce values all that much higher than that. You can mod each character's base Willpower and it will continue growing each level as though it were their normal Willpower if you want though.
 

Yllarius

Member
Feb 26, 2018
6
0
32
Yeah, maybe it's just my disconnect with how the game plays. There's a lot of ways to get a person down and keep them down. (Masochism + Stamina damage), (Cunning + Charm/ect). But as I said I was kinda hoping for a bit more back and forth.

I did mod their base willpower, but I wanted a smoother growth, without the hassle of changing my savefile every so often.
That said, has there been any though on the discussion for addictions about fetishes? I'd love to see fetishes be semi-persistent. Basically between rounds, maybe either simply as a decreasing value (So losing .5 fetish every 'day') or as a floor based on the highest fetish value. (Maybe like a third? So if you got their value to 2.0 it could never fall below .6)
Obviously some restrictions would need to be applied. But I'd love for a way to more permanently effect my opponents.



I'm doing alright going through the skills now I think, but there's a lot of little things IDK about that I'll come back to I think.
for example, when looking at usability for blowjob, it uses a boolean for part of it instead of return. I'm not sure why that makes a different.
In Breast smother it uses:

target.loseWillpower(c, Math.min(5, target.getWillpower().max() * 10 / 100 ));
When is * 10 / 100 ever NOT equal to / 10?

There's a lot of status effects i'm not 100% on, but I figure i'll go through a first pass of the skills, come back if I figure anything out, and then ask more questions later.

EDIT: I think I found another bug: Bunshin service SAYS it uses 4 mojo per clone
But
@Override
public int getMojoCost(Combat c) {
return numberOfClones(c) * 2;
}

@Override
public String describe(Combat c) {
return "Pleasure your opponent with shadow clones: 4 mojo per attack (min 2))";
}
The mojo cost displays #clones * 2

EDIT 2: I /think/ I found another bug: In Bunshin Service again.
if (target.roll(getSelf(), c, accuracy(c, target))) {
switch (Random.random(4)) {
case 0:
r = Result.weak;
target.tempt(Random.random(3) + getSelf().get(Attribute.Seduction) / 4);
break;
case 1:
r = Result.normal;
target.body.pleasure(getSelf(), getSelf().body.getRandom("hands"),target.body.getRandomBreasts(),
Random.random(3 + getSelf().get(Attribute.Seduction) / 2)
+ target.get(Attribute.Perception) / 2,
c, this);
break;
case 2:
r = Result.strong;
BodyPart targetPart = target.body.has("cock") ? target.body.getRandomCock()
: target.hasPussy() ? target.body.getRandomPussy()
: target.body.getRandomAss();
target.body.pleasure(getSelf(), getSelf().body.getRandom("hands"),targetPart, Random.random(4 + getSelf().get(Attribute.Seduction))
+ target.get(Attribute.Perception) / 2,
c, this);
break;
default:
r = Result.critical;
targetPart = target.body.has("cock") ? target.body.getRandomCock()
: target.hasPussy() ? target.body.getRandomPussy()
: target.body.getRandomAss();
target.body.pleasure(getSelf(),getSelf().body.getRandom("hands"), targetPart, Random.random(6)
+ getSelf().get(Attribute.Seduction) / 2 + target.get(Attribute.Perception), c,
this);
break;
}
From /my/ understanding, the 'weak' version of the skill does (0 - 3) + 1/4 seduction.
The 'normal' version does (0-3+1/2 seduction) (+ 1/2 perception but)
At 40 seduction 'weak' is doing 10-13 and 'normal' is doing 0-23.
Is this intentional? It seems I would prefer the 'weak'.
Especially because IMHO, tempt damage is better than pleasure damage ANYWAYS, because it's usually preferable to cause heavy overflow

EDIT: Weee, looking at more stuff. Going back to Armbar
public boolean usable(Combat c, Character target) {
return c.getStance().dom(getSelf()) && c.getStance().reachTop(target) && getSelf().canAct()
&& !getSelf().has(Trait.undisciplined) && !c.getStance().inserted();
}
This implies to me that:
User is in a dominant stance, can reach the targets upper body, user can act.
User must NOT have the undisciplined trait /AND/ not being penetrated.
Implying that (Requirements not withstanding) if the user is being penetrated but does not have the undisciplined trait they could use armbar. (Assuming the other values are correct)
Which is odd, because it seems like it should be an OR statement.

I bring this up because in Charm:
@Override
public boolean usable(Combat c, Character target) {
return getSelf().canRespond() && c.getStance().facing(getSelf(), target) && !(target.is(Stsflag.wary) || target.is(Stsflag.charmed)) ;
}
We get an or statement. The target cannot be wary or charmed.
 
Last edited:

12centDime

Active Member
Mar 16, 2017
41
5
I believe the most recent talk on a Player addiction was the idea of some sort of modular build-your-own-addiction thing, but I can't seem to find it atm. In any case, I think talk on it was mostly tabled until the coding rewrite is complete. I personally hope it doesn't take over fetishes entirely since I have my own ideas on what the Fetish skill could represent, but time will tell. It might be odd for Eve and the player to share addictions, but I do see how the current Fetish system plays similarly to how an addiction might function.
-----------------------------------------------------------
On Breast Smother and Blow, I -want- to say that those quirks in the code mean nothing at all and are just there due to a previous coder's idea of clarity or something, but I wouldn't take my word for it. I'm pretty inexperienced with code as far as such things go.
-----------------------------------------------------------
Ninjutsu: Yeah, Ninjutsu has issues, those among them. The skillset isn't the most obvious to learn, and the majority of it needs a good bit of work for the sake of balance and actually functioning, so I don't think anyone has looked too hard at it, especially because of the code rewrite thing.
-----------------------------------------------------------
On Armbar
You're seeing something incorrectly. The statement is all &&s. Both must be true or the statement is false.
c.getStance().dom(getSelf())

&&

c.getStance().reachTop(target)

&&

getSelf().canAct()

&&

!getSelf().has(Trait.undisciplined)

&&

!c.getStance().inserted()
The user must both not have undisciplined and not be inserted, or else this fails as every line must be true.
As opposed to
getSelf().canRespond()

&&

c.getStance().facing(getSelf(), target)

&&

!(target.is(Stsflag.wary) || target.is(Stsflag.charmed))
If the target is wary or charmed, one or both of the || is true and the ! will make the statement false. So, the target must be both not wary and not charmed for the statement to be true.

Also, c.getStance().reachTop(target) means that the target must be able to reachTop, not the user. That would be c.getStance().reachTop(getSelf())
 

Yllarius

Member
Feb 26, 2018
6
0
32
On Armbar
You're seeing something incorrectly. The statement is all &&s. Both must be true or the statement is false.
So what's the difference between this and the or statement in charmed?
In this one, if the user has undisciplined the statement evaluates to false, the skill can't be used.
or if the user is penetrated then the statement evaluates to false, and the skill can't be used.

If the target is wary or charmed, one or both of the || is true and the ! will make the statement false. So, the target must be both not wary and not charmed for the statement to be true.
Yes, if either evaluate to false the skilll fails.


Also, c.getStance().reachTop(target) means that the target must be able to reachTop, not the user. That would be c.getStance().reachTop(getSelf())
Stances still confuse me a bit on specifics, and looking through them didn't seem to clarify much, does it automatically assume that 'top' is the opposite user then? So c.getstance().reachtop(target) would be if the target could reach the user's top?
 
Last edited:

12centDime

Active Member
Mar 16, 2017
41
5
Its possible i explained that poorly, because I'm not sure what exactly you're asking now. When we're talking about booleans, an && statement might not be any different from an || statement if they are written that way.
We're working with booleans, so each value can be only true or false.
Our statement is !(target.is(Stsflag.wary) || target.is(Stsflag.charmed)). This is logically equivalent to !target.is(Stsflag.wary) && !target.is(Stsflag.charmed), just depends what looks better.

Evaluating, we get

True if !wary && !charmed;
because !(False || False) = !False = True
False if !wary && charmed
because !(False || True) = !True = False
False if wary && !charmed
because !(True || False) = !True = False
False if wary && charmed
because !(True || True) = !True = False

For Armbar, we have !getSelf().has(Trait.undisciplined) && !c.getStance().inserted(). This is logically equivalent to !(getSelf().has(Trait.undisciplined) || c.getStance().inserted()), Again it just depends on how it looks.

Evaluating, we get

True if !disciplined && !inserted
because True && True = True
False if !disciplined && inserted
because True && False = False
False if disciplined && !inserted
because False && True = False
False if disciplined && inserted
because False && False = False
I hope that helps since that was basically me rambling. >_>

Stances still confuse me a bit on specifics, and looking through them didn't seem to clarify much, does it automatically assume that 'top' is the opposite user then? So c.getstance().reachtop(target) would be if the target could reach the user's top?

Simple answer is if the user of the skill is the opponent of target, yes, c.getStance().reachTop(target) means "if the target could reach the user's top."

But 'top' in that case doesn't mean "the opposite user." It refers to the upper part of the opponent of target's body. Whether or not a given character can is detailed by the java of w/e stance they are in. (So like Mount.java if you just used Mount)

Looking at useable for Fondle Breasts, you get c.getStance().reachTop(getSelf())
This means if getSelf() could physically reach the upper part of their opponent's body given their relative positions, getSelf() can use Fondle Breasts. You can use Fondle Breasts if you're Pussy Grinding, but not if someone is Heel Grinding you(and thus behind you and their chest is pressed against you). If you were Heel Grinding them, you could use Fondle Breasts(because they are in front of you and their breasts are within easy reach).

also, in stances, top can also be used like BehindFootjob.java's
public boolean behind(Character c) {
return c == top;
}

where top refers to the dominant person in the position, the person more in control of the position, the person who is not losing willpower for remaining in the position. In this stance, only the person in the dominant position(the one doing the holding and pleasuring with their feet in this case) is behind someone else.
 
Last edited:

Yllarius

Member
Feb 26, 2018
6
0
32
I hope that helps since that was basically me rambling. >_>
It does, In fact I had pretty much the same thing written out, just with WXYZ for simplicities sake.
I guess the lesson here is that just because things are written differently doesn't necessarily mean they function differently.

Simple answer is if the user of the skill is the opponent of target, yes, c.getStance().reachTop(target) means "if the target could reach the user's top."

But 'top' in that case doesn't mean "the opposite user." It refers to the upper part of the opponent of target's body. Whether or not a given character can is detailed by the java of w/e stance they are in. (So like Mount.java if you just used Mount)

Looking at useable for Fondle Breasts, you get c.getStance().reachTop(getSelf())
This means if getSelf() could physically reach the upper part of their opponent's body given their relative positions, getSelf() can use Fondle Breasts. You can use Fondle Breasts if you're Pussy Grinding, but not if someone is Heel Grinding you(and thus behind you and their chest is pressed against you). If you were Heel Grinding them, you could use Fondle Breasts(because they are in front of you and their breasts are within easy reach).

also, in stances, top can also be used like BehindFootjob.java's
public boolean behind(Character c) {
return c == top;
}

where top refers to the dominant person in the position, the person more in control of the position, the person who is not losing willpower for remaining in the position. In this stance, only the person in the dominant position(the one doing the holding and pleasuring with their feet in this case) is behind someone else.

You said it doesn't necessarily mean the opposite person (I said user, but really there's only ever one 'user') so what would it read if the person needs to be able to reach their own top? Or does that case exist.

Because from what I understand by what your saying, Armbar could be used in a theoretical position where the user can't reach the target's top, but the target could reach the user's top?
 

12centDime

Active Member
Mar 16, 2017
41
5
You said it doesn't necessarily mean the opposite person (I said user, but really there's only ever one 'user') so what would it read if the person needs to be able to reach their own top? Or does that case exist.
The case doesn't exist, but checking if getSelf().canAct() && c.getStance().mobile(getSelf()) would probably be similar. It's what Strip Self uses.

Because from what I understand by what your saying, Armbar could be used in a theoretical position where the user can't reach the target's top, but the target could reach the user's top?
Yes.
But, since part of Armbar's useable is c.getStance().dom(getSelf()), the user also has to be the top in the stance. To my knowledge, there is no stance in which the dom cannot reach the top of the opponent, but the opponent can reach the top of the dom.