diff --git a/SLS_C/src/builtin.c b/SLS_C/src/builtin.c index a58b379..ddecdd4 100644 --- a/SLS_C/src/builtin.c +++ b/SLS_C/src/builtin.c @@ -1123,8 +1123,10 @@ Boolean builtin_pick(InterpreterState *interpreter_state) { } Boolean builtin_rand(InterpreterState *interpreter_state) { - (void)interpreter_state; - return FALSE; + return push_token(interpreter_state, (Token){ + .type = TOKEN_DOUBLE, + .double_literal = rand() / RAND_MAX, + }); } Boolean builtin_roll(InterpreterState *interpreter_state) { @@ -1143,8 +1145,19 @@ Boolean builtin_round(InterpreterState *interpreter_state) { } Boolean builtin_seed(InterpreterState *interpreter_state) { - (void)interpreter_state; - return FALSE; + NUMERIC_TYPE; + + if (type & NUMERIC_FLOAT) { + return FALSE; + } + + StackItem *node = interpreter_state->stack; + interpreter_state->stack = interpreter_state->stack->next; + node->next = NULL; + clean_stack(node); + + srand(ai); + return TRUE; } Boolean builtin_shl(InterpreterState *interpreter_state) {