Merge branch 'master' of https://rodney.nethack.org:20040/git/NHsource
This commit is contained in:
@@ -896,6 +896,7 @@ allow showing legal positions for stinking cloud, jumping and polearms
|
|||||||
when asked for a location
|
when asked for a location
|
||||||
cloned creatures (of any type) don't deathdrop items
|
cloned creatures (of any type) don't deathdrop items
|
||||||
pudding corpses behave somewhat differently than before
|
pudding corpses behave somewhat differently than before
|
||||||
|
mithril armor should have silver color
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.5 extern.h $NHDT-Date: 1428715841 2015/04/11 01:30:41 $ $NHDT-Branch: master $:$NHDT-Revision: 1.454 $ */
|
/* NetHack 3.5 extern.h $NHDT-Date: 1428806395 2015/04/12 02:39:55 $ $NHDT-Branch: master $:$NHDT-Revision: 1.455 $ */
|
||||||
/* NetHack 3.5 extern.h $Date: 2013/11/05 00:57:53 $ $Revision: 1.380 $ */
|
/* NetHack 3.5 extern.h $Date: 2013/11/05 00:57:53 $ $Revision: 1.380 $ */
|
||||||
/* Copyright (c) Steve Creps, 1988. */
|
/* Copyright (c) Steve Creps, 1988. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -833,6 +833,8 @@ E int FDECL(isqrt, (int));
|
|||||||
E int FDECL(distmin, (int,int,int,int));
|
E int FDECL(distmin, (int,int,int,int));
|
||||||
E boolean FDECL(online2, (int,int,int,int));
|
E boolean FDECL(online2, (int,int,int,int));
|
||||||
E boolean FDECL(pmatch, (const char *,const char *));
|
E boolean FDECL(pmatch, (const char *,const char *));
|
||||||
|
E boolean FDECL(pmatchi, (const char *,const char *));
|
||||||
|
E boolean FDECL(pmatchz, (const char *,const char *));
|
||||||
#ifndef STRNCMPI
|
#ifndef STRNCMPI
|
||||||
E int FDECL(strncmpi, (const char *,const char *,int));
|
E int FDECL(strncmpi, (const char *,const char *,int));
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
/* NetHack 3.5 hacklib.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
|
/* NetHack 3.5 hacklib.c $NHDT-Date: 1428806394 2015/04/12 02:39:54 $ $NHDT-Branch: master $:$NHDT-Revision: 1.34 $ */
|
||||||
/* NetHack 3.5 hacklib.c $Date: 2009/05/06 10:46:32 $ $Revision: 1.23 $ */
|
/* NetHack 3.5 hacklib.c $Date: 2009/05/06 10:46:32 $ $Revision: 1.23 $ */
|
||||||
/* SCCS Id: @(#)hacklib.c 3.5 2007/04/30 */
|
/* SCCS Id: @(#)hacklib.c 3.5 2007/04/30 */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* Copyright (c) Robert Patrick Rankin, 1991 */
|
/* Copyright (c) Robert Patrick Rankin, 1991 */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
/* We could include only config.h, except for the overlay definitions... */
|
#include "hack.h" /* for config.h+extern.h */
|
||||||
#include "hack.h"
|
|
||||||
/*=
|
/*=
|
||||||
Assorted 'small' utility routines. They're virtually independent of
|
Assorted 'small' utility routines. They're virtually independent of
|
||||||
NetHack, except that rounddiv may call panic().
|
NetHack, except that rounddiv may call panic(). setrandom calls one of
|
||||||
|
srandom(), srand48(), or srand() depending upon configuration.
|
||||||
|
|
||||||
return type routine name argument type(s)
|
return type routine name argument type(s)
|
||||||
boolean digit (char)
|
boolean digit (char)
|
||||||
@@ -40,9 +40,12 @@ NetHack, except that rounddiv may call panic().
|
|||||||
int dist2 (int, int, int, int)
|
int dist2 (int, int, int, int)
|
||||||
boolean online2 (int, int)
|
boolean online2 (int, int)
|
||||||
boolean pmatch (const char *, const char *)
|
boolean pmatch (const char *, const char *)
|
||||||
|
boolean pmatchi (const char *, const char *)
|
||||||
|
boolean pmatchz (const char *, const char *)
|
||||||
int strncmpi (const char *, const char *, int)
|
int strncmpi (const char *, const char *, int)
|
||||||
char * strstri (const char *, const char *)
|
char * strstri (const char *, const char *)
|
||||||
boolean fuzzymatch (const char *,const char *,const char *,boolean)
|
boolean fuzzymatch (const char *,const char *,
|
||||||
|
const char *,boolean)
|
||||||
void setrandom (void)
|
void setrandom (void)
|
||||||
time_t getnow (void)
|
time_t getnow (void)
|
||||||
int getyear (void)
|
int getyear (void)
|
||||||
@@ -62,6 +65,9 @@ NetHack, except that rounddiv may call panic().
|
|||||||
# define Static static
|
# define Static static
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static boolean FDECL(pmatch_internal, (const char *,const char *,
|
||||||
|
BOOLEAN_P,const char *));
|
||||||
|
|
||||||
boolean
|
boolean
|
||||||
digit(c) /* is 'c' a digit? */
|
digit(c) /* is 'c' a digit? */
|
||||||
char c;
|
char c;
|
||||||
@@ -465,9 +471,12 @@ online2(x0, y0, x1, y1) /* are two points lined up (on a straight line)? */
|
|||||||
return((boolean)(!dy || !dx || (dy == dx) || (dy + dx == 0))); /* (dy == -dx) */
|
return((boolean)(!dy || !dx || (dy == dx) || (dy + dx == 0))); /* (dy == -dx) */
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean
|
/* guts of pmatch(), pmatchi(), and pmatchz() */
|
||||||
pmatch(patrn, strng) /* match a string against a pattern */
|
static boolean
|
||||||
|
pmatch_internal(patrn, strng, ci, sk) /* match a string against a pattern */
|
||||||
const char *patrn, *strng;
|
const char *patrn, *strng;
|
||||||
|
boolean ci; /* True => case-insensitive, False => case-sensitive */
|
||||||
|
const char *sk; /* set of characters to skip */
|
||||||
{
|
{
|
||||||
char s, p;
|
char s, p;
|
||||||
/*
|
/*
|
||||||
@@ -475,18 +484,53 @@ pmatch(patrn, strng) /* match a string against a pattern */
|
|||||||
: any single character. Returns TRUE if 'strng' matches 'patrn'.
|
: any single character. Returns TRUE if 'strng' matches 'patrn'.
|
||||||
*/
|
*/
|
||||||
pmatch_top:
|
pmatch_top:
|
||||||
s = *strng++; p = *patrn++; /* get next chars and pre-advance */
|
if (!sk) {
|
||||||
|
s = *strng++; p = *patrn++; /* get next chars and pre-advance */
|
||||||
|
} else {
|
||||||
|
/* fuzzy match variant of pmatch; particular characters are ignored */
|
||||||
|
do { s = *strng++; } while (index(sk, s));
|
||||||
|
do { p = *patrn++; } while (index(sk, p));
|
||||||
|
}
|
||||||
if (!p) /* end of pattern */
|
if (!p) /* end of pattern */
|
||||||
return((boolean)(s == '\0')); /* matches iff end of string too */
|
return (boolean)(s == '\0'); /* matches iff end of string too */
|
||||||
else if (p == '*') /* wildcard reached */
|
else if (p == '*') /* wildcard reached */
|
||||||
return((boolean)((!*patrn || pmatch(patrn, strng-1)) ? TRUE :
|
return (boolean)
|
||||||
s ? pmatch(patrn-1, strng) : FALSE));
|
((!*patrn || pmatch_internal(patrn, strng-1, ci, sk)) ? TRUE :
|
||||||
else if (p != s && (p != '?' || !s)) /* check single character */
|
s ? pmatch_internal(patrn-1, strng, ci, sk) : FALSE);
|
||||||
|
else if ((ci ? lowc(p) != lowc(s) : p != s) /* check single character */
|
||||||
|
&& (p != '?' || !s)) /* & single-char wildcard */
|
||||||
return FALSE; /* doesn't match */
|
return FALSE; /* doesn't match */
|
||||||
else /* return pmatch(patrn, strng); */
|
else /* return pmatch_internal(patrn, strng, ci, sk); */
|
||||||
goto pmatch_top; /* optimize tail recursion */
|
goto pmatch_top; /* optimize tail recursion */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* case-sensitive wildcard match */
|
||||||
|
boolean
|
||||||
|
pmatch(patrn, strng)
|
||||||
|
const char *patrn, *strng;
|
||||||
|
{
|
||||||
|
return pmatch_internal(patrn, strng, FALSE, (const char *)0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* case-insensitive wildcard match */
|
||||||
|
boolean
|
||||||
|
pmatchi(patrn, strng)
|
||||||
|
const char *patrn, *strng;
|
||||||
|
{
|
||||||
|
return pmatch_internal(patrn, strng, TRUE, (const char *)0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* case-insensitive wildcard fuzzymatch */
|
||||||
|
boolean
|
||||||
|
pmatchz(patrn, strng)
|
||||||
|
const char *patrn, *strng;
|
||||||
|
{
|
||||||
|
/* ignore spaces, tabs (just in case), dashes, and underscores */
|
||||||
|
static const char fuzzychars[] = " \t-_";
|
||||||
|
|
||||||
|
return pmatch_internal(patrn, strng, TRUE, fuzzychars);
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef STRNCMPI
|
#ifndef STRNCMPI
|
||||||
int
|
int
|
||||||
strncmpi(s1, s2, n) /* case insensitive counted string comparison */
|
strncmpi(s1, s2, n) /* case insensitive counted string comparison */
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.5 objects.c $NHDT-Date: 1426470348 2015/03/16 01:45:48 $ $NHDT-Branch: derek-farming $:$NHDT-Revision: 1.27 $ */
|
/* NetHack 3.5 objects.c $NHDT-Date: 1428802519 2015/04/12 01:35:19 $ $NHDT-Branch: master $:$NHDT-Revision: 1.34 $ */
|
||||||
/* Copyright (c) Mike Threepoint, 1989. */
|
/* Copyright (c) Mike Threepoint, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -373,9 +373,9 @@ ARMOR("splint mail", (char *)0,
|
|||||||
ARMOR("banded mail", (char *)0,
|
ARMOR("banded mail", (char *)0,
|
||||||
1, 0, 1, 0, 72, 5, 350, 90, 4, 1, ARM_SUIT, IRON, HI_METAL),
|
1, 0, 1, 0, 72, 5, 350, 90, 4, 1, ARM_SUIT, IRON, HI_METAL),
|
||||||
ARMOR("dwarvish mithril-coat", (char *)0,
|
ARMOR("dwarvish mithril-coat", (char *)0,
|
||||||
1, 0, 0, 0, 10, 1, 150, 240, 4, 2, ARM_SUIT, MITHRIL, HI_METAL),
|
1, 0, 0, 0, 10, 1, 150, 240, 4, 2, ARM_SUIT, MITHRIL, HI_SILVER),
|
||||||
ARMOR("elven mithril-coat", (char *)0,
|
ARMOR("elven mithril-coat", (char *)0,
|
||||||
1, 0, 0, 0, 15, 1, 150, 240, 5, 2, ARM_SUIT, MITHRIL, HI_METAL),
|
1, 0, 0, 0, 15, 1, 150, 240, 5, 2, ARM_SUIT, MITHRIL, HI_SILVER),
|
||||||
ARMOR("chain mail", (char *)0,
|
ARMOR("chain mail", (char *)0,
|
||||||
1, 0, 0, 0, 72, 5, 300, 75, 5, 1, ARM_SUIT, IRON, HI_METAL),
|
1, 0, 0, 0, 72, 5, 300, 75, 5, 1, ARM_SUIT, IRON, HI_METAL),
|
||||||
ARMOR("orcish chain mail", "crude chain mail",
|
ARMOR("orcish chain mail", "crude chain mail",
|
||||||
|
|||||||
Reference in New Issue
Block a user