Difference between revisions of "RogueScript"

From RogueBasin
Jump to navigation Jump to search
m
m
Line 5: Line 5:
== Features ==
== Features ==


* familiar syntax (C family)
* C syntax
* simple, yet powerful scripting (without arrays, structs, or pointers)
* simple, yet powerful scripting (without arrays, structs, or pointers)
* dynamic typing
* dynamic typing
Line 46: Line 46:
     use()
     use()
     {
     {
         rDoor = GetArgument(ENV, 0);
         rDoor = GetOwner();
          
          
         if (IsObjectRef(rDoor))
         if (IsObjectRef(rDoor))
         {
         {
             iObs = GetObjectProp(rDoor, OBJECT_PROP_OBSTRUCT);
             iObs = GetObjectProp(rDoor, OBJECT_PROP_STATUS);
              
              
             if (iObs)
             if (iObs == DOOR_STATUS_OPEN)
            {
                SetObjectProp(rDoor, OBJECT_PROP_STATUS, DOOR_STATUS_CLOSE);
                SetObjectProp(rDoor, OBJECT_PROP_OBSTRUCT, 1);
                SetObjectProp(rDoor, OBJECT_PROP_GLYPH, '+');
            }
            else if (iObs == DOOR_STATUS_CLOSE)
            {
                SetObjectProp(rDoor, OBJECT_PROP_STATUS, DOOR_STATUS_OPEN);
                 SetObjectProp(rDoor, OBJECT_PROP_OBSTRUCT, 0);
                 SetObjectProp(rDoor, OBJECT_PROP_OBSTRUCT, 0);
            else
                 SetObjectProp(rDoor, OBJECT_PROP_GLYPH, '/');
                 SetObjectProp(rDoor, OBJECT_PROP_OBSTRUCT, 1);
            }
 
            return 1; /* override normal door behaviour */
         }
         }
          
          
         return 1; /* override normal door behaviour */
         return 0;
     }
     }

Revision as of 15:09, 26 February 2011

Description

RogueScript is a proposed interpreted language with C style syntax. It will be based loosely on NWScript. It should be noted, however, that this language is not intended to be used in development of an engine, but as a means to control roguelike objects within a user-made game world (created with a game creation system).

Features

  • C syntax
  • simple, yet powerful scripting (without arrays, structs, or pointers)
  • dynamic typing
  • easy interaction with game world things
  • basic types (such as bool, undefined, float, int, string)
  • reasonable speed

Events

Most game world objects can have scripts attached. Script functions are attached to various events.

  • turn
  • key_press
  • give
  • throw
  • throw_hit
  • inter-use (use nearby object)
  • intra-use (use item from inventory)
  • hover
  • touch
  • pick_up
  • drop
  • quaff
  • eat
  • target
  • inventory
  • kick
  • apply
  • look
  • chat
  • combine

Example

   begin()
   {
       log("Hello World");
   }
   
   use()
   {
       rDoor = GetOwner();
       
       if (IsObjectRef(rDoor))
       {
           iObs = GetObjectProp(rDoor, OBJECT_PROP_STATUS);
           
           if (iObs == DOOR_STATUS_OPEN)
           {
               SetObjectProp(rDoor, OBJECT_PROP_STATUS, DOOR_STATUS_CLOSE);
               SetObjectProp(rDoor, OBJECT_PROP_OBSTRUCT, 1);
               SetObjectProp(rDoor, OBJECT_PROP_GLYPH, '+');
           }
           else if (iObs == DOOR_STATUS_CLOSE)
           {
               SetObjectProp(rDoor, OBJECT_PROP_STATUS, DOOR_STATUS_OPEN);
               SetObjectProp(rDoor, OBJECT_PROP_OBSTRUCT, 0);
               SetObjectProp(rDoor, OBJECT_PROP_GLYPH, '/');
           }
           return 1; /* override normal door behaviour */
       }
       
       return 0;
   }