//----------------------------------
#script=hook_example_base
//----------------------------------
// just do some random stuff here
set,var 0
set,x hello world
add,var 15
out base: var=${var}



//----------------------------------
#script=hook_example_hooker
//----------------------------------
#onload
set,counter 0
#/onload

// check if we have already added our code
if ?{ScriptHasLine,hook_example_base #tag:hook:${@myname}}
	out Hook Example: code already added, skipping.
else
	set,somevar some text
	
	// this is a custom "tag" to indicate the modification. its necessary because a 'reloaddef' on base script removes our custom content,
	// so we can check if our added lines are still there; and a reloaddef on this script would cause the lines to get added twice or more.
	appenddef,hook_example_base #tag:hook:${@myname}
	
	appenddef,hook_example_base out == this is the hooked part ==
	appenddef,hook_example_base out text copied from hooking script: ${somevar}
	appenddef,hook_example_base out x in base script: $\{x\}
	appenddef,hook_example_base out add,a 10
	appenddef,hook_example_base out var=$\{var\}
	out Hook Example: ++ code appended.
endif

// everytine this script gets executed, add the same line of code to a "new" script (its not defined if you call this first time)
appenddef,hook_example_new out line of text [${counter}]
add,counter 1



//----------------------------------
#script=hook_example_cleanup
//----------------------------------
unloaddef hook_example_new
// other possible, but wrong way: delete DEFSCRIPT::SCRIPT::hook_example_new



//-----------------------------------
// dummy for running scripts as soon as all scripts in this file are loaded
#script=dummy
#onload
hook_example_hooker
#/onload
