Odd... Though I do remember having some sort of issue too. It's quite a while ago so the details are fuzzy at best, but I had some success when changing the output to strings. Absolutely no idea why, but it solved all my headaches at the time. Mysteries of the engine, right?



IF
TimerFinished("DCDouseBraziers")
AND
DB_DC_FTJIRandom(_Chance)
AND
Random(14, _Ran)
AND
_Ran >= _Chance
AND
IntegertoString(_Ran, _RanDisp)
THEN
NOT DB_DC_FTJIPunishment(_RanDisp);
DB_DC_FTJIPunishment(_RanDisp);
Proc_FTJI_Secret_Punishment();


(The fifth variant here as an example, since it's short)

PROC
Proc_FTJI_Secret_Punishment()
AND
DB_IsPlayer(_Player)
AND
DB_DC_FTJIPunishment("5")
AND
DB_DC_FTJI_ShroomsPuzzle(_FTJIShroom)
THEN
PlayEffect(_FTJIShroom, "RS3_FX_GP_Impacts_Arrow_PoisonCloud_01");
CreatePuddle(_FTJIShroom, "SurfacePoisonCloud", 80, 130, 60, 60, 0.5);
NOT DB_DC_FTJIPunishment("5");