I'm not sure there's a much better way to do this. To my knowledge, Osiris can only produce random values through modulo of a random number; therefore the min value is always going to be zero (You could impose a minimum with a custom random query, but you've asked for simplicity). As a result, if you want to have random values with a higher min, you'll need to use object scripts, as you have done.

That being said, here's my 5 minute approach to it:

Object script:
Code
INIT

CHARACTER:__Me

INT:%DEMO_RandomEXP_Min
INT:%DEMO_RandomEXP_Max
INT:%DEMO_RandomEXP_Value

EVENTS
EVENT DEMO_AddRandomEXP
ON
OnFunction("DEMO_AddRandomEXP")
ACTIONS
//Set(%DEMO_RandomEXP_Min, <MinValueHere>)    //Probably best to set these in calling block before calling this function.
//Set(%DEMO_RandomEXP_Max, <MaxValueHere>)    //Probably best to set these in calling block before calling this function.
GetRandomBetween(%DEMO_RandomEXP_Value, %DEMO_RandomEXP_Min, %DEMO_RandomEXP_Max)
CharacterEvent(__Me, "DEMO_AddRandomEXP")


Story script:
Code
IF
StoryEventSet(_Char, "DEMO_AddRandomEXP")
AND
GetVarInteger(_Char, "DEMO_RandomEXP_Value", _Value)
THEN
PartyAddActualExperience(_Char, _Value);   //There are a few EXP granting calls, make sure you understand the differences between them, and use the one that best fits your intent.


The character could CallFunction("DEMO_AddRandomEXP") after setting the min and max values, and all would be taken care of.



Last edited by Ameranth; 24/09/17 09:49 PM.