Nimbin[12]?Games / Entropie / entropie/src/world/why.c

Entropie git · main

Entropie festival game; first steps

sdl c game entropie cmake · first commit 2026-10-10 · last commit 2026-11-02 (18 hours ago) · synced 10 hours ago

C 88.5% Markdown 9.1% GLSL 2.3%
git clone https://git.christianimmanuel.de/games/Entropie.gitwget https://git.christianimmanuel.de/games/Entropie/archive/Entropie.tar.gz
entropie/src/world/why.c 2.9 KB · 59 lines raw
#include "world/why.h"

#include <string.h>

static const WhyInfo WHY[WHY_COUNT] = {
    [WHY_URINELLA] = {
        .title = "Free Urinellas",
        .ask = "Why do festivals hand out Urinellas?",
        .seen = "A woman peed standing up with a Urinella. Why would a festival hand those out?",
        .knowers = { "Jana", "Julia", "Stella", "Doro" },
        .answer = "The queues! With one I'm as quick as the guys - no squatting in the dark.",
        .because = "Women wait far longer at festival toilets, and at night they squat in the dark bushes. "
                   "A Urinella lets them pee standing: quicker, safer, shorter queues for everybody.",
        .option = "Yes - free Urinellas at every toilet (60 EUR)",
        .raiser = "Stella",
        .raise = "At the last festival there were free Urinellas everywhere. Anybody know why?",
        .cost = 60,
    },
    [WHY_AWARENESS] = {
        .title = "An awareness team",
        .ask = "Why do festivals have an awareness team?",
        .seen = "Somebody was down, out cold - and nobody noticed. Who looks out for people at a festival?",
        .knowers = { "Stella", "Doro", "Julia", "Volkram" },
        .answer = "Sober people on shift who look out for anyone not okay - drink, creeps, panic.",
        .because = "Too much to drink, somebody getting too close, a bad trip, panic in a crowd: an awareness team "
                   "is sober people on shift, easy to find, who look out for anyone who isn't okay and help.",
        .option = "Yes - an awareness team, the crew takes turns on shift",
        .raiser = "Julia",
        .raise = "Fusion has an awareness team. Do we need one too? Why do they have it?",
        .cost = 0,
    },
    [WHY_SHIRT] = {
        .title = "No shirt, no service",
        .ask = "Why do some festivals say \"no shirt, no service\"?",
        .seen = "Shirtless at work again. Some festival bars say \"no shirt, no service\" - why?",
        .knowers = { "Jana", "Julia", "Kilian", "Stella" },
        .answer = "Guys go shirtless anywhere, women can't without stares. It keeps it fair.",
        .because = "Men walk about shirtless everywhere while women can't without being stared at - it makes "
                   "the place feel like theirs. No shirt, no service at the bars keeps it the same for everybody.",
        .option = "Yes - no shirt, no service at our bars",
        .raiser = "Kilian",
        .raise = "Somebody told me: no shirt, no service at the bar. What's that about?",
        .cost = 0,
    },
};

const WhyInfo *Why_get(int k) { return &WHY[k < 0 ? 0 : k >= WHY_COUNT ? WHY_COUNT - 1 : k]; }

bool Why_knows(const Object *who, int k) {
    if (!who || !who->is_character) return false;
    for (int i = 0; i < 4; i++)
        if (WHY[k].knowers[i] && !strcmp(who->name, WHY[k].knowers[i])) return true;
    return false;
}

int Why_open(const World *world) {
    for (int k = 0; k < WHY_COUNT; k++) if (world->why[k] == WHY_RAISED) return k;
    return -1;
}