dotg

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

functions (5506B)


      1 #!/bin/sh
      2 
      3 navigation() {
      4 	locations="
      5 		Balcony
      6 		Bedroom1
      7 		Bedroom2
      8 		Toilet1
      9 		Toilet2
     10 		Kitchen
     11 		Hipster_Area
     12 		Work_Desk
     13 	"
     14 	current="$(cat $savegame/room)"
     15 
     16 	echo
     17 	for i in $locations; do
     18 		if ! [ "$current" = "$i" ]; then
     19 			echo "[1|Go to $i|$path/$i.dcgi|server|port]"
     20 		fi
     21 	done
     22 }
     23 
     24 _msg() {
     25 	echo
     26 	echo "$*" | fmt --width=109 | sed 's/\t//g' | sed 's/^t/tt/'
     27 }
     28 
     29 dropsauce() {
     30 	[ -f "$hipsters/$1/Plate_of_Bolognese_Sauce" ] && {
     31 		mv "$hipsters/$1/Plate_of_Bolognese_Sauce" "$hipsters/coffeetable"
     32 	}
     33 }
     34 
     35 parapluutje() {
     36 	cat <<EOM
     37 
     38 Oh wat een zomernacht
     39 Een feestje op de terrasjes
     40 Het regende plots heel zacht
     41 Je vind de druppels op met je tong
     42 En we dansten altijd maar dichter
     43 M'n voeten werden steeds lichter
     44 Toe neem me mee
     45 
     46 Onder je parapluutje
     47 Onder je para-para-para-parapluutje
     48 Schuilen voor een klein minuutje
     49 Alles werd plots zo aah
     50 Alles werd plots zo oe
     51 Alles werd plots zo aah
     52 Onder je paraplu
     53 Para-para-parapluutje
     54 Para-para-paraplu
     55 Para-para-parapluutje
     56 
     57 Oh wat een zomernacht
     58 Een kus om bij weg te dromen
     59 Niemand die ons daar zag
     60 We schuilden stilletjes en dichtbij
     61 En plots braken de wolken open
     62 Maar jij bent niet weggelopen
     63 Toe neem me mee
     64 
     65 Onder je parapluutje
     66 Onder je para-para-para-parapluutje
     67 Schuilen voor een klein minuutje
     68 Alles werd plots zo aah
     69 Alles werd plots zo oe
     70 Alles werd plots zo aah
     71 Onder je paraplu
     72 Para-para-parapluutje
     73 Para-para-paraplu
     74 Para-para-parapluutje
     75 (2x)
     76 
     77 En we dansten altijd maar dichter
     78 M'n voeten werden steeds lichter
     79 Toe neem me mee
     80 
     81 Onder je parapluutje
     82 Onder je para-para-para-parapluutje
     83 Schuilen voor een klein minuutje
     84 Alles werd plots zo aah
     85 Alles werd plots zo oe
     86 Alles werd plots zo aah
     87 Onder je paraplu
     88 Para-para-parapluutje
     89 Para-para-paraplu
     90 Para-para-parapluutje
     91 (2x)
     92 
     93 EOM
     94 }
     95 
     96 takebeer() {
     97 	current="$(cat $savegame/room)"
     98 
     99 	drink="$1"
    100 
    101 	case "$current" in
    102 		Balcony)
    103 			beersat="$balcony/$drink"
    104 			;;
    105 		Kitchen)
    106 			beersat="$kitchen/fridge/$drink"
    107 			;;
    108 	esac
    109 
    110 	if [ -f "$inventory/$drink" ]; then
    111 		inbag="$(cat $inventory/$drink)"
    112 	else
    113 		inbag=0
    114 	fi
    115 
    116 	incrate="$(cat $beersat)"
    117 
    118 	if [ "$incrate" -lt 2 ]; then
    119 		cat <<EOM
    120 
    121 There are no $drink left for you here!
    122 
    123 EOM
    124 	else
    125 		newcnt="$(( $incrate - 2 ))"
    126 		newbag="$(( $inbag +2 ))"
    127 		printf "$newcnt" > "$beersat"
    128 		printf "$newbag" > "$inventory/$drink"
    129 		cat << EOM
    130 
    131 You took two $drink from the $current.
    132 
    133 EOM
    134 	fi
    135 
    136 	echo "[1|Exit|$path/$current.dcgi|server|port]"
    137 }
    138 
    139 dropitem() {
    140 	item="$1"
    141 	[ -f "$inventory/$item" ] || return 1
    142 	oldcount="$(cat $inventory/$item)"
    143 	newcount="$(( $oldcount - 1))"
    144 	printf "$newcount" > "$inventory/$item"
    145 	if [ "$newcount" -lt 1 ]; then
    146 		rm -f "$inventory/$item"
    147 	fi
    148 }
    149 
    150 list_items_to() {
    151 	what="$1"
    152 	where="$2"
    153 	cd "$where"
    154 	for i in $(ls -1); do
    155 		echo "[1|$i|$path/$what.dcgi?$where/$i|server|port]"
    156 	done
    157 	cd - >/dev/null
    158 
    159 	cat <<EOM
    160 
    161 (note: select any item to $what it)
    162 
    163 EOM
    164 }
    165 
    166 take_item() {
    167 	fullpath="$1"
    168 	itemname="$(basename $fullpath)"
    169 
    170 	if echo "$itemname" | grep -q '^\.' ; then
    171 		itemname="$(echo $itemname | cut -c 2-)"
    172 	fi
    173 
    174 	mv "$fullpath" "$inventory/$itemname"
    175 }
    176 
    177 find_usecase() {
    178 	item="$1"
    179 	room="$2"
    180 
    181 	line="$(grep "^$item" usecases.csv)"
    182 	[ -z "$line" ] && {
    183 		echo "No use for $item here."
    184 		return
    185 	}
    186 
    187 	uses="$(echo $line | tr ',' '\n' | tail -n+2)"
    188 	if [ "$uses" = "anywhere" ]; then
    189 		echo "use-generic"
    190 		return
    191 	fi
    192 
    193 	for i in $uses; do
    194 		if [ "$i" = "anywhere" ]; then
    195 			echo "use-generic"
    196 			return
    197 		elif [ "$i" = "$room" ]; then
    198 			echo "use-specific,$i"
    199 			return
    200 		fi
    201 	done
    202 
    203 	echo "No use for $item here."
    204 }
    205 
    206 use_generic() {
    207 	case "$1" in
    208 		Cigarettes)
    209 			dropitem "$item"
    210 			echo "You smoke a cigarette."
    211 			;;
    212 
    213 		Rolling_tobacco)
    214 			echo "You roll and smoke a cigarette."
    215 			;;
    216 
    217 		Beers)
    218 			dropitem "$item"
    219 			echo "You drink a beer."
    220 			;;
    221 
    222 		Plastic_bottle_of_rakia)
    223 			_msg "You take a sip of rakia.
    224 
    225 				You feel drunk."
    226 			;;
    227 
    228 		Keychain_with_a_key)
    229 			_msg "You try to unlock things, but there's no place to use the key.
    230 
    231 				You put it back in your pocket."
    232 			;;
    233 		Cocaine)
    234 			_msg "You snort the cocaine."
    235 			;;
    236 
    237 		Cheese)
    238 			_msg "You eat a piece of cheese."
    239 			;;
    240 	esac
    241 }
    242 
    243 use_specific() {
    244 	call="$1"
    245 	item="$2"
    246 
    247 	case "$call" in
    248 		talk-girls)
    249 			. talk-girls.sh
    250 			specific_talk_girls "$item"
    251 			;;
    252 		talk-gentoo)
    253 			. talk-gentoo.sh
    254 			specific_talk_gentoo "$item"
    255 			;;
    256 		talk-20h)
    257 			. talk-20h.sh
    258 			specific_talk_20h "$item"
    259 			;;
    260 		talk-hipster)
    261 			. talk-hipster.sh
    262 			specific_talk_hipster "$item"
    263 			;;
    264 		talk-nerds)
    265 			. talk-nerds.sh
    266 			specific_talk_nerds "$item"
    267 			;;
    268 		talk-host)
    269 			. talk-host.sh
    270 			specific_talk_host "$item"
    271 			;;
    272 		talk-elves)
    273 			. talk-elves.sh
    274 			specific_talk_elves "$item"
    275 			;;
    276 		talk-balcony)
    277 			. talk-balcony.sh
    278 			specific_talk_balcony "$item"
    279 			;;
    280 		kitchen-sink)
    281 			. kitchen-sink.sh
    282 			specific_talk_kitchensink "$item"
    283 			;;
    284 		kitchen-fridge)
    285 			. kitchen-fridge.sh "$item"
    286 			specific_talk_kitchenfridge "$item"
    287 			;;
    288 		Hipster_Area)
    289 			. Hipster_Area.sh
    290 			specific_talk_hipsterarea "$item"
    291 			;;
    292 		Balcony)
    293 			. Balcony.sh
    294 			specific_balcony "$item"
    295 			;;
    296 		Bedroom1)
    297 			. Bedroom1.sh
    298 			specific_bedroom1 "$item"
    299 			;;
    300 		Bedroom2)
    301 			. Bedroom2.sh
    302 			specific_bedroom2 "$item"
    303 			;;
    304 		Bench)
    305 			. Bench.sh
    306 			specific_bench "$item"
    307 			;;
    308 		Toilet1)
    309 			. Toilet1.sh
    310 			specific_toilet1 "$item"
    311 			;;
    312 		Toilet2)
    313 			. Toilet2.sh
    314 			specific_toilet2 "$item"
    315 			;;
    316 		Kitchen)
    317 			. Kitchen.sh
    318 			specific_kitchen "$item"
    319 			;;
    320 		Work_Desk)
    321 			. Work_Desk.sh
    322 			specific_workdesk "$item"
    323 			;;
    324 		*)
    325 			echo "Not implemented"
    326 			;;
    327 	esac
    328 }