an http based roguelike rpg about jelqing
Commit 61fe020d61e0
tarball3 files changed+26-4
@@ -8,6 +8,7 @@ pub const FRICTION_GRIP: i32 = 1;
88
pub const FRICTION_HOLD: i32 = 2;99
pub const FRICTION_MEDITATE: i32 = 2;1010
pub const FRICTION_ICE: i32 = 3;11
+pub const FRICTION_LOTION: i32 = 1;1112
pub const FRICTION_FLOOR: i32 = 1;1213
pub const FRICTION_BURN_AT: i32 = 6;1314
pub const FRICTION_BURN: u32 = 10;@@ -3,9 +3,9 @@ use super::{
33
balance::{44
BRANCH_TURN, CAT_TAKES_TOWEL, CHANGING_ROOM_CHILL, EQ_WOBBLE, EXTENDER_GAIN,55
FORESKIN_GLIDE, FRICTION_BURN, FRICTION_BURN_AT, FRICTION_COLD, FRICTION_DRY,6
- FRICTION_GRIP, FRICTION_MAX, FRICTION_SPIT, GIRTH_THICK, HOT_EQ, OBSERVED, PRIAPISM_EQ,7
- PRIAPISM_TURNS, PULLED_MUSCLE, PULLED_MUSCLE_INTENSITY, RING_PRIAPISM, RING_TIGHT_PRIAPISM,8
- STROKE_EQ, STROKE_EQ_COST, SUSPICION_LIMIT, VIGOUR,6
+ FRICTION_GRIP, FRICTION_LOTION, FRICTION_MAX, FRICTION_SPIT, GIRTH_THICK, HOT_EQ, OBSERVED,7
+ PRIAPISM_EQ, PRIAPISM_TURNS, PULLED_MUSCLE, PULLED_MUSCLE_INTENSITY, RING_PRIAPISM,8
+ RING_TIGHT_PRIAPISM, STROKE_EQ, STROKE_EQ_COST, SUSPICION_LIMIT, VIGOUR,99
},1010
};1111
use crate::problem::Problem;@@ -35,8 +35,11 @@ impl Run {
3535
if cold {3636
friction += FRICTION_COLD;3737
}38
+ if lube == Some(Lube::Lotion) {39
+ friction -= FRICTION_LOTION;40
+ }3841
self.body.jelq_grip = Some(self.body.grip);39
- self.body.friction = (self.body.friction + friction).min(FRICTION_MAX);42
+ self.body.friction = (self.body.friction + friction).clamp(0, FRICTION_MAX);4043
if lube == Some(Lube::Lotion) {4144
if std::mem::take(&mut self.body.conditions.friction_burn) {4245
self.notices.push(Notice::BurnSoothed);@@ -442,6 +442,24 @@ async fn stretching_reports_the_foreskin_it_grew() {
442442
}443443
444444
#[tokio::test]445
+async fn lotion_sheds_friction_at_a_gentle_pace() {446
+ let app = seeded_with(Floor::Bedroom, |run| {447
+ run.body.eq = 55;448
+ run.body.friction = 4;449
+ run.items.lubes.lotion = 1;450
+ });451
+ let stroke = send(452
+ &app,453
+ "JELQ",454
+ "/runs/cafebabe?technique=wet&intensity=5",455
+ &[("content-type", "application/lotion")],456
+ "",457
+ )458
+ .await;459
+ assert_eq!(header(&stroke, "x-friction"), "3/10");460
+}461
+462
+#[tokio::test]445463
async fn lotion_soothes_a_friction_burn() {446464
let app = seeded_with(Floor::ChangingRoom, |run| {447465
run.body.eq = 60;