Mercurial > hg > early-roguelike
comparison arogue7/daemons.c @ 238:e1cd27c5464f
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.
author | John "Elwin" Edwards |
---|---|
date | Fri, 11 Mar 2016 17:40:00 -0500 |
parents | f9ef86cf22b2 |
children |
comparison
equal
deleted
inserted
replaced
237:2236ef808bcb | 238:e1cd27c5464f |
---|---|
109 */ | 109 */ |
110 | 110 |
111 void | 111 void |
112 swander(void) | 112 swander(void) |
113 { | 113 { |
114 start_daemon(rollwand, 0, BEFORE); | 114 start_daemon(rollwand, NULL, BEFORE); |
115 } | 115 } |
116 | 116 |
117 /* | 117 /* |
118 * rollwand: | 118 * rollwand: |
119 * Called to roll to see if a wandering monster starts up | 119 * Called to roll to see if a wandering monster starts up |
132 ((player.t_ctype != C_THIEF && player.t_ctype != C_ASSASIN) || | 132 ((player.t_ctype != C_THIEF && player.t_ctype != C_ASSASIN) || |
133 (rnd(30) >= dex_compute()))) { | 133 (rnd(30) >= dex_compute()))) { |
134 if (levtype != POSTLEV) | 134 if (levtype != POSTLEV) |
135 wanderer(); | 135 wanderer(); |
136 kill_daemon(rollwand); | 136 kill_daemon(rollwand); |
137 fuse(swander, 0, WANDERTIME, BEFORE); | 137 fuse(swander, NULL, WANDERTIME, BEFORE); |
138 } | 138 } |
139 between = 0; | 139 between = 0; |
140 } | 140 } |
141 } | 141 } |
142 /* | 142 /* |
661 int time; | 661 int time; |
662 | 662 |
663 time = SPELLTIME - max(17-pstats.s_intel, 0); | 663 time = SPELLTIME - max(17-pstats.s_intel, 0); |
664 time = max(time, 5); | 664 time = max(time, 5); |
665 if (spell_power > 0) spell_power--; | 665 if (spell_power > 0) spell_power--; |
666 fuse(spell_recovery, 0, time, AFTER); | 666 fuse(spell_recovery, NULL, time, AFTER); |
667 } | 667 } |
668 /* | 668 /* |
669 * give the hero back some prayer points | 669 * give the hero back some prayer points |
670 */ | 670 */ |
671 void | 671 void |
674 int time; | 674 int time; |
675 | 675 |
676 time = SPELLTIME - max(17-pstats.s_wisdom, 0); | 676 time = SPELLTIME - max(17-pstats.s_wisdom, 0); |
677 time = max(time, 5); | 677 time = max(time, 5); |
678 if (pray_time > 0) pray_time--; | 678 if (pray_time > 0) pray_time--; |
679 fuse(prayer_recovery, 0, time, AFTER); | 679 fuse(prayer_recovery, NULL, time, AFTER); |
680 } | 680 } |
681 /* | 681 /* |
682 * give the hero back some chant points | 682 * give the hero back some chant points |
683 */ | 683 */ |
684 void | 684 void |
687 int time; | 687 int time; |
688 | 688 |
689 time = SPELLTIME - max(17-pstats.s_wisdom, 0); | 689 time = SPELLTIME - max(17-pstats.s_wisdom, 0); |
690 time = max(time, 5); | 690 time = max(time, 5); |
691 if (chant_time > 0) chant_time--; | 691 if (chant_time > 0) chant_time--; |
692 fuse(chant_recovery, 0, time, AFTER); | 692 fuse(chant_recovery, NULL, time, AFTER); |
693 } | 693 } |