arogue7, xrogue: improve the handling of the arguments to fuses.
fuse() now expects a pointer as the argument to a fuse function. If this is one of the functions that takes int, fuse() follows the pointer and stores that value in the f_list slot, in the integer field of the argument union. When the fuse goes off, do_fuses() recognizes the function and passes it the integer field instead of the pointer. This has the disadvantage of hard-coding the functions that require int in daemon.c, but since the int is copied into f_list, it no longer has to be in static or global memory, which simplifies several files.
This commit is contained in:
parent
dafa5cc722
commit
758c6b1bf0
21 changed files with 147 additions and 124 deletions
|
|
@ -95,7 +95,7 @@ find_slot(void (*func)())
|
|||
* Start a daemon, takes a function.
|
||||
*/
|
||||
void
|
||||
start_daemon(void (*func)(), int arg, int type)
|
||||
start_daemon(void (*func)(), void *arg, int type)
|
||||
{
|
||||
reg struct delayed_action *dev;
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ start_daemon(void (*func)(), int arg, int type)
|
|||
if (dev != NULL) {
|
||||
dev->d_type = type;
|
||||
dev->d_func = func;
|
||||
dev->d_.arg = arg;
|
||||
dev->d_.varg = arg;
|
||||
dev->d_time = DAEMON;
|
||||
demoncnt += 1; /* update count */
|
||||
}
|
||||
|
|
@ -154,7 +154,7 @@ do_daemons(int flag)
|
|||
* Executing each one, giving it the proper arguments
|
||||
*/
|
||||
if (dev->d_type == flag && dev->d_time == DAEMON)
|
||||
(*dev->d_func)(dev->d_.arg);
|
||||
(*dev->d_func)(dev->d_.varg);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -163,7 +163,7 @@ do_daemons(int flag)
|
|||
* Start a fuse to go off in a certain number of turns
|
||||
*/
|
||||
void
|
||||
fuse(void (*func)(), int arg, int time, int type)
|
||||
fuse(void (*func)(), void *arg, int time, int type)
|
||||
{
|
||||
reg struct delayed_action *wire;
|
||||
|
||||
|
|
@ -171,7 +171,10 @@ fuse(void (*func)(), int arg, int time, int type)
|
|||
if (wire != NULL) {
|
||||
wire->d_type = type;
|
||||
wire->d_func = func;
|
||||
wire->d_.arg = arg;
|
||||
if (func == changeclass || func == res_strength)
|
||||
wire->d_.arg = *(int *) arg;
|
||||
else
|
||||
wire->d_.varg = arg;
|
||||
wire->d_time = time;
|
||||
fusecnt += 1; /* update count */
|
||||
}
|
||||
|
|
@ -232,8 +235,10 @@ do_fuses(int flag)
|
|||
if(flag == wire->d_type && wire->d_time > 0 &&
|
||||
--wire->d_time == 0) {
|
||||
wire->d_type = EMPTY;
|
||||
if (wire->d_func != NULL)
|
||||
if (wire->d_func == changeclass || wire->d_func == res_strength)
|
||||
(*wire->d_func)(wire->d_.arg);
|
||||
else if (wire->d_func != NULL)
|
||||
(*wire->d_func)(wire->d_.varg);
|
||||
fusecnt -= 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ doctor(struct thing *tp)
|
|||
void
|
||||
swander(void)
|
||||
{
|
||||
start_daemon(rollwand, 0, BEFORE);
|
||||
start_daemon(rollwand, NULL, BEFORE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -134,7 +134,7 @@ rollwand(void)
|
|||
if (levtype != POSTLEV)
|
||||
wanderer();
|
||||
kill_daemon(rollwand);
|
||||
fuse(swander, 0, WANDERTIME, BEFORE);
|
||||
fuse(swander, NULL, WANDERTIME, BEFORE);
|
||||
}
|
||||
between = 0;
|
||||
}
|
||||
|
|
@ -663,7 +663,7 @@ spell_recovery(void)
|
|||
time = SPELLTIME - max(17-pstats.s_intel, 0);
|
||||
time = max(time, 5);
|
||||
if (spell_power > 0) spell_power--;
|
||||
fuse(spell_recovery, 0, time, AFTER);
|
||||
fuse(spell_recovery, NULL, time, AFTER);
|
||||
}
|
||||
/*
|
||||
* give the hero back some prayer points
|
||||
|
|
@ -676,7 +676,7 @@ prayer_recovery(void)
|
|||
time = SPELLTIME - max(17-pstats.s_wisdom, 0);
|
||||
time = max(time, 5);
|
||||
if (pray_time > 0) pray_time--;
|
||||
fuse(prayer_recovery, 0, time, AFTER);
|
||||
fuse(prayer_recovery, NULL, time, AFTER);
|
||||
}
|
||||
/*
|
||||
* give the hero back some chant points
|
||||
|
|
@ -689,5 +689,5 @@ chant_recovery(void)
|
|||
time = SPELLTIME - max(17-pstats.s_wisdom, 0);
|
||||
time = max(time, 5);
|
||||
if (chant_time > 0) chant_time--;
|
||||
fuse(chant_recovery, 0, time, AFTER);
|
||||
fuse(chant_recovery, NULL, time, AFTER);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ effect(struct thing *att, struct thing *def, struct object *weap, bool thrown,
|
|||
if (on(player, HASSTINK)) lengthen(unstink, STINKTIME);
|
||||
else {
|
||||
turn_on(player, HASSTINK);
|
||||
fuse(unstink, 0, STINKTIME, AFTER);
|
||||
fuse(unstink, NULL, STINKTIME, AFTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -308,8 +308,10 @@ effect(struct thing *att, struct thing *def, struct object *weap, bool thrown,
|
|||
msg("You cringe at %s's chilling touch.",
|
||||
prname(attname, FALSE));
|
||||
chg_str(-1);
|
||||
if (lost_str++ == 0)
|
||||
fuse(res_strength, 0, CHILLTIME, AFTER);
|
||||
if (lost_str++ == 0) {
|
||||
int fuse_arg = 0;
|
||||
fuse(res_strength, &fuse_arg, CHILLTIME, AFTER);
|
||||
}
|
||||
else lengthen(res_strength, CHILLTIME);
|
||||
}
|
||||
}
|
||||
|
|
@ -344,7 +346,7 @@ effect(struct thing *att, struct thing *def, struct object *weap, bool thrown,
|
|||
}
|
||||
else {
|
||||
turn_on(*def, HASDISEASE);
|
||||
fuse(cure_disease, 0, roll(HEALTIME,SICKTIME), AFTER);
|
||||
fuse(cure_disease, NULL, roll(HEALTIME,SICKTIME), AFTER);
|
||||
msg(terse ? "You have been diseased."
|
||||
: "You have contracted a disease!");
|
||||
}
|
||||
|
|
@ -478,7 +480,7 @@ effect(struct thing *att, struct thing *def, struct object *weap, bool thrown,
|
|||
turn_off(*att, CANDANCE);
|
||||
turn_on(*def, ISDANCE);
|
||||
msg("You begin to dance uncontrollably!");
|
||||
fuse(undance, 0, roll(2,4), AFTER);
|
||||
fuse(undance, NULL, roll(2,4), AFTER);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -491,7 +493,7 @@ effect(struct thing *att, struct thing *def, struct object *weap, bool thrown,
|
|||
(find_slot(suffocate) == 0)) {
|
||||
turn_on(*att, DIDSUFFOCATE);
|
||||
msg("%s is beginning to suffocate you.", prname(attname, TRUE));
|
||||
fuse(suffocate, 0, roll(9,3), AFTER);
|
||||
fuse(suffocate, NULL, roll(9,3), AFTER);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -530,11 +532,11 @@ effect(struct thing *att, struct thing *def, struct object *weap, bool thrown,
|
|||
msg("You smell an unpleasant odor.");
|
||||
else {
|
||||
int odor_str = -(rnd(6)+1);
|
||||
|
||||
int fuse_arg2 = 0;
|
||||
msg("You are overcome by a foul odor.");
|
||||
if (lost_str == 0) {
|
||||
chg_str(odor_str);
|
||||
fuse(res_strength, 0, SMELLTIME, AFTER);
|
||||
fuse(res_strength, &fuse_arg2, SMELLTIME, AFTER);
|
||||
lost_str -= odor_str;
|
||||
}
|
||||
else lengthen(res_strength, SMELLTIME);
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ wghtchk(void)
|
|||
ch = CCHAR( mvwinch(stdscr, hero.y, hero.x) );
|
||||
if((ch != FLOOR && ch != PASSAGE)) {
|
||||
extinguish(wghtchk);
|
||||
fuse(wghtchk,TRUE,1,AFTER);
|
||||
fuse(wghtchk, NULL, 1, AFTER);
|
||||
inwhgt = FALSE;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -538,7 +538,7 @@ roll_em(struct thing *att_er, struct thing *def_er, struct object *weap,
|
|||
if (find_slot(unconfuse))
|
||||
lengthen(unconfuse, HUHDURATION);
|
||||
else
|
||||
fuse(unconfuse, 0, HUHDURATION, AFTER);
|
||||
fuse(unconfuse, NULL, HUHDURATION, AFTER);
|
||||
turn_on(player, ISHUH);
|
||||
}
|
||||
else msg("You feel dizzy, but it quickly passes.");
|
||||
|
|
|
|||
|
|
@ -393,18 +393,18 @@ main(int argc, char *argv[], char *envp[])
|
|||
* Start up daemons and fuses
|
||||
*/
|
||||
start_daemon(doctor, &player, AFTER);
|
||||
fuse(swander, 0, WANDERTIME, AFTER);
|
||||
fuse(swander, NULL, WANDERTIME, AFTER);
|
||||
if (player.t_ctype == C_MAGICIAN || player.t_ctype == C_RANGER)
|
||||
fuse(spell_recovery, 0, SPELLTIME, AFTER);
|
||||
fuse(spell_recovery, NULL, SPELLTIME, AFTER);
|
||||
if (player.t_ctype == C_DRUID || player.t_ctype == C_RANGER)
|
||||
fuse(chant_recovery, 0, SPELLTIME, AFTER);
|
||||
fuse(chant_recovery, NULL, SPELLTIME, AFTER);
|
||||
if (player.t_ctype == C_CLERIC || player.t_ctype == C_PALADIN)
|
||||
fuse(prayer_recovery, 0, SPELLTIME, AFTER);
|
||||
start_daemon(stomach, 0, AFTER);
|
||||
fuse(prayer_recovery, NULL, SPELLTIME, AFTER);
|
||||
start_daemon(stomach, NULL, AFTER);
|
||||
if (player.t_ctype == C_THIEF ||
|
||||
player.t_ctype == C_ASSASIN ||
|
||||
player.t_ctype == C_MONK)
|
||||
start_daemon(trap_look, 0, AFTER);
|
||||
start_daemon(trap_look, NULL, AFTER);
|
||||
|
||||
/* Does this character have any special knowledge? */
|
||||
switch (player.t_ctype) {
|
||||
|
|
|
|||
|
|
@ -81,11 +81,11 @@ changeclass(int newclass)
|
|||
* if he becomes a spell caster of some kind, give him a fuse
|
||||
*/
|
||||
if (newclass == C_MAGICIAN || newclass == C_RANGER)
|
||||
fuse(spell_recovery, 0, SPELLTIME, AFTER);
|
||||
fuse(spell_recovery, NULL, SPELLTIME, AFTER);
|
||||
if (newclass == C_DRUID || newclass == C_RANGER)
|
||||
fuse(chant_recovery, 0, SPELLTIME, AFTER);
|
||||
fuse(chant_recovery, NULL, SPELLTIME, AFTER);
|
||||
if ((newclass==C_CLERIC || newclass==C_PALADIN) && !cur_misc[HEIL_ANKH])
|
||||
fuse(prayer_recovery, 0, SPELLTIME, AFTER);
|
||||
fuse(prayer_recovery, NULL, SPELLTIME, AFTER);
|
||||
/*
|
||||
* if he's changing from a fighter then may have to change
|
||||
* his sword since only fighter can use two-handed
|
||||
|
|
@ -117,7 +117,7 @@ changeclass(int newclass)
|
|||
* if he becomes a thief then add the trap_look() daemon
|
||||
*/
|
||||
if (newclass == C_THIEF || newclass == C_ASSASIN || newclass == C_MONK)
|
||||
start_daemon(trap_look, 0, AFTER);
|
||||
start_daemon(trap_look, NULL, AFTER);
|
||||
char_type = player.t_ctype = newclass;
|
||||
save = pstats.s_hpt;
|
||||
max_stats.s_hpt = pstats.s_hpt = 0;
|
||||
|
|
@ -1025,7 +1025,7 @@ use_mm(int which)
|
|||
msg("aaAAACHOOOooo. Cough. Cough. Sneeze. Sneeze.");
|
||||
if (!find_slot(dust_appear)) {
|
||||
turn_on(player, ISINVIS);
|
||||
fuse(dust_appear, 0, DUSTTIME, AFTER);
|
||||
fuse(dust_appear, NULL, DUSTTIME, AFTER);
|
||||
PLAYER = IPLAYER;
|
||||
light(&hero);
|
||||
}
|
||||
|
|
@ -1054,7 +1054,7 @@ use_mm(int which)
|
|||
if (find_slot(unchoke))
|
||||
lengthen(unchoke, DUSTTIME);
|
||||
else
|
||||
fuse(unchoke, 0, DUSTTIME, AFTER);
|
||||
fuse(unchoke, NULL, DUSTTIME, AFTER);
|
||||
turn_on(player, ISHUH);
|
||||
turn_on(player, ISBLIND);
|
||||
light(&hero);
|
||||
|
|
|
|||
|
|
@ -649,7 +649,7 @@ wake_monster(int y, int x)
|
|||
if (find_slot(unconfuse))
|
||||
lengthen(unconfuse, HUHDURATION);
|
||||
else {
|
||||
fuse(unconfuse, 0, HUHDURATION, AFTER);
|
||||
fuse(unconfuse, NULL, HUHDURATION, AFTER);
|
||||
msg("%s's gaze has confused you.",prname(mname, TRUE));
|
||||
turn_on(player, ISHUH);
|
||||
}
|
||||
|
|
@ -691,7 +691,7 @@ wake_monster(int y, int x)
|
|||
if (!save(VS_WAND, &player, 0)) {
|
||||
msg("The gaze of %s blinds you", prname(mname, FALSE));
|
||||
turn_on(player, ISBLIND);
|
||||
fuse(sight, 0, rnd(30)+20, AFTER);
|
||||
fuse(sight, NULL, rnd(30)+20, AFTER);
|
||||
light(&hero);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -249,12 +249,13 @@ picked_up:
|
|||
|
||||
/* Relics can do strange things when you pick them up */
|
||||
if (obj->o_type == RELIC) {
|
||||
int newclass;
|
||||
switch (obj->o_which) {
|
||||
/* the ankh of Heil gives you prayers */
|
||||
case HEIL_ANKH:
|
||||
msg("The ankh welds itself into your hand.");
|
||||
if (player.t_ctype != C_CLERIC && player.t_ctype != C_PALADIN)
|
||||
fuse(prayer_recovery, 0, SPELLTIME, AFTER);
|
||||
fuse(prayer_recovery, NULL, SPELLTIME, AFTER);
|
||||
|
||||
/* A cloak must be worn. */
|
||||
when EMORI_CLOAK:
|
||||
|
|
@ -306,7 +307,7 @@ picked_up:
|
|||
msg("The excrutiating pain slowly turns into a dull throb.");
|
||||
|
||||
when QUILL_NAGROM:
|
||||
fuse(quill_charge,0,player.t_ctype==C_MAGICIAN ? 4 : 8,AFTER);
|
||||
fuse(quill_charge,NULL,player.t_ctype==C_MAGICIAN ? 4 : 8,AFTER);
|
||||
|
||||
/* Weapons will insist on being wielded. */
|
||||
when MUSTY_DAGGER:
|
||||
|
|
@ -316,7 +317,8 @@ picked_up:
|
|||
/* For the daggers start a fuse to change player to a thief. */
|
||||
/* and set a daemon to eat gold. */
|
||||
if (obj->o_which == MUSTY_DAGGER) {
|
||||
fuse(changeclass, C_THIEF, roll(20, 20), AFTER);
|
||||
newclass = C_THIEF;
|
||||
fuse(changeclass, &newclass, roll(20, 20), AFTER);
|
||||
if (purse > 0)
|
||||
msg("Your purse feels lighter");
|
||||
else
|
||||
|
|
@ -326,7 +328,8 @@ picked_up:
|
|||
}
|
||||
/* For the axe start a fuse to change player to a fighter. */
|
||||
if (obj->o_which == AXE_AKLAD)
|
||||
fuse(changeclass, C_FIGHTER, roll(20, 20), AFTER);
|
||||
newclass = C_FIGHTER;
|
||||
fuse(changeclass, &newclass, roll(20, 20), AFTER);
|
||||
if (cur_weapon != NULL) {
|
||||
msg("The artifact insists you release your current weapon.");
|
||||
if (!dropcheck(cur_weapon)) {
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ add_haste(bool blessed)
|
|||
else {
|
||||
msg("You feel yourself moving %sfaster.", blessed ? "much " : "");
|
||||
turn_on(player, ISHASTE);
|
||||
fuse(nohaste, 0, roll(hasttime, hasttime), AFTER);
|
||||
fuse(nohaste, NULL, roll(hasttime, hasttime), AFTER);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -206,7 +206,7 @@ add_slow(void)
|
|||
lengthen(noslow, roll(HASTETIME,HASTETIME));
|
||||
else {
|
||||
turn_on(player, ISSLOW);
|
||||
fuse(noslow, 0, roll(HASTETIME,HASTETIME), AFTER);
|
||||
fuse(noslow, NULL, roll(HASTETIME,HASTETIME), AFTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -324,7 +324,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
}
|
||||
else { /* Just light a fuse for how long player is safe */
|
||||
if (off(player, ISCLEAR)) {
|
||||
fuse(unclrhead, 0, CLRDURATION, AFTER);
|
||||
fuse(unclrhead, NULL, CLRDURATION, AFTER);
|
||||
msg("A faint blue aura surrounds your head.");
|
||||
}
|
||||
else { /* If we have a fuse lengthen it, else we
|
||||
|
|
@ -491,7 +491,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
{
|
||||
msg("A cloak of darkness falls around you.");
|
||||
turn_on(player, ISBLIND);
|
||||
fuse(sight, 0, SEEDURATION, AFTER);
|
||||
fuse(sight, NULL, SEEDURATION, AFTER);
|
||||
light(&hero);
|
||||
}
|
||||
else
|
||||
|
|
@ -501,7 +501,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
if (off(player, CANSEE)) {
|
||||
turn_on(player, CANSEE);
|
||||
msg("Your eyes begin to tingle.");
|
||||
fuse(unsee, 0, blessed ? SEEDURATION*3 :SEEDURATION, AFTER);
|
||||
fuse(unsee, NULL, blessed ? SEEDURATION*3 :SEEDURATION, AFTER);
|
||||
light(&hero);
|
||||
}
|
||||
else if (find_slot(unsee) != 0)
|
||||
|
|
@ -523,7 +523,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
if (on(player, CANINWALL))
|
||||
lengthen(unphase, duration*PHASEDURATION);
|
||||
else {
|
||||
fuse(unphase, 0, duration*PHASEDURATION, AFTER);
|
||||
fuse(unphase, NULL, duration*PHASEDURATION, AFTER);
|
||||
turn_on(player, CANINWALL);
|
||||
}
|
||||
msg("You feel %slight-headed!",
|
||||
|
|
@ -547,7 +547,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
}
|
||||
}
|
||||
else {
|
||||
fuse(land, 0, duration*FLYTIME, AFTER);
|
||||
fuse(land, NULL, duration*FLYTIME, AFTER);
|
||||
turn_on(player, ISFLY);
|
||||
}
|
||||
if (say_message) {
|
||||
|
|
@ -610,7 +610,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
if (off(player, ISINVIS)) {
|
||||
turn_on(player, ISINVIS);
|
||||
msg("You have a tingling feeling all over your body");
|
||||
fuse(appear, 0, blessed ? GONETIME*3 : GONETIME, AFTER);
|
||||
fuse(appear, NULL, blessed ? GONETIME*3 : GONETIME, AFTER);
|
||||
PLAYER = IPLAYER;
|
||||
light(&hero);
|
||||
}
|
||||
|
|
@ -675,7 +675,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
if (!find_slot(unskill)) { /* No skill */
|
||||
pstats.s_lvladj = -2;
|
||||
pstats.s_lvl += pstats.s_lvladj;
|
||||
fuse(unskill, 0, SKILLDURATION, AFTER);
|
||||
fuse(unskill, NULL, SKILLDURATION, AFTER);
|
||||
}
|
||||
else { /* Has an artifical skill */
|
||||
/* Is the skill beneficial? */
|
||||
|
|
@ -714,7 +714,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
if (!find_slot(unskill)) {
|
||||
pstats.s_lvladj = adjust;
|
||||
pstats.s_lvl += pstats.s_lvladj;
|
||||
fuse(unskill, 0,
|
||||
fuse(unskill, NULL,
|
||||
blessed ? SKILLDURATION*2 : SKILLDURATION, AFTER);
|
||||
}
|
||||
else { /* Has an artifical skill */
|
||||
|
|
@ -763,7 +763,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
}
|
||||
}
|
||||
else {
|
||||
fuse(nofire, 0, duration*FIRETIME, AFTER);
|
||||
fuse(nofire, NULL, duration*FIRETIME, AFTER);
|
||||
turn_on(player, NOFIRE);
|
||||
}
|
||||
if (say_message) {
|
||||
|
|
@ -789,7 +789,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
}
|
||||
}
|
||||
else {
|
||||
fuse(nocold, 0, duration*COLDTIME, AFTER);
|
||||
fuse(nocold, NULL, duration*COLDTIME, AFTER);
|
||||
turn_on(player, NOCOLD);
|
||||
}
|
||||
if (say_message) {
|
||||
|
|
@ -811,7 +811,7 @@ quaff(int which, int kind, int flags, bool is_potion)
|
|||
lengthen(nobolt, duration*BOLTTIME);
|
||||
}
|
||||
else {
|
||||
fuse(nobolt, 0, duration*BOLTTIME, AFTER);
|
||||
fuse(nobolt, NULL, duration*BOLTTIME, AFTER);
|
||||
turn_on(player, NOBOLT);
|
||||
}
|
||||
if (say_message)
|
||||
|
|
|
|||
|
|
@ -90,9 +90,9 @@ ring_on(struct linked_list *item)
|
|||
}
|
||||
}
|
||||
when R_SEARCH:
|
||||
start_daemon(ring_search, 0, AFTER);
|
||||
start_daemon(ring_search, NULL, AFTER);
|
||||
when R_TELEPORT:
|
||||
start_daemon(ring_teleport, 0, AFTER);
|
||||
start_daemon(ring_teleport, NULL, AFTER);
|
||||
}
|
||||
status(FALSE);
|
||||
if (r_know[obj->o_which] && r_guess[obj->o_which])
|
||||
|
|
|
|||
|
|
@ -1223,7 +1223,7 @@ struct delayed_action *find_slot(void (*func)());
|
|||
int findmindex(char *name);
|
||||
void fix_stick(struct object *cur);
|
||||
void fumble(void);
|
||||
void fuse(void (*func)(), int arg, int time, int type);
|
||||
void fuse(void (*func)(), void *arg, int time, int type);
|
||||
void genmonsters(int least, bool treas);
|
||||
coord get_coordinates(void);
|
||||
bool get_dir(coord *direction);
|
||||
|
|
@ -1357,7 +1357,7 @@ bool skirmish(struct thing *attacker, coord *mp, struct object *weap,
|
|||
bool thrown);
|
||||
struct linked_list *spec_item(int type, int which, int hit, int damage);
|
||||
void spell_recovery(void);
|
||||
void start_daemon(void (*func)(), int arg, int type);
|
||||
void start_daemon(void (*func)(), void *arg, int type);
|
||||
void status(bool display);
|
||||
void steal(void);
|
||||
bool step_ok(int y, int x, int can_on_monst, struct thing *flgptr);
|
||||
|
|
|
|||
|
|
@ -590,7 +590,7 @@ do_zap(struct thing *zapper, struct object *obj, coord *direction, int which,
|
|||
turn_on(player, HASDISEASE);
|
||||
turn_on(player, HASINFEST);
|
||||
turn_on(player, DOROT);
|
||||
fuse(cure_disease, 0, roll(HEALTIME,SICKTIME), AFTER);
|
||||
fuse(cure_disease, NULL, roll(HEALTIME,SICKTIME), AFTER);
|
||||
infest_dam++;
|
||||
}
|
||||
else msg("You fell momentarily sick");
|
||||
|
|
@ -1188,7 +1188,7 @@ at_hero: if (!save(VS_BREATH, &player,
|
|||
rnd(20)+HUHDURATION);
|
||||
else {
|
||||
turn_on(player, ISHUH);
|
||||
fuse(unconfuse, 0,
|
||||
fuse(unconfuse, NULL,
|
||||
rnd(20)+HUHDURATION, AFTER);
|
||||
msg(
|
||||
"The confusion gas has confused you.");
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ confus_player(void)
|
|||
if (find_slot(unconfuse))
|
||||
lengthen(unconfuse, HUHDURATION);
|
||||
else
|
||||
fuse(unconfuse, 0, HUHDURATION, AFTER);
|
||||
fuse(unconfuse, NULL, HUHDURATION, AFTER);
|
||||
turn_on(player, ISHUH);
|
||||
}
|
||||
else msg("You feel dizzy for a moment, but it quickly passes.");
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ wear(void)
|
|||
msg("Wearing %s", inv_name(obj,TRUE));
|
||||
cur_misc[WEAR_GAUNTLET] = obj;
|
||||
if (obj->o_which == MM_FUMBLE)
|
||||
start_daemon(fumble, 0, AFTER);
|
||||
start_daemon(fumble, NULL, AFTER);
|
||||
/*
|
||||
* the jewel of attacks does an aggavate monster
|
||||
*/
|
||||
|
|
@ -351,7 +351,7 @@ wear(void)
|
|||
msg("Wearing %s",inv_name(obj,TRUE));
|
||||
cur_misc[WEAR_NECKLACE] = obj;
|
||||
msg("The necklace is beginning to strangle you!");
|
||||
start_daemon(strangle, 0, AFTER);
|
||||
start_daemon(strangle, NULL, AFTER);
|
||||
otherwise:
|
||||
msg("What a strange item you have!");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue