|
Multi Classing [by Garadon] |
|
|
|
Posted Wednesday, August 12th @ 11:30:55 PM, by George Greer in the Players dept.
Added May 6, 1997. Click the link below to read it or download it.
From: Daniel Houghton <danielh@ren.cnu.edu>
Subject: Multiclassing: My approach
Since I've already mentioned my experimental approach to multiclassing
based on skills which define a character's effective level in a given
class, I figured I may as well post a patchfile as a reference to anyone
who'd like to try such an approach. Going with this approach will force
you to edit the code further at various points for things such as
guildguards, class checks, etc... but to me, it seems more elegant than
other approaches I've seen.
Before you start, realize that this is a patch derived from my own
customized CircleMUD 3.0 beta 11, and as such WON'T work as a drop-in
patch. DO NOT apply this to your MUD without backing things up first, and
as per the standard disclaimer, I'm in no way responsible or liable for
whatever may happen as a result of this patch.
What this patch does NOT do is...
A) Establish a system for advancing in multiple classes. I had to test
it by using the implementor "skillset" command on the skills
corresponding to the classes.
B) Allow skill dependency on multiple skills, which unfortunately you
can't have a spell castable by both mages and clerics. Since this
code hasn't been developed fully, I haven't bothered - but it should
be ridiculously easy to fix this.
Quite simply, this is mailer code. But it should demonstrate the
feasibility of using skills to effectively multiclass or dual-class.
Have fun!
Daniel Houghton
aka
Garadon
------ Diff File ------
diff -bcN -C 3 --exclude=*.o --exclude=*.rej --exclude=*.orig --exclude=*~ tlo/
class.c tlo_multiclass/class.c
*** tlo/class.c
Sat Mar 29 20:16:42 1997
--- tlo_multiclass/class.c
Sat Mar 29 19:17:17 1997
***************
*** 453,552 ****
-
- /*
- * SPELLS AND SKILLS. This area defines which spells are assigned to
- * which classes, and the minimum level the character must be to use
- * the spell or skill.
- */
- void init_spell_levels(void)
- {
- /* MAGES */
- spell_level(SPELL_MAGIC_MISSILE, CLASS_MAGIC_USER, 1);
- spell_level(SPELL_CREATE_LIGHT, CLASS_MAGIC_USER, 1);
- spell_level(SPELL_DETECT_INVIS, CLASS_MAGIC_USER, 2);
- spell_level(SPELL_DETECT_MAGIC, CLASS_MAGIC_USER, 2);
- spell_level(SPELL_CHILL_TOUCH, CLASS_MAGIC_USER, 3);
- spell_level(SPELL_INFRAVISION, CLASS_MAGIC_USER, 3);
- spell_level(SPELL_INVISIBLE, CLASS_MAGIC_USER, 4);
- spell_level(SPELL_ARMOR, CLASS_MAGIC_USER, 4);
- spell_level(SPELL_BURNING_HANDS, CLASS_MAGIC_USER, 5);
- spell_level(SPELL_LOCATE_OBJECT, CLASS_MAGIC_USER, 6);
- spell_level(SPELL_STRENGTH, CLASS_MAGIC_USER, 6);
- spell_level(SPELL_FAERIE_FIRE, CLASS_MAGIC_USER, 7);
- spell_level(SPELL_SHOCKING_GRASP, CLASS_MAGIC_USER, 7);
- spell_level(SPELL_SLEEP, CLASS_MAGIC_USER, 8);
- spell_level(SPELL_LIGHTNING_BOLT, CLASS_MAGIC_USER, 9);
- spell_level(SPELL_BLINDNESS, CLASS_MAGIC_USER, 9);
- spell_level(SPELL_DETECT_POISON, CLASS_MAGIC_USER, 10);
- spell_level(SPELL_LEVITATE, CLASS_MAGIC_USER, 10);
- spell_level(SPELL_COLOR_SPRAY, CLASS_MAGIC_USER, 11);
- spell_level(SPELL_ENERGY_DRAIN, CLASS_MAGIC_USER, 12);
- spell_level(SPELL_CURSE, CLASS_MAGIC_USER, 13);
- spell_level(SPELL_FIREBALL, CLASS_MAGIC_USER, 14);
- spell_level(SPELL_STONESKIN, CLASS_MAGIC_USER, 15);
- spell_level(SPELL_CHARM, CLASS_MAGIC_USER, 16);
- spell_level(SPELL_HASTE, CLASS_MAGIC_USER, 17);
- spell_level(SPELL_ICE_STORM, CLASS_MAGIC_USER, 19);
- spell_level(SPELL_FIRE_SHIELD, CLASS_MAGIC_USER, 22);
- spell_level(SPELL_INFERNO, CLASS_MAGIC_USER, 24);
- spell_level(SPELL_ENCHANT_WEAPON, CLASS_MAGIC_USER, 26);
-
-
- /* CLERICS */
- spell_level(SPELL_CURE_LIGHT, CLASS_CLERIC, 1);
- spell_level(SPELL_REFRESH, CLASS_CLERIC, 1);
- spell_level(SPELL_ARMOR, CLASS_CLERIC, 1);
- spell_level(SPELL_CREATE_FOOD, CLASS_CLERIC, 2);
- spell_level(SPELL_CREATE_WATER, CLASS_CLERIC, 2);
- spell_level(SPELL_CAUSE_LIGHT, CLASS_CLERIC, 3);
- spell_level(SPELL_DETECT_POISON, CLASS_CLERIC, 3);
- spell_level(SPELL_DETECT_ALIGN, CLASS_CLERIC, 4);
- spell_level(SPELL_CURE_BLIND, CLASS_CLERIC, 4);
- spell_level(SPELL_CREATE_LIGHT, CLASS_CLERIC, 4);
- spell_level(SPELL_BLESS, CLASS_CLERIC, 5);
- spell_level(SPELL_DETECT_INVIS, CLASS_CLERIC, 6);
- spell_level(SPELL_BLINDNESS, CLASS_CLERIC, 6);
- spell_level(SPELL_INFRAVISION, CLASS_CLERIC, 7);
- spell_level(SPELL_PROT_FROM_EVIL, CLASS_CLERIC, 8);
- spell_level(SPELL_GROUP_ARMOR, CLASS_CLERIC, 9);
- spell_level(SPELL_CURE_CRITIC, CLASS_CLERIC, 9);
- spell_level(SPELL_SUMMON, CLASS_CLERIC, 10);
- spell_level(SPELL_REMOVE_POISON, CLASS_CLERIC, 10);
- spell_level(SPELL_CAUSE_CRITIC, CLASS_CLERIC, 11);
- spell_level(SPELL_WORD_OF_RECALL, CLASS_CLERIC, 12);
- spell_level(SPELL_EARTHQUAKE, CLASS_CLERIC, 12);
- spell_level(SPELL_DISPEL_EVIL, CLASS_CLERIC, 14);
- spell_level(SPELL_DISPEL_GOOD, CLASS_CLERIC, 14);
- spell_level(SPELL_SANCTUARY, CLASS_CLERIC, 15);
- spell_level(SPELL_CALL_LIGHTNING, CLASS_CLERIC, 15);
- spell_level(SPELL_HEAL, CLASS_CLERIC, 16);
- spell_level(SPELL_CONTROL_WEATHER, CLASS_CLERIC, 17);
- spell_level(SPELL_HARM, CLASS_CLERIC, 19);
- spell_level(SPELL_GROUP_HEAL, CLASS_CLERIC, 22);
- spell_level(SPELL_REMOVE_CURSE, CLASS_CLERIC, 24);
- spell_level(SPELL_BLADE_BARRIER, CLASS_CLERIC, 26);
- spell_level(SPELL_HOLY_WORD, CLASS_CLERIC, 28);
-
-
- /* THIEVES */
- spell_level(SKILL_SNEAK, CLASS_THIEF, 1);
- spell_level(SKILL_PICK_LOCK, CLASS_THIEF, 2);
- spell_level(SKILL_BACKSTAB, CLASS_THIEF, 3);
- spell_level(SKILL_STEAL, CLASS_THIEF, 4);
- spell_level(SKILL_HIDE, CLASS_THIEF, 5);
- spell_level(SKILL_TRACK, CLASS_THIEF, 6);
-
-
- /* WARRIORS */
- spell_level(SKILL_KICK, CLASS_WARRIOR, 1);
- spell_level(SKILL_RESCUE, CLASS_WARRIOR, 3);
- spell_level(SKILL_TRACK, CLASS_WARRIOR, 9);
- spell_level(SKILL_BASH, CLASS_WARRIOR, 12);
- spell_level(SKILL_SECOND_ATTACK, CLASS_WARRIOR, 15);
- }
-
-
/* Names of class/levels and exp required for each level
const struct title_type titles[NUM_CLASSES][LVL_IMPL + 1] = {
--- 453,458 ----
diff -bcN -C 3 --exclude=*.o --exclude=*.rej --exclude=*.orig --exclude=*~ tlo/
spec_procs.c tlo_multiclass/spec_procs.c
*** tlo/spec_procs.c
Sat Mar 29 20:16:42 1997
--- tlo_multiclass/spec_procs.c
Sat Mar 29 19:14:53 1997
***************
*** 168,174 ****
strcat(buf2, "**OVERFLOW**\r\n");
break;
}
! if (GET_LEVEL(ch) >= spell_info[i].min_level[(int) GET_CLASS(ch)]) {
sprintf(buf, "%-20s %-15s%s", spells[i], how_good(GET_SKILL(ch, i)),
(!(++practwocolumn % 2) ? "\r\n" : "\t"));
--- 168,175 ----
strcat(buf2, "**OVERFLOW**\r\n");
break;
}
! /* if (GET_LEVEL(ch) >= spell_info[i].min_level[(int) GET_CLASS(ch)]) { */
! if (GET_SKILL(ch, spell_info[i].base_skill) >= spell_info[i].min_level) {
sprintf(buf, "%-20s %-15s%s", spells[i], how_good(GET_SKILL(ch, i)),
(!(++practwocolumn % 2) ? "\r\n" : "\t"));
***************
*** 209,216 ****
skill_num = find_skill_num(argument);
! if (skill_num < 1 ||
! GET_LEVEL(ch) < spell_info[skill_num].min_level[(int) GET_CLASS(ch)]) {
sprintf(buf, "You do not know of that %s.\r\n", SPLSKL(ch));
send_to_char(buf, ch);
return 1;
--- 210,219 ----
skill_num = find_skill_num(argument);
! /* if (skill_num < 1 ||
! GET_LEVEL(ch) < spell_info[skill_num].min_level[(int) GET_CLASS(ch)]) {
*/
! if ((skill_num < 1) ||
! (GET_SKILL(ch, spell_info[skill_num].base_skill) < spell_info[skill_nu
m].min_level)) {
sprintf(buf, "You do not know of that %s.\r\n", SPLSKL(ch));
send_to_char(buf, ch);
return 1;
diff -bcN -C 3 --exclude=*.o --exclude=*.rej --exclude=*.orig --exclude=*~ tlo/
spell_parser.c tlo_multiclass/spell_parser.c
*** tlo/spell_parser.c
Sat Mar 29 20:16:42 1997
--- tlo_multiclass/spell_parser.c
Sat Mar 29 19:53:20 1997
***************
*** 207,213 ****
"!UNUSED466!", "!UNUSED467!", "!UNUSED468!", "!UNUSED469!", "!UNUSED470!",
/* 470 */
"!UNUSED471!", "!UNUSED472!", "!UNUSED473!", "!UNUSED474!", "!UNUSED475!",
/* 475 */
"!UNUSED476!", "!UNUSED477!", "!UNUSED478!", "!UNUSED479!", "!UNUSED480!",
/* 480 */
! "!UNUSED481!", "!UNUSED482!", "!UNUSED483!", "!UNUSED484!", "!UNUSED485!",
/* 485 */
"!UNUSED486!", "!UNUSED487!", "!UNUSED488!", "!UNUSED489!", "!UNUSED490!",
/* 490 */
"!UNUSED491!", "!UNUSED492!", "!UNUSED493!", "!UNUSED494!", "!UNUSED495!",
/* 495 */
"!UNUSED496!", "!UNUSED497!", "!UNUSED498!", "!UNUSED499!", "!UNUSED500!",
/* 500 */
--- 207,221 ----
"!UNUSED466!", "!UNUSED467!", "!UNUSED468!", "!UNUSED469!", "!UNUSED470!",
/* 470 */
"!UNUSED471!", "!UNUSED472!", "!UNUSED473!", "!UNUSED474!", "!UNUSED475!",
/* 475 */
"!UNUSED476!", "!UNUSED477!", "!UNUSED478!", "!UNUSED479!", "!UNUSED480!",
/* 480 */
!
! /* CLASS TYPES */
!
! "Magic Theory",
! "Priestly Ordination",
! "Thiefcraft",
! "Way of the Warrior",
!
! "!UNUSED485!", /* 485 */
"!UNUSED486!", "!UNUSED487!", "!UNUSED488!", "!UNUSED489!", "!UNUSED490!",
/* 490 */
"!UNUSED491!", "!UNUSED492!", "!UNUSED493!", "!UNUSED494!", "!UNUSED495!",
/* 495 */
"!UNUSED496!", "!UNUSED497!", "!UNUSED498!", "!UNUSED499!", "!UNUSED500!",
/* 500 */
***************
*** 319,326 ****
{
int mana;
! mana = MAX(SINFO.mana_max - (SINFO.mana_change *
(GET_LEVEL(ch) - SINFO.min_level[(int) GET_CLASS(ch)])),
SINFO.mana_min);
return mana;
--- 327,337 ----
{
int mana;
! /* mana = MAX(SINFO.mana_max - (SINFO.mana_change *
(GET_LEVEL(ch) - SINFO.min_level[(int) GET_CLASS(ch)])),
+
SINFO.mana_min); */
+ mana = MAX(SINFO.mana_max - (SINFO.mana_change *
+ (GET_SKILL(ch, SINFO.base_skill) - SINFO.min_level)),
SINFO.mana_min);
return mana;
***************
*** 777,783 ****
return;
}
if (!npc_casting) {
! if (GET_LEVEL(ch) < SINFO.min_level[(int) GET_CLASS(ch)]) {
send_to_char("You do not know that spell!\r\n", ch);
return;
}
--- 788,794 ----
return;
}
if (!npc_casting) {
! if (GET_SKILL(ch, SINFO.base_skill) < SINFO.min_level) {
send_to_char("You do not know that spell!\r\n", ch);
return;
}
***************
*** 901,907 ****
return;
}
! if (class < 0 || class >= NUM_CLASSES) {
sprintf(buf, "SYSERR: assigning '%s' to illegal class %d",
skill_name(spell), class);
log(buf);
--- 912,918 ----
return;
}
! if (class < SKILL_MAGE || class >= (SKILL_MAGE + NUM_CLASSES)) {
sprintf(buf, "SYSERR: assigning '%s' to illegal class %d",
skill_name(spell), class);
log(buf);
***************
*** 915,922 ****
bad = 1;
}
! if (!bad)
! spell_info[spell].min_level[class] = level;
}
--- 926,935 ----
bad = 1;
}
! if (!bad) {
! spell_info[spell].min_level = level;
! spell_info[spell].base_skill = class;
! }
}
***************
*** 927,933 ****
int i;
for (i = 0; i < NUM_CLASSES; i++)
! spell_info[spl].min_level[i] = LVL_IMMORT;
spell_info[spl].mana_max = max_mana;
spell_info[spl].mana_min = min_mana;
spell_info[spl].mana_change = mana_change;
--- 940,946 ----
int i;
for (i = 0; i < NUM_CLASSES; i++)
! spell_info[spl].min_level = LVL_IMMORT;
spell_info[spl].mana_max = max_mana;
spell_info[spl].mana_min = min_mana;
spell_info[spl].mana_change = mana_change;
***************
*** 943,949 ****
int i;
for (i = 0; i < NUM_CLASSES; i++)
! spell_info[spl].min_level[i] = LVL_IMPL + 1;
spell_info[spl].mana_max = 0;
spell_info[spl].mana_min = 0;
spell_info[spl].mana_change = 0;
--- 956,962 ----
int i;
for (i = 0; i < NUM_CLASSES; i++)
! spell_info[spl].min_level = LVL_IMPL + 1;
spell_info[spl].mana_max = 0;
spell_info[spl].mana_min = 0;
spell_info[spl].mana_change = 0;
***************
*** 1205,1214 ****
skillo(SKILL_SNEAK);
skillo(SKILL_STEAL);
skillo(SKILL_TRACK);
#ifdef RANGED_WEAPONS
skillo(SKILL_SHOOT);
skillo(SKILL_THROW);
#endif
- skillo(SKILL_SECOND_ATTACK);
}
--- 1218,1322 ----
skillo(SKILL_SNEAK);
skillo(SKILL_STEAL);
skillo(SKILL_TRACK);
+ skillo(SKILL_SECOND_ATTACK);
+ skillo(SKILL_THIRD_ATTACK);
#ifdef RANGED_WEAPONS
skillo(SKILL_SHOOT);
skillo(SKILL_THROW);
#endif
}
+
+
+ /*
+ * SPELLS AND SKILLS. This area defines which spells are assigned to
+ * which classes, and the minimum level the character must be to use
+ * the spell or skill.
+ */
+ void init_spell_levels(void)
+ {
+ /* MAGES */
+ spell_level(SPELL_MAGIC_MISSILE, SKILL_MAGE, 1);
+ spell_level(SPELL_CREATE_LIGHT, SKILL_MAGE, 1);
+ spell_level(SPELL_DETECT_INVIS, SKILL_MAGE, 2);
+ spell_level(SPELL_DETECT_MAGIC, SKILL_MAGE, 2);
+ spell_level(SPELL_CHILL_TOUCH, SKILL_MAGE, 3);
+ spell_level(SPELL_INFRAVISION, SKILL_MAGE, 3);
+ spell_level(SPELL_INVISIBLE, SKILL_MAGE, 4);
+ spell_level(SPELL_ARMOR, SKILL_MAGE, 4);
+ spell_level(SPELL_BURNING_HANDS, SKILL_MAGE, 5);
+ spell_level(SPELL_LOCATE_OBJECT, SKILL_MAGE, 6);
+ spell_level(SPELL_STRENGTH, SKILL_MAGE, 6);
+ spell_level(SPELL_FAERIE_FIRE, SKILL_MAGE, 7);
+ spell_level(SPELL_SHOCKING_GRASP, SKILL_MAGE, 7);
+ spell_level(SPELL_SLEEP, SKILL_MAGE, 8);
+ spell_level(SPELL_LIGHTNING_BOLT, SKILL_MAGE, 9);
+ spell_level(SPELL_BLINDNESS, SKILL_MAGE, 9);
+ spell_level(SPELL_DETECT_POISON, SKILL_MAGE, 10);
+ spell_level(SPELL_LEVITATE, SKILL_MAGE, 10);
+ spell_level(SPELL_COLOR_SPRAY, SKILL_MAGE, 11);
+ spell_level(SPELL_ENERGY_DRAIN, SKILL_MAGE, 12);
+ spell_level(SPELL_CURSE, SKILL_MAGE, 13);
+ spell_level(SPELL_FIREBALL, SKILL_MAGE, 14);
+ spell_level(SPELL_STONESKIN, SKILL_MAGE, 15);
+ spell_level(SPELL_CHARM, SKILL_MAGE, 16);
+ spell_level(SPELL_HASTE, SKILL_MAGE, 17);
+ spell_level(SPELL_ICE_STORM, SKILL_MAGE, 19);
+ spell_level(SPELL_FIRE_SHIELD, SKILL_MAGE, 22);
+ spell_level(SPELL_INFERNO, SKILL_MAGE, 24);
+ spell_level(SPELL_ENCHANT_WEAPON, SKILL_MAGE, 26);
+
+
+ /* CLERICS */
+ spell_level(SPELL_CURE_LIGHT, SKILL_CLERIC, 1);
+ spell_level(SPELL_REFRESH, SKILL_CLERIC, 1);
+ spell_level(SPELL_ARMOR, SKILL_CLERIC, 1);
+ spell_level(SPELL_CREATE_FOOD, SKILL_CLERIC, 2);
+ spell_level(SPELL_CREATE_WATER, SKILL_CLERIC, 2);
+ spell_level(SPELL_CAUSE_LIGHT, SKILL_CLERIC, 3);
+ spell_level(SPELL_DETECT_POISON, SKILL_CLERIC, 3);
+ spell_level(SPELL_DETECT_ALIGN, SKILL_CLERIC, 4);
+ spell_level(SPELL_CURE_BLIND, SKILL_CLERIC, 4);
+ spell_level(SPELL_CREATE_LIGHT, SKILL_CLERIC, 4);
+ spell_level(SPELL_BLESS, SKILL_CLERIC, 5);
+ spell_level(SPELL_DETECT_INVIS, SKILL_CLERIC, 6);
+ spell_level(SPELL_BLINDNESS, SKILL_CLERIC, 6);
+ spell_level(SPELL_INFRAVISION, SKILL_CLERIC, 7);
+ spell_level(SPELL_PROT_FROM_EVIL, SKILL_CLERIC, 8);
+ spell_level(SPELL_GROUP_ARMOR, SKILL_CLERIC, 9);
+ spell_level(SPELL_CURE_CRITIC, SKILL_CLERIC, 9);
+ spell_level(SPELL_SUMMON, SKILL_CLERIC, 10);
+ spell_level(SPELL_REMOVE_POISON, SKILL_CLERIC, 10);
+ spell_level(SPELL_CAUSE_CRITIC, SKILL_CLERIC, 11);
+ spell_level(SPELL_WORD_OF_RECALL, SKILL_CLERIC, 12);
+ spell_level(SPELL_EARTHQUAKE, SKILL_CLERIC, 12);
+ spell_level(SPELL_DISPEL_EVIL, SKILL_CLERIC, 14);
+ spell_level(SPELL_DISPEL_GOOD, SKILL_CLERIC, 14);
+ spell_level(SPELL_SANCTUARY, SKILL_CLERIC, 15);
+ spell_level(SPELL_CALL_LIGHTNING, SKILL_CLERIC, 15);
+ spell_level(SPELL_HEAL, SKILL_CLERIC, 16);
+ spell_level(SPELL_CONTROL_WEATHER, SKILL_CLERIC, 17);
+ spell_level(SPELL_HARM, SKILL_CLERIC, 19);
+ spell_level(SPELL_GROUP_HEAL, SKILL_CLERIC, 22);
+ spell_level(SPELL_REMOVE_CURSE, SKILL_CLERIC, 24);
+ spell_level(SPELL_BLADE_BARRIER, SKILL_CLERIC, 26);
+ spell_level(SPELL_HOLY_WORD, SKILL_CLERIC, 28);
+
+
+ /* THIEVES */
+ spell_level(SKILL_SNEAK, SKILL_THIEF, 1);
+ spell_level(SKILL_PICK_LOCK, SKILL_THIEF, 2);
+ spell_level(SKILL_BACKSTAB, SKILL_THIEF, 3);
+ spell_level(SKILL_STEAL, SKILL_THIEF, 4);
+ spell_level(SKILL_HIDE, SKILL_THIEF, 5);
+ spell_level(SKILL_TRACK, SKILL_THIEF, 6);
+
+
+ /* WARRIORS */
+ spell_level(SKILL_KICK, SKILL_WARRIOR, 1);
+ spell_level(SKILL_RESCUE, SKILL_WARRIOR, 3);
+ spell_level(SKILL_TRACK, SKILL_WARRIOR, 9);
+ spell_level(SKILL_BASH, SKILL_WARRIOR, 12);
+ spell_level(SKILL_SECOND_ATTACK, SKILL_WARRIOR, 15);
+ }
+
diff -bcN -C 3 --exclude=*.o --exclude=*.rej --exclude=*.orig --exclude=*~ tlo/
spells.h tlo_multiclass/spells.h
*** tlo/spells.h
Sat Mar 29 20:16:43 1997
--- tlo_multiclass/spells.h
Sat Mar 29 20:10:13 1997
***************
*** 8,13 ****
--- 8,16 ----
* CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. *
************************************************************************ */
+ #define NUM_DISCIPLINES
4
+ #define BASE_DISCIPLINE
481
+
#define DEFAULT_STAFF_LVL
12
#define DEFAULT_WAND_LVL
12
***************
*** 123,132 ****
#endif
/* Daniel Houghton's replacements for classes */
! #define SKILL_MAGE 480
! #define SKILL_CLERIC 481
! #define SKILL_THIEF 482
! #define SKILL_WARRIOR 483
/* WEAPON ATTACK TYPES */
--- 126,135 ----
#endif
/* Daniel Houghton's replacements for classes */
! #define SKILL_MAGE 481
! #define SKILL_CLERIC 482
! #define SKILL_THIEF 483
! #define SKILL_WARRIOR 484
/* WEAPON ATTACK TYPES */
***************
*** 200,207 ****
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];
int routines;
byte violent;
int targets; /* See below for use with TAR_XXX */
--- 203,211 ----
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 base_skill;
! int min_level;
! /* int min_level[NUM_CLASSES]; */
int routines;
byte violent;
int targets; /* See below for use with TAR_XXX */
Common subdirectories: tlo/util and tlo_multiclass/util
<< More Mazes [by Doppleganger Software] | Reply | View as text | Threaded | Multi Classing/Multi Leveling [by Demond LaZaro] >> |
|
Related Links |
|
|
|
CircleMUD Snippets |
|
|
Note: Not all of these snippets will work perfectly with
your version of code, so be prepared to fix one
or two bugs that may arise, and please let me know
what you needed to do to fix it. Sending a corrected
version is always welcome.
|
Finally, if you wish to use any of the snippets from this
page, you are more than welcome, just mention the
authors in your credits. If you wish to release any
of these snippets to the public on another site,
contact me FIRST.
|
|
|
|
|
|
|