The Adliberum Engine (ADLENGINE) - Lord Sharpe
Quick fix UPDATE v1.1.55.5x - fixes game breaking bug in #adlengine preventing objects from being dropped once taken!
The Adliberum Engine (ADLENGINE) - Lord Sharpe
Quick fix UPDATE v1.1.55.5x - fixes game breaking bug in #adlengine preventing objects from being dropped once taken!
The Adliberum Engine (ADLENGINE) - Lord Sharpe
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)
The Adliberum Engine (ADLENGINE) - Lord Sharpe
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)
The Adliberum Engine (ADLENGINE) - Lord Sharpe
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%
[/code]


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.
The Adliberum Engine (ADLENGINE) - Lord Sharpe
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%
[/code]


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.
The Adliberum Engine (ADLENGINE) - Lord Sharpe
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<some number:do something!do something else
?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
The Adliberum Engine (ADLENGINE) - Lord Sharpe
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<some number:do something!do something else
?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
The Adliberum Engine (ADLENGINE) - Lord Sharpe
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%[/code]

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
    ------------------------------------------------
The Adliberum Engine (ADLENGINE) - Lord Sharpe
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%[/code]

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
    ------------------------------------------------
...