After much debate with the webhosts and a little work on my part the gamesystem appears to be functioning again, please let me know if you have any difficulties!
Gamebook System Down
Unfortunately due to my Hosts moving to new Servers none of the Perl Modules I use were installed during the migration and my entire gamebook system is non-functioning.
I am currently debating whether I will spend the week or so necessary to remedy this situation as to be frank, almost nobody appears to use the system anyway.
Randomizer Bug – Possibly FIXED
Up until now I was unaware of a Bug in the Randomizer, whereby some references may have ended up self-referencing. I have now implemented a fix that seems to have worked, but please be aware of this in the eventuality you used it. Testing of the fix is still underway.
Combat Full Editor Button fixed
The Editor button that allows you to make Complex Combats easily was bugged, it is now fixed.
New ‘inv’ attribute added to tt tag.
The ‘inv’ attribute stands for ‘if not visited’ and will easily let you restrict the option to turn to a reference if it has already been visited. Please see the ABML documentation for details.
Referencing extended to Array Indeces
Individual Array indeces may now be referenced with a reference variable. Enjoy.
Currently Reading:
Caverns of the Snow Witch, I never finished this one yet. Also Harry Potter and the Chamber of Secrets, because my son is a big Potter fan and I want to know what the fuss is about.
Referencing extended to Arrays
The new variable referencing facility has been extended to arrays and even array references… I’ve tested it even on function parameters and it seems to work which is awesome… exhaustive testing has not been done ‘cos, well, nobody seems to use this site much anyway let alone code as deeply as using reference variables (check out my tiny violin), but trust me, it’s pretty impressive stuff, and highly useful.
One tiny note:
You cannot reference individual array elements, because I haven’t REALLY implemented dereferencing properly, you can only reference the whole array and index it from there, e.g.
$x=(5,4,3,2,1);
$z=\$x[0] ;
&print $z; ## expecting 5?
…wont work.
Reference the whole thing and dereference the reference as if it were an array like so:
$x=(5,4,3,2,1);
$z=\$x;
&print $$z[0];
New! Reference Variables
Highly experimental but I now have implemented rudimentary Reference Variables and Pass-By-Reference for functions in SEL. For those who are not familiar with references in programming here’s how it is useful e.g.:
$x=5;
$y=\$x; ## $y is now a reference for $x
&print $$y; ## prints 5, note the DEREFERENCING with $$
$x=10;
&print $$y; ## prints 10 since $$y is effectively what $x is
Example of passing by reference to a function:
sub testPBR(\$x){
$$x=20;
return 5;
}
$z=&testPBR(\$x);
&print $x; ## prints 20! This is because $x has been modified in function
&print $$y; ## also prints 20 since $$y is still a reference to $x
&print $z; ## prints 5, this means you can modify as many vars as you like by calling a function and still have the return variable free for use.
Function Precedence Corrected
Functions with parenthesised parameters are now assessed in correct order of precedence by the core SEL engine now. This is probably the last major update to the core SEL engine necessary to make it technically correct, though there remains numerous minor glitches and ‘features’ of the mess that I started coding 23 years ago.