From: Joshua Schmidlkofer <menion@cyberhighway.net> This is a simple loop, gives you a svsp (dam/2) every loop, and sends 1 message at dam (X) for every hit. You simply adjust the const table it you want to. This is not quite the way I would imp it, but here is a quick version: (forgive the crudity of this code, as I did not check the syntax or anything.) [magic.c] void spell_magic_missile( int sn, int level, CHAR_DATA *ch,void *vo,int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; static const sh_int dam_each[] = { 0, 3, 3, 4, 4, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14 }; int dam,i; level = UMIN(level, sizeof(dam_each)/sizeof(dam_each[0]) - 1); level = UMAX(0, level); /* 1 Missile for every ten levels of the caster */ if(ch->level<10) i=1 else i=ch->level/10; for(i; i>0; i--) { dam= number_range( dam_each[level] / 2, dam_each[level] * 2 ); if ( saves_spell( level, victim,DAM_ENERGY) ) dam /= 2; damage_old( ch, victim, dam, sn, DAM_ENERGY ,TRUE); } return; }