dotg

a bitreich fosdem adventure
git clone git://parazyd.org/dotg.git
Log | Files | Refs

commit 74b73ef589543b707afb73fee8f956b8a5e7d7fe
Author: parazyd <parazyd@dyne.org>
Date:   Fri, 23 Feb 2018 18:16:08 +0100

Initial

Diffstat:
AMakefile | 3+++
Aact-i/Balcony.dcgi | 28++++++++++++++++++++++++++++
Aact-i/Bedroom1.dcgi | 31+++++++++++++++++++++++++++++++
Aact-i/Bedroom2.dcgi | 44++++++++++++++++++++++++++++++++++++++++++++
Aact-i/Bedroom2.sh | 21+++++++++++++++++++++
Aact-i/Hipster_Area.dcgi | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/Hipster_Area.sh | 34++++++++++++++++++++++++++++++++++
Aact-i/Work_Desk.dcgi | 30++++++++++++++++++++++++++++++
Aact-i/bookshelf.dcgi | 16++++++++++++++++
Aact-i/coffeetable.dcgi | 16++++++++++++++++
Aact-i/config | 105+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/functions | 213+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/host.dcgi | 31+++++++++++++++++++++++++++++++
Aact-i/index.dcgi | 34++++++++++++++++++++++++++++++++++
Aact-i/inventory.dcgi | 16++++++++++++++++
Aact-i/maps | 483+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/r1-closet.dcgi | 28++++++++++++++++++++++++++++
Aact-i/reset.dcgi | 12++++++++++++
Aact-i/sex.dcgi | 112+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/start.dcgi | 19+++++++++++++++++++
Aact-i/take.dcgi | 39+++++++++++++++++++++++++++++++++++++++
Aact-i/takebeer.dcgi | 10++++++++++
Aact-i/takemilk.dcgi | 2++
Aact-i/talk-20h.dcgi | 29+++++++++++++++++++++++++++++
Aact-i/talk-20h.sh | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/talk-balcony.dcgi | 22++++++++++++++++++++++
Aact-i/talk-gentoo.dcgi | 23+++++++++++++++++++++++
Aact-i/talk-gentoo.sh | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/talk-girls.dcgi | 26++++++++++++++++++++++++++
Aact-i/talk-girls.sh | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/talk-hipster.dcgi | 24++++++++++++++++++++++++
Aact-i/talk-hipster.sh | 37+++++++++++++++++++++++++++++++++++++
Aact-i/talk-nerds.dcgi | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/talk-nerds.sh | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aact-i/use.dcgi | 39+++++++++++++++++++++++++++++++++++++++
Aact-i/usecases.csv | 33+++++++++++++++++++++++++++++++++
Aindex.gph | 22++++++++++++++++++++++
37 files changed, 2064 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile @@ -0,0 +1,3 @@ +all: + rsync -P -e "ssh" -avul --delete --stats \ + . parazyd@jakku.parazyd.org:public_html/parazyd.org/dotg/ diff --git a/act-i/Balcony.dcgi b/act-i/Balcony.dcgi @@ -0,0 +1,28 @@ +#!/bin/sh + +. config +echo Balcony > $savegame/room +. functions +. maps + +map_balcony + +cat <<EOM +## THE BALCONY (BAL) + +You are on the balcony. It's chilly. There are: +$(cat $balcony/Beers) beers, and $(cat $balcony/Chocolate_Milks) chocolate milks left. + +There are two people talking near you. + + +[1|Talk to people|$path/talk-balcony.dcgi|server|port] + +[1|Take two beers|$path/takebeer.dcgi|server|port] +[1|Take chocolate milk|$path/takemilk.dcgi|server|port] + +[1|Check inventory|$path/inventory.dcgi|server|port] + +EOM + +navigation diff --git a/act-i/Bedroom1.dcgi b/act-i/Bedroom1.dcgi @@ -0,0 +1,31 @@ +#!/bin/sh + +. config +echo Bedroom1 > $savegame/room +. functions +. maps + +map_bedroom1 + +cat <<EOM +## BEDROOM 1 (R1) + +You are in a small bedroom. + +You see a bed, closet, and a chair. + +EOM + +[ -f "$bedroom1/.notyet" ] || { + list_items_to take "$bedroom1" "foo" +} + +cat <<EOM + +[1|Look into the closet|$path/r1-closet.dcgi|server|port] + +[1|Check inventory|$path/inventory.dcgi|server|port] + +EOM + +navigation diff --git a/act-i/Bedroom2.dcgi b/act-i/Bedroom2.dcgi @@ -0,0 +1,44 @@ +#!/bin/sh + +. config +echo Bedroom2 > $savegame/room +. functions +. maps + +gotkey="yes" +[ -f "$bedroom2/.notyet" ] && gotkey="no" + +case "$gotkey" in + yes) map_bedroom2_unlocked ;; + *) map_bedroom2_locked ;; +esac + +cat <<EOM +## BEDROOM 2 (R1) + +EOM + +case "$gotkey" in + yes) + cat <<EOM +You are in a small bedroom. + +You see a bed, closet, and a chair. + +EOM + list_items_to take "$bedroom2" + ;; + *) + cat <<EOM +You can not open the bedroom door. It seems it's locked. +EOM + ;; +esac + +cat <<EOM + +[1|Check inventory|$path/inventory.dcgi|server|port] + +EOM + +navigation diff --git a/act-i/Bedroom2.sh b/act-i/Bedroom2.sh @@ -0,0 +1,21 @@ +specific_bedroom2() { + item="$1" + + case "$item" in + Keychain_with_a_key) + cat <<EOM + +You unlock the bedroom door. The key snaps and breaks, blocking the +keyhole. +EOM + rm "$inventory/$item" + rm "$bedroom2/.notyet" + ;; + *) + cat <<EOM + +$item is of no use here. +EOM + ;; + esac +} diff --git a/act-i/Hipster_Area.dcgi b/act-i/Hipster_Area.dcgi @@ -0,0 +1,57 @@ +#!/bin/sh + +. config +echo Hipster_Area> $savegame/room +. functions +. maps + +map_hipsterarea + +cat <<EOM +## HIPSTER AREA (HIP) + +You are in the hipster area. In front of you there is a coffee +ttable. + +You are sitting on a soft carpet. Left of you on the couch +is your friend that you have brought here with you. He's sitting +in the middle. On his left there is a hipster using a Macbook +and deep-frying his testicles. Right of him there is an obese +Spaniard. + +EOM + +dropitem Beers && echo "You give a beer to your friend." + +if [ -f "$inventory/.nerdsmoved" ]; then + cat <<EOM + +Behind you (NX) there is an unattended NeXT UNIX machine. +EOM +else + cat <<EOM + +Behind you (NX) there are a couple of nerds trying to type in +commands into a NeXT machine. +EOM +fi + +cat <<EOM + +The people right of you and across you do not seem interesting. + +Behind the couch to your right there's a DJ and some people +playing bad beats on the sound system. + + +[1|Talk to your friend|$path/talk-20h.dcgi|server|port] +[1|Talk to the obese Spaniard|$path/talk-gentoo.dcgi|server|port] +[1|Talk to the burning hipster|$path/talk-hipster.dcgi|server|port] +[1|Talk to the NeXT nerds|$path/talk-nerds.dcgi|server|port] + +[1|Inspect the coffee table|$path/coffeetable.dcgi|server|port] + +[1|Check inventory|$path/inventory.dcgi|server|port] +EOM + +navigation diff --git a/act-i/Hipster_Area.sh b/act-i/Hipster_Area.sh @@ -0,0 +1,34 @@ +specific_talk_hipsterarea() { + item="$1" + + case "$item" in + Old_Thinkpad) + if [ -f "$inventory/Wifi_password" ]; then + cat <<EOM + +You got the Wifi password. You type it in and you now enjoy the Gopherspace. + +EOM + else + cat <<EOM + +You scan the Wifi radio, but don't manage to find an open network. +EOM + fi + return + ;; + Plate_of_Bolognese_Sauce) + cat <<EOM + +You disgustingly look at the Bolognese sauce, but decide to keep it. +EOM + return + ;; + *) + cat <<EOM +$item is of no use here. +EOM + return + ;; + esac +} diff --git a/act-i/Work_Desk.dcgi b/act-i/Work_Desk.dcgi @@ -0,0 +1,30 @@ +#!/bin/sh + +. config +echo Work_Desk > $savegame/room +. functions +. maps + +map_workdesk + +cat <<EOM +## WORK DESK (COMP) + +You are at the work desk. There are two girls and a guy. + +Behind them there is a bookshelf. On the work desk you see: + +EOM + +list_items_to take $workdesk + +cat <<EOM +[1|Talk to girls |$path/talk-girls.dcgi|server|port] + +[1|Check bookshelf|$path/bookshelf.dcgi|server|port] + +[1|Check inventory|$path/inventory.dcgi|server|port] + +EOM + +navigation diff --git a/act-i/bookshelf.dcgi b/act-i/bookshelf.dcgi @@ -0,0 +1,16 @@ +#!/bin/sh + +. config +. functions + +cat <<EOM +You look at the bookshelf, and you recognize some books: + +EOM + +list_items_to take $books + +cat <<EOM + +[1|Exit|$path/$(cat $savegame/room).dcgi|server|port] +EOM diff --git a/act-i/coffeetable.dcgi b/act-i/coffeetable.dcgi @@ -0,0 +1,16 @@ +#!/bin/sh + +. config +. functions + +cat <<EOM +You look at the coffee table, and you see: + +EOM + +list_items_to take "$hipsters/coffeetable" + +cat <<EOM + +[1|Exit|$path/$(cat $savegame/room).dcgi|server|port] +EOM diff --git a/act-i/config b/act-i/config @@ -0,0 +1,105 @@ +#!/bin/sh + +export path="/dotg/act-i" + +export savegame="/home/parazyd/dotg/act-i/$REMOTE_ADDR" +export hipsters="$savegame/hipsters" +export bedroom1="$savegame/bedroom1" +export bedroom2="$savegame/bedroom2" +export kitchen="$savegame/kitchen" +export toilet1="$savegame/toilet1" +export toilet2="$savegame/toilet2" +export books="$savegame/books" +export balcony="$savegame/balcony" +export workdesk="$savegame/workdesk" +export nextbox="$savegame/nextbox" +export inventory="$savegame/inventory" + +[ -d "$savegame" ] && return + +mkdir -p \ + "$hipsters" \ + "$hipsters/coffeetable" \ + "$hipsters/20h" \ + "$hipsters/obese" \ + "$hipsters/dj" \ + "$bedroom1" \ + "$bedroom2" \ + "$kitchen" \ + "$kitchen/table" \ + "$kitchen/sink" \ + "$kitchen/cupboard" \ + "$kitchen/fridge" \ + "$toilet1/toilet" \ + "$toilet1/shower" \ + "$toilet2/toilet" \ + "$toilet2/shower" \ + "$books" \ + "$balcony" \ + "$workdesk" \ + "$nextbox" \ + "$inventory" + +printf 1 > "$inventory/Old_Thinkpad" +printf 1 > "$inventory/Plastic_bottle_of_rakia" +printf 20 > "$inventory/Cigarettes" +printf 3 > "$inventory/Red_Lighter" +printf 1 > "$inventory/White_Lighter" +printf 1 > "$inventory/Smartphone" +printf 0 > "$inventory/.notyet" + +printf 0 > "$hipsters/obese/.drunklevel" +printf 1 > "$hipsters/obese/Plate_of_Bolognese_Sauce" +printf 1 > "$hipsters/20h/Plate_of_Bolognese_Sauce" +printf 1 > "$hipsters/coffeetable/Dirty_Ashtray" +printf 1 > "$hipsters/coffeetable/Empty_Beer_Bottles" +printf 1 > "$hipsters/coffeetable/Empty_Glasses" + +printf 100 > "$balcony/Beers" +printf 100 > "$balcony/Chocolate_Milks" + +printf 1 > "$bedroom1/.notyet" + +printf 1 > "$bedroom2/Unlocked_Macbook" +printf 1 > "$bedroom2/Google_Ad_coupons" +printf 1 > "$bedroom2/.notyet" + +printf 1 > "$toilet1/toilet/Vomit" +printf 1 > "$toilet1/shower/Lab_Rat" +printf 1 > "$toilet1/shower/.notyet" + +printf 1 > "$toilet2/toilet/Water" +printf 1 > "$toilet2/shower/Plastic_bag" + +printf 1 > "$nextbox/Terminal" +printf 1 > "$nextbox/Keyboard" +printf 1 > "$nextbox/Mouse" + +printf 1 > "$workdesk/Locked_computer" +printf 1 > "$workdesk/Keychain_with_a_key" + +printf 1 > "$kitchen/fridge/Wifi_password" +printf 1 > "$kitchen/fridge/Old_yoghurt" +printf 8 > "$kitchen/fridge/Beers" +printf 8 > "$kitchen/fridge/Chocolate_Milks" +printf 1 > "$kitchen/fridge/Plastic_bag" + +printf 1 > "$books/Also_sprach_Zarathustra" +printf 1 > "$books/The_Birth_of_Tragedy" +printf 1 > "$books/Siddhartha" +printf 1 > "$books/Steppenwolf" +printf 1 > "$books/Baby_and_child_care" +printf 1 > "$books/The_C_Programming_Language" +printf 1 > "$books/Developing_NodeJS" +printf 1 > "$books/To_Kill_a_Mockingbird" +printf 1 > "$books/Sex_drugs_and_cocoa_puffs" +printf 1 > "$books/Fight_Club" +printf 1 > "$books/Fear_and_loathing_in_Las_Vegas" +printf 1 > "$books/The_Dharma_Bums" + +printf 1 > "$kitchen/table/Empty_beer_bottles" +printf 1 > "$kitchen/table/Rolling_tobacco" +printf 1 > "$kitchen/table/Empty_Glasses" +printf 1 > "$kitchen/cupboard/Plates" +printf 1 > "$kitchen/cupboard/Empty_Glasses" +printf 1 > "$kitchen/sink/Dirt" diff --git a/act-i/functions b/act-i/functions @@ -0,0 +1,213 @@ +#!/bin/sh + +navigation() { + locations=" + Balcony + Bedroom1 + Bedroom2 + Toilet1 + Toilet2 + Kitchen + Hipster_Area + Work_Desk + " + current="$(cat $savegame/room)" + + for i in $locations; do + if ! [ "$current" = "$i" ]; then + echo "[1|Go to $i|$path/$i.dcgi|server|port]" + fi + done +} + +takebeer() { + current="$(cat $savegame/room)" + + drink="$1" + + case "$current" in + Balcony) + beersat="$balcony/$drink" + ;; + Kitchen) + beersat="$kitchen/fridge/$drink" + ;; + esac + + if [ -f "$inventory/$drink" ]; then + inbag="$(cat $inventory/$drink)" + else + inbag=0 + fi + + incrate="$(cat $beersat)" + + if [ "$incrate" -lt 2 ]; then + cat <<EOM + +There are no $drink left for you here! + +EOM + else + newcnt="$(( $incrate - 2 ))" + newbag="$(( $inbag +2 ))" + printf "$newcnt" > "$beersat" + printf "$newbag" > "$inventory/$drink" + cat << EOM + +You took two $drink from the $current. + +EOM + fi + + echo "[1|Exit|$path/$current.dcgi|server|port]" +} + +dropitem() { + item="$1" + [ -f "$inventory/$item" ] || return 1 + oldcount="$(cat $inventory/$item)" + newcount="$(( $oldcount - 1))" + printf "$newcount" > "$inventory/$item" + if [ "$newcount" -lt 1 ]; then + rm -f "$inventory/$item" + fi +} + +list_items_to() { + what="$1" + where="$2" + cd "$where" + for i in $(ls -1); do + echo "[1|$i|$path/$what.dcgi?$where/$i|server|port]" + done + cd - >/dev/null + + cat <<EOM + +(note1: select any item to $what it) + +EOM +} + +take_item() { + fullpath="$1" + itemname="$(basename $fullpath)" + + if echo "$itemname" | grep -q '^\.' ; then + itemname="$(echo $itemname | cut -c 2-)" + fi + + mv "$fullpath" "$inventory/$itemname" +} + +find_usecase() { + item="$1" + room="$2" + + line="$(grep "^$item" usecases.csv)" + [ -z "$line" ] && { + echo "No use for $item here." + return + } + + uses="$(echo $line | tr ',' '\n' | tail -n+2)" + if [ "$uses" = "anywhere" ]; then + echo "use-generic" + return + fi + + for i in $uses; do + if [ "$i" = "anywhere" ]; then + echo "use-generic" + return + elif [ "$i" = "$room" ]; then + echo "use-specific,$i" + return + fi + done + + echo "No use for $item here." +} + +use_generic() { + case "$1" in + Cigarettes) + oldcount="$(cat $inventory/Cigarettes)" + newcount="$(( $oldcount -1 ))" + printf "$newcount" > "$inventory/Cigarettes" + if [ "$newcount" -lt 1 ]; then + rm -f "$inventory/Cigarettes" + fi + echo "You smoke a cigarette." + return + ;; + Beers) + oldcount="$(cat $inventory/Beers)" + newcount="$(( $oldcount -1 ))" + printf "$newcount" > "$inventory/Beers" + if [ "$newcount" -lt 1 ]; then + rm -f "$inventory/Beers" + fi + echo "You drink a beer." + return + ;; + Plastic_bottle_of_rakia) + cat <<EOM +You take a sip of rakia. + +You feel drunk. +EOM + ;; + Keychain_with_a_key) + cat <<EOM +You try to unlock things, but there's no place to use the key. + +You put it back in your pocket. +EOM + esac +} + +use_specific() { + call="$1" + item="$2" + + case "$call" in + talk-girls) + . talk-girls.sh + specific_talk_girls "$item" + ;; + talk-gentoo) + . talk-gentoo.sh + specific_talk_gentoo "$item" + ;; + talk-20h) + . talk-20h.sh + specific_talk_20h "$item" + ;; + talk-hipster) + . talk-hipster.sh + specific_talk_hipster "$item" + ;; + talk-nerds) + . talk-nerds.sh + specific_talk_nerds "$item" + ;; + #talk-balcony) + # . talk-balcony.sh + # specific_talk_balcony "$item" + # ;; + Hipster_Area) + . Hipster_Area.sh + specific_talk_hipsterarea "$item" + ;; + Bedroom2) + . Bedroom2.sh + specific_bedroom2 "$item" + ;; + *) + echo "Not implemented" + ;; + esac +} + diff --git a/act-i/host.dcgi b/act-i/host.dcgi @@ -0,0 +1,31 @@ +#!/bin/sh + +. config +. maps + +map_host + +cat <<EOM +"Hello! Welcome!" - The host says. + +You greet him back. + +"Feel like home. There is beer outside on the balcony, some +might be in the fridge." - He says. + +"The toilets are back there and to the right" - The host turns +around and points across the room. + +"I'll leave the two of you to be, go around and talk to people, +enjoy yourself" - He says, as he disappears into the crowd made +of a strange combination of colorfully and black dressed people. + +You oversee the room and see some free spots on the couch in +front of you. You look at your friend and tell him to go grab +tthe seats, and you'll be there with the beers. + +"Okay!" - He says, and leaves for the couch (HIP) + +You look around again, and +[1|leave towards the balcony.|$path/Balcony.dcgi|server|port] +EOM diff --git a/act-i/index.dcgi b/act-i/index.dcgi @@ -0,0 +1,34 @@ +#!/bin/sh + +. config + +cat <<EOM + + ▛▀▖ ▞▀▖▗▀▖ ▀▛▘▌ ▞▀▖ ▛▀▖ ▌ + ▌ ▌▝▀▖▌ ▌ ▌ ▌▐ ▌ ▛▀▖▞▀▖ ▌▄▖▙▀▖▙▄▘▝▀▖▙▀▖▝▀▖▀▜▘▌ ▌▞▀▌ + ▌ ▌▞▀▌▚▄▌ ▌ ▌▜▀ ▌ ▌ ▌▛▀ ▌ ▌▌ ▌ ▞▀▌▌ ▞▀▌▗▘ ▚▄▌▌ ▌ + ▀▀ ▝▀▘▗▄▘ ▝▀ ▐ ▘ ▘ ▘▝▀▘ ▝▀ ▘ ▘ ▝▀▘▘ ▝▀▘▀▀▘▗▄▘▝▀▘ + +A Bitreich FOSDEM adventure... 02 Feb 2018 A.D. + + + ⣎⣱ ⢀⣀ ⣰⡀ ⡇ + ⠇⠸ ⠣⠤ ⠘⠤ ⠇ + -- Hipsters +EOM + +if [ -f "$savegame/room" ]; then + cat <<EOM + +[1|Continue adventure!|$path/$(cat ${savegame}/room).dcgi|server|port] + +EOM +else + cat <<EOM + +[1|Start adventure!|$path/start.dcgi|server|port] + +EOM +fi + +echo "[1|Go back :(|/dotg/index.gph|server|port]" diff --git a/act-i/inventory.dcgi b/act-i/inventory.dcgi @@ -0,0 +1,16 @@ +#!/bin/sh + +. config +. functions + +cat <<EOM +You check your hands, backpack and pockets and find: + +EOM + +list_items_to use $inventory + + cat <<EOM + +[1|Exit|$path/$(cat $savegame/room).dcgi|server|port] +EOM diff --git a/act-i/maps b/act-i/maps @@ -0,0 +1,483 @@ +#!/bin/sh + +cat <<EOM + +[1|--reset game--|$path/reset.dcgi|server|port] + +EOM + +map_start() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | o |x| +| o |bk| | | |x| +| o o |bk| | | <o> |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | | TTTT |S| +| |o TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o______| o NX| TTTT (KIT) |-| +| o +| TTTT | +| o o | +| | +|bk| o (H) | +|bk| o | +|bk| o TTT o +-------+....+--------+ +|bk| TTT | | +|bk| (COMP) o | (BAL) o bbb | +|bk| YOU | o mmm | +|bk| ☃ ☃ <---- | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_host() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | o |x| +| o |bk| | | |x| +| o o |bk| | | <o> |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | | TTTT |S| +| |o TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o______| o NX| TTTT (KIT) |-| +| o +| TTTT | +| o o | +| | +|bk| o | +|bk| o | +|bk| o TTT (H) o +-------+....+--------+ +|bk| TTT ☃ ☃ <---- | | +|bk| (COMP) o YOU | (BAL) o bbb | +|bk| | o mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_balcony() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | o |x| +| o |bk| | | |x| +| o o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | | TTTT |S| +| |o TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o_☃_<o>| o NX| TTTT (KIT) |-| +| o +| (H)TTTT | +| o o | +| | +|bk| | +|bk| o o | +|bk| o TTT o +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o bbb | +|bk| | ----> ☃ mmm | +|bk| | YOU | ++---------------+....+----------------------------------------+ + +EOM +} + +map_talkbalcony() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | o |x| +| o |bk| | | |x| +| o o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | | TTTT |S| +| |o TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o_☃_<o>| o NX| TTTT (KIT) |-| +| o +| (H)TTTT | +| o o | +| | +|bk| | +|bk| o o | +|bk| o TTT o +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o bbb | +|bk| | ----> ☃ mmm | +|bk| | YOU | ++---------------+....+----------------------------------------+ + +EOM +} + +map_bedroom1() { + cat <<EOM ++-------------------------------------------------------------+ +| | YOU--> ☃ | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | o |x| +| o |bk| | | |x| +| o o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | | TTTT |S| +| | TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o_☃_<o>| o NX| TTTT (KIT) |-| +| o +| (H)TTTT | +| o o o | +| | +|bk| | +|bk| o o | +|bk| TTT o +-------+....+--------+ +|bk| TTT | | +|bk| (COMP) | (BAL)o o bbb | +|bk| | mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_bedroom2_unlocked() { + cat <<EOM ++-------------------------------------------------------------+ +| | | YOU--> ☃ | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | o |x| +| o |bk| | | |x| +| o o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ |bk| o | | TTTTo o |x| +| |o o | |bk| o o | | TTTT |S| +| |o TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o_☃_<o>| o NX| TTTT (KIT) |-| +| o +| TTTT | +| o o (H) | +| o o | +|bk| | +|bk| o o | +|bk| TTT o +-------+....+--------+ +|bk|o TTT | | +|bk| o (COMP) | (BAL)o o bbb | +|bk| | mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_bedroom2_locked() { + cat <<EOM ++-------------------------------------------------------------+ +| | o | | +| | (R1) o | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| YOU--> ☃ | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | o |x| +| |bk| | | |x| +| o oo |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ |bk| | | TTTTo o |x| +| | o o | |bk| | o | TTTT |S| +| |o TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o_☃_<o>| o NX| TTTT (KIT) |-| +| o +| TTTT | +| o o o | +| | +|bk| | +|bk| o o o | +|bk| o TTT +-------+....+--------+ +|bk| oTTT | | +|bk| (COMP) | (BAL)o o bbb | +|bk| | (H) mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_workdesk() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | |x| +| o |bk| o | o | |x| +| (H) o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ |bk| | | TTTTo o |x| +| | o | |bk| | | TTTT |S| +| |o TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o_☃_<o>| o NX| TTTT (KIT) |-| +| o +| TTTT | +| o o | +| | +|bk| YOU | +|bk| o ☃ <---- o | +|bk| o TTT o +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o bbb | +|bk| | mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_talkgirls() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | |x| +| o |bk| o | | |x| +| o (H) |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | o TTTT o |x| +| +- +----+ o |bk| | | TTTTo o |x| +| | o | |bk| | | TTTT |S| +| |o TTT +----------+--------+ o TTTT o |x| +| |o TTT | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o_☃_<o>| o NX| TTTT (KIT) |-| +| o +| TTTT | +| o o o o | +| | +|bk| YOU | +|bk| o ☃ <---- | +|bk| o TTT +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o bbb | +|bk| | mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_hipsterarea() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | |x| +| |bk| | | |x| +| o o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | o TTTT (H) |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | | TTTT |S| +| |o TTT YOU +----------+--------+ o TTTT o |x| +| |o TTT ☃ <---- | | o oTTTT o |F| +| +- (HIP) o +| TTTT |x| +| |_o_☃_<o>| o NX| TTTT (KIT) |-| +| o +| TTTT | +| o o o | +| oo | +|bk| | +|bk| | +|bk| o TTT +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o bbb | +|bk| | mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_talk20h() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| | +| | +| +---+....+---+....+------+....+--------+ +| |bk| | | |x| +| |bk| | | |x| +| o o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | oo TTTT (H) |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | oo | TTTT o |S| +| |o TTT YOU +----------+--------+ TTTT |x| +| |o TTT ☃ <---- | | oo TTTT o |F| +| +- (HIP) o +| o TTTT |x| +| |_o_☃_<o>| o NX| o TTTT (KIT) |-| +| o +| TTTT | +| | +| o o | +|bk| o | +|bk| | +|bk| o TTT +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o o bbb | +|bk| | o mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_talkgentoo() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| o | +| o | +| +---+....+---+....+------+....+--------+ +| |bk| | | |x| +| |bk| | | |x| +| o o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | TTTT (H) |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | oo | TTTT o |S| +| |o TTT YOU +----------+--------+ TTTT |x| +| |o TTT ☃ <---- | | oo TTTT o |F| +| +- (HIP) o +| o TTTT |x| +| |_o_☃_<o>| o NX| o TTTT (KIT) |-| +| o +| TTTT | +| | +| o o | +|bk| o | +|bk| | +|bk| o TTT +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o o bbb | +|bk| | o mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_talkhipster() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| o | +| o | +| +---+....+---+....+------+....+--------+ +| |bk| | | |x| +| o |bk| | | |x| +| o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | TTTT (H) |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | oo | TTTT o |S| +| |o TTT YOU +----------+--------+ TTTT |x| +| |o TTT ☃ <---- | | oo TTTT o |F| +| +- (HIP) o +| o TTTT |x| +| |_o_☃_<o>| o NX| o TTTT (KIT) |-| +| o o +| TTTT | +| o o | +| | +|bk| | +|bk| | +|bk| o TTT +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o o bbb | +|bk| | o mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} + +map_talknerds() { + cat <<EOM ++-------------------------------------------------------------+ +| | | | +| | (R1) | (R2) | +|-----------------+....+------+-----------------+....+--------+ +| o | +| o | +| +---+....+---+....+------+....+--------+ +| |bk| | | |x| +| o |bk| | | |x| +| o |bk| | | |x| +| | DJ | |bk| (T1) | (T2) | TTTT (H) |x| +| +- +----+ |bk| | | TTTTo o |x| +| |o o o | |bk| | oo | TTTT o |S| +| |o TTT YOU +----------+--------+ TTTT |x| +| |o TTT ☃ <---- | | oo TTTT o |F| +| +- (HIP) o +| o TTTT |x| +| |_o_☃_<o>| o NX| o TTTT (KIT) |-| +| o o +| TTTT | +| | +| | +|bk| o | +|bk| o | +|bk| o TTT +-------+....+--------+ +|bk| o TTT | | +|bk| (COMP) | (BAL)o o o bbb | +|bk| | o mmm | +|bk| | | ++---------------+....+----------------------------------------+ + +EOM +} diff --git a/act-i/r1-closet.dcgi b/act-i/r1-closet.dcgi @@ -0,0 +1,28 @@ +#!/bin/sh + +. config + +if [ -f "$inventory/.letusfuck" ]; then + cat <<EOM + +As you open the closet, the two girls from the work desk enter the +bedroom... + +"Hey you" - They smile. + +"Thank you for the beers! We're all out bored by that work. Do you +want to have some fun?" + +You're left to no choice but to lock the bedroom door and say: +[1|Let us fuck.|$path/sex.dcgi|server|port] + +EOM +else + cat <<EOM + +You find nothing interesting in the closet. + +EOM +fi + +echo "[1|Exit|$path/$(cat $savegame/room).dcgi|server|port]" diff --git a/act-i/reset.dcgi b/act-i/reset.dcgi @@ -0,0 +1,12 @@ +#!/bin/sh + +. config + +rm -rf "$savegame" + +cat <<EOM + +Game state reset. + +[1|Go back|/dotg/act-i|server|port] +EOM diff --git a/act-i/sex.dcgi b/act-i/sex.dcgi @@ -0,0 +1,112 @@ +#!/bin/sh + +. config + +rm -f "$bedroom1/.notyet" +rm -f "$inventory/.letusfuck" +printf 1 > "$bedroom1/Black_dildo" +printf 1 > "$bedroom1/Used_condom" + +cat <<EOM + +You have hardcore sex with the two girls... + +lcdxxxxkodxoxodxckkxxxxkdxkd:oxldkOxkxoddOOOkdkxodxd:lx:ckkkkxxodxxO:oxxcdkxxddxOOd'lxcdkdkl;ldcc:xd:llx::occo;:o +lcoxxkxkdoxdxdoxckkkdxxkdxkd:okldkOkkkodxOOOkdkxodxd:lx:ckkkkxxodkxO:dxxldkxxxdxOOd'oxodkxkc;ld::cxoccox:co:ll;:o +lcoxkkdkxoxdxxlxckkkxxxOxxkd:dkldxkOkkdddkOOxlkkoddx:lx;lkkkxxkdokxO:xxxldkxxxdxOOl'dkookkkc;lx,,lklocdd:lo:ol;co +cclxkkxkkodxxxlxcdxOxxxOxxkd:dkodxkOkkdldkkxxlxkoodx:cx;lxxxxxkxokxk;kxdodkxxxdxOOc,xkddOOxl;ox;.dkcocxd:olcdl;lo +clodxkxkkddxxxoxllxOxxxOdkkd:dkodxxOkkxdodkxd:xkolox:cd:cddddxxxoxxx;kxxoxkxxxxkOO:;kkddkOdc:ox;'dxcdlko:occdl:lo +;lcdxkxxkkdxxxokd:dOkxdc;;ld;dkloxkkkxxxooddd;dxoccd::dclddddddkoxdx:kdxoxkxxxxkOk,ckxddkOdl:ok:,xdlookocdcldl:lo +;ccoxkxdkkdkxxdxx,xOx: .:c..''....',,,';.cdo;:o:;dclooooooxdxxd:xdxdxxxxxxkOx'lkxodkkdlcokc;xoolxklcocodl:ol +,:ccdkxdxkdkxkdxx,dk. ,c:,.. .......:clccccllxdddlcxdxdxxxkdxkOd.dkxodxkdccox::kldokkllllddlcol +,;l:okkxdxxxdkddd,;: 'doc:,'.. ....'..','.ddod:lddddxxxxdxkkl'xxdlodkdcclx:cxcddxxcocldoocol +,'l:lxkxooxddkdl;.. '::':'.'.. ... .... .,';.:lllcddxddxkk:,kdxoodxocl:d;lo:xkxxlocldolcoc +,.c::dxxolxodl;... cxxol;',;' ....:........... ...''lodccokx;,kdkxlodd::;l'ol:xxdxlocooollo: +;.;c;ldl;'. .cxdc;,,;. ...dc .... ........'',:d;,cxx';kdxxllodl:,;,dd:xdodllcoollll; +:..c,'... :oo:,',, ....... .'lc:. .. .... ...'','''cxx.;xoddccodo:,,;xdcxxollccoocloc; +'.... .'lolc;;c..',;:;;,. ... .... 'llloc...... . ...,...;dd.;dodo;:ldo;'':ddlddd:c:lolcllc, +.. . 'clc:;,,;,,;:ccllllcc;. .;cccccc.,;c. . .....,.;oooo',ldl'..:xxcddo;c:llccl:;, +. ;kkxdolc:;,,;::codddddl;'... ':cccc; .. ........:oco''coc...cxd:odc,c:cc:lc;;' +.... okddxddooolcccccccodddlc;''..'',:odd;.. .''',,;:;,'.. .........,c'.:o; .cdo:ol;,cc::cl:,,' +.'.. cooddlloddddoolllllllllllcc;;,'..;lo;., c .''':loolllc;,,;::,. ...;c' .ldl;lc,;c:,;::,,'. +.... . ':lolc',looooolooddooolccc::;;,..';:' ...k;....:loooolccclcldxdl,.. .';. .coc,::';cc:;:''''. + .. .,:::;..codddolooooooooooollc;'..,,,.,Oko0X. ...;clllllcccccoddolllc;,.. .','.,;':c:::'..... + .,;;' .;clloooollooolllllc:,';:;,..dxco0' . ...'',;;;,,;:::::cccclll:'. ...::;;,...... + ..'. ..,:llc:::;:;;::::::::::c;,''.... '. .... ..',;;;;::clooc;... ..',........ + ..',;:cc:,.':cc:,'. .......,:cccc::::;;;;,........',:cl:. ..',,,,,;:clol:,.. ......... + ..... .'. ..,lllllccl::cclllccccccc:'. ....',;;:clc;,,'..... + .,:c::::;;;coxdocccc;. ...,:;;cccllc: + .. 'cc ..,;;;,,,;::;,'.. .. . ........ .......',;, + coc.'';;:;,'. ...... . .... .... + ..,,... .l;'. .. + 'c:. + .:ll .,;,,,:;;; + llok. .'''. + ';;c:;,,,;;'.. + +oh, you touch my tralala, +mmm... my ding ding dong. +la la la la la la la, +la la la la la la, +la la la la la la la. +Oh, you touch my tralala +la la la la la la la, +la la la la la la. +mmm... my ding ding dong. +la la la la la la la, +la la la la la la. + +Deep in the night, +i'm looking for some fun, +deep in the night, +i'm looking for some love. +de-de-de-deep in the night, +i'm looking for some fun, +deep in the night, +i'm looking for some (ping) + +You tease me, +oh please me, +i want you to be my lovetoy, +come near me, don't fear me, +i just can't get enough of you boy. + +Oh, you touch my tralala. +la la la.. +mmm, my ding ding dong, +oh you touch my tralala, +mmm, my ding ding dong. +la la la... + +Deep in the night, +i'm looking for some fun, +deep in the night, +i'm looking for some love. + +you tease me, +oh please me, +i want you to be my lovetoy. +come near me, don't fear me, +i just can't get enough of you boy. + +Oh, you touch my tralala. +la la la... +mmm, my ding ding dong. +la la la.. +oh, you touch my tralala. +la la la.. +mmm, my ding ding dong. + +(ding ding dong) +mmm, my ding ding dong 2x + +oh, you touch my tralala. +lalala... +mmm, my ding ding dong. +oh ,you touch my tralala +(ding ding dong) +oh, you touch my tralala. +mmm, my ding dong dong. + +[1|Reach orgasm|$path/Bedroom1.dcgi|server|port] +EOM diff --git a/act-i/start.dcgi b/act-i/start.dcgi @@ -0,0 +1,19 @@ +#!/bin/sh + +. config +. maps + +map_start + +cat <<EOM +It's Friday night before FOSDEM. You arrive at a party in +Brussels, Belgium with your friend. With all your plans of +getting drunk with Belgian beer and Serbian rakia you smuggled +into the country, seeing all the hipsters in this place makes +you feel like just walking away. But things might not be as +tthey seem... + +In front of you, the party host (H) greets you... + +[1|Talk to the host|$path/host.dcgi|server|port] +EOM diff --git a/act-i/take.dcgi b/act-i/take.dcgi @@ -0,0 +1,39 @@ +#!/bin/sh + +. config +. functions + +case "$(basename $2)" in + Plate_of_Bolognese_Sauce) + rm -f "$toilet1/.notyet" + rm -f "$hipster/obese/.takingashit" + ;; + + Keychain_with_a_key) + if [ -f "$bedroom1/.notyet" ]; then + cat <<EOM + +"Umm, that's not something you should be taking..." + +The girls don't let you take the keys. + +[1|Exit|$path/$(cat $savegame/room).dcgi|server|port] +EOM + return + else + cat <<EOM + +The girls smile at you and let you take it. +EOM + fi + ;; +esac + +take_item "$2" + +cat <<EOM + +You took the $(basename $2). + +[1|Exit|$path/$(cat $savegame/room).dcgi|server|port] +EOM diff --git a/act-i/takebeer.dcgi b/act-i/takebeer.dcgi @@ -0,0 +1,10 @@ +#!/bin/sh + +. config +. functions + +if [ "$(basename $0)" = "takebeer.dcgi" ]; then + takebeer Beers +else + takebeer Chocolate_Milks +fi diff --git a/act-i/takemilk.dcgi b/act-i/takemilk.dcgi @@ -0,0 +1 @@ +takebeer.dcgi+ \ No newline at end of file diff --git a/act-i/talk-20h.dcgi b/act-i/talk-20h.dcgi @@ -0,0 +1,29 @@ +#!/bin/sh + +. config +echo talk-20h > $savegame/room +. maps + +map_talk20h + +if [ -f "$hipsters/20h/.meaningoflife" ]; then + str="He's babbling about the meaning of life to hipsters around him." +else + str="He's eating a place of bolognese sauce" +fi + +cat <<EOM +## HIPSTER AREA (HIP) + +You nod at your friend. + +$str + +In the meantime he's talking sense into the Macbook user left +of him. + + +[1|Check inventory|$path/inventory.dcgi|server|port] + +[1|Quit the conversation|$path/Hipster_Area.dcgi|server|port] +EOM diff --git a/act-i/talk-20h.sh b/act-i/talk-20h.sh @@ -0,0 +1,128 @@ +specific_talk_20h() { + item="$1" + + case "$item" in + Beers) + cat <<EOM + +You give a beer to your friend. He thanks you and starts drinking it. +EOM + givebeer "$item" + ;; + Chocolate_Milks) + cat <<EOM + +Your friend takes the chocolate milk and pours it all over the Macbook +guy's testicles to cool them down. +EOM + givebeer "$item" + ;; + Locked_computer) + cat <<EOM + +Your friend takes the locked computer and installs Gentoo on it while +uploading the old content to the cloud. +EOM + mv "$inventory/$item" "$hipsters/20h/$item" + ;; + Smartphone) + cat <<EOM + +Your friend takes the smartphone and calls father christmas to bring +some elves for fun. +EOM + printf 1 > "$inventory/.elvesarehere" + ;; + Used_condom) + cat <<EOM + +Your friend takes the used condom, blows it up using heat from the +Macbook guy's produced heat and gives you back a balloon. +EOM + mv "$inventory/$item" "$inventory/Condom_balloon" + ;; + White_Lighter) + cat <<EOM + +Your friend asks for the red lighter. +EOM + ;; + Red_Lighter) + cat <<EOM + +Your friend uses the red lighter to start the fire of the revolution. +EOM + printf 1 > "$inventory/.revolutionstarted" + ;; + Black_dildo) + cat <<EOM + +You give the black dildo to your friend. He smiles perversly and sticks it +in his butt. +EOM + mv "$inventory/$item" "$hipsters/20h" + ;; + Also_sprach_Zarathustra) + cat <<EOM + +God dies. + +Your friend takes the book and starts babbling about the meaning of life. +EOM + if [ -f "$hipsters/20h/Plate_of_Bolognese_Sauce" ]; then + mv "$hipsters/20h/Plate_of_Bolognese_Sauce" "$hipsters/coffeetable" + fi + mv "$inventory/$item" "$hipsters/20h" + printf 1 > "$hipsters/20h/.meaningoflife" + ;; + The_Birth_of_Tragedy) + cat <<EOM + +"Christianity is bad, mmkay" - He tries to tell a meme. + +Your friend takes the book from you and starts babbling about the meaning of +life. +EOM + if [ -f "$hipsters/20h/Plate_of_Bolognese_Sauce" ]; then + mv "$hipsters/20h/Plate_of_Bolognese_Sauce" "$hipsters/coffeetable" + fi + mv "$inventory/$item" "$hipsters/20h" + printf 1 > "$hipsters/20h/.meaningoflife" + ;; + Siddhartha) + cat <<EOM +"Religions suck." - He says. + +You nod. +EOM + return + ;; + The_C_Programming_Language) + cat <<EOM + +"Nice find! Keep it. It could be of good use." - Your friend says. + +You tuck the book back in your backpack. +EOM + ;; + Developing_NodeJS) + cat <<EOM + +Your friend starts manically laughing. + +"Maybe give it to those nerds behind you!" - He grins. + +You tuck the book back in your backpack. +EOM + ;; + Sex_drugs_and_cocoa_puffs) + cat <<EOM + +"Drugs? No. But the other two will do" + +He takes the book from you and smiles. +EOM + mv "$item" "$hipsters/20h" + ;; + esac +} diff --git a/act-i/talk-balcony.dcgi b/act-i/talk-balcony.dcgi @@ -0,0 +1,22 @@ +#!/bin/sh + +. config +echo talk-balcony > $savegame/room +. maps + +map_talkbalcony + +cat <<EOM +## THE BALCONY (BAL) + +You try to spark a conversation with the two hipsters. + +"Hi!" - You say. + +They don't seem to bother. + + +[1|Check inventory|$path/inventory.dcgi|server|port] + +[1|Quit the conversation|$path/Balcony.dcgi|server|port] +EOM diff --git a/act-i/talk-gentoo.dcgi b/act-i/talk-gentoo.dcgi @@ -0,0 +1,23 @@ +#!/bin/sh + +. config +echo talk-gentoo > $savegame/room +. maps + +map_talkgentoo + +cat <<EOM +## HIPSTER AREA (HIP) + +You smalltalk with the spaniard. It turns out he is a Gentoo +developer. + +Your friend and you acknowledge this. + +The spaniard is eating a plate of bolognese sauce. + + +[1|Check inventory|$path/inventory.dcgi|server|port] + +[1|Quit the conversation|$path/Hipster_Area.dcgi|server|port] +EOM diff --git a/act-i/talk-gentoo.sh b/act-i/talk-gentoo.sh @@ -0,0 +1,90 @@ +specific_talk_gentoo() { + item="$1" + + if [ -f "$hipsters/obese/.takingashit" ]; then + cat <<EOM + +The yoghurt did not bode well for the spaniard. He's in the toilet. +EOM + return + fi + + case "$item" in + Old_Thinkpad) + cat <<EOM + +You whip out your old Thinkpad and show the spaniard the amazing +Gentoo Hardened setup you have. + +The spaniard is butthurt that you have access to latest Grsecurity +patches so he wants to start plotting murder against you. + +You realize if you just start walking away in a normal tempo he would +be unable to catch up. + +You put your laptop back in your backpack. +EOM + ;; + Plate_of_Bolognese_Sauce) + cat <<EOM + +You give a plate of Bolognese sauce to the spaniard. + +He thanks you and starts eating it swiftly. +EOM + mv "$inventory/$item" "$hipsters/obese/" + ;; + Beers) + cat <<EOM +You offer a beer to the spaniard. He refuses. + +Is it because it makes bellies big, you ponder... +EOM + ;; + Chocolate_Milks) + cat <<EOM + +You give a chocolate milk bottle to the spaniard. He thanks you and +drinks it in one sip. +EOM + givebeer "$item" + ;; + Old_yoghurt) + cat <<EOM + +You give the old yoghurt to the spaniard. He starts eating it. + +You hear his stomach gurgling. Struggling, but he manages to get +up and start walking towards the toilet. +EOM + printf 1 > "$hipsters/obese/.takingashit" + cp -f "$hipsters/obese/Plate_of_Bolognese_Sauce" "$hipsters/coffeetable" + ;; + The_Birth_of_Tragedy) + cat <<EOM +"Man, christianity sucks, man." - He says while gasping. + +You nod. +EOM + ;; + The_C_Programming_Language) + cat <<EOM + +You show the K&R book to the spaniard. His head explodes. +EOM + printf 1 > "$hipsters/obese/.dead" + ;; + Developing_NodeJS) + cat <<EOM + +"Man, nodejs sucks, man." - He says while gasping. +EOM + ;; + *) + cat <<EOM + +$item is of no use here. +EOM + ;; + esac +} diff --git a/act-i/talk-girls.dcgi b/act-i/talk-girls.dcgi @@ -0,0 +1,26 @@ +#!/bin/sh + +. config +echo talk-girls > $savegame/room +. functions +. maps + +map_talkgirls + +cat <<EOM +## WORK DESK (COMP) + +You introduce yourself to the girls. + +"Hello!" - You say eagerly. + +"Hello to you to! Excuse us though, we're in the middle of +some work. See you around later?" - One of them asks. + +"Sure thing!" - You reply. + + +[1|Check inventory|$path/inventory.dcgi|server|port] + +[1|Quit the conversation|$path/Work_Desk.dcgi|server|port] +EOM diff --git a/act-i/talk-girls.sh b/act-i/talk-girls.sh @@ -0,0 +1,68 @@ +specific_talk_girls() { + item="$1" + case "$item" in + Beers) + oldcount="$(cat $inventory/Beers)" + if [ "$oldcount" -lt 2 ]; then + echo "You don't have enough beers to give." + else + cat <<EOM + +You hand over two beers to the girls. + +"Why thank you! This sure is nice." - They smile. + +"Say, could you do us a favor? There is a thing in the closet in the +small bedroom over there. Would you mind going there and bringing it +back to us?" - One of the girls asks. + +"Hm, what is it?" - You ask. + +"Eh, just go, you'll figure it out when you see it" - The other one winks. + +You wonder for a short second, and say: "Ah well, why not!". + +You smile. +EOM + printf 1 > "$inventory/.letusfuck" + fi + return + ;; + Black_dildo) + cat <<EOM + +You whip out a big black dildo in front of the girls. They laugh +because they know what's up. Anyone else would be disgusted/shocked. +EOM + return + ;; + Baby_and_child_care) + cat <<EOM + +You show the Baby and child care book to the girls, obviously trolling. +They look confused and somewhat worried. +EOM + return + ;; + To_Kill_a_Mockingbird) + cat <<EOM + +"One of my favorite books!", one of the girls says. + +You hand the book over to her, and say: "Enjoy it". + +You wink at her. +EOM + mv "$inventory/$item" "$books" + return + ;; + *) + cat <<EOM + +$item is of no use here. +EOM + return + ;; + esac +} + diff --git a/act-i/talk-hipster.dcgi b/act-i/talk-hipster.dcgi @@ -0,0 +1,24 @@ +#!/bin/sh + +. config +echo talk-hipster > $savegame/room +. maps + +map_talkhipster + +cat <<EOM +## HIPSTER AREA (HIP) + +"Hi! You realize you're going to become infertile" - You say, +seeing that his Macbook is sitting on his testicles, burning +tthem up. + +He doesn't seem to care, and instead starts showing you his +WebGL project on the Macbook. The Macbook starts emitting even +more heat. + + +[1|Check inventory|$path/inventory.dcgi|server|port] + +[1|Quit the conversation|$path/Hipster_Area.dcgi|server|port] +EOM diff --git a/act-i/talk-hipster.sh b/act-i/talk-hipster.sh @@ -0,0 +1,37 @@ +specific_talk_hipster() { + item="$1" + + case "$item" in + Black_dildo) + cat <<EOM + +You make gay jokes at the hipster. + +His eyes tear up. +EOM + return + ;; + To_Kill_a_Mockingbird) + cat <<EOM + +"Ha, did you know my name is Atticus?" + +You're shocked. +EOM + return + ;; + Fight_Club) + cat <<EOM + +"Oh wow! That's one of my favorite movies. I didn't know they wrote +a book after it... I probably won't read it, but cool!" + +You're shocked. You take a sip of rakia to relax. +EOM + ;; + *) + cat <<EOM +$item is of no use here. +EOM + esac +} diff --git a/act-i/talk-nerds.dcgi b/act-i/talk-nerds.dcgi @@ -0,0 +1,49 @@ +#!/bin/sh + +. config +echo talk-nerds > $savegame/room +. maps +. functions + +map_talknerds + +cat <<EOM +## HIPSTER AREA (HIP) +EOM + +if [ -f "$inventory/.nerdsmoved" ]; then + cat <<EOM + +The nerds seem to have left the machine in a usable state. You're +surprised. + +You see: +EOM + +list_items_to use $nextbox + + cat <<EOM + + +[1|Check inventory|$path/inventory.dcgi|server|port] + +[1|Leave the computer|$path/Hipster_Area.dcgi|server|port] +EOM +else + cat <<EOM + +You take a look at what the nerds are doing. They seem to be +ttrying to find a C compiler on the NeXT machine. They are +not successful. + +You ask if you can use the keyboard, they do not let you and +diss you off instead. + + +[1|Check inventory|$path/inventory.dcgi|server|port] + +[1|Quit the conversation|$path/Hipster_Area.dcgi|server|port] +EOM +fi + + diff --git a/act-i/talk-nerds.sh b/act-i/talk-nerds.sh @@ -0,0 +1,90 @@ +specific_talk_nerds() { + item="$1" + + if [ -f "$inventory/.nerdsmoved" ]; then + cat <<EOM + +The nerds seem to have left. + +EOM + + case "$item" in + The_C_Programming_Language) + cat <<EOM + +You use the power of C to flip bytes and bang bits... +EOM + [ -f "$inventory/.notyet" ] || { + cat <<EOM +Accidentally, you activate a +[h|time machine|URL:ssh://time-machine@bitreich.org|server|port] + + +You have finished Act I. + +[1|To to Act II|/dotg/act-ii|server|port] +EOM + rm -f "$nextbox/Terminal" "$nextbox/Keyboard" \ + "$nextbox/Mouse" "$nextbox/The_C_Programming_Language" + printf 1 > "$inventory/.timemachineactivated" + } + ;; + Terminal|Keyboard|Mouse) + cat <<EOM + +You try using the NeXT computer, but you're unsuccessful. +EOM + ;; + *) + cat <<EOM +$item is of no use here. +EOM + ;; + esac + else + case "$item" in + Beers|Chocolate_Milks) + cat <<EOM + +The nerds steal all your $item. +EOM + rm -f "$inventory/$item" + ;; + The_C_Programming_Language) + cat <<EOM + +The nerds take $item from you and try to type in examples in the +NeXT console. + +They seem to be failing. +EOM + mv "$inventory/$item" "$nextbox" + ;; + Developing_NodeJS) + cat <<EOM + +As you pull out the book from your backpack, one of the nerds catches +a glance at it. He loudly points at it. + +The other nerds look at it and forcefully take it away from you. They +leave the area and move towards somewhere else. +EOM + rm -f "$inventory/$item" + printf 1 > "$inventory/.nerdsmoved" + ;; + Sex_drugs_and_cocoa_puffs) + cat <<EOM + +The virgins try to convince you they're not. + +(Developer note: this is actually a good book, unrelated to the context +it is presented in-game. Read it ;) +EOM + ;; + *) + cat <<EOM +$item is of no use here. +EOM + esac + fi # !nerdsmoved +} diff --git a/act-i/use.dcgi b/act-i/use.dcgi @@ -0,0 +1,39 @@ +#!/bin/sh + +. config +. functions + +fullpath="$2" +itemname="$(basename $fullpath)" + +currentloc="$(cat $savegame/room)" + +call="$(find_usecase $itemname $currentloc)" + +case "$call" in + No*) + cat <<EOM +$call + +[1|Exit|$path/$(cat $savegame/room).dcgi|server|port] +EOM + return + ;; + use-generic*) + use_generic "$itemname" + cat <<EOM + +[1|Exit|$path/$(cat $savegame/room).dcgi|server|port] +EOM + return + ;; + use-specific*) + use_specific "$(echo $call | awk -F, '{print $2}')" "$itemname" + cat <<EOM + +[1|Exit|$path/$(cat $savegame/room).dcgi|server|port] +EOM + return + ;; +esac + diff --git a/act-i/usecases.csv b/act-i/usecases.csv @@ -0,0 +1,33 @@ +Old_Thinkpad,Hipster_Area,talk-gentoo +Plastic_bottle_of_rakia,anywhere +Cigarettes,anywhere +Smartphone,Kitchen,Bedroom1,talk-20h +Plate_of_Bolognese_Sauce,Kitchen,Hipster_Area,Toilet1,talk-gentoo +Empty_Beer_Bottles,Toilet1,Balcony,Kitchen +Empty_Glasses,Kitchen,Toilet1 +Beers,talk-girls,talk-nerds,talk-20h,talk-gentoo,anywhere +Chocolate_Milks,talk-gentoo,talk-nerds,Kitchen,talk-20h +Black_dildo,Toilet1,Balcony,Bedroom1,Bedroom2,talk-girls,talk-20h,talk-hipster +Red_Lighter,talk-20h +White_Lighter,talk-20h +Locked_computer,talk-20h +Keychain_with_a_key,Bedroom2,anywhere +Used_condom,Toilet1,Toilet2,talk-20h +Plastic_bag,Balcony,Toilet1,Toilet2 +Old_yoghurt,talk-gentoo +Rolling_tobacco,anywhere +Empty_Glasses,Kitchen,Toilet1 +Terminal,talk-nerds +Keyboard,talk-nerds +Mouse,talk-nerds +Google_Ad_coupons,talk-balcony + +Also_sprach_Zarathustra,talk-20h +The_Birth_of_Tragedy,talk-20h,talk-gentoo +Siddhartha,talk-20h +Baby_and_child_care,talk-20h,talk-girls +The_C_Programming_Language,talk-20h,talk-gentoo,talk-nerds +Developing_NodeJS,talk-20h,talk-gentoo,talk-nerds +To_Kill_a_Mockingbird,talk-hipster,talk-girls +Sex_drugs_and_cocoa_puffs,talk-20h,talk-nerds +Fight_Club,talk-hipster diff --git a/index.gph b/index.gph @@ -0,0 +1,22 @@ + + ▛▀▖ ▞▀▖▗▀▖ ▀▛▘▌ ▞▀▖ ▛▀▖ ▌ + ▌ ▌▝▀▖▌ ▌ ▌ ▌▐ ▌ ▛▀▖▞▀▖ ▌▄▖▙▀▖▙▄▘▝▀▖▙▀▖▝▀▖▀▜▘▌ ▌▞▀▌ + ▌ ▌▞▀▌▚▄▌ ▌ ▌▜▀ ▌ ▌ ▌▛▀ ▌ ▌▌ ▌ ▞▀▌▌ ▞▀▌▗▘ ▚▄▌▌ ▌ + ▀▀ ▝▀▘▗▄▘ ▝▀ ▐ ▘ ▘ ▘▝▀▘ ▝▀ ▘ ▘ ▝▀▘▘ ▝▀▘▀▀▘▗▄▘▝▀▘ + +A Bitreich FOSDEM adventure... + + + ⣎⣱ ⢀⣀ ⣰⡀ ⡇ + ⠇⠸ ⠣⠤ ⠘⠤ ⠇ + -- Hipsters + +[1|Enter... 02 Feb 2018 A.D.|/dotg/act-i|server|port] +----------------------------------------------------------------- + + ⣎⣱ ⢀⣀ ⣰⡀ ⡇ ⡇ + ⠇⠸ ⠣⠤ ⠘⠤ ⠇ ⠇ + -- "Hackers" + +[1|Enter... 03 Feb 2018 A.D.|/dotg/act-ii|server|port] +-----------------------------------------------------------------