/*
* Copyright (c) 2021 Ross Cunniff
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/*** FUNNY TRANSITION ROUTINES ***/
proc exitg()
{
"Oh dear, you seem to have gotten yourself killed.\n";
skore();
ratng();
ratnx();
if (!$ME.debug) {
Die();
}
}
proc em3()
{
if (!paper.signed) {
cg();
return;
}
$ME.move(irm1);
}
proc ei8()
{
if (spices.loc == $ME) {
"The savory blend of spices and human wakes up the sleeping ",
"crocodiles who decide to have you for breakfast.\n";
exitg();
}
else if (rupees.loc == $ME) {
"The weight of the coins pulls you underwater and you eventually ",
"drown.\n";
exitg();
}
else {
"You manage to get across the river, just as the crocodiles ",
"begin to stir.\n";
$ME.move(irm9);
}
}
proc wi12()
{
if (!statue.tlakst) {
cg();
return;
}
$ME.move(irm14);
}
proc ui16()
{
if (!rope.ropstf) {
cg();
return;
}
"You scramble up the rope and get to the ledge.\n";
$ME.move(irm17);
}
proc ui17()
{
"Are you a rock climber? \n";
if (!yorn()) {
"Then you better not try it.\n";
return;
}
"That climb is rated 5.11. Do you still want to try it?\n";
if (!yorn()) {
"Wise move.\n";
return;
}
"Half way up, you fall off a 1/32 inch wide ledge and ",
"plummet to your death.\n";
exitg();
}
proc di19()
{
"You magically get transported to the corner of Westwood and Broxton, ",
"where you are forced to spend the rest of eternity surrounded by ",
"Hari-Krishna freaks. (That'll teach you not to believe legends.)\n";
quit();
}
proc ei20()
{
if (!monkey.fedmky) {
cg();
return;
}
$ME.move(irm21);
}
proc wi21()
{
if (peel.loc == irm20) {
"As you leave the temple, you slip on a banana peel and break ",
"your neck.\n";
exitg();
}
$ME.move(irm20);
}
proc di22()
{
if (cobra.loc == irm22) {
"The cobra takes a bite at your unprotected leg and injects an ",
"unhealthy dose of neurotoxin. You start to lose your senses, your ",
"cognitive abilities, an yer rekcogiskdfsdk.\n";
exitg();
}
$ME.move(irm23);
}
proc sm5()
{
if (!paper.signed) {
"You bumped into the grate.\n";
return;
}
$ME.move(prm1);
}
proc dp2()
{
if (!rope.rtied) {
"It is too dangerous to climb down without a rope.\n";
return;
}
if ((lamp.loc == $ME) && lamp.pLight) {
"Half-way down the rope, the carbide lamp burns through the ",
"rope above you and you plummet to your death.\n";
exitg();
}
"You climb down the rope without any problems.\n";
$ME.move(prm3);
}
proc ep5()
{
if (spear.loc == $ME) {
"You can't fit the spear you are carrying through that crack.\n";
ExitPhase(PHX_ACTOR);
}
$ME.move(prm6);
}
proc ep8()
{
"You fall off the cliff and plummet several hundred feet to your ",
"death.\n";
exitg();
}
proc dp6()
{
if (!smilodon.stond) {
"As soon as you reach the bottom of the pit, the sabre-tooth ",
"tiger tears you to shreads.\n";
exitg();
}
$ME.move(prm7);
}
proc ep10()
{
"You fall into the lake, which actually turns out to be a tar-pit ",
"covered with a thin layer of rain water. You eventually sink and ",
"get fossilized.\n";
exitg();
}
proc ep11()
{
if (!feet.wiped) {
$ME.move(prm10);
ExitPhase(PHX_ACTOR);
}
"As you walk down the slab, your feet slip and you tumble off the slab.\n";
ep10();
}
proc sp12()
{
"You find your feet to be quite slippery as you walk.\n";
feet.wiped = 1;
$ME.move(prm11);
}
proc sp14()
{
if (!mammoth.blokd) {
"The mammoth keeps you from going that way.\n";
ExitPhase(PHX_ACTOR);
}
$ME.move(prm15);
}
proc np17()
{
if ((spear.tooky == 1) & (spear.abrad == 0)) {
"The rubble keeps you from going in that direction.\n";
ExitPhase(PHX_ACTOR);
}
$ME.move(prm18);
}
proc np19()
{
if (!bear.hitbr) {
"The bear keeps you from going that direction.\n";
ExitPhase(PHX_ACTOR);
}
$ME.move(prm20);
}
proc wp22()
{
if (spear.loc == $ME) {
"The spear that you were carrying lodges in the Tyrannosaurus's ",
"mouth.\n";
spear.move(prm23);
$ME.move(prm23);
}
if (spear.loc == prm23) {
$ME.move(prm23);
}
if ((spear.loc != $ME) & (spear.loc != prm23)) {
"The Tyrannosaurus crushes you in his jaws then swallows you.\n";
exitg();
}
}
proc dp23()
{
"You slide down the gullet of the Tyrannosaurus and get ",
"digested alive.\n";
exitg();
}
proc dm6()
{
"After wandering around in the forest for a while, you eventually ",
"find your way out.\n";
$ME.move(mrm1);
}
proc darkq()
{
if (!Lit($ME.loc)) {
if (oadl::nargs()) {
return 1;
}
"It is too dark to see anything in here.\n";
ExitPhase(PHX_CURRENT);
}
return 0;
}
proc darkt()
{
if (!Lit($ME.loc)) {
if (Percent(50)) {
"While stumbling around in the darkness, you trip and impale ",
"yourself on a stalagmite.\n";
exitg();
}
}
}
proc onlmp()
{
if (lamp.loc != $ME) {
"You don't have the lamp with you.\n";
ExitPhase(PHX_ACTOR);
}
if (!lamp.pLight) {
"A blue flame now flickers out of the lantern.\n";
lamp.pLight = 1;
ExitPhase(PHX_ACTOR);
}
}
/*** TRANSITIONS ***/
... mrm1 {
action = proc() {
Hit($ME, mrm6, mrm2, mrm6, mrm6, nil, nil, mrm2, nil);
Miss( nil, nil, nil, nil, cg, cg, nil, dumdir);
}
}
... mrm2 {
action = proc() {
Hit($ME, mrm1, mrm4, mrm3, mrm4, nil, mrm5, nil, nil);
Miss( nil, nil, nil, nil, cg, nil, dumdir, dumdir);
}
}
... mrm3 {
action = proc() {
Hit($ME, nil, nil, nil, mrm2, nil, nil, nil, nil);
Miss( cg, cg, em3, nil, cg, cg, dumdir, dumdir);
}
}
... mrm4 {
action = proc() {
Hit($ME, mrm2, nil, nil, nil, nil, nil, nil, mrm2);
Miss( nil, cg, cg, cg, cg, cg, cg, nil);
}
}
... mrm5 {
action = proc() {
Hit($ME, nil, nil, nil, nil, mrm2, nil, nil, nil);
Miss( cg, sm5, cg, cg, nil, cg, dumdir, dumdir);
}
}
... mrm6 {
action = proc() {
Hit($ME, nil, nil, nil, nil, nil, nil, nil, nil);
Miss( dm6, dm6, dm6, dm6, cg, cg, dumdir, dm6);
}
}
... irm1 {
action = proc() {
Hit($ME, nil, nil, nil, mrm3, nil, irm2, nil, nil);
Miss( cg, cg, cg, nil, cg, nil, dumdir, dumdir);
}
}
... irm2 {
action = proc() {
Hit($ME, nil, nil, irm10, irm3, irm1, nil, nil, nil);
Miss( cg, cg, nil, nil, nil, cg, dumdir, dumdir);
}
}
... irm3 {
action = proc() {
Hit($ME, irm4, nil, irm2, nil, nil, nil, nil, nil);
Miss( nil, cg, nil, cg, cg, cg, dumdir, dumdir);
}
}
... irm4 {
action = proc() {
Hit($ME, nil, irm3, nil, nil, nil, irm5, nil, irm3);
Miss( cg, nil, cg, cg, cg, nil, dumdir, nil);
}
}
... irm5 {
action = proc() {
Hit($ME, irm6, irm7, irm8, nil, nil, nil, nil, nil);
Miss( nil, nil, nil, cg, tohigh, cg, dumdir, dumdir);
}
}
... irm6 {
action = proc() {
Hit($ME, nil, irm5, nil, irm7, nil, nil, nil, nil);
Miss( tosml, nil, cg, nil, cg, cg, dumdir, dumdir);
}
}
... irm7 {
action = proc() {
Hit($ME, irm5, nil, irm6, nil, nil, nil, nil, nil);
Miss( nil, cg, nil, cg, cg, cg, dumdir, dumdir);
}
}
... irm8 {
action = proc() {
Hit($ME, nil, nil, nil, irm5, nil, nil, nil, irm5);
Miss( cg, cg, ei8, nil, cg, cg, dumdir, nil);
}
}
... irm9 {
action = proc() {
Hit($ME, nil, nil, nil, irm8, irm10, nil, nil, irm10);
Miss( cg, cg, cg, nil, nil, cg, dumdir, nil);
}
}
... irm10 {
action = proc() {
Hit($ME, nil, irm11, irm22, irm2, nil, irm9, nil, nil);
Miss( cg, nil, nil, nil, cg, nil, dumdir, dumdir);
}
}
... irm11 {
action = proc() {
Hit($ME, irm10, irm12, nil, irm13, nil, nil, nil, nil);
Miss( nil, nil, cg, nil, cg, cg, cg, cg);
}
}
... irm12 {
action = proc() {
Hit($ME, irm11, nil, irm15, nil, nil, nil, nil, nil);
Miss( nil, cg, nil, wi12, cg, cg, dumdir, dumdir);
}
}
... irm13 {
action = proc() {
Hit($ME, nil, irm15, irm11, nil, nil, nil, nil, nil);
Miss( cg, nil, nil, cg, cg, cg, dumdir, dumdir);
}
}
... irm14 {
action = proc() {
Hit($ME, nil, nil, irm12, nil, nil, nil, nil, irm12);
Miss(cg, cg, nil, cg, cg, cg, dumdir, nil);
}
}
... irm15 {
action = proc() {
Hit($ME, irm13, nil, irm16, irm12, nil, nil, nil, nil);
Miss(nil, cg, nil, nil, cg, cg, dumdir, dumdir);
}
}
... irm16 {
action = proc() {
Hit($ME, irm22, nil, irm18, irm15, nil, nil, nil, nil);
Miss(nil, cg, nil, nil, ui16, cg, dumdir, dumdir);
}
}
... irm17 {
action = proc() {
Hit($ME, nil, nil, nil, nil, nil, irm16, nil, nil);
Miss(cg, cg, cg, cg, ui17, nil, dumdir, dumdir);
}
}
... irm18 {
action = proc() {
Hit($ME, nil, irm19, irm20, irm16, nil, nil, nil, nil);
Miss(cg, nil, nil, nil, cg, cg, dumdir, dumdir);
}
}
... irm19 {
action = proc() {
Hit($ME, irm18, nil, nil, nil, nil, nil, nil, irm18);
Miss(nil, cg, cg, tosml, cg, di19, dumdir, nil);
}
}
... irm20 {
action = proc() {
Hit($ME, nil, nil, nil, irm18, nil, nil, nil, nil);
Miss(cg, cg, ei20, nil, cg, cg, dumdir, dumdir);
}
}
... irm21 {
action = proc() {
Miss(cg, cg, cg, wi21, cg, cg, dumdir, wi21);
}
}
... irm22 {
action = proc() {
Hit($ME, nil, irm16, nil, irm10, nil, nil, nil, nil);
Miss(cg, nil, cg, nil, cg, di22, di22, cg);
}
}
... irm23 {
action = proc() {
Hit($ME, nil, nil, nil, nil, irm22, nil, nil, irm22);
Miss(cg, cg, cg, cg, nil, cg, dumdir, nil);
}
}
... prm1 {
action = proc() {
darkt();
Hit($ME, mrm5, prm2, nil, nil, nil, nil, nil, nil);
Miss(nil, nil, cg, cg, cg, cg, dumdir, dumdir);
}
}
... prm2 {
action = proc() {
Hit($ME, prm1, nil, nil, nil, nil, nil, nil, nil);
Miss(nil, cg, cg, cg, cg, dp2, dumdir, dumdir);
}
}
... prm3 {
action = proc() {
Hit($ME, nil, nil, nil, prm4, prm2, nil, nil, nil);
Miss(cg, cg, cg, nil, nil, cg, dumdir, dumdir);
}
}
... prm4 {
action = proc() {
Hit($ME, nil, prm5, prm3, prm9, nil, nil, prm5, nil);
Miss(cg, nil, nil, nil, cg, cg, nil, dumdir);
}
}
... prm5 {
action = proc() {
darkt();
Hit($ME, prm4, nil, nil, nil, nil, nil, nil, prm4);
Miss(nil, cg, ep5, cg, cg, cg, dumdir, nil);
}
}
... prm6 {
action = proc() {
darkt();
Hit($ME, nil, nil, nil, prm5, nil, nil, nil, nil);
Miss(cg, cg, cg, nil, cg, dp6, dumdir, dumdir);
}
}
... prm7 {
action = proc() {
darkt();
Hit($ME, nil, prm8, nil, nil, prm6, nil, nil, nil);
Miss(cg, nil, cg, cg, nil, cg, dumdir, dumdir);
}
}
... prm8 {
action = proc() {
darkt();
Hit($ME, prm7, nil, nil, nil, nil, nil, nil, nil);
Miss(nil, cg, ep8, cg, cg, cg, dumdir, dumdir);
}
}
... prm9 {
action = proc() {
Hit($ME, prm10, nil, prm4, prm13, nil, nil, nil, nil);
Miss(nil, cg, nil, nil, cg, cg, dumdir, dumdir);
}
}
... prm10 {
action = proc() {
Hit($ME, nil, prm9, nil, prm11, prm11, nil, nil, nil);
Miss(cg, nil, ep10, nil, nil, cg, dumdir, dumdir);
}
}
... prm11 {
action = proc() {
Hit($ME, prm12, nil, nil, nil, nil, nil, nil, nil);
Miss(nil, cg, ep11, cg, cg, ep11, dumdir, dumdir);
}
}
... prm12 {
action = proc() {
Miss(cg, sp12, cg, cg, cg, cg, dumdir, dumdir);
}
}
... prm13 {
action = proc() {
Hit($ME, nil, prm14, prm9, prm16, nil, nil, nil, nil);
Miss(cg, nil, nil, nil, cg, cg, dumdir, dumdir);
}
}
... prm14 {
action = proc() {
Hit($ME, prm13, nil, nil, nil, nil, nil, nil, nil);
Miss(nil, sp14, tosml, cg, cg, cg, dumdir, dumdir);
}
}
... prm15 {
action = proc() {
Hit($ME, prm14, nil, nil, nil, nil, nil, nil, nil);
Miss(nil, cg, cg, cg, cg, cg, dumdir, dumdir);
}
}
... prm16 {
action = proc() {
Hit($ME, prm17, nil, prm13, nil, nil, prm21, nil, nil);
Miss(nil, cg, nil, cg, cg, nil, dumdir, dumdir);
}
}
... prm17 {
action = proc() {
Hit($ME, nil, prm16, nil, nil, nil, nil, nil, nil);
Miss(np17, nil, cg, cg, cg, cg, dumdir, dumdir);
}
}
... prm18 {
action = proc() {
Hit($ME, prm19, prm17, nil, nil, nil, nil, nil, nil);
Miss(nil, nil, cg, cg, cg, cg, dumdir, dumdir);
}
}
... prm19 {
action = proc() {
Hit($ME, nil, prm18, nil, nil, nil, nil, nil, nil);
Miss(np19, nil, cg, cg, cg, cg, dumdir, dumdir);
}
}
... prm20 {
action = proc() {
Hit($ME, nil, prm19, nil, nil, nil, nil, nil, prm19);
Miss(cg, nil, cg, cg, cg, cg, dumdir, nil);
}
}
... prm21 {
action = proc() {
Hit($ME, nil, nil, nil, nil, prm16, prm22, nil, nil);
Miss(cg, cg, cg, cg, nil, nil, dumdir, dumdir);
}
}
... prm22 {
action = proc() {
Hit($ME, nil, nil, nil, nil, prm21, nil, nil, nil);
Miss(cg, cg, cg, wp22, nil, cg, dumdir, dumdir);
}
}
... prm23 {
action = proc() {
Hit($ME, nil, nil, prm22, nil, nil, nil, nil, prm22);
Miss(cg, cg, nil, cg, cg, dp23, dumdir, nil);
}
}