diff options
Diffstat (limited to 'games/hack/hack.do_name.c')
| -rw-r--r-- | games/hack/hack.do_name.c | 289 |
1 files changed, 0 insertions, 289 deletions
diff --git a/games/hack/hack.do_name.c b/games/hack/hack.do_name.c deleted file mode 100644 index 72ac62c86253..000000000000 --- a/games/hack/hack.do_name.c +++ /dev/null @@ -1,289 +0,0 @@ -/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ -/* hack.do_name.c - version 1.0.3 */ - -#include "hack.h" -#include <stdio.h> -extern char plname[]; - -coord -getpos(force,goal) int force; char *goal; { -register cx,cy,i,c; -extern char sdir[]; /* defined in hack.c */ -extern schar xdir[], ydir[]; /* idem */ -extern char *visctrl(); /* see below */ -coord cc; - pline("(For instructions type a ?)"); - cx = u.ux; - cy = u.uy; - curs(cx,cy+2); - while((c = readchar()) != '.'){ - for(i=0; i<8; i++) if(sdir[i] == c){ - if(1 <= cx + xdir[i] && cx + xdir[i] <= COLNO) - cx += xdir[i]; - if(0 <= cy + ydir[i] && cy + ydir[i] <= ROWNO-1) - cy += ydir[i]; - goto nxtc; - } - if(c == '?'){ - pline("Use [hjkl] to move the cursor to %s.", goal); - pline("Type a . when you are at the right place."); - } else { - pline("Unknown direction: '%s' (%s).", - visctrl(c), - force ? "use hjkl or ." : "aborted"); - if(force) goto nxtc; - cc.x = -1; - cc.y = 0; - return(cc); - } - nxtc: ; - curs(cx,cy+2); - } - cc.x = cx; - cc.y = cy; - return(cc); -} - -do_mname(){ -char buf[BUFSZ]; -coord cc; -register int cx,cy,lth,i; -register struct monst *mtmp, *mtmp2; -extern char *lmonnam(); - cc = getpos(0, "the monster you want to name"); - cx = cc.x; - cy = cc.y; - if(cx < 0) return(0); - mtmp = m_at(cx,cy); - if(!mtmp){ - if(cx == u.ux && cy == u.uy) - pline("This ugly monster is called %s and cannot be renamed.", - plname); - else - pline("There is no monster there."); - return(1); - } - if(mtmp->mimic){ - pline("I see no monster there."); - return(1); - } - if(!cansee(cx,cy)) { - pline("I cannot see a monster there."); - return(1); - } - pline("What do you want to call %s? ", lmonnam(mtmp)); - getlin(buf); - clrlin(); - if(!*buf || *buf == '\033') - return(1); - lth = strlen(buf)+1; - if(lth > 63){ - buf[62] = 0; - lth = 63; - } - mtmp2 = newmonst(mtmp->mxlth + lth); - *mtmp2 = *mtmp; - for(i=0; i<mtmp->mxlth; i++) - ((char *) mtmp2->mextra)[i] = ((char *) mtmp->mextra)[i]; - mtmp2->mnamelth = lth; - (void) strcpy(NAME(mtmp2), buf); - replmon(mtmp,mtmp2); - return(1); -} - -/* - * This routine changes the address of obj . Be careful not to call it - * when there might be pointers around in unknown places. For now: only - * when obj is in the inventory. - */ -do_oname(obj) register struct obj *obj; { -register struct obj *otmp, *otmp2; -register lth; -char buf[BUFSZ]; - pline("What do you want to name %s? ", doname(obj)); - getlin(buf); - clrlin(); - if(!*buf || *buf == '\033') - return; - lth = strlen(buf)+1; - if(lth > 63){ - buf[62] = 0; - lth = 63; - } - otmp2 = newobj(lth); - *otmp2 = *obj; - otmp2->onamelth = lth; - (void) strcpy(ONAME(otmp2), buf); - - setworn((struct obj *) 0, obj->owornmask); - setworn(otmp2, otmp2->owornmask); - - /* do freeinv(obj); etc. by hand in order to preserve - the position of this object in the inventory */ - if(obj == invent) invent = otmp2; - else for(otmp = invent; ; otmp = otmp->nobj){ - if(!otmp) - panic("Do_oname: cannot find obj."); - if(otmp->nobj == obj){ - otmp->nobj = otmp2; - break; - } - } - /* obfree(obj, otmp2); /* now unnecessary: no pointers on bill */ - free((char *) obj); /* let us hope nobody else saved a pointer */ -} - -ddocall() -{ - register struct obj *obj; - - pline("Do you want to name an individual object? [ny] "); - switch(readchar()) { - case '\033': - break; - case 'y': - obj = getobj("#", "name"); - if(obj) do_oname(obj); - break; - default: - obj = getobj("?!=/", "call"); - if(obj) docall(obj); - } - return(0); -} - -docall(obj) -register struct obj *obj; -{ - char buf[BUFSZ]; - struct obj otemp; - register char **str1; - extern char *xname(); - register char *str; - - otemp = *obj; - otemp.quan = 1; - otemp.onamelth = 0; - str = xname(&otemp); - pline("Call %s %s: ", index(vowels,*str) ? "an" : "a", str); - getlin(buf); - clrlin(); - if(!*buf || *buf == '\033') - return; - str = newstring(strlen(buf)+1); - (void) strcpy(str,buf); - str1 = &(objects[obj->otyp].oc_uname); - if(*str1) free(*str1); - *str1 = str; -} - -char *ghostnames[] = { /* these names should have length < PL_NSIZ */ - "adri", "andries", "andreas", "bert", "david", "dirk", "emile", - "frans", "fred", "greg", "hether", "jay", "john", "jon", "kay", - "kenny", "maud", "michiel", "mike", "peter", "robert", "ron", - "tom", "wilmar" -}; - -char * -xmonnam(mtmp, vb) register struct monst *mtmp; int vb; { -static char buf[BUFSZ]; /* %% */ -extern char *shkname(); - if(mtmp->mnamelth && !vb) { - (void) strcpy(buf, NAME(mtmp)); - return(buf); - } - switch(mtmp->data->mlet) { - case ' ': - { register char *gn = (char *) mtmp->mextra; - if(!*gn) { /* might also look in scorefile */ - gn = ghostnames[rn2(SIZE(ghostnames))]; - if(!rn2(2)) (void) - strcpy((char *) mtmp->mextra, !rn2(5) ? plname : gn); - } - (void) sprintf(buf, "%s's ghost", gn); - } - break; - case '@': - if(mtmp->isshk) { - (void) strcpy(buf, shkname(mtmp)); - break; - } - /* fall into next case */ - default: - (void) sprintf(buf, "the %s%s", - mtmp->minvis ? "invisible " : "", - mtmp->data->mname); - } - if(vb && mtmp->mnamelth) { - (void) strcat(buf, " called "); - (void) strcat(buf, NAME(mtmp)); - } - return(buf); -} - -char * -lmonnam(mtmp) register struct monst *mtmp; { - return(xmonnam(mtmp, 1)); -} - -char * -monnam(mtmp) register struct monst *mtmp; { - return(xmonnam(mtmp, 0)); -} - -char * -Monnam(mtmp) register struct monst *mtmp; { -register char *bp = monnam(mtmp); - if('a' <= *bp && *bp <= 'z') *bp += ('A' - 'a'); - return(bp); -} - -char * -amonnam(mtmp,adj) -register struct monst *mtmp; -register char *adj; -{ - register char *bp = monnam(mtmp); - static char buf[BUFSZ]; /* %% */ - - if(!strncmp(bp, "the ", 4)) bp += 4; - (void) sprintf(buf, "the %s %s", adj, bp); - return(buf); -} - -char * -Amonnam(mtmp, adj) -register struct monst *mtmp; -register char *adj; -{ - register char *bp = amonnam(mtmp,adj); - - *bp = 'T'; - return(bp); -} - -char * -Xmonnam(mtmp) register struct monst *mtmp; { -register char *bp = Monnam(mtmp); - if(!strncmp(bp, "The ", 4)) { - bp += 2; - *bp = 'A'; - } - return(bp); -} - -char * -visctrl(c) -char c; -{ -static char ccc[3]; - if(c < 040) { - ccc[0] = '^'; - ccc[1] = c + 0100; - ccc[2] = 0; - } else { - ccc[0] = c; - ccc[1] = 0; - } - return(ccc); -} |
