# 2.11BSD#431 - /usr/src/games/hack/hack.bones.c

##### Functions

    getbones          X
    savebones         X

##### Variables

    bones             X

       1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
       2: /* hack.bones.c - version 1.0.3 */
       3:
       4: #include "hack.h"
       5: extern char plname[PL_NSIZ];
       6: extern long somegold();
       7: extern struct monst *makemon();
       8: extern struct permonst pm_ghost;
       9:
      10: char bones[] = "bones_xx";
      11:
      12: /* save bones and possessions of a deceased adventurer */
      13: savebones(){
      14: register fd;
      15: register struct obj *otmp;
      16: register struct trap *ttmp;
      17: register struct monst *mtmp;
      18:     if(dlevel <= 0 || dlevel > MAXLEVEL) return;
      19:     if(!rn2(1 + dlevel/2)) return;  /* not so many ghosts on low levels */
      20:     bones[6] = '0' + (dlevel/10);
      21:     bones[7] = '0' + (dlevel%10);
      22:     if((fd = open(bones,0)) >= 0){
      23:         (void) close(fd);
      24:         return;
      25:     }
      26:     /* drop everything; the corpse's possessions are usually cursed */
      27:     otmp = invent;
      28:     while(otmp){
      29:         otmp->ox = u.ux;
      30:         otmp->oy = u.uy;
      31:         otmp->age = 0;      /* very long ago */
      32:         otmp->owornmask = 0;
      33:         if(rn2(5)) otmp->cursed = 1;
      34:         if(!otmp->nobj){
      35:             otmp->nobj = fobj;
      36:             fobj = invent;
      37:             invent = 0; /* superfluous */
      38:             break;
      39:         }
      40:         otmp = otmp->nobj;
      41:     }
      42:     if(!(mtmp = makemon(PM_GHOST, u.ux, u.uy))) return;
      43:     mtmp->mx = u.ux;
      44:     mtmp->my = u.uy;
      45:     mtmp->msleep = 1;
      46:     (void) strcpy((char *) mtmp->mextra, plname);
      47:     mkgold(somegold() + d(dlevel,30), u.ux, u.uy);
      48:     for(mtmp = fmon; mtmp; mtmp = mtmp->nmon){
      49:         mtmp->m_id = 0;
      50:         if(mtmp->mtame) {
      51:             mtmp->mtame = 0;
      52:             mtmp->mpeaceful = 0;
      53:         }
      54:         mtmp->mlstmv = 0;
      55:         if(mtmp->mdispl) unpmon(mtmp);
      56:     }
      57:     for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
      58:         ttmp->tseen = 0;
      59:     for(otmp = fobj; otmp; otmp = otmp->nobj) {
      60:         otmp->o_id = 0;
      61:          /* otmp->o_cnt_id = 0; - superfluous */
      62:         otmp->onamelth = 0;
      63:         otmp->known = 0;
      64:         otmp->invlet = 0;
      65:         if(otmp->olet == AMULET_SYM && !otmp->spe) {
      66:             otmp->spe = -1;      /* no longer the actual amulet */
      67:             otmp->cursed = 1;    /* flag as gotten from a ghost */
      68:         }
      69:     }
      70:     if((fd = creat(bones, FMASK)) < 0) return;
      71:     savelev(fd,dlevel);
      72:     (void) close(fd);
      73: }
      74:
      75: getbones(){
      76: register fd,x,y,ok;
      77:     if(rn2(3)) return(0);   /* only once in three times do we find bones */
      78:     bones[6] = '0' + dlevel/10;
      79:     bones[7] = '0' + dlevel%10;
      80:     if((fd = open(bones, 0)) < 0) return(0);
      81:     if((ok = uptodate(fd)) != 0){
      82:         getlev(fd, 0, dlevel);
      83:         for(x = 0; x < COLNO; x++) for(y = 0; y < ROWNO; y++)
      84:             levl[x][y].seen = levl[x][y].new = 0;
      85:     }
      86:     (void) close(fd);
      87: #ifdef WIZARD
      88:     if(!wizard) /* duvel!frans: don't remove bones while debugging */
      89: #endif WiZARD
      90:         if(unlink(bones) < 0){
      91:         pline("Cannot unlink %s .", bones);
      92:         return(0);
      93:     }
      94:     return(ok);
      95: }

#### Defined functions

getbones defined in line 75; used 1 times

- in /usr/src/games/hack/hack.lev.c line 280

savebones defined in line 13; used 1 times

- in /usr/src/games/hack/hack.end.c line 98

#### Defined variables

bones defined in line 10; used 9 times

- in line 20-22(3), 70, 78-80(3), 90-91(2)

Last modified: 1985-10-01 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 815 |