DG Scripts pl5 available

From: Mark A. Heilpern (heilpern@MINDSPRING.COM)
Date: 08/04/98


As the subject indicated, patch level 5 of DG Scripts is now
available. I've uploaded to ftp.circlemud.org the files
dg_pl4_to_5_no_olc.patch.gz and dg_pl4_to_5_with_oasis.patch.gz,
these are incremental patches only. If you do not yet have DG Scripts
installed, you'll need to download the full patch level 4 plus this
increment for now.

Lots of new additions have been added to this patch level.
An excerpt from the readme follows.

Attached to this is a file called 0.trg, for those without
any existing trigger files.

-----------------------------------------------------------------------
New in patch level 5:

   Version Command
      Scripts may execute the "version" command to place DG Script
      version information into the mud log.

   Global Variable Contexts
      One new addition in this release is the ability to assign
      a 'context' to globals in a script. Up until now, all script
      globals were truely that: global to the script. Globals which
      act in that same manner now have a context id of -1. Through
      the "context <number>" command, a script may set its context to
      any long value. When refering to a global, if that global is
      found but has a different context then the current script context,
      and neither context is -1, the search continues.

      One possibility for this is to create an array of globals, though
      each has the same name and the context is used as the index. A bit
      messy perhaps, but it should work. Another use is to have a target
      owner of each instance of a global, such as the id number of a
      mob or object. This lets you have state-based scripts that store
      a unique state for each target. (Note that the .id field has been
      added with this release also.)

      Finally: this context idea has not had very much testing and is
      probably wrought with bugs. If you find any, please let me know!


   Remote Variable Assignment
      The "remote <variable name> <id>" command allows a script to
      set a global which will belong to another script. To operate,
      the variable must exist locally, either as a global or local
      variable, and the target id will get a copy of it. (Any subsequent
      changes will not be seen by the target without another remote call.)
      To get the id of a target, you may use the .id field of room, mob,
      or object variables. Context of the variable will follow over.

   Actor-type Variable Setting
      If a script has the id of some character, a value UID variable
      may be created with the "makeuid <variablename> <id>" command.
      Id numbers for mobs and objects begin at 200000 (100000 for older
      versions of DG Scripts) by default. Room id numbers begin at
      50000 by default, and PC id numbers are their normal id as if
      DG Scripts were not present.

   Object Transformations
      Through the command "otransform <vnum>", an object in a script
      may become another object. Imagine, for example, as an object,
      an "ugly sword" which, as a wear (wield) trigger, transforms into
      a decent weapon, and in a remove trigger (new in this patch)
      reverts back to the ugly sword.

      Note that the object we transform into will NOT have the normal
      script associated with it's VNUM; instead it will inherit the
      script from the object doing the transformation.

   Mob Transformations
      By the same token, mob's can execute "mtransform <vnum>" to
      become another mob. Transformed mobs will keep the same HP and
      HP max as the originating mob, as well as the same gold, position,
      and experience value. As with objects, the mob will live at the
      same address in memory as the originating mob, thus no code should
      break due to the morphing.

   Object Remove Trigger
      This should be self-explanatory. Remove the object, fire the
      trigger (assuming the percentage change in the NArg is met).

   Mob Memory
      Mobs now have memory lists allowing them to remember an unlimited
      number of characters. Associated with each character in memory is
      an action to perform upon seeing the character. Each time a
      character enters the room of a mob with memory, or each time the
      mob enters another room, a check of the memory list is performed.

      To remember a character, the mob must preform the
      "mremember <victim> [<special action>]" command. If no special
      action is specified, the memory trigger commands will be performed.
      Otherwise the special action will be performed. An example; imagine

      a mob that acts as a courier of objects:
         mremember sammy give sword sammy

      The "mforget <victim>" command will delete all memory of the
      victim from the mob's list.

   Mob Hunting
      "mhunt <victim>" allows the hunt to begin.

   Player Skill Checking
      For an actor-type variable, you may determine the percentage of
      learnedness as follows:    %actor.skill(name of skill)%
      If you can think of other good uses for the %var.function(parameter)%
      syntax, I'm interested in hearing them.

   Actor Global Referencing
      Assume a mob is referenced as a variable %mob% for script A
      Assume that a global %global% is within the script for that mob
        (script B)
      Within script A, %mob.global% allows you to refer to the "global"
        global from script B.

   Text Handling
      Variables that are text (%speech%, in a speech trigger, for example)
      how have some functions:
        %text.strlen% lets you count the characters
        %text.trim%   cuts whitespace from each end
        %text.car%    returns the first word (Lisp/Scheme, anyone?)
        %text.cdr%    returns all except the first word

      Triggers that use a string argument may now use * as the first
      character to indicate they will accept a match on ANY input.

      Also, the "extract <to-variable> <word-num> <text>" command
      allows you to extract a specific word from the text, into a
      variable.

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

--8<--

#1
memory test trigger~
0 o 100
~
say I remember you, %actor.name%!
~
#2
mob greet test~
0 g 100
~
say Hello, %actor.name%, how are things to the %direction%?
~
#3
obj get test~
1 g 100
~
oecho You hear, 'Please put me down, %actor.name%'
~
#4
room test~
2 g 100
~
wait 50
wsend %actor% you enter a room
~
#5
car/cdr test~
0 d 100
test~
say speech: %speech%
say car: %speech.car%
say cdr: %speech.cdr%
~
$~

     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST