zap.c as a demo for NOSTATICFN

This commit is contained in:
nhkeni
2024-03-13 11:40:50 -04:00
parent 59486fb8ad
commit d523041b60
+48 -48
View File
@@ -1,4 +1,4 @@
/* NetHack 3.7 zap.c $NHDT-Date: 1704316449 2024/01/03 21:14:09 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.508 $ */ /* NetHack 3.7 zap.c $NHDT-Date: 1710344449 2024/03/13 15:40:49 $ $NHDT-Branch: keni-staticfn $:$NHDT-Revision: 1.525 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */ /*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -12,33 +12,33 @@
*/ */
#define MAGIC_COOKIE 1000 #define MAGIC_COOKIE 1000
static int zaptype(int); staticfn int zaptype(int);
static void probe_objchain(struct obj *) NO_NNARGS; staticfn void probe_objchain(struct obj *) NO_NNARGS;
static boolean zombie_can_dig(coordxy x, coordxy y); staticfn boolean zombie_can_dig(coordxy x, coordxy y);
static void polyuse(struct obj *, int, int) NO_NNARGS; staticfn void polyuse(struct obj *, int, int) NO_NNARGS;
static void create_polymon(struct obj *, int) NO_NNARGS; staticfn void create_polymon(struct obj *, int) NO_NNARGS;
static int stone_to_flesh_obj(struct obj *) NONNULLARG1; staticfn int stone_to_flesh_obj(struct obj *) NONNULLARG1;
static boolean zap_updown(struct obj *) NONNULLARG1; staticfn boolean zap_updown(struct obj *) NONNULLARG1;
static void zhitu(int, int, const char *, coordxy, coordxy) NO_NNARGS; staticfn void zhitu(int, int, const char *, coordxy, coordxy) NO_NNARGS;
static void revive_egg(struct obj *) NONNULLARG1; staticfn void revive_egg(struct obj *) NONNULLARG1;
static boolean zap_steed(struct obj *) NONNULLARG1; staticfn boolean zap_steed(struct obj *) NONNULLARG1;
static void skiprange(int, int *, int *) NONNULLPTRS; staticfn void skiprange(int, int *, int *) NONNULLPTRS;
static void maybe_explode_trap(struct trap *, struct obj *, staticfn void maybe_explode_trap(struct trap *, struct obj *,
boolean *) NONNULLARG3; boolean *) NONNULLARG3;
static void zap_map(coordxy, coordxy, struct obj *) NONNULLARG3; staticfn void zap_map(coordxy, coordxy, struct obj *) NONNULLARG3;
static int zap_hit(int, int); staticfn int zap_hit(int, int);
static void disintegrate_mon(struct monst *, int, const char *) NONNULLARG1; staticfn void disintegrate_mon(struct monst *, int, const char *) NONNULLARG1;
static int adtyp_to_prop(int); staticfn int adtyp_to_prop(int);
static void backfire(struct obj *) NONNULLARG1; staticfn void backfire(struct obj *) NONNULLARG1;
static int zap_ok(struct obj *) NO_NNARGS; staticfn int zap_ok(struct obj *) NO_NNARGS;
/* all callers of boxlock_invent() pass a NONNULL obj, and boxlock /* all callers of boxlock_invent() pass a NONNULL obj, and boxlock
* boxlock_invent() calls boxlock() which has nonnull arg. */ * boxlock_invent() calls boxlock() which has nonnull arg. */
static void boxlock_invent(struct obj *) NONNULLARG1; staticfn void boxlock_invent(struct obj *) NONNULLARG1;
static int spell_hit_bonus(int); staticfn int spell_hit_bonus(int);
static int maybe_destroy_item(struct monst *, struct obj *, int) NONNULLPTRS; staticfn int maybe_destroy_item(struct monst *, struct obj *, int) NONNULLPTRS;
static boolean destroyable(struct obj *, int); staticfn boolean destroyable(struct obj *, int);
static void wishcmdassist(int); staticfn void wishcmdassist(int);
#define ZT_MAGIC_MISSILE (AD_MAGM - 1) #define ZT_MAGIC_MISSILE (AD_MAGM - 1)
#define ZT_FIRE (AD_FIRE - 1) #define ZT_FIRE (AD_FIRE - 1)
@@ -83,7 +83,7 @@ static const char *const flash_types[] = {
}; };
/* convert monster zap/spell/breath value to hero zap/spell/breath value */ /* convert monster zap/spell/breath value to hero zap/spell/breath value */
static int staticfn int
zaptype(int type) zaptype(int type)
{ {
if (type <= -30 && -39 <= type) /* monster wand zap */ if (type <= -30 && -39 <= type) /* monster wand zap */
@@ -563,7 +563,7 @@ release_hold(void)
} }
} }
static void staticfn void
probe_objchain(struct obj *otmp) probe_objchain(struct obj *otmp)
{ {
for (; otmp; otmp = otmp->nobj) { for (; otmp; otmp = otmp->nobj) {
@@ -814,7 +814,7 @@ get_container_location(
} }
/* can zombie dig the location at x,y */ /* can zombie dig the location at x,y */
static boolean staticfn boolean
zombie_can_dig(coordxy x, coordxy y) zombie_can_dig(coordxy x, coordxy y)
{ {
if (isok(x, y)) { if (isok(x, y)) {
@@ -1093,7 +1093,7 @@ revive(struct obj *corpse, boolean by_hero)
return mtmp; return mtmp;
} }
static void staticfn void
revive_egg(struct obj *obj) /* nonnull */ revive_egg(struct obj *obj) /* nonnull */
{ {
/* /*
@@ -1437,7 +1437,7 @@ obj_shudders(struct obj *obj)
* there's a random factor here to keep from always using the stuff * there's a random factor here to keep from always using the stuff
* at the top of the pile. * at the top of the pile.
*/ */
static void staticfn void
polyuse(struct obj *objhdr, int mat, int minwt) polyuse(struct obj *objhdr, int mat, int minwt)
{ {
struct obj *otmp, *otmp2; struct obj *otmp, *otmp2;
@@ -1478,7 +1478,7 @@ polyuse(struct obj *objhdr, int mat, int minwt)
* Polymorph some of the stuff in this pile into a monster, preferably * Polymorph some of the stuff in this pile into a monster, preferably
* a golem of the kind okind. * a golem of the kind okind.
*/ */
static void staticfn void
create_polymon(struct obj *obj, int okind) create_polymon(struct obj *obj, int okind)
{ {
struct permonst *mdat = (struct permonst *) 0; struct permonst *mdat = (struct permonst *) 0;
@@ -1620,7 +1620,7 @@ obj_unpolyable(struct obj *obj)
/* classes of items whose current charge count carries over across polymorph /* classes of items whose current charge count carries over across polymorph
*/ */
static const char charged_objs[] = { WAND_CLASS, WEAPON_CLASS, ARMOR_CLASS, staticfn const char charged_objs[] = { WAND_CLASS, WEAPON_CLASS, ARMOR_CLASS,
'\0' }; '\0' };
/* /*
@@ -1916,7 +1916,7 @@ poly_obj(struct obj *obj, int id)
} }
/* stone-to-flesh spell hits and maybe transforms or animates obj */ /* stone-to-flesh spell hits and maybe transforms or animates obj */
static int staticfn int
stone_to_flesh_obj(struct obj *obj) /* nonnull */ stone_to_flesh_obj(struct obj *obj) /* nonnull */
{ {
struct permonst *ptr; struct permonst *ptr;
@@ -2499,7 +2499,7 @@ zapnodir(struct obj *obj)
} }
} }
static void staticfn void
backfire(struct obj *otmp) backfire(struct obj *otmp)
{ {
int dmg; int dmg;
@@ -2512,7 +2512,7 @@ backfire(struct obj *otmp)
} }
/* getobj callback for object to zap */ /* getobj callback for object to zap */
static int staticfn int
zap_ok(struct obj *obj) zap_ok(struct obj *obj)
{ {
if (obj && obj->oclass == WAND_CLASS) if (obj && obj->oclass == WAND_CLASS)
@@ -2581,7 +2581,7 @@ dozap(void)
} }
/* Lock or unlock all boxes in inventory */ /* Lock or unlock all boxes in inventory */
static void staticfn void
boxlock_invent(struct obj *obj) boxlock_invent(struct obj *obj)
{ {
struct obj *otmp; struct obj *otmp;
@@ -2968,7 +2968,7 @@ flashburn(long duration)
* Return TRUE if the steed was hit by the wand. * Return TRUE if the steed was hit by the wand.
* Return FALSE if the steed was not hit by the wand. * Return FALSE if the steed was not hit by the wand.
*/ */
static boolean staticfn boolean
zap_steed(struct obj *obj) /* wand or spell */ zap_steed(struct obj *obj) /* wand or spell */
{ {
int steedhit = FALSE; int steedhit = FALSE;
@@ -3100,7 +3100,7 @@ cancel_monst(struct monst *mdef, struct obj *obj, boolean youattack,
} }
/* you've zapped an immediate type wand up or down */ /* you've zapped an immediate type wand up or down */
static boolean staticfn boolean
zap_updown(struct obj *obj) /* wand or spell, nonnull */ zap_updown(struct obj *obj) /* wand or spell, nonnull */
{ {
boolean striking = FALSE, disclose = FALSE, map_zapped = FALSE; boolean striking = FALSE, disclose = FALSE, map_zapped = FALSE;
@@ -3389,7 +3389,7 @@ spell_damage_bonus(
* Generate the to hit bonus for a spell. Based on the hero's skill in * Generate the to hit bonus for a spell. Based on the hero's skill in
* spell class and dexterity. * spell class and dexterity.
*/ */
static int staticfn int
spell_hit_bonus(int skill) spell_hit_bonus(int skill)
{ {
int hit_bon = 0; int hit_bon = 0;
@@ -3461,7 +3461,7 @@ miss(const char *str, struct monst *mtmp)
&& flags.verbose) ? mon_nam(mtmp) : "it"); && flags.verbose) ? mon_nam(mtmp) : "it");
} }
static void staticfn void
skiprange(int range, int *skipstart, int *skipend) skiprange(int range, int *skipstart, int *skipend)
{ {
int tr = (range / 4); int tr = (range / 4);
@@ -3476,7 +3476,7 @@ skiprange(int range, int *skipstart, int *skipend)
/* Maybe explode a trap hit by object otmp's effect; /* Maybe explode a trap hit by object otmp's effect;
cancellation beam hitting a magical trap causes an explosion. cancellation beam hitting a magical trap causes an explosion.
Might delete the trap; won't destroy otmp. */ Might delete the trap; won't destroy otmp. */
static void staticfn void
maybe_explode_trap( maybe_explode_trap(
struct trap *ttmp, struct trap *ttmp,
struct obj *otmp, struct obj *otmp,
@@ -3510,7 +3510,7 @@ maybe_explode_trap(
/* zap_map() occurs before hitting monsters or objects and handles wands or /* zap_map() occurs before hitting monsters or objects and handles wands or
spells that don't dish out 'elemental' damage */ spells that don't dish out 'elemental' damage */
static void staticfn void
zap_map( zap_map(
coordxy x, coordxy y, coordxy x, coordxy y,
struct obj *obj) /* zapped wand, or book for cast spell */ struct obj *obj) /* zapped wand, or book for cast spell */
@@ -4253,7 +4253,7 @@ zhitm(
return tmp; return tmp;
} }
static void staticfn void
zhitu( zhitu(
int type, int nd, int type, int nd,
const char *fltxt, const char *fltxt,
@@ -4512,7 +4512,7 @@ burn_floor_objects(
} }
/* will zap/spell/breath attack score a hit against armor class `ac'? */ /* will zap/spell/breath attack score a hit against armor class `ac'? */
static int staticfn int
zap_hit(int ac, zap_hit(int ac,
int type) /* either hero cast spell type or 0 */ int type) /* either hero cast spell type or 0 */
{ {
@@ -4529,7 +4529,7 @@ zap_hit(int ac,
return (3 - chance < ac + spell_bonus); return (3 - chance < ac + spell_bonus);
} }
static void staticfn void
disintegrate_mon( disintegrate_mon(
struct monst *mon, struct monst *mon,
int type, /* hero vs other */ int type, /* hero vs other */
@@ -5427,7 +5427,7 @@ break_statue(struct obj *obj)
* Note that things like the Book of the Dead are eligible even though they * Note that things like the Book of the Dead are eligible even though they
* won't get destroyed, because it will attempt to be destroyed but print a * won't get destroyed, because it will attempt to be destroyed but print a
* special message instead. */ * special message instead. */
static boolean staticfn boolean
destroyable(struct obj *obj, int adtyp) destroyable(struct obj *obj, int adtyp)
{ {
if (obj->oartifact) { if (obj->oartifact) {
@@ -5468,7 +5468,7 @@ destroyable(struct obj *obj, int adtyp)
} }
/* convert attack damage AD_foo to property resistance */ /* convert attack damage AD_foo to property resistance */
static int staticfn int
adtyp_to_prop(int dmgtyp) adtyp_to_prop(int dmgtyp)
{ {
switch (dmgtyp) { switch (dmgtyp) {
@@ -5607,7 +5607,7 @@ const char *const destroy_strings[][3] = {
whether it's the player or a monster having an item destroyed: players lose whether it's the player or a monster having an item destroyed: players lose
the HP and possibly die in this function, and the return value is unused, the HP and possibly die in this function, and the return value is unused,
whereas monsters return the damage to their caller to be taken off later */ whereas monsters return the damage to their caller to be taken off later */
static int staticfn int
maybe_destroy_item( maybe_destroy_item(
struct monst *carrier, struct monst *carrier,
struct obj *obj, struct obj *obj,
@@ -5971,7 +5971,7 @@ resist(struct monst *mtmp, char oclass, int damage, int tell)
DISABLE_WARNING_FORMAT_NONLITERAL DISABLE_WARNING_FORMAT_NONLITERAL
static void staticfn void
wishcmdassist(int triesleft) wishcmdassist(int triesleft)
{ {
static NEARDATA const char * static NEARDATA const char *