mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
36 lines
912 B
Plaintext
36 lines
912 B
Plaintext
/*
|
|||
|
|
Example implementation of the algorithm of the game engine setting the timer of explosives.
|
||
|
|
*/
|
||
|
|
|
||
|
|
#include "..\..\scripting_docs\headers\define_lite.h"
|
||
|
|
|
||
|
|
procedure start;
|
||
|
|
|
||
|
|
procedure start begin
|
||
|
|
if (init_hook == 0) then 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
|