diff --git a/addons/escoria-core/game/core-scripts/esc/commands/rand_global.gd b/addons/escoria-core/game/core-scripts/esc/commands/rand_global.gd new file mode 100644 index 00000000..14bc9555 --- /dev/null +++ b/addons/escoria-core/game/core-scripts/esc/commands/rand_global.gd @@ -0,0 +1,48 @@ +# `rand_global name max_value` +# +# Fills the "name" global with a random value between 0 and max-value-1. +# +# @ESC +extends ESCBaseCommand +class_name RandGlobalCommand + + +# Return the descriptor of the arguments of this command +func configure() -> ESCCommandArgumentDescriptor: + return ESCCommandArgumentDescriptor.new( + 2, + [TYPE_STRING, TYPE_INT], + [null, 1] + ) + + +# Validate wether the given arguments match the command descriptor +func validate(arguments: Array): + if not escoria.globals_manager.has(arguments[0]): + escoria.logger.report_errors( + "inc_global: invalid global", + [ + "Global %s does not exist." % arguments[0] + ] + ) + return false + if not escoria.globals_manager.get(arguments[0]) is int: + escoria.logger.report_errors( + "inc_global: invalid global", + [ + "Global %s didn't have an integer value." % arguments[0] + ] + ) + return false + return .validate(arguments) + + +# Run the command +func run(command_params: Array) -> int: + randomize() + var rnd = randi() % command_params[1] + escoria.globals_manager.set_global( + command_params[0], + rnd + ) + return ESCExecution.RC_OK