History
2004
(September) Weak queues get added with the introduction of Make-X.
Enums get created. Originally called "mes" - presumably because they were a quick way to do data-driven dialogue messages. They probably weren't fully featured until later.
2005
Strong queues get added.
Region commands get added to create and manipulate instances.
The p_loaddelay
command gets added.
2006
Procs get added by a FunOrb developer. Macros are replaced with procs, #multi dialogue was translated into @multi and ~p_choice was created as an alternate method for dialogue flow.
2009
Structs get added - Ash convinced Andrew it was better than creating objects and putting data on them.
Our Implementation
Our RuneScript implementation deviates in a few ways. This is because we continued to learn history during the project's development. We want to support the original language behaviors 100%.
- We support some language features that were introduced later: local variables, procs, booleans, structs, enums, dbtables, and debugprocs. Macros are not supported currently.
- Our pointer checking supports inversions:
if (p_finduid(uid) = false) { return; }
is valid code, and code following it will have the pointer set. - We support local variable declarations at any scope. Traditionally the real game must have them at the top level.
- We split strings on the pipe
|
character to continue text on newlines if we need a manual break to match screenshots.