Thread View: net.games.hack
1 messages
1 total messages
Started by Barry A. Burke
Tue, 14 Jan 1986 03:24
Sorted Inventory List for 1.0.3 (UN*X Version)
Author: Barry A. Burke
Date: Tue, 14 Jan 1986 03:24
Date: Tue, 14 Jan 1986 03:24
297 lines
9871 bytes
9871 bytes
ough for login name .99 */
boolean in_mklev, restoring;
--- 5,11 -----
char nul[40]; /* contains zeros */
char plname[PL_NSIZ]; /* player name */
char lock[PL_NSIZ+4] = "1lock"; /* long enough for login name .99 */
+ char sortlist[SOBJLEN+1]; /* sort order for inventory list */
boolean in_mklev, restoring;
*** hack.invent.c.old Tue Dec 31 15:48:32 1985
--- hack.invent.c Mon Jan 6 22:54:27 1986
***************
*** 43,48
(i < 26) ? ('a'+i) : ('A'+i-26));
lastinvnr = i;
}
struct obj *
addinv(obj)
--- 43,50 -----
(i < 26) ? ('a'+i) : ('A'+i-26));
lastinvnr = i;
}
+ /* Barry A. Burke <barry@adelie.UUCP> modified addinv() Jan 6, 1985 to
+ sort the inventory list by type. */
struct obj *
addinv(obj)
***************
*** 49,54
register struct obj *obj;
{
register struct obj *otmp;
/* merge or attach to end of chain */
if(!invent) {
--- 51,58 -----
register struct obj *obj;
{
register struct obj *otmp;
+ int i;
+ extern char sortlist[];
/* merge or attach to end of chain */
if(!invent) {
***************
*** 65,91
}
obj->nobj = 0;
! if(flags.invlet_constant) {
! assigninvlet(obj);
! /*
! * The ordering of the chain is nowhere significant
! * so in case you prefer some other order than the
! * historical one, change the code below.
! */
! if(otmp) { /* find proper place in chain */
! otmp->nobj = 0;
! if((invent->invlet ^ 040) > (obj->invlet ^ 040)) {
! obj->nobj = invent;
! invent = obj;
! } else
! for(otmp = invent; ; otmp = otmp->nobj) {
! if(!otmp->nobj ||
! (otmp->nobj->invlet ^ 040) > (obj->invlet ^ 040)){
! obj->nobj = otmp->nobj;
! otmp->nobj = obj;
! break;
! }
! }
}
}
--- 69,95 -----
}
obj->nobj = 0;
! if(flags.invlet_constant)
! assigninvlet(obj); /* gotta have a letter assigned! */
!
! /* Now, let's sort the new object into the list by object type. */
! i = (int) (index(sortlist, obj->olet) - sortlist);
! if ( i <= 0 )
! i = 100;
!
! if(otmp) { /* find proper place in chain */
! otmp->nobj = 0;
! if ( i < (int) (index(sortlist, invent->olet) - sortlist)) {
! obj->nobj = invent;
! invent = obj;
! } else
! for(otmp = invent; ; otmp = otmp->nobj) {
! if(!otmp->nobj ||
! (i<(int)(index(sortlist,otmp->nobj->olet)-sortlist))) {
! obj->nobj = otmp->nobj;
! otmp->nobj = obj;
! break;
! }
}
}
*** hack.options.c.orig Mon Dec 23 11:40:24 1985
--- hack.options.c Wed Jan 8 14:23:38 1986
***************
*** 5,10
#include "hack.h"
extern char *eos();
initoptions()
{
register char *opts;
--- 5,12 -----
#include "hack.h"
extern char *eos();
+ extern char sortlist[];
+
initoptions()
{
register char *opts;
***************
*** 17,22
flags.end_top = 5;
flags.end_around = 4;
flags.female = FALSE; /* players are usually male */
if(opts = getenv("HACKOPTIONS"))
parseoptions(opts,TRUE);
--- 19,26 -----
flags.end_top = 5;
flags.end_around = 4;
flags.female = FALSE; /* players are usually male */
+ (void) strcpy( sortlist, "$" ); /* gotta seed it for `index' */
+ (void) strncat( sortlist, SORTOBJ, strlen(SORTOBJ) );
if(opts = getenv("HACKOPTIONS"))
parseoptions(opts,TRUE);
***************
*** 107,112
return;
}
/* endgame:5t[op] 5a[round] o[wn] */
if(!strncmp(opts,"endgame",3)) {
op = index(opts,':');
--- 111,129 -----
return;
}
+ /* sortobj:string */
+ if(!strncmp(opts,"sortobj",4)) {
+ if(!from_env) {
+ pline("The inventory sort list can be set only from HACKOPTIONS.");
+ return;
+ }
+ op = index(opts,':');
+ if(!op) goto bad;
+ (void) strcpy(sortlist, "$"); /* Need an offset of 1 */
+ (void) strncat(sortlist, op+1, SOBJLEN-1);
+ return;
+ }
+
/* endgame:5t[op] 5a[round] o[wn] */
if(!strncmp(opts,"endgame",3)) {
op = index(opts,':');
***************
*** 145,151
if(!strncmp(opts, "help", 4)) {
pline("%s%s%s",
"To set options use `HACKOPTIONS=\"<options>\"' in your environment, or ",
! "give the command 'o' followed by the line `<options>' while playing. ",
"Here <options> is a list of <option>s separated by commas." );
pline("%s%s%s",
"Simple (boolean) options are rest_on_space, news, time, ",
--- 162,168 -----
if(!strncmp(opts, "help", 4)) {
pline("%s%s%s",
"To set options use `HACKOPTIONS=\"<options>\"' in your environment, or ",
! "give the command 'O' followed by the line `<options>' while playing. ",
"Here <options> is a list of <option>s separated by commas." );
pline("%s%s%s",
"Simple (boolean) options are rest_on_space, news, time, ",
***************
*** 149,155
"Here <options> is a list of <option>s separated by commas." );
pline("%s%s%s",
"Simple (boolean) options are rest_on_space, news, time, ",
! "null, tombstone, (fe)male. ",
"These can be negated by prefixing them with '!' or \"no\"." );
pline("%s",
"A string option is name, as in HACKOPTIONS=\"name:Merlin-W\"." );
--- 166,172 -----
"Here <options> is a list of <option>s separated by commas." );
pline("%s%s%s",
"Simple (boolean) options are rest_on_space, news, time, ",
! "null, tombstone, (fe)male, fixinvlet. ",
"These can be negated by prefixing them with '!' or \"no\"." );
pline("%s",
"A string option is name, as in HACKOPTIONS=\"name:Merlin-W\"." );
***************
*** 153,158
"These can be negated by prefixing them with '!' or \"no\"." );
pline("%s",
"A string option is name, as in HACKOPTIONS=\"name:Merlin-W\"." );
pline("%s%s%s",
"A compound option is endgame; it is followed by a description of what ",
"parts of the scorelist you want to see. You might for example say: ",
--- 170,181 -----
"These can be negated by prefixing them with '!' or \"no\"." );
pline("%s",
"A string option is name, as in HACKOPTIONS=\"name:Merlin-W\"." );
+ pline("%s%s%s%s%s",
+ "A string option is sortobj; it is followed by a list of the 11 object ",
+ "class letters in the order you want inventories sorted. If all 11 ",
+ "letters are not provided, unspecified items are tacked onto the end; ",
+ "a null string means do no sorting. The default sort order is \"",
+ SORTOBJ, "\"." );
pline("%s%s%s",
"A compound option is endgame; it is followed by a description of what ",
"parts of the scorelist you want to see. You might for example say: ",
***************
*** 160,166
return;
}
pline("Bad option: %s.", opts);
! pline("Type `o help<cr>' for help.");
return;
}
puts("Bad syntax in HACKOPTIONS.");
--- 183,189 -----
return;
}
pline("Bad option: %s.", opts);
! pline("Type `O help<cr>' for help.");
return;
}
puts("Bad syntax in HACKOPTIONS.");
***************
*** 187,192
if(flags.notombstone) (void) strcat(buf,"notombstone,");
if(flags.no_rest_on_space)
(void) strcat(buf,"!rest_on_space,");
if(flags.end_top != 5 || flags.end_around != 4 || flags.end_own){
(void) sprintf(eos(buf), "endgame: %u topscores/%u around me",
flags.end_top, flags.end_around);
--- 210,217 -----
if(flags.notombstone) (void) strcat(buf,"notombstone,");
if(flags.no_rest_on_space)
(void) strcat(buf,"!rest_on_space,");
+ (void) strcat(buf,"sortobj:");
+ (void) strcat(buf,sortlist);
if(flags.end_top != 5 || flags.end_around != 4 || flags.end_own){
(void) sprintf(eos(buf), "endgame: %u topscores/%u around me",
flags.end_top, flags.end_around);
*** help.orig Mon Dec 23 11:42:07 1985
--- help Tue Jan 7 13:21:00 1986
***************
*** 109,114
They can be negated by prefixing them with '!' or "no".
A string option is name; it supplies the answer to the question
"Who are you?"; it may have a suffix.
A compound option is endgame; it is followed by a description
of what parts of the list of topscorers should be printed
when the game is finished.
--- 109,117 -----
They can be negated by prefixing them with '!' or "no".
A string option is name; it supplies the answer to the question
"Who are you?"; it may have a suffix.
+ A string option is sortobj; this is a list of the object
+ type letters in the order you would like them shown in
+ inventories.
A compound option is endgame; it is followed by a description
of what parts of the list of topscorers should be printed
when the game is finished.
--
LIVE: Barry A. Burke, (617) 965-8480 x26
USPS: Adelie Corporation, 288 Walnut St., Newtonville, MA 02160
UUCP: ..!{harvard | decvax!linus!axiom}!adelie!barry
ARPA: adelie!barry@harvard.HARVARD.EDU, barry%adelie.UUCP@harvard.HARVARD.EDU
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads