atagen

jelq

public

an http based roguelike rpg about jelqing

Star0
Watch0
2026362c76a617af2cdca92573dd85e96c0abfb0
1
ssh://brewery@pls.lobotomise.me:33/atagen/jelq.git

Blame: src/game/arousal.rs

e028a4184d00atagen2026-10-14 10:49 UTC1
use super::{
e028a4184d00atagen2026-10-14 10:49 UTC2
    Run,
e028a4184d00atagen2026-10-14 10:49 UTC3
    balance::{DANGER_EQ, EQ_BAND, HOT_EQ, PREMATURE_EQ, RING_RUPTURE_LINE, RUPTURE_LINE},
e028a4184d00atagen2026-10-14 10:49 UTC4
};
e028a4184d00atagen2026-10-14 10:49 UTC5
e028a4184d00atagen2026-10-14 10:49 UTC6
/// What `X-EQ` shows in place of the number, cut on the lines the rolls already use.
e028a4184d00atagen2026-10-14 10:49 UTC7
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
e028a4184d00atagen2026-10-14 10:49 UTC8
pub enum Arousal {
e028a4184d00atagen2026-10-14 10:49 UTC9
    Flaccid,
e028a4184d00atagen2026-10-14 10:49 UTC10
    Cold,
e028a4184d00atagen2026-10-14 10:49 UTC11
    Warm,
e028a4184d00atagen2026-10-14 10:49 UTC12
    Ideal,
e028a4184d00atagen2026-10-14 10:49 UTC13
    Swollen,
e028a4184d00atagen2026-10-14 10:49 UTC14
    Throbbing,
e028a4184d00atagen2026-10-14 10:49 UTC15
    Straining,
e028a4184d00atagen2026-10-14 10:49 UTC16
    Imminent,
e028a4184d00atagen2026-10-14 10:49 UTC17
    Priapic,
e028a4184d00atagen2026-10-14 10:49 UTC18
}
e028a4184d00atagen2026-10-14 10:49 UTC19
e028a4184d00atagen2026-10-14 10:49 UTC20
impl Arousal {
e028a4184d00atagen2026-10-14 10:49 UTC21
    pub fn name(self) -> &'static str {
e028a4184d00atagen2026-10-14 10:49 UTC22
        match self {
e028a4184d00atagen2026-10-14 10:49 UTC23
            Self::Flaccid => "Flaccid",
e028a4184d00atagen2026-10-14 10:49 UTC24
            Self::Cold => "Cold",
e028a4184d00atagen2026-10-14 10:49 UTC25
            Self::Warm => "Warm",
e028a4184d00atagen2026-10-14 10:49 UTC26
            Self::Ideal => "Ideal",
e028a4184d00atagen2026-10-14 10:49 UTC27
            Self::Swollen => "Swollen",
e028a4184d00atagen2026-10-14 10:49 UTC28
            Self::Throbbing => "Throbbing",
e028a4184d00atagen2026-10-14 10:49 UTC29
            Self::Straining => "Straining",
e028a4184d00atagen2026-10-14 10:49 UTC30
            Self::Imminent => "Imminent",
e028a4184d00atagen2026-10-14 10:49 UTC31
            Self::Priapic => "Priapic",
e028a4184d00atagen2026-10-14 10:49 UTC32
        }
e028a4184d00atagen2026-10-14 10:49 UTC33
    }
e028a4184d00atagen2026-10-14 10:49 UTC34
}
e028a4184d00atagen2026-10-14 10:49 UTC35
e028a4184d00atagen2026-10-14 10:49 UTC36
impl Run {
e028a4184d00atagen2026-10-14 10:49 UTC37
    pub(super) fn rupture_line(&self) -> i32 {
e028a4184d00atagen2026-10-14 10:49 UTC38
        if self.items.kit.ring {
e028a4184d00atagen2026-10-14 10:49 UTC39
            RING_RUPTURE_LINE
e028a4184d00atagen2026-10-14 10:49 UTC40
        } else {
e028a4184d00atagen2026-10-14 10:49 UTC41
            RUPTURE_LINE
e028a4184d00atagen2026-10-14 10:49 UTC42
        }
e028a4184d00atagen2026-10-14 10:49 UTC43
    }
e028a4184d00atagen2026-10-14 10:49 UTC44
e028a4184d00atagen2026-10-14 10:49 UTC45
    pub fn arousal(&self) -> Arousal {
e028a4184d00atagen2026-10-14 10:49 UTC46
        if self.body.conditions.priapism_turns > 0 {
e028a4184d00atagen2026-10-14 10:49 UTC47
            Arousal::Priapic
e028a4184d00atagen2026-10-14 10:49 UTC48
        } else if self.hotter_than(PREMATURE_EQ) {
e028a4184d00atagen2026-10-14 10:49 UTC49
            Arousal::Imminent
e028a4184d00atagen2026-10-14 10:49 UTC50
        } else if self.hotter_than(self.rupture_line()) {
e028a4184d00atagen2026-10-14 10:49 UTC51
            Arousal::Straining
e028a4184d00atagen2026-10-14 10:49 UTC52
        } else if self.hotter_than(HOT_EQ) {
e028a4184d00atagen2026-10-14 10:49 UTC53
            Arousal::Throbbing
e028a4184d00atagen2026-10-14 10:49 UTC54
        } else if self.hotter_than(DANGER_EQ) {
e028a4184d00atagen2026-10-14 10:49 UTC55
            Arousal::Swollen
e028a4184d00atagen2026-10-14 10:49 UTC56
        } else if EQ_BAND.contains(&self.body.eq) {
e028a4184d00atagen2026-10-14 10:49 UTC57
            Arousal::Ideal
e028a4184d00atagen2026-10-14 10:49 UTC58
        } else if self.body.eq == 0 {
e028a4184d00atagen2026-10-14 10:49 UTC59
            Arousal::Flaccid
e028a4184d00atagen2026-10-14 10:49 UTC60
        } else if self.cold() {
e028a4184d00atagen2026-10-14 10:49 UTC61
            Arousal::Cold
e028a4184d00atagen2026-10-14 10:49 UTC62
        } else {
e028a4184d00atagen2026-10-14 10:49 UTC63
            Arousal::Warm
e028a4184d00atagen2026-10-14 10:49 UTC64
        }
e028a4184d00atagen2026-10-14 10:49 UTC65
    }
e028a4184d00atagen2026-10-14 10:49 UTC66
}