Re: Modulizing "Added Spells, Skills, Commands, etc"

From: Treker (treker@positron.net)
Date: 08/19/00


>
> At 05:53 AM 8/19/00 -0700, greerga wrote:
> >I tried doing something similar once, putting all of the spells into a
> >'struct' instead of the 'switch' blocks but ultimately gave up
> as there are
> >too many differences, special cases, and tests to take care of to make it
> >practical.
> >
>
> I wanted to add over 300 spells to my mud, and it quickly became apparent
> that I lack the patience required to do this in stock circle.  I don't
> remember exactly but I think there are 5-6 changes you have to make to
> separate source files in order to add a single spell.  In practice, this
> means adding large, repetitious blocks of spellos and skill_levels.  I
> realized that it wouldn't be too difficult to add a plaintext file
> containing this information.
>
> My own approach was to expand spell_info_type and base my work from that.
>
> struct spell_info_type {
>    char *name;          /* name of spell */
>    char *plural;        /* plural name of spell */
>    byte min_position;   /* Position for caster   */
>    int mana_min;        /* Min amount of mana used by a spell
> (highest lev) */
>    int mana_max;        /* Max amount of mana used by a spell
> (lowest lev) */
>    int mana_change;     /* Change in mana used by spell from lev to lev */
>
>    int min_level[NUM_CLASSES];   /* must == num_classes in structs.h */
>    int routines;
>    byte violent;
>    int targets;         /* See below for use with TAR_XXX  */
>    long type;           /* SPL_XXX. Mana-spell/skill/memorize-spell? */
>    int spell_level;     /* Rank of the spell, for wizard spells use 0 for
> nonwizards */
>    byte deleted;        /* don't write spell to file */
>    int sortpos;         /* this spell's # in alphabetical order of all
> spells */
>
>    char *wearoff;       /* spell/skill wearoff message */
>
> ... and so on... (info about damdice, healdice, affect bits etc.
> excerpted)
>
>
> ... And then load the spells from a file.  I took an ascii
> approach because
> I have ascii pfiles and xapobjs, as well as ascii object and mob world
> files.
>
> #1
> Name:
> armor~
> Plural:
> armors~
> Wearoff:
> You feel less protected.~
> MinPos: 7
> MinMana: 15
> MaxMana: 30
> ChangeMana: 3
> Violent: 0
> Routines: b
> Targets: b
> Types: an
> Cleric: 1
> Priest: 4
> ... and so on...
>
> My implementation is not even close to finished; as George Greer
> wrote, there
> are a ton of special cases that need to be implemented.  However, even the
> minimal version I have now (and the Obuild-based OLC spelleditor that
> interfaces with it) has saved me an enormous amount of work.
>
> < 5000H 5000M 1000V > spellstat 2
> Name: teleport (#2), Plural: teleports
> Violent?: no
> Mana cost: 50/75 (-3/level)
> Min position: Standing
> Routines: mag_teleport
> Targets: char_room
> Type: Magic Cast
> Teleport room: -1 (random)
> Wizard: 88
>
>
> Melissa Jadwinski/meer@meersan.net
>
Precisely what I am working on, however, I will be using vectors to allow
for dynamic creation, dynamic interpreting (ie: not all need to be in the
same structure) and later ease to add features without having to change
every piece of referenced code.

Maybe we should get together some time? ;-P

-Treker


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 04/11/01 PDT