LIMIT_TO_RANGE_INT macro and various casts.

This commit is contained in:
nhkeni
2022-03-16 17:59:23 -04:00
parent 81b014977d
commit e51026aee1
5 changed files with 13 additions and 4 deletions

View File

@@ -642,6 +642,15 @@ enum optset_restrictions {
#endif #endif
#define plur(x) (((x) == 1) ? "" : "s") #define plur(x) (((x) == 1) ? "" : "s")
/* Cast to int, but limit value to range. */
#define LIMIT_TO_RANGE_INT(lo, hi, var) \
(int) ( \
(var) < (lo) ? (lo) : ( \
(var) > (hi) ? (hi) : \
(var) \
) \
)
#define ARM_BONUS(obj) \ #define ARM_BONUS(obj) \
(objects[(obj)->otyp].a_ac + (obj)->spe \ (objects[(obj)->otyp].a_ac + (obj)->spe \
- min((int) greatest_erosion(obj), objects[(obj)->otyp].a_ac)) - min((int) greatest_erosion(obj), objects[(obj)->otyp].a_ac))

View File

@@ -1533,7 +1533,7 @@ stop_donning(struct obj *stolenobj) /* no message if stolenobj is already
thesimpleoname(otmp)); thesimpleoname(otmp));
} else { } else {
buf[0] = '\0'; /* silently stop doffing stolenobj */ buf[0] = '\0'; /* silently stop doffing stolenobj */
result = -g.multi; /* remember this before calling unmul() */ result = (int) -g.multi; /* remember this before calling unmul() */
} }
unmul(buf); unmul(buf);
/* while putting on, item becomes worn immediately but side-effects are /* while putting on, item becomes worn immediately but side-effects are

View File

@@ -257,7 +257,7 @@ throw_obj(struct obj *obj, int shotlimit)
static boolean static boolean
ok_to_throw(int *shotlimit_p) /* (see dothrow()) */ ok_to_throw(int *shotlimit_p) /* (see dothrow()) */
{ {
*shotlimit_p = g.command_count; *shotlimit_p = LIMIT_TO_RANGE_INT(0, LARGEST_INT, g.command_count);
g.multi = 0; /* reset; it's been used up */ g.multi = 0; /* reset; it's been used up */
if (notake(g.youmonst.data)) { if (notake(g.youmonst.data)) {

View File

@@ -3176,7 +3176,7 @@ dopickup(void)
{ {
int count, tmpcount, ret; int count, tmpcount, ret;
count = g.command_count; count = (int) g.command_count;
g.multi = 0; /* always reset */ g.multi = 0; /* always reset */
if ((ret = pickup_checks()) >= 0) { if ((ret = pickup_checks()) >= 0) {

View File

@@ -2894,7 +2894,7 @@ create_particular_parse(char* str, struct _create_particular_data* d)
char *bufp = str; char *bufp = str;
char *tmpp; char *tmpp;
d->quan = 1 + ((g.multi > 0) ? g.multi : 0); d->quan = 1 + ((g.multi > 0) ? (int) g.multi : 0);
d->monclass = MAXMCLASSES; d->monclass = MAXMCLASSES;
d->which = g.urole.mnum; /* an arbitrary index into mons[] */ d->which = g.urole.mnum; /* an arbitrary index into mons[] */
d->fem = -1; /* gender not specified */ d->fem = -1; /* gender not specified */