The Adliberum Engine cover
The Adliberum Engine screenshot
Genre: Role-playing (RPG)

The Adliberum Engine

ADLENGINE 1.1.55.6 - RENDERING TEXT TO THE SCREEN

All commands work with '' and %% special commands.

SETUP:




{text-name}.new;
{text-name}.visible=1;
{text-name}.x=260;
{text-name}.y=600;
{text-name}.opacity=100;
{text-name}.width=320;
{text-name}.height=32;
{text-name}.text=some text;
{text-name}.fontcolor.r=255;
{text-name}.fontcolor.g=255;
{text-name}.fontcolor.b=255;
{text-name}.fontsize=22;


CUSTOM PARAMS



{text-name}.paramname=value;


DELETE



{text-name}.delete;


SAVE / LOAD



{text-name}.save;



{text-name}.load;



{text-name}.export;



LOCAL = RENDERED IN CURRENT ROOM.



{text-name}.local;


GLOBAL = RENDERED AS MAIN UI.



{text-name}.global;


EFFECTS



- FLASH -



{text-name}.flash;


FADE IN:



{text-name}.fadein;


FADE OUT:



{text-name}.fadeout;


FADE IN/OUT



{text-name}.fadeinout;


ADLENGINE 1.1.55.6 - RENDERING IMAGES TO THE SCREEN.

All commands work with '' and %% special commands.

SETUP:




{image-name}.new;
{image-name}.visible=1;
{image-name}.x=260;
{image-name}.y=600;
{image-name}.opacity=100;
{image-name}.width=320;
{image-name}.height=240;
{image-name}.image=imagename;


CUSTOM PARAMS



{image-name}.paramname=value;


DELETE



{image-name}.delete;


SAVE / LOAD



{image-name}.save;



{image-name}.load;



{image-name}.export;



LOCAL = RENDERED IN CURRENT ROOM.



{image-name}.local;


GLOBAL = RENDERED AS MAIN UI.



{image-name}.global;


EFFECTS



- FLASH -



{image-name}.flash;


FADE IN:



{image-name}.fadein;


FADE OUT:



{image-name}.fadeout;


FADE IN/OUT



{image-name}.fadeinout;


EVEN MORE POWER COMING NEXT TO ADLENGINE!

EACH COMMAND: (LOOPS THROUGH EACH OBJECT ETC)



each:do something
each inv / obj / char / npc / room / worn / equip /


COMMAND is: (SETS CURRENT COMMAND TO...)



command is talk to carter


INTELLISENSE is: (SETS TOOLTIP...)



intellisense is talk to carter


NEW SYSVARS


(includes new structure to avoid conflicts)

SYS[EACHINDEX]
SYS[OBJINDEX]
SYS[NPCINDEX]
SYS[CHARINDEX]
SYS[WORNINDEX]
SYS[EQUIPINDEX]
SYS[ROOMINDEX]


RENDERING TO THE SCREEN:





INTERACTION WITH SCREEN:





%SPECIALS% NOW COVER ALL DATA!



  • RANDOM / CHOSEN / PLAYER / TARGET
  • CONFIG
  • EVENTS
  • INVENTORY
  • LOCAL CUSTOM COMMANDS
  • GLOBAL CUSTOM COMMANDS
  • LOCAL SCRIPTS
  • GLOBAL SCRIPTS
  • PRIVATE SCRIPTS
  • LOCAL MAP
  • GLOBAL MAP
  • PRIVATE DATA
  • VERBOSE LOOKUP
  • VERBASE LOOKUP


ITEMS CAN BE MADE STACKABLE


ITEMS CAN BE DUPLICATE



SCRIPTS CAN NOW BE ATTACHED TO ENTITIES



SCRIPTS CAN BE CALLED:



- from an entity -

entity.script()


- or in general (easier) -

script()

1.1.55.5x UPDATE FIXES "DROP" COMMAND BUG:

Quick fix UPDATE v1.1.55.5x - fixes game breaking bug in #adlengine preventing objects from being dropped once taken!

ADLENGINE BUILD 1.1.55.5... NOW LIVE! (REPEAT, DUPLICATE OBJECTS, ASSIGN CLASSES & MORE)

NEW: REPEAT COMMAND:




repeat:narrate boo;
repeat 10;



_____________________________

NEW: SYS VARS:



SYS:CHOSEN (result from choose command)
SYS:ROLLED (result from rolled dice random comand)
SYS:LOOPINDEX (the position in the for loop command)
SYS:TARGET (from target, hit, attack and focus commands - also when assigning a class to an entity)

To use you can recall as a special lookup %SYS:TARGET%.
_____________________________

NEW: ASSIGN COMMAND


Instead of assigning classes on build, you now assign classes post build. i.e.

build map
map.obj (assigns the obj class - classes are stored as global scripts! - ignore store as .class option)


Example: BOOK CLASS.

%target% is takeable;
%target% is readable;


Then you would type:

map.book

_____________________________

SCRIPTING: USE ! TO FORCE FEEDBACK ON COMMANDS



!%target% is takeable;


This will force the engine to tell the player that the targeted object is now takeable.
_____________________________

||%SEP%||%A%||%RATE%||



You can now put special lookup commands next to each other by separating using || as above.
_____________________________

UPDATE: %SPECIAL% also looks in SESSION DATA


type showdata to see all map data to see what you have access to, for example:

?%n-is-active%=1:narrate open!narrate closed;

_____________________________

UPDATE: DUPLICATE OBJECTS


IF you build more than one of the same object it will create duplicates with a number appended to the end. i.e. map, map2, map3 etc..
_____________________________

DELETE


Now automatically detects what you are trying to delete including objects, scripts, variables and custom commands.
_____________________________

FIXES:



FIXED: store as global IF (AND)
FIXED: store as local IF (THEN)

ADLENGINE BUILD 1.1.55.4... NOW LIVE! = FOR LOOP, WHICH.. IS (SELECT CASE), ARRAYS & BUG FIXES

Lots of cool new stuff in this build.

WHICH.. IS (select case)





[how to use] first add IS statements by doing the following
isXYZ:do something

IS accepts boolean 0-1, true/false, numbers 0-9, y/n or can also accept custom naming.

e.g.

is0:room is dark
is1:room is light


or..

isneg:narrate -1
isneutral:narrate 0
ispos: narrate 1


To run a WHICH check:
which %cranelever%


FOR LOOPS





FOR loops allow you to loop a task X amount of times.

e.g.

To set a FOR LOOP:

for:do testscript


To run a FOR LOOP:

for 0-10


Example Script Content To Run:

testscript:
narrate %x%;
~x+1


Where x in my example are array entries containing simple map data 0/1s


ARRAYS



Array like data can be defined using variables. For example:


#map[0]=0
#map[1]=1
#map[2]=0

#map[0][0]=1
#map[1][0]=0
#map[2][0]=1

#map[0][0][1]=0
#map[1][0][4]=1
#map[2][0][7]=1


See complex specials below.


'COMPLEX%SPECIALS%'



Complex specials first swap out any data surrounded by %% and then surrounded by ' '

For example:


~pX=%player.x%;
~pY=%player.y%;
~pZ=%player.z%;
#'map[%pX%][%pY%][%pZ%]'=BUNKER ENTRANCE


Currently it works using temp vars as above not direct calls to player.var or target.var.

DELAY x


You can now specify a delay before the next script action processes. The delay runs until the delay value reaches 0, subtracting 1 each tick. The value can hold any number but bear in mind too high a number will result in too long a delay!

short delay:
delay 100

long delay:
delay 1000


NEW TIMER COMMANDS



START TIMER - resumes an active timer.
stop timer 0


STOP TIMER - pauses an active timer.
stop timer 10

ERASE TIMER - deletes an active timer.
erase timer 5

Timers will need to be micromanaged. The best way would be to create a variable pointer to timers you want to have control over. Timers are incremented from 0 and their data is stored in session_map_data. Type edit session to view.


#healtimer=1;
start timer %healtimer%




BUGS FIXED



TIMED EVENTS are now working again!
after x second do something
every x minutes do something

DELETE MULTIPLE CHARACTERS
Delete no longer deletes multiple characters occasionally when pressing backspace.

DELETE KEY:
no longer deletes entire code entry while text is being rendered, was most notable when adlengine was loading if you made mistakes trying to enter commands and had to delete characters.

ADLENGINE QUICK FIX v1.1.55.3c - Query Var Command (?)

Quick fix: the query variable command (?) now correctly checks against local/global & private vars, across all comparisons. i.e.

?varname=some value:do something!do something else
?varname>some number:do something!do something else
?varname
?varname~some value:do something!do something else

A tip for naming variables: base their names on their scope / function.

e.g. local
$clockhours=12

e.g. global
#timehours=12
#timemins=15
#timesecs=0

e.g. private
~phealth=100

ADLENGINE v1.1.55.3b NOW LIVE - LETS GET DYNAMIC!

Another big update bringing some cool new functionality to #ADLENGINE that increases both the control you have over the engine and the environments you are creating.

-----------------------------

NEW %SPECIALS%:


-----------------------------

%specials% can be placed in any command or as part of any data and provide a means to LOOKUP data, when processed the engine checks against, vars, map data and more to return the current value of the special.

e.g.

[code[room description is You are standing in a cellar, a grill lies %grillstatus%

When the room description is rendered %grillstatus% will be swapped with a value you have set up in a variable for example as per below. This happens as it happens.

$grillstatus=open
grill.if opened $grillstatus=open
grill.if closed $grillstatus=closed
------------------------------------------------------------

NEW: Dynamic room name and description: allows you to add %specials% which are processed at rendering, reflecting changes as they happen.

NEW: adlengine will try to load images / sounds from a new game folder in users/username/adlengine/gamename - scripts will follow in a future update.

-------------------------

NEW VARIABLES:



To declare a local variable (accessed only in the same room):
$varname=something

To declare a global variable (accessed anywhere in the map):
#varname=something

To declare a private variable (useful for storing things to do with the player):
~varname=something


VARS against VARS
Vars can now be used to manipulate (divide,times,minus,plus,equals and append) each other in any combination; As follows:
$varname-anothervar

---------------------------

----------------------------------------------------------

NEW CUSTOMISE THEME COMMANDS:


----------------------------------------------------------

Currently You Have Access To The Following!
Text Exposed:

  • {text-main}
  • {text-loc}
  • {text-chat}
  • {text-debug}
  • {text-input}
  • {text-inputmarker}


Images Exposed:

  • {image-main}
  • {image-title}
  • {image-splash}
  • {image-inputbg}
  • {


Text Properties:
<*>.x
<*>.y
<*>.font
<*>.fontsize
<*>.fontcolor.r
<*>.fontcolor.g
<*>.fontcolor.b
<*>.visible

Image Properties:

  • .x
  • .y
  • .width
  • .height
  • .image
  • .opacity
  • .visible


To edit a theme element you would do the following:
{text-main}.fontsize=32

You can also create your own elements by:
{text-name}.new
{image-name}.new

To delete a theme element:
{text-name}.delete

To show / hide a theme element:
{text-name}.visible=1
{text-name}.visible=0
---------------------------------------------

-----------------------

SOUND ENGINE:


-----------------------
You can now LOOP / STOP SOUNDS.

To loop a sound:
loop sound soundname

To stop a sound:
stop sound soundname
------------------------------------------------

UPDATE: about VARS

After much testing, I determined using letters was not a good replacement for symbols so the new symbols coming in the next update for vars are:

$ = local variable

i.e.
$grillstatus=open

# = global variable
#orchealth=100

~ = private variable
~phealth=100

You will use these symbols to manipulate also.

Coming Soon: Dynamic Room Name and Description.



First set creative mode.
creative

Next lets build an exit down.
build exit d

Now lets make the grill an exit.
build grill.exit

... and have it control the exit down.
grill.controls n

Let's make our description dynamic reflecting the changes to the grill as it happens.
room description is Before you towers a solid gate of steel, beneath and to the side a grill lies %grillstatus%

We need to make grillstatus a variable. Let's make it a local.
lgrillstatus=closed

We also need to update our status variable.

grill.if opened lgrillstatus=open
grill.if closed lgrillstatus=closed


Now when you open / close the grill it will be reflected in the description as the special commands for the room name & description remain and only get processed when they are rendered.

This will also be live in the next update... coming shortly!