Hi all,
Below is the stuff I've added to incldue a monster summoning
spell. When I try to cast the spell however the mud just freezes, like
when it encounters a continual loop. What have I missed in adding the
spell? I add a simple send_to_char at the start of mag_summons function
in magic.c to see if it got there and it doesn't. So it freezes somewhere
before then. Someone help please. :)
Thanks in advace
Fionn
* File: class.c Part of CircleMUD *
..[STUFF]..
void init_spell_levels(void)
{
/* MAGES */
spell_level(SPELL_MAGIC_MISSILE, CLASS_MAGIC_USER, 1);
spell_level(SPELL_MONSTER_SUMMON_I, CLASS_MAGIC_USER, 10);
..[STUFF]..
* File: magic.c Part of CircleMUD *
..[STUFF]..
void mag_summons(int level, struct char_data * ch, struct obj_data * obj,
int spellnum, int savetype)
{
struct char_data *mob = NULL;
int pfail = 0;
int msg = 0, fmsg = 0;
int a, i;
int mob_num = 0;
int num_mobs = 1;
if (ch == NULL)
return;
send_to_char("Got to mag_summons in magic.c.\r\n", ch);
switch (spellnum) {
case SPELL_MONSTER_SUMMON_I:
a = number(1, 12);
msg = 3;
fmsg = 6;
pfail = 0;
mob_num = 153;
break;
/*
switch (a) {
case 1:
mob_num = [Giant Ant Num]
break;
case 2:
mob_num = [Huge Bat Num]
break;
case 3:
mob_num = [Fire Beatle Num]
break;
case 4:
mob_num = [Bullywug Num]
break;
case 5:
mob_num = [Goblin Num]
break;
case 6:
mob_num = [Hobgoblin Num]
break;
case 7:
mob_num = [Jermlaine Num]
num_mobs = dice(3,4);
break;
case 8:
mob_num = [Kobold Num]
num_mobs = dice(3,4);
break;
case 9:
mob_num = [Giant Leech Num]
break;
case 10:
mob_num = [Muck Dweller Num]
break;
case 11:
mob_num = [Orc Num]
break;
case 12:
mob_num = [Giant Rat Num]
num_mobs = dice(3,4);
break;
}
*/
default:
return;
}
if (IS_AFFECTED(ch, AFF_CHARM)) {
send_to_char("You are too giddy to have any followers!\r\n", ch);
return;
}
if (number(0, 101) < pfail) {
send_to_char(mag_summon_fail_msgs[fmsg], ch);
return;
}
for (i = 0; i < num_mobs; i++) {
mob = read_mobile(mob_num, VIRTUAL);
char_to_room(mob, ch->in_room);
IS_CARRYING_W(mob) = 0;
IS_CARRYING_N(mob) = 0;
SET_BIT(AFF_FLAGS(mob), AFF_CHARM);
add_follower(mob, ch);
act(mag_summon_msgs[msg], FALSE, ch, 0, mob, TO_ROOM);
}
}
..[STUFF]..
* File: spell_parser.c Part of CircleMUD *
..[STUFF]..
"infravision", /* 50 */
"waterwalk",
"whirlwind",
"monster summon 1",
"!UNUSED!",
..[STUFF]..
spello(SPELL_MONSTER_SUMMON_I, 40, 20, 1, POS_STANDING,
TAR_IGNORE, FALSE, MAG_SUMMONS);
spello(SPELL_POISON, 50, 20, 3, POS_STANDING,
TAR_CHAR_ROOM | TAR_NOT_SELF | TAR_OBJ_INV, TRUE, MAG_AFFECTS | MAG_ALTER_OBJS);
..[STUFF]..
* File: spells.h Part of CircleMUD *
..[STUFF]..
#define SPELL_INFRAVISION 50 /* Reserved Skill[] DO NOT CHANGE */
#define SPELL_WATERWALK 51 /* Reserved Skill[] DO NOT CHANGE */
#define SPELL_WHIRLWIND 52 /* New Spell */
#define SPELL_MONSTER_SUMMON_I 53 /* New Spell */
/* Insert new spells here, up to MAX_SPELLS */
#define MAX_SPELLS 130
..[STUFF]..
This archive was generated by hypermail 2b30 : 12/18/00 PST