Annotation of 43BSD/games/battlestar/com1.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1983 Regents of the University of California,
        !             3:  * All rights reserved.  Redistribution permitted subject to
        !             4:  * the terms of the Berkeley Software License Agreement.
        !             5:  */
        !             6: 
        !             7: #ifndef lint
        !             8: static char sccsid[] = "@(#)com1.c     1.3 4/24/85";
        !             9: #endif
        !            10: 
        !            11: #include "externs.h"
        !            12: 
        !            13: move(thataway, token)
        !            14: int thataway, token;
        !            15: {
        !            16:        wordnumber++;
        !            17:        if ((!notes[CANTMOVE] && !notes[LAUNCHED]) || testbit(location[position].objects, LAND) || fuel > 0 && notes[LAUNCHED])
        !            18:                if (thataway) {
        !            19:                        position = thataway;
        !            20:                        newway(token);
        !            21:                        time++;
        !            22:                }
        !            23:                else {
        !            24:                        puts("You can't go this way.");
        !            25:                        newway(token);
        !            26:                        whichway(location[position]);
        !            27:                        return(0);
        !            28:                }
        !            29:        else if (notes[CANTMOVE] && !notes[LAUNCHED])
        !            30:                puts("You aren't able to move; you better drop something.");
        !            31:        else
        !            32:                puts("You are out of fuel; now you will rot in space forever!");
        !            33:        return(1);
        !            34: }
        !            35: 
        !            36: convert(tothis)                /* Converts day to night and vice versa.            */
        !            37: int tothis;            /* Day objects are permanent.  Night objects are added*/
        !            38: {                      /* at dusk, and subtracted at dawn.             */
        !            39:        register struct objs *p;
        !            40:        register i, j;
        !            41: 
        !            42:        if (tothis == TONIGHT) {
        !            43:                for (i = 1; i <= NUMOFROOMS; i++)
        !            44:                        for (j = 0; j < NUMOFWORDS; j++)
        !            45:                                nightfile[i].objects[j] = dayfile[i].objects[j];
        !            46:                for (p = nightobjs; p->room != 0; p++)
        !            47:                        setbit(nightfile[p->room].objects, p->obj);
        !            48:                location = nightfile;
        !            49:        } else {
        !            50:                for (i = 1; i <= NUMOFROOMS; i++)
        !            51:                        for (j = 0; j < NUMOFWORDS; j++)
        !            52:                                dayfile[i].objects[j] = nightfile[i].objects[j];
        !            53:                for (p = nightobjs; p->room != 0; p++)
        !            54:                        clearbit(dayfile[p->room].objects, p->obj);
        !            55:                location = dayfile;
        !            56:        }
        !            57: }
        !            58: 
        !            59: news()
        !            60: {
        !            61:        register int n;
        !            62:        int hurt;
        !            63: 
        !            64:        if (time > 30 && position < 32){
        !            65:                puts("An explosion of shuddering magnitude splinters bulkheads and");
        !            66:                puts("ruptures the battlestar's hull.  You are sucked out into the");
        !            67:                puts("frozen void of space and killed.");
        !            68:                die();
        !            69:        }
        !            70:        if (time > 20 && position < 32)
        !            71:                puts("Explosions rock the battlestar.");
        !            72:        if (time > snooze){
        !            73:                puts("You drop from exhaustion...");
        !            74:                zzz();
        !            75:        }
        !            76:        if (time > snooze - 5)
        !            77:                puts("You're getting tired.");
        !            78:        if (time > (rythmn + CYCLE)) {
        !            79:                if (location == nightfile) {
        !            80:                        convert(TODAY);
        !            81:                        if (OUTSIDE && time - rythmn - CYCLE < 10) {
        !            82:                                puts("Dew lit sunbeams stretch out from a watery sunrise and herald the dawn.");
        !            83:                                puts("You awake from a misty dream-world into stark reality.");
        !            84:                                puts("It is day.");
        !            85:                        }
        !            86:                } else {
        !            87:                        convert(TONIGHT);
        !            88:                        clearbit(location[POOLS].objects, BATHGOD);
        !            89:                        if (OUTSIDE && time - rythmn - CYCLE < 10) {
        !            90:                                puts("The dying sun sinks into the ocean, leaving a blood stained sunset.");
        !            91:                                puts("The sky slowly fades from orange to violet to black.  A few stars");
        !            92:                                puts("flicker on, and it is night.");
        !            93:                                puts("The world seems completly different at night.");
        !            94:                        }
        !            95:                }
        !            96:                rythmn = time - time % CYCLE;
        !            97:        }
        !            98:        if (!wiz && !tempwiz)
        !            99:                if ((testbit(inven,TALISMAN) || testbit(wear,TALISMAN)) && (testbit(inven,MEDALION) || testbit(wear,MEDALION)) && (testbit(inven,AMULET) || testbit(wear,AMULET))){
        !           100:                        tempwiz = 1;
        !           101:                        puts("The three amulets glow and reenforce each other in power.\nYou are now a wizard.");
        !           102:        }
        !           103:        if (testbit(location[position].objects,ELF)){
        !           104:                printf("%s\n",objdes[ELF]);
        !           105:                fight(ELF,rnd(30));
        !           106:        }
        !           107:        if (testbit(location[position].objects,DARK)){
        !           108:                printf("%s\n",objdes[DARK]);
        !           109:                fight(DARK,100);
        !           110:        }
        !           111:        if (testbit(location[position].objects,WOODSMAN)){
        !           112:                printf("%s\n",objdes[WOODSMAN]);
        !           113:                fight(WOODSMAN,50);
        !           114:        }
        !           115:        switch(position){
        !           116:                
        !           117:                case 267:
        !           118:                case 257:       /* entering a cave */
        !           119:                case 274:
        !           120:                case 246:
        !           121:                        notes[CANTSEE] = 1;
        !           122:                        break;
        !           123:                case 160:
        !           124:                case 216:       /* leaving a cave */
        !           125:                case 230:
        !           126:                case 231:
        !           127:                case 232:
        !           128:                        notes[CANTSEE] = 0;
        !           129:                        break;
        !           130:        }
        !           131:        if (testbit(location[position].objects, GIRL))
        !           132:                meetgirl = 1;
        !           133:        if (meetgirl && CYCLE * 1.5 - time < 10){
        !           134:                setbit(location[GARDEN].objects,GIRLTALK);
        !           135:                setbit(location[GARDEN].objects,LAMPON);
        !           136:                setbit(location[GARDEN].objects,ROPE);
        !           137:        }
        !           138:        if (position == DOCK && (beenthere[position] || time > CYCLE)){
        !           139:                clearbit(location[DOCK].objects, GIRL);
        !           140:                clearbit(location[DOCK].objects,MAN);
        !           141:        }
        !           142:        if (meetgirl && time - CYCLE * 1.5 > 10){
        !           143:                clearbit(location[GARDEN].objects,GIRLTALK);
        !           144:                clearbit(location[GARDEN].objects,LAMPON);
        !           145:                clearbit(location[GARDEN].objects,ROPE);
        !           146:                meetgirl = 0;
        !           147:        }
        !           148:        if (testbit(location[position].objects,CYLON)){
        !           149:                puts("Oh my God, you're being shot at by an alien spacecraft!");
        !           150:                printf("The targeting computer says we have %d seconds to attack!\n",clock);
        !           151:                fflush(stdout);
        !           152:                sleep(1);
        !           153:                if (!visual()){
        !           154:                        hurt = rnd(NUMOFINJURIES);
        !           155:                        injuries[hurt] = 1;
        !           156:                        puts("Laser blasts sear the cockpit, and the alien veers off in a victory roll.");
        !           157:                        puts("The viper shudders under a terrible explosion.");
        !           158:                        printf("I'm afraid you have suffered %s.\n", ouch[hurt]);
        !           159:                }
        !           160:                else
        !           161:                        clearbit(location[position].objects,CYLON);
        !           162:        }
        !           163:        if (injuries[SKULL] && injuries[INCISE] && injuries[NECK]){
        !           164:                puts("I'm afraid you have suffered fatal injuries.");
        !           165:                die();
        !           166:        }
        !           167:        for (n=0; n < NUMOFINJURIES; n++)
        !           168:                if (injuries[n] == 1){
        !           169:                        injuries[n] = 2;
        !           170:                        if (WEIGHT > 5)
        !           171:                                WEIGHT -= 5;
        !           172:                        else
        !           173:                                WEIGHT = 0;
        !           174:                }
        !           175:        if (injuries[ARM] == 2){
        !           176:                CUMBER -= 5;
        !           177:                injuries[ARM]++;
        !           178:        }
        !           179:        if (injuries[RIBS] == 2){
        !           180:                CUMBER -= 2;
        !           181:                injuries[RIBS]++;
        !           182:        }
        !           183:        if (injuries[SPINE] == 2){
        !           184:                WEIGHT = 0;
        !           185:                injuries[SPINE]++;
        !           186:        }
        !           187:        if (carrying > WEIGHT || encumber > CUMBER)
        !           188:                notes[CANTMOVE] = 1;
        !           189:        else
        !           190:                notes[CANTMOVE] = 0;
        !           191: }
        !           192: 
        !           193: crash()
        !           194: {
        !           195:        int hurt1,hurt2;
        !           196: 
        !           197:        fuel--;
        !           198:        if (!location[position].flyhere || (testbit(location[position].objects,LAND) && fuel <= 0)){
        !           199:                if (!location[position].flyhere)
        !           200:                        puts("You're flying too low.  We're going to crash!");
        !           201:                else{ 
        !           202:                        puts("You're out of fuel.  We'll have to crash land!");
        !           203:                        if (!location[position].down){
        !           204:                                puts("Your viper strikes the ground and explodes into firey fragments.");
        !           205:                                puts("Thick black smoke billows up from the wreckage.");
        !           206:                                die();
        !           207:                        }
        !           208:                        position = location[position].down;
        !           209:                }
        !           210:                notes[LAUNCHED] = 0;
        !           211:                setbit(location[position].objects,CRASH);
        !           212:                time += rnd(CYCLE/4);
        !           213:                puts("The viper explodes into the ground and you lose consciousness...");
        !           214:                zzz();
        !           215:                hurt1 = rnd(NUMOFINJURIES - 2) + 2;
        !           216:                hurt2 = rnd(NUMOFINJURIES - 2) + 2;
        !           217:                injuries[hurt1] = 1;
        !           218:                injuries[hurt2] = 1;
        !           219:                injuries[0] = 1;        /* abrasions */
        !           220:                injuries[1] = 1;        /* lacerations */
        !           221:                printf("I'm afraid you have suffered %s and %s.\n",ouch[hurt1],ouch[hurt2]);
        !           222:        }
        !           223: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.