#include #include #include "/lib/include/stargate.h" /** * based on portal.c by Brodbane - March 2006 * * $Id: stargate.c,v 1.1 2006/04/05 05:48:39 jam Exp $ * * The desired functionality is much like a "star gate": users dialed * letters or full words that lined up with destinations. A portal opens to * that destination briefly. To define destinations you must setup a * constant below then add it to the switch statement in the cmdDial * function. This object is crude and basic, but gets the job done. * * 2006-03-22, jonez * - original version of this file is from Daelas@Moraelinost * 2006-03-23, jonez * - altered so code uses existing verbs (touch, enter) where possible. last add_action is for dial command. * - added single mapping called "database" and made the "dial" command use it. * - dial command no longer uses switch/case, making adding a new destination simpler * - made use of SetPreventGet() / SetPreventPut() * - made use of new stargate daemon * - made use of LIB_STARGATE * - made use of STARGATE_D * * IDEAS: * - create a daemon that holds the stargate network [DONE] * - allow for stargate failure * - add dhd object * - change the code so that it uses a single mapping of names and * destinations, perhaps in a database file. currently an update to the * object requires an update for all the objects. [DONE] * - dhd skill (thanks plato) * - delay when dialing gate. destination dhd lights up? * - player should not be able to dial earth if earth is already connected elsewhere (need daemon) [DONE] * - make use of existing verbs (enter, touch) instead of doing our own thing. [DONE] * - daemon should contain a class that maps the various gates to each other. see lib/include/door.h [DONE] * - shout "off world activation" into the gateroom when the gate engages. * - track status as "incoming" or "outgoing".. you can only "enter" an outgoing gate (rhk) [DONE] * - if room is empty, shut down the gate (rhk) * - change callout time when someone goes through the gate (rhk) */ /* Cratylus@Dead Souls but let me give you a quick outline Cratylus@Dead Souls i type dial thing Cratylus@Dead Souls the thing inherits LIB_DIAL Cratylus@Dead Souls which is in /lib/events/dial.c Cratylus@Dead Souls and all that contains is like direct_dial_ob() return 1; this kind of thing Cratylus@Dead Souls take a look at LIB_TURN Cratylus@Dead Souls what LIB_DIAL does is provide the object with hooks, so it *can* be dialed Cratylus@Dead Souls so, when i type dial thing, the thing goes, yeah i can be dialed, and then the parser enters the can_dial and do_dial funcs in the verb Cratylus@Dead Souls tellya what. i'd like to work with you on this one. i think it's less straightforward than it seems, and i need to test some ideas before i can say "do it this way" */ #include #include #include #include "/lib/include/stargate.h" inherit LIB_STARGATE; int ReadScreen(); void create() { ::create(); SetOrigin("ORIGIN_NAME", "/ORIGIN/GOES/HERE"); SetRead(([ ({ "screen" }) : (: ReadScreen :) ]) ); SetItems(([ ({ "screen" }) : "a computer screen which shows the status of the gate network" ]) ); } void init() { ::init(); } int ReadScreen() { write("stargate network status\n"); write("-----------------------\n"); write("\n"); }