/* Example implementation of the algorithm of how the game engine sets the explosive timer. */ #include "..\..\scripting_docs\headers\sfall.h" #include "..\..\scripting_docs\headers\define_lite.h" // from CONDTION.H #define ROLL_CRITICAL_FAILURE (0) #define ROLL_FAILURE (1) #define ROLL_SUCCESS (2) #define ROLL_CRITICAL_SUCCESS (3) procedure start; procedure start begin if game_loaded then begin register_hook(HOOK_EXPLOSIVETIMER); end else begin variable time := get_sfall_arg, result := ROLL_CRITICAL_FAILURE; if has_trait(TRAIT_PERK, dude_obj, PERK_demolition_expert_perk) then result := ROLL_SUCCESS; else begin result := roll_vs_skill(dude_obj, SKILL_TRAPS, 0); end if (result) then begin if (result == ROLL_FAILURE) then time /= 2; else begin // success or critical success result := ROLL_SUCCESS; end end else begin // critical failure time := 0; result := ROLL_FAILURE; end set_sfall_return(time); set_sfall_return(result); // failure/success end end