an http based roguelike rpg about jelqing
Commit 2d9074e0b4de
tarball4 files changed+31-2
@@ -116,7 +116,9 @@ impl Item {
116116
Self::TeapotSpout => "Does nothing. Cannot be dropped.",117117
Self::BabyOil => "Smooth. +1. One unit per jelq.",118118
Self::CoconutOil => "+3. Solid until it matters. Suspicious at Nan's.",119
- Self::Lotion => "Handy. +0, and it chafes, so each jelq costs an extra stamina.",119
+ Self::Lotion => {120
+ "Handy. +0, and it chafes, so each jelq costs an extra stamina. Soothes a friction burn."121
+ }120122
Self::Vaseline => "+2. Raises suspicion everywhere.",121123
Self::EnergyDrink => "technique=energy. +3 stamina. Tastes like a battery.",122124
}@@ -18,6 +18,7 @@ pub enum Notice {
1818
RunningLong(Floor),1919
LastTurn,2020
SkinGivingWay,21
+ BurnSoothed,2122
}2223
2324
impl Notice {@@ -45,6 +46,7 @@ impl Notice {
4546
},4647
Self::LastTurn => "This is the last turn on this floor. Leave now or be found.",4748
Self::SkinGivingWay => "the skin is giving way",49
+ Self::BurnSoothed => "the lotion has soothed the friction burn",4850
}4951
}5052
}@@ -37,7 +37,11 @@ impl Run {
3737
}3838
self.body.jelq_grip = Some(self.body.grip);3939
self.body.friction = (self.body.friction + friction).min(FRICTION_MAX);40
- if self.body.friction >= FRICTION_BURN_AT40
+ if lube == Some(Lube::Lotion) {41
+ if std::mem::take(&mut self.body.conditions.friction_burn) {42
+ self.notices.push(Notice::BurnSoothed);43
+ }44
+ } else if self.body.friction >= FRICTION_BURN_AT4145
&& !self.body.conditions.friction_burn4246
&& self.chance(4347
self.decision(@@ -423,3 +423,24 @@ async fn stretching_reports_the_foreskin_it_grew() {
423423
}424424
assert!(landed > 0, "forty stretches and none landed clean");425425
}426
+427
+#[tokio::test]428
+async fn lotion_soothes_a_friction_burn() {429
+ let app = seeded_with(Floor::ChangingRoom, |run| {430
+ run.body.eq = 60;431
+ run.body.friction = 7;432
+ run.body.conditions.friction_burn = true;433
+ run.items.lubes.lotion = 1;434
+ });435
+ let soothed = send(436
+ &app,437
+ "JELQ",438
+ "/runs/cafebabe?technique=wet",439
+ &[("content-type", "application/lotion")],440
+ "",441
+ )442
+ .await;443
+ let warned = warnings(&soothed);444
+ assert!(warned.iter().any(|w| w.contains("soothed")));445
+ assert!(warned.iter().all(|w| w != "199 - \"friction burn\""));446
+}