Legalese follows: This code is released to the general public under the CircleMUD license. All code contained herein is the intellectual property of its authors, and the terms of their distribution licenses shall be adhered to and credit given in any work that includes their code. The authors of the Deathgate MUD engine and the DeathGate script patch for CircleMUD must credited for their work. In addition, Daniel B. Houghton (Garadon) and Jeremy Davis (Madmax) must be credited in any work which incorporates code of their authorship, which in the contents of this package includes all code differing between all *edit.c files and Oasis 1.6b, bitvector editing routines in act.olc.c, opcode-driven script driver functions, generic script commands, foreach loop code, and other modifications. By reading or using any code contained herein, you indicate your acceptance of these terms. In short, give due credit for the code, and don't use it to make money in any way. Read the CircleMUD license contained herein for details. That said (whew!), here's the code that we at Tower of the Lost Order have been using in our DeathGate-derived engine. I feel that the generic OLC routines and scripting engine ought to be available to the general CircleMUD community, as I would like it to be evaluated, compared to other similar code, and incorporated/merged/modified into CircleMUD 4.0 as benefits the community. What you'll find enclosed: - Highly advanced variant of the DeathGate scripting language, with support for foreach loops, and advanced string manipulators that essentially confer array, stack, and queue support. Scripts are pre-interpreted using attached opcodes that eliminate CPU-intensive command lookup and string comparison. Variables can be shared between scripts AND mobiles/objects/rooms. They are quite ironclad, making it difficult to crash the MUD or tie up the CPU with infinite loops. (see scripts.c) - Object-oriented design has allowed for a single command table for scripts. "Mecho", "oecho", and "wecho" are no longer necessary, as "echo" works for all types. Further, a single script can be attached to a mob OR an object OR a room, and with proper design, function in each case. (see scriptcmd.c) - New type of variable, "shared", can be seen by all scripts on a mob/object/room AND by all scripts of any other mob/object/room that has the script vnum attached where the variable originated. This makes it easy to coordinate groups of mobiles! (see scripts.c) - Advanced Oasis-derived OLC with trigger editing, even automated mob generation that allocates stats and skills automatically via presets given for various races and classes. This allows two modes of mobile editing: simple and extended. Focus your efforts on the mobs that need it! (see act.olc.c and *edit.c) - Table-driven code used in many key places for easy maintainance and extension. These can easily be translated into externally loaded files that can determine key behaviors. (act.olc.c and constants.c are good examples)