Annotation of 43BSDReno/games/warp/play.c, revision 1.1.1.1

1.1       root        1: /* $Header: play.c,v 7.0.1.1 86/10/16 10:52:39 lwall Exp $ */
                      2: 
                      3: /* $Log:       play.c,v $
                      4:  * Revision 7.0.1.1  86/10/16  10:52:39  lwall
                      5:  * Added Damage.  Fixed random bugs.
                      6:  * 
                      7:  * Revision 7.0  86/10/08  15:13:09  lwall
                      8:  * Split into separate files.  Added amoebas and pirates.
                      9:  * 
                     10:  */
                     11: 
                     12: #include "EXTERN.h"
                     13: #include "warp.h"
                     14: #include "bang.h"
                     15: #include "score.h"
                     16: #include "object.h"
                     17: #include "move.h"
                     18: #include "term.h"
                     19: #include "them.h"
                     20: #include "us.h"
                     21: #include "util.h"
                     22: #include "weapon.h"
                     23: #include "INTERN.h"
                     24: #include "play.h"
                     25: 
                     26: void
                     27: play_init()
                     28: {
                     29:     ;
                     30: }
                     31: 
                     32: void
                     33: play()
                     34: {
                     35:     bool done = FALSE;
                     36:     Reg1 OBJECT *curobj;
                     37:     Reg2 OBJECT *to;
                     38:     Reg3 int i;
                     39:     Reg4 int x;
                     40:     Reg5 int y;
                     41: 
                     42:     display_status();
                     43: #ifdef TIOCOUTQ
                     44:     while (output_pending() > charsperhalfsec)
                     45:        sleep(1);                        /* allow buffers to empty */
                     46: #endif
                     47:     sleep(3);
                     48:     do {
                     49:        timer++;
                     50:        nxtbang = 0;
                     51:        banging = FALSE;
                     52:        display_status();
                     53: #ifdef TIOCOUTQ
                     54:        while (output_pending() > charsperhalfsec)
                     55:            sleep(1);
                     56: #endif
                     57:        if (lowspeed)
                     58:            roundsleep(2);
                     59:        else
                     60:            roundsleep(1);
                     61:        if (ent) {
                     62:            evely = ent->vely;
                     63:            evelx = ent->velx;
                     64:            if (cloaking && ent->energy >= 250 && !damflag[NOCLOAKING]) {
                     65:                if (!rand_mod(300)) {
                     66:                    damage++;
                     67:                    damflag[NOCLOAKING] = rand_mod(smarts+1)+2;
                     68:                }
                     69:                ent->energy -= ent->energy/40;
                     70:            }
                     71:            else
                     72:                cloaking = FALSE;
                     73:            cloaked = cloaking;
                     74:        }
                     75:        if (base) {
                     76:            bvely = base->vely;
                     77:            bvelx = base->velx;
                     78:        }
                     79:        get_commands(&done);
                     80:        if (done)
                     81:            break;
                     82:        their_smarts();
                     83:        apolloflag = 0;
                     84:        if (ent) {
                     85:            if (numapollos) {
                     86:                if (numstars) {
                     87:                    if (realapollo) {
                     88:                        if (lookfor(realapollo->posy,realapollo->posx,
                     89:                            Enterprise)) {
                     90:                            apolloflag = 1;
                     91:                        }
                     92:                    }
                     93:                    else if (lookfor(root.next->posy,root.next->posx,
                     94:                        Enterprise)) {
                     95:                        apolloflag = 1;
                     96:                        realapollo = root.next;
                     97:                        mvaddch(realapollo->posy+1,realapollo->posx*2,
                     98:                            'A');
                     99:                        realapollo->image = 'A';
                    100:                        realapollo->mass = 6000;
                    101:                        inumapollos = 1;
                    102:                        numenemies++;
                    103:                        inumenemies++;
                    104:                        possiblescore += 5000;
                    105:                    }
                    106:                    if (apolloflag) {
                    107:                        if (blast[realapollo->posy][realapollo->posx] <= 32000)
                    108:                            evely = evelx = 0;
                    109:                        realapollo->energy = 32000;
                    110:                    }
                    111:                }
                    112:                else
                    113:                    numapollos = 0;
                    114:            }
                    115:            ent->vely = evely;
                    116:            ent->velx = evelx;
                    117:        }
                    118:        if (base) {
                    119:            if (numapollos) {
                    120:                if (numstars) {
                    121:                    if (realapollo) {
                    122:                        if (lookfor(realapollo->posy,realapollo->posx,
                    123:                            Base)) {
                    124:                            apolloflag |= 2;
                    125:                        }
                    126:                    }
                    127:                    else if (lookfor(root.next->posy,root.next->posx,
                    128:                        Base)) {
                    129:                        apolloflag |= 2;
                    130:                        realapollo = root.next;
                    131:                        mvaddch(realapollo->posy+1,realapollo->posx*2,
                    132:                            'A');
                    133:                        realapollo->image = 'A';
                    134:                        realapollo->mass = 6000;
                    135:                        inumapollos = 1;
                    136:                        numenemies++;
                    137:                        inumenemies++;
                    138:                        possiblescore += 5000;
                    139:                    }
                    140:                    if (apolloflag & 2) {
                    141:                        if (blast[realapollo->posy][realapollo->posx] <= 32000)
                    142:                            bvely = bvelx = 0;
                    143:                        realapollo->energy = 32000;
                    144:                    }
                    145:                }
                    146:                else
                    147:                    numapollos = 0;
                    148:            }
                    149:            base->vely = bvely;
                    150:            base->velx = bvelx;
                    151:        }
                    152:        if (aretorps) {
                    153:            aretorps = 0;
                    154:            for (i=0;i<2;i++) for (y=0;y<3;y++) for (x=0;x<3;x++) {
                    155:                if (curobj = isatorp[i][y][x]) {
                    156:                    to = occupant[(curobj->posy+curobj->vely+YSIZE00)%YSIZE]
                    157:                                 [(curobj->posx+curobj->velx+XSIZE00)%XSIZE];
                    158:                    if (to && !to->vely && !to->velx) {
                    159:                        unmake_object(curobj);
                    160:                        if (i)
                    161:                            btorp++;
                    162:                        else
                    163:                            etorp++;
                    164:                    }
                    165:                    isatorp[i][y][x]=0;
                    166:                }
                    167:            }
                    168:        }
                    169:        move_universe();
                    170:        if (finish) {
                    171:            finish--;
                    172:            if (!finish && (!(numenemies || numos) || (!ent && !base))) {
                    173:                done = TRUE;
                    174:                timer -= 5;
                    175:            }
                    176:        }
                    177:        else if (!banging && (!(numenemies || numos) || (!ent && !base)))
                    178:            finish = 5;
                    179:     } while (!done);
                    180: }

unix.superglobalmegacorp.com

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