replace some weight-related magic numbers

adds a header file include/nhconst.h  (I'm open to a better name)
This commit is contained in:
nhmall
2025-03-19 13:29:58 -04:00
parent 00a5d811ee
commit a943c4c10b
19 changed files with 118 additions and 86 deletions

View File

@@ -12,6 +12,7 @@
#include "lint.h"
#include "align.h"
#include "nhconst.h"
#include "dungeon.h"
#include "stairs.h"
#include "objclass.h"
@@ -46,7 +47,6 @@
#define ON 1
#define OFF 0
#define BOLT_LIM 8 /* from this distance ranged attacks will be made */
#define MAX_CARR_CAP 1000 /* so that boulders can be heavier */
#define DUMMY { 0 } /* array initializer, letting [1..N-1] default */
#define DEF_NOTHING ' ' /* default symbol for NOTHING and UNEXPLORED */
@@ -65,9 +65,6 @@
#define CXN_ARTICLE 8 /* include a/an/the prefix */
#define CXN_NOCORPSE 16 /* suppress " corpse" suffix */
/* weight increment of heavy iron ball */
#define IRON_BALL_W_INCR 160
/* number of turns it takes for vault guard to show up */
#define VAULT_GUARD_TIME 30

View File

@@ -590,7 +590,7 @@
LVL(4, 0, 8, 10, 0), (G_GENO | 2),
A(ATTK(AT_NONE, AD_COLD, 0, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(50, 20, MS_SILENT, MZ_MEDIUM), MR_COLD | MR_POISON,
SIZ(WT_JELLY, 20, MS_SILENT, MZ_MEDIUM), MR_COLD | MR_POISON,
MR_COLD | MR_POISON,
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS | M1_NOTAKE,
@@ -600,7 +600,7 @@
LVL(5, 0, 8, 10, 0), (G_GENO | 1),
A(ATTK(AT_NONE, AD_ACID, 0, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(50, 20, MS_SILENT, MZ_MEDIUM),
SIZ(WT_JELLY, 20, MS_SILENT, MZ_MEDIUM),
MR_ACID | MR_STONE, MR_ACID | MR_STONE,
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS | M1_ACID | M1_NOTAKE,
@@ -610,7 +610,7 @@
LVL(6, 3, 8, 20, 0), (G_GENO | 2),
A(ATTK(AT_ENGL, AD_ACID, 3, 6), ATTK(AT_NONE, AD_ACID, 3, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(50, 20, MS_SILENT, MZ_MEDIUM),
SIZ(WT_JELLY, 20, MS_SILENT, MZ_MEDIUM),
MR_ACID | MR_STONE, MR_ACID | MR_STONE,
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS | M1_ACID | M1_NOTAKE,
@@ -701,14 +701,14 @@
LVL(3, 12, 9, 20, 0), (G_GENO | 2),
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_TPORT,
SIZ(WT_NYMPH, 300, MS_SEDUCE, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_TPORT,
M2_HOSTILE | M2_FEMALE | M2_COLLECT, M3_INFRAVISIBLE,
5, CLR_GREEN, WOOD_NYMPH),
MON(NAM("water nymph"), S_NYMPH,
LVL(3, 12, 9, 20, 0), (G_GENO | 2),
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
SIZ(WT_NYMPH, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
M1_HUMANOID | M1_TPORT | M1_SWIM, M2_HOSTILE | M2_FEMALE | M2_COLLECT,
M3_INFRAVISIBLE,
5, CLR_BLUE, WATER_NYMPH),
@@ -716,7 +716,7 @@
LVL(3, 12, 9, 20, 0), (G_GENO | 2),
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_TPORT,
SIZ(WT_NYMPH, 300, MS_SEDUCE, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_TPORT,
M2_HOSTILE | M2_FEMALE | M2_COLLECT, M3_INFRAVISIBLE,
5, CLR_BROWN, MOUNTAIN_NYMPH),
/*
@@ -1052,7 +1052,7 @@
LVL(3, 1, 0, 0, 0), (G_GENO | G_NOCORPSE | 2),
A(ATTK(AT_ENGL, AD_PHYS, 1, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
SIZ(WT_ETHEREAL, 0, MS_SILENT, MZ_HUGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS | M1_AMORPHOUS | M1_UNSOLID,
M2_HOSTILE | M2_NEUTER, 0,
@@ -1061,7 +1061,7 @@
LVL(4, 20, 2, 30, 0), (G_GENO | G_NOCORPSE | 2),
A(ATTK(AT_ENGL, AD_BLND, 2, 8),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
SIZ(WT_ETHEREAL, 0, MS_SILENT, MZ_HUGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS,
M2_HOSTILE | M2_NEUTER, 0,
@@ -1070,7 +1070,7 @@
LVL(5, 20, 2, 30, 0), (G_NOHELL | G_GENO | G_NOCORPSE | 1),
A(ATTK(AT_ENGL, AD_COLD, 1, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_HUGE),
SIZ(WT_ETHEREAL, 0, MS_SILENT, MZ_HUGE),
MR_COLD | MR_SLEEP | MR_POISON | MR_STONE, 0,
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS,
@@ -1080,7 +1080,7 @@
LVL(6, 20, 2, 30, 0), (G_GENO | G_NOCORPSE | 1),
A(ATTK(AT_ENGL, AD_ELEC, 1, 6), ATTK(AT_ENGL, AD_DREN, 2, 6),
ATTK(AT_NONE, AD_ELEC, 0, 4), NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_HUGE),
SIZ(WT_ETHEREAL, 0, MS_SILENT, MZ_HUGE),
MR_ELEC | MR_SLEEP | MR_DISINT | MR_POISON | MR_STONE, 0,
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS | M1_UNSOLID,
@@ -1090,7 +1090,7 @@
LVL(7, 22, 2, 30, 0), (G_HELL | G_GENO | G_NOCORPSE | 2),
A(ATTK(AT_ENGL, AD_FIRE, 1, 8),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_HUGE),
SIZ(WT_ETHEREAL, 0, MS_SILENT, MZ_HUGE),
MR_FIRE | MR_SLEEP | MR_POISON | MR_STONE, 0,
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS | M1_UNSOLID,
@@ -1100,7 +1100,7 @@
LVL(8, 22, 2, 30, 0), (G_HELL | G_GENO | G_NOCORPSE | 1),
A(ATTK(AT_ENGL, AD_FIRE, 1, 10), ATTK(AT_NONE, AD_FIRE, 0, 4),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_HUGE),
SIZ(WT_ETHEREAL, 0, MS_SILENT, MZ_HUGE),
MR_FIRE | MR_SLEEP | MR_POISON | MR_STONE, 0,
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
| M1_MINDLESS | M1_UNSOLID,
@@ -1168,7 +1168,7 @@
LVL(3, 15, 0, 0, 0), (G_NOCORPSE | G_GENO | 4),
A(ATTK(AT_EXPL, AD_BLND, 10, 20),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_SMALL),
SIZ(WT_ETHEREAL, 0, MS_SILENT, MZ_SMALL),
MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_SLEEP | MR_POISON
| MR_ACID | MR_STONE, 0,
M1_FLY | M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS
@@ -1180,7 +1180,7 @@
LVL(5, 15, 0, 0, 0), (G_NOCORPSE | G_GENO | 2),
A(ATTK(AT_EXPL, AD_HALU, 10, 12),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_SMALL),
SIZ(WT_ETHEREAL, 0, MS_SILENT, MZ_SMALL),
MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_SLEEP | MR_POISON
| MR_ACID | MR_STONE, 0,
M1_FLY | M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS
@@ -1340,7 +1340,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), 0, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, CLR_GRAY, BABY_GRAY_DRAGON),
@@ -1348,7 +1348,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), 0, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, M3_INFRAVISIBLE,
13, HI_GOLD, BABY_GOLD_DRAGON),
@@ -1356,7 +1356,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), 0, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, DRAGON_SILVER, BABY_SILVER_DRAGON),
@@ -1366,7 +1366,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), 0, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, CLR_CYAN, BABY_SHIMMERING_DRAGON),
@@ -1375,7 +1375,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_FIRE, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), MR_FIRE, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, M3_INFRAVISIBLE,
13, CLR_RED, BABY_RED_DRAGON),
@@ -1383,7 +1383,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_COLD, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), MR_COLD, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, CLR_WHITE, BABY_WHITE_DRAGON),
@@ -1391,7 +1391,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_SLEEP, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), MR_SLEEP, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, CLR_ORANGE, BABY_ORANGE_DRAGON),
@@ -1399,7 +1399,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_DISINT, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), MR_DISINT, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, CLR_BLACK, BABY_BLACK_DRAGON),
@@ -1407,7 +1407,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_ELEC, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), MR_ELEC, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, CLR_BLUE, BABY_BLUE_DRAGON),
@@ -1415,7 +1415,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_POISON, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), MR_POISON, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_POIS,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, CLR_GREEN, BABY_GREEN_DRAGON),
@@ -1423,7 +1423,7 @@
LVL(12, 9, 2, 10, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_ACID | MR_STONE, 0,
SIZ(WT_BABY_DRAGON, 500, MS_ROAR, MZ_HUGE), MR_ACID | MR_STONE, 0,
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_ACID,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
13, CLR_YELLOW, BABY_YELLOW_DRAGON),

42
include/nhconst.h Normal file
View File

@@ -0,0 +1,42 @@
/* NetHack 3.7 nhconst.h $NHDT-Date: 1725653014 2024/09/06 20:03:34 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.26 $ */
/* Copyright (c) Michael Allison, 2025. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef NHCONST_H
#define NHCONST_H
/* weight-related constants and thresholds */
enum weight_constants {
WT_ETHEREAL = 0,
WT_SPLASH_THRESHOLD = 9, /* weight needed to make splash in water */
WT_WEIGHTCAP_STRCON = 25, /* str + con multiplied by this for conv to
* carrying capacity in weight_cap() */
WT_WEIGHTCAP_SPARE = 50, /* used in weight_cap calc */
WT_JELLY = 50, /* weight of jelly body */
WT_WOUNDEDLEG_REDUCT = 100, /* wounded legs reduce carrcap by this */
WT_TO_DMG = 100, /* divisor to convert weight to dmg amt */
WT_IRON_BALL_INCR = 160, /* weight increment of heavy iron ball */
WT_IRON_BALL_BASE = 480, /* base starting weight of iron ball */
WT_NOISY_INV = 500, /* inv_weight() max for noisy fumbling */
WT_NYMPH = 600, /* weight of nymph body */
WT_TOOMUCH_DIAGONAL = 600, /* weight_cap threshold for diag squeeze */
WT_ELF = 800, /* weight of elf body */
WT_SQUEEZABLE_INV = 850, /* inv_weight() maximum for squeezing */
MAX_CARR_CAP = 1000, /* max carrying capacity, so that
* boulders can be heavier */
WT_HUMAN = 1450, /* weight of human body */
WT_BABY_DRAGON = 1500, /* weight ob baby dragon body */
WT_DRAGON = 4500, /* weight of dragon body */
};
enum monster_speeds {
VERY_SLOW = 3,
SLOW_SPEED = 9,
NORMAL_SPEED = 12, /* movement rates */
FAST_SPEED = 15,
VERY_FAST = 24,
};
#endif /* NHCONST_H */

View File

@@ -47,12 +47,6 @@ struct attack {
#define NATTK 6
/* Weight of human body, elf, dragon
*/
#define WT_HUMAN 1450U
#define WT_ELF 800U
#define WT_DRAGON 4500U
#ifndef ALIGN_H
#include "align.h"
#endif
@@ -86,10 +80,4 @@ struct permonst {
extern NEARDATA struct permonst mons[NUMMONS + 1]; /* the master list of
* monster types */
#define VERY_SLOW 3
#define SLOW_SPEED 9
#define NORMAL_SPEED 12 /* movement rates */
#define FAST_SPEED 15
#define VERY_FAST 24
#endif /* PERMONST_H */