Difference between revisions of "RogueScript"
Jump to navigation
Jump to search
m |
m |
||
Line 5: | Line 5: | ||
== Features == | == Features == | ||
* | * 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 = | rDoor = GetOwner(); | ||
if (IsObjectRef(rDoor)) | if (IsObjectRef(rDoor)) | ||
{ | { | ||
iObs = GetObjectProp(rDoor, | 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); | ||
SetObjectProp(rDoor, OBJECT_PROP_GLYPH, '/'); | |||
SetObjectProp(rDoor, | } | ||
return 1; /* override normal door behaviour */ | |||
} | } | ||
return | 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; }