RogueScript

From RogueBasin
Revision as of 15:09, 26 February 2011 by Mwoods (talk | contribs)
Jump to navigation Jump to search

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;
   }