Mercurial > hg > early-roguelike
comparison xrogue/effects.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 | 7c1cb43f346e |
children |
comparison
equal
deleted
inserted
replaced
237:2236ef808bcb | 238:e1cd27c5464f |
---|---|
321 if (on(*att, CANCHILL)) { | 321 if (on(*att, CANCHILL)) { |
322 if (!ISWEARING(R_SUSABILITY) && !save(VS_POISON, def, 0)) { | 322 if (!ISWEARING(R_SUSABILITY) && !save(VS_POISON, def, 0)) { |
323 msg("You cringe at %s's chilling touch.", | 323 msg("You cringe at %s's chilling touch.", |
324 prname(attname, FALSE)); | 324 prname(attname, FALSE)); |
325 chg_str(-1); | 325 chg_str(-1); |
326 if (lost_str++ == 0) | 326 if (lost_str++ == 0) { |
327 fuse(res_strength, NULL, CHILLTIME, AFTER); | 327 int temp_arg = 0; |
328 fuse(res_strength, &temp_arg, CHILLTIME, AFTER); | |
329 } | |
328 else lengthen(res_strength, CHILLTIME); | 330 else lengthen(res_strength, CHILLTIME); |
329 } | 331 } |
330 } | 332 } |
331 | 333 |
332 /* | 334 /* |
546 msg("You smell an unpleasant odor. Phew!"); | 548 msg("You smell an unpleasant odor. Phew!"); |
547 } | 549 } |
548 | 550 |
549 else { | 551 else { |
550 int odor_str = -(rnd(6)+1); | 552 int odor_str = -(rnd(6)+1); |
553 int temp_arg2 = 0; | |
551 | 554 |
552 msg("You are overcome by a foul odor!"); | 555 msg("You are overcome by a foul odor!"); |
553 if (lost_str == 0) { | 556 if (lost_str == 0) { |
554 chg_str(odor_str); | 557 chg_str(odor_str); |
555 fuse(res_strength, NULL, SMELLTIME, AFTER); | 558 fuse(res_strength, &temp_arg2, SMELLTIME, AFTER); |
556 lost_str -= odor_str; | 559 lost_str -= odor_str; |
557 } | 560 } |
558 else lengthen(res_strength, SMELLTIME); | 561 else lengthen(res_strength, SMELLTIME); |
559 } | 562 } |
560 } | 563 } |