atagen

jelq

public

an http based roguelike rpg about jelqing

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

Blame: src/game/arousal.rs

e028a4184d00atagen2026-10-14 10:49 UTC1
use super::{
ea51d9fda49datagen2026-10-14 12:20 UTC2
    Cause, Ending, 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,
ea51d9fda49datagen2026-10-14 12:20 UTC18
    Ruptured,
e028a4184d00atagen2026-10-14 10:49 UTC19
}
e028a4184d00atagen2026-10-14 10:49 UTC20
e028a4184d00atagen2026-10-14 10:49 UTC21
impl Arousal {
e028a4184d00atagen2026-10-14 10:49 UTC22
    pub fn name(self) -> &'static str {
e028a4184d00atagen2026-10-14 10:49 UTC23
        match self {
e028a4184d00atagen2026-10-14 10:49 UTC24
            Self::Flaccid => "Flaccid",
e028a4184d00atagen2026-10-14 10:49 UTC25
            Self::Cold => "Cold",
e028a4184d00atagen2026-10-14 10:49 UTC26
            Self::Warm => "Warm",
e028a4184d00atagen2026-10-14 10:49 UTC27
            Self::Ideal => "Ideal",
e028a4184d00atagen2026-10-14 10:49 UTC28
            Self::Swollen => "Swollen",
e028a4184d00atagen2026-10-14 10:49 UTC29
            Self::Throbbing => "Throbbing",
e028a4184d00atagen2026-10-14 10:49 UTC30
            Self::Straining => "Straining",
e028a4184d00atagen2026-10-14 10:49 UTC31
            Self::Imminent => "Imminent",
e028a4184d00atagen2026-10-14 10:49 UTC32
            Self::Priapic => "Priapic",
ea51d9fda49datagen2026-10-14 12:20 UTC33
            Self::Ruptured => "Ruptured",
e028a4184d00atagen2026-10-14 10:49 UTC34
        }
e028a4184d00atagen2026-10-14 10:49 UTC35
    }
e028a4184d00atagen2026-10-14 10:49 UTC36
}
e028a4184d00atagen2026-10-14 10:49 UTC37
e028a4184d00atagen2026-10-14 10:49 UTC38
impl Run {
e028a4184d00atagen2026-10-14 10:49 UTC39
    pub(super) fn rupture_line(&self) -> i32 {
e028a4184d00atagen2026-10-14 10:49 UTC40
        if self.items.kit.ring {
e028a4184d00atagen2026-10-14 10:49 UTC41
            RING_RUPTURE_LINE
e028a4184d00atagen2026-10-14 10:49 UTC42
        } else {
e028a4184d00atagen2026-10-14 10:49 UTC43
            RUPTURE_LINE
e028a4184d00atagen2026-10-14 10:49 UTC44
        }
e028a4184d00atagen2026-10-14 10:49 UTC45
    }
e028a4184d00atagen2026-10-14 10:49 UTC46
e028a4184d00atagen2026-10-14 10:49 UTC47
    pub fn arousal(&self) -> Arousal {
ea51d9fda49datagen2026-10-14 12:20 UTC48
        if matches!(
ea51d9fda49datagen2026-10-14 12:20 UTC49
            self.ended,
ea51d9fda49datagen2026-10-14 12:20 UTC50
            Some(Ending {
ea51d9fda49datagen2026-10-14 12:20 UTC51
                cause: Cause::Ruptured { .. },
ea51d9fda49datagen2026-10-14 12:20 UTC52
                ..
ea51d9fda49datagen2026-10-14 12:20 UTC53
            })
ea51d9fda49datagen2026-10-14 12:20 UTC54
        ) {
ea51d9fda49datagen2026-10-14 12:20 UTC55
            Arousal::Ruptured
ea51d9fda49datagen2026-10-14 12:20 UTC56
        } else if self.body.conditions.priapism_turns > 0 {
e028a4184d00atagen2026-10-14 10:49 UTC57
            Arousal::Priapic
e028a4184d00atagen2026-10-14 10:49 UTC58
        } else if self.hotter_than(PREMATURE_EQ) {
e028a4184d00atagen2026-10-14 10:49 UTC59
            Arousal::Imminent
e028a4184d00atagen2026-10-14 10:49 UTC60
        } else if self.hotter_than(self.rupture_line()) {
e028a4184d00atagen2026-10-14 10:49 UTC61
            Arousal::Straining
e028a4184d00atagen2026-10-14 10:49 UTC62
        } else if self.hotter_than(HOT_EQ) {
e028a4184d00atagen2026-10-14 10:49 UTC63
            Arousal::Throbbing
e028a4184d00atagen2026-10-14 10:49 UTC64
        } else if self.hotter_than(DANGER_EQ) {
e028a4184d00atagen2026-10-14 10:49 UTC65
            Arousal::Swollen
e028a4184d00atagen2026-10-14 10:49 UTC66
        } else if EQ_BAND.contains(&self.body.eq) {
e028a4184d00atagen2026-10-14 10:49 UTC67
            Arousal::Ideal
e028a4184d00atagen2026-10-14 10:49 UTC68
        } else if self.body.eq == 0 {
e028a4184d00atagen2026-10-14 10:49 UTC69
            Arousal::Flaccid
e028a4184d00atagen2026-10-14 10:49 UTC70
        } else if self.cold() {
e028a4184d00atagen2026-10-14 10:49 UTC71
            Arousal::Cold
e028a4184d00atagen2026-10-14 10:49 UTC72
        } else {
e028a4184d00atagen2026-10-14 10:49 UTC73
            Arousal::Warm
e028a4184d00atagen2026-10-14 10:49 UTC74
        }
e028a4184d00atagen2026-10-14 10:49 UTC75
    }
e028a4184d00atagen2026-10-14 10:49 UTC76
}